{"id":6454,"date":"2026-07-11T06:39:16","date_gmt":"2026-07-11T06:39:16","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-11-test-1-reading\/"},"modified":"2026-07-12T03:24:21","modified_gmt":"2026-07-12T03:24:21","slug":"celpip-set-11-test-1-reading","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-11-test-1-reading\/","title":{"rendered":"CELPIP Reading \u2014 Set 11 \u00b7 Practice Test 1"},"content":{"rendered":"<div class=\"clpr-wrap\" id=\"clprWrap\">\n<section class=\"clpr-hero\">\n<div class=\"clpr-aurora\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"clpr-hero-badges\"> <span class=\"clpr-badge-brand\">AllEnglish4U<\/span> <span class=\"clpr-badge-set\">CELPIP General &middot; Set 11<\/span> <\/div>\n<h1>Reading Practice Test 1<\/h1>\n<p class=\"clpr-hero-sub\">4 parts &middot; 38 questions &middot; about 55 minutes. Read each passage and choose the best option for every drop-down. Official Paragon question set with verified answer key.<\/p>\n<div class=\"clpr-hero-chips\"> <span class=\"clpr-chip\">Part 1 &middot; Correspondence<\/span> <span class=\"clpr-chip\">Part 2 &middot; Apply a Diagram<\/span> <span class=\"clpr-chip\">Part 3 &middot; Information<\/span> <span class=\"clpr-chip\">Part 4 &middot; Viewpoints<\/span> <\/div>\n<p> <button class=\"clpr-cta\" id=\"clprStart\">Start the Reading Test<\/button> <\/section>\n<div class=\"clpr-toolbar\" id=\"clprToolbar\" hidden> <span class=\"clpr-score-chip\" id=\"clprScoreChip\">0 \/ 38 answered<\/span> <span class=\"clpr-toolbar-spacer\"><\/span> <button class=\"clpr-tbtn\" id=\"clprReset\">Reset<\/button> <button class=\"clpr-tbtn clpr-tbtn-check\" id=\"clprCheck\">Check answers<\/button> <\/div>\n<div class=\"clpr-sim\" id=\"clprSim\" hidden>\n<div class=\"clpr-dots\" id=\"clprDots\"><\/div>\n<div class=\"clpr-cat\" id=\"clprCat\"><\/div>\n<\/p><\/div>\n<div class=\"clpr-results\" id=\"clprResults\" hidden><\/div>\n<\/p><\/div>\n<p><script>eval(atob(\"J3VzZSBzdHJpY3QnOwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgQ0VMUElQIFJlYWRpbmcgXHUyMDE0IFByYWN0aWNlIFRlc3QgMSAoU2V0IDEpCiAgIFNvdXJjZTogUGFyYWdvbiBvZmZpY2lhbCAiUHJhY3RpY2UgVGVzdCAxIFNldCAxIC0gUmVhZGluZyIgKDM3IHBwKS4KICAgQWxsIHN0ZW1zLCBvcHRpb25zIGFuZCBrZXlzIHZlcmlmaWVkIGFnYWluc3QgdGhlIHByaW50ZWQgQW5zd2VyIEtleS4KICAgRGF0YSBtb2RlbDogcGFydHNbXSAtPiB7IHBhc3NhZ2UobGVmdCkgLCBibG9ja3NbXShyaWdodCkgfQogICAgIGJsb2NrLnR5cGU6ICdzdGVtbGlzdCcgfCAnY2xvemUnIHwgJ21hdGNoJwogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFJEQVRBID0geyJ0ZXN0TGFiZWwiOiJQcmFjdGljZSBUZXN0IDEiLCJwYXJ0cyI6W3siaWQiOjEsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMTogUmVhZGluZyBDb3JyZXNwb25kZW5jZSIsInRpbWUiOiIxMCBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIG1lc3NhZ2UuIiwiaHRtbCI6IjxwPkRlYXIgSm9hbiw8L3A+PHA+SSBlbmpveWVkIHJlY2VpdmluZyB5b3VyIHBvc3RjYXJkcyB3aXRoIHRoZSBnbG93aW5nIGRlc2NyaXB0aW9ucyBvZiB5b3VyIHJlY2VudCB0cmlwIHRvIEV1cm9wZS4gT2YgY291cnNlLCB3aGVuIEkgdG9sZCBCZW5ueSBhYm91dCB5b3VyIHRyaXAsIGhlIHdhbnRlZCB0byByZXZpc2l0IFBhcmlzIGltbWVkaWF0ZWx5LCBlc3BlY2lhbGx5IGFmdGVyIGFuIHVudXN1YWwgZGluaW5nIGV4cGVyaWVuY2Ugd2UgaGFkIGhlcmUgbGFzdCB3ZWVrLiBCZWluZyB0aGUgZm9vZCBjcml0aWMgZm9yIHRoZSBXaW5uaXBlZyBEYWlseSBOZXdzIGZvciB0ZW4geWVhcnMgbm93LCBCZW5ueSB0aG91Z2h0IHRoYXQgaGUmcnNxdW87ZCBzZWVuIGFuZCB0YXN0ZWQgZXZlcnl0aGluZy4gV2VsbCwgdGhhdCB3YXMgdW50aWwgbGFzdCBGcmlkYXkgbmlnaHQuPC9wPjxwPldlIHdlbnQgdG8gYSBuZXcgcmVzdGF1cmFudCBjYWxsZWQgTGUgRnJlbmNoLCBvbiB0aGUgY29ybmVyIG9mIERhdmlzIFN0cmVldCBhbmQgUGFyayBBdmVudWUuIEltYWdpbmUgb3VyIHN1cnByaXNlIHdoZW4gd2UgZGlzY292ZXJlZCB0aGF0IHRoaXMgcmVzdGF1cmFudCBzcGVjaWFsaXplcyBpbiBJdGFsaWFuIGN1aXNpbmUuIFdoZW4gQmVubnkgYXNrZWQgdGhlIHdhaXRlciB3aHkgdGhlIG93bmVycyBkZWNpZGVkIHRvIG5hbWUgYW4gSXRhbGlhbiByZXN0YXVyYW50IExlIEZyZW5jaCwgaGUgc2ltcGx5IHNhaWQsICZsZHF1bztEb24mcnNxdW87dCBhc2sgbWUhJnJkcXVvOyBUaGVuIGEgbGl0dGxlIHdoaWxlIGxhdGVyLCB0aGlzIHNhbWUgd2FpdGVyIGtub2NrZWQgb3ZlciBCZW5ueSZyc3F1bztzIHdpbmUgZ2xhc3MsIHNwaWxsaW5nIHJlZCB3aW5lIG9udG8gQmVubnkmcnNxdW87cyBwYW50cy4gVGhlIHdhaXRlciBtZXJlbHkgc2FpZCwgJmxkcXVvO09vcHMsIHNvcnJ5ISZyZHF1bzsgYW5kIGxlZnQgdXMgdG8gZmVuZCBmb3Igb3Vyc2VsdmVzLiBBZnRlciBmaW5kaW5nIHNvbWUgZXh0cmEgbmFwa2lucyBhbmQgY2xlYW5pbmcgdXAgdGhlIHdpbmUsIEJlbm55IGZsZWV0aW5nbHkgdGhvdWdodCBvZiBsZWF2aW5nLCBidXQsIGJlaW5nIGEgY29uc3VtbWF0ZSBwcm9mZXNzaW9uYWwgcmV2aWV3ZXIgYW5kIGhvcGluZyB0aGF0IHRoZSBmb29kIG1pZ2h0IHN1cnBhc3MgdGhlIHNlcnZpY2UsIHdlIHN0YXllZCEgV2FzIHRoYXQgZXZlciBhIG1pc3Rha2UhPC9wPjxwPkkgb3JkZXJlZCBzcGFnaGV0dGkgd2l0aCB0b21hdG8gc2F1Y2UmbWRhc2g7dGhhdCZyc3F1bztzIGFib3V0IGFzIHNpbXBsZSBhIG1lYWwgYXMgeW91IGNhbiBnZXQmbWRhc2g7YW5kIEJlbm55IGRlY2lkZWQgdG8gdHJ5IHRoZSByZXN0YXVyYW50IHNwZWNpYWx0eSwgbGFzYWduYS4gV2VsbCwgbXkgc3BhZ2hldHRpIHdhcyBub3QgZnVsbHkgY29va2VkLCBhbmQgdGhlIHRvbWF0byBzYXVjZSB0YXN0ZWQgbGlrZSB0aGUgY2FubmVkIHNhdWNlcyB5b3Ugd291bGQgZmluZCBvbiBhIHN1cGVybWFya2V0IHNoZWxmLiBCZW5ueSZyc3F1bztzIGxhc2FnbmEgd2FzIGluZWRpYmxlJm1kYXNoO2Z1bGwgb2YgZHJ5IGNoZWVzZSBhbmQgdmVyeSBsaXR0bGUgc2F1Y2UuIEZvcnR1bmF0ZWx5LCB0aGUgZnJlc2ggYnJlYWQgZWFzZWQgb3VyIGh1bmdlciBzb21ld2hhdCwgYWx0aG91Z2ggdGhlIGJ1dHRlciB3YXMgY29sZCBhbmQgbXVjaCB0b28gaGFyZCB0byBzcHJlYWQsIHdoaWNoIGRpZG4mcnNxdW87dCBpbXByb3ZlIG91ciBtb29kLjwvcD48cD5BcyB3ZSB3ZXJlIGFib3V0IHRvIGxlYXZlLCB0aGUgcmVzdGF1cmFudCBvd25lciBhcG9sb2dpemVkIGZvciBydWluaW5nIEJlbm55JnJzcXVvO3MgcGFudHMgYW5kIHNhaWQgdGhhdCBCZW5ueSBkaWRuJnJzcXVvO3QgaGF2ZSB0byBwYXkgZm9yIGhpcyBtZWFsLiBIb3dldmVyLCBoZSBkaWQgbm90IG9mZmVyIHRvIGNvbXBlbnNhdGUgQmVubnkgZm9yIGhpcyBydWluZWQgdHJvdXNlcnMuIEJlbm55IHdhbnRzIHRvIGdpdmUgTGUgRnJlbmNoIGEgc3BlY2lhbCBhd2FyZCBmb3IgdGhlIHdvcnN0IGN1bGluYXJ5IGV4cGVyaWVuY2UgaGUmcnNxdW87cyBldmVyIGhhZCwgYnV0IEkmcnNxdW87bSB0cnlpbmcgdG8gY2FsbSBoaW0gZG93biBhIGJpdCBiZWZvcmUgaGUgd3JpdGVzIGEgaGlnaGx5IGNyaXRpY2FsIHJldmlldy48L3A+PHA+R2l2ZSB1cyBhIGNhbGwgYmVmb3JlIHlvdSBjb21lIHRvIHRvd24gbmV4dCBtb250aCBhbmQgd2UmcnNxdW87bGwgYXJyYW5nZSB0byBnbyBzb21ld2hlcmUgc3BlY2lhbCB0byBjZWxlYnJhdGUgeW91ciBiaXJ0aGRheSZtZGFzaDtidXQgcmVzdCBhc3N1cmVkIHRoYXQgaXQgd29uJnJzcXVvO3QgYmUgTGUgRnJlbmNoLjwvcD48cD5DaGVlcnMsPGJyPlRyYWN5PC9wPiJ9LCJibG9ja3MiOlt7InR5cGUiOiJzdGVtbGlzdCIsImluc3RyIjoiVXNpbmcgdGhlIGRyb3AtZG93biBtZW51ICggJiM5NjYyOyApLCBjaG9vc2UgdGhlIGJlc3Qgb3B0aW9uIGFjY29yZGluZyB0byB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4gaW4gdGhlIG1lc3NhZ2UuIiwiaXRlbXMiOlt7Im4iOjEsInByZSI6IkJlbm55Iiwib3B0aW9ucyI6WyJpcyBhIHByb2Zlc3Npb25hbCBjaGVmLiIsIndyaXRlcyByZXBvcnRzIG9uIHJlc3RhdXJhbnRzLiIsIndhcyBpbiBQYXJpcyBsYXN0IHdlZWsuIiwiZGlzbGlrZXMgSXRhbGlhbiBmb29kLiJdLCJrZXkiOjJ9LHsibiI6MiwicHJlIjoiQmVubnkgd2VudCB3aXRoIFRyYWN5IHRvIGEgbG9jYWwgcmVzdGF1cmFudCB3aGljaCIsIm9wdGlvbnMiOlsidGhleSBoYWQgc2VlbiBhZHZlcnRpc2VkIGluIHRoZSBuZXdzcGFwZXIuIiwiaGFkIGJlZW4gcmVjb21tZW5kZWQgYnkgYSBmcmllbmQuIiwidGhleSBib3RoIHNvb24gcmVncmV0dGVkIHZpc2l0aW5nLiIsIndhcyB3ZWxsIGVzdGFibGlzaGVkIGluIHRoZSBuZWlnaGJvcmhvb2QuIl0sImtleSI6M30seyJuIjozLCJwcmUiOiJIYXZpbmcgc3BpbGxlZCB3aW5lIG9uIEJlbm55XHUyMDE5cyBwYW50cywiLCJvcHRpb25zIjpbInRoZSB3YWl0ZXIgZGlkblx1MjAxOXQgYXBvbG9naXplLiIsInRoZSBvd25lciBvZmZlcmVkIHRvIHBheSBmb3IgdGhlIGNsZWFuaW5nIGNvc3RzLiIsInRoZSB3YWl0ZXIgYnJvdWdodCBCZW5ueSBhbiBleHRyYSBuYXBraW4uIiwidGhlIHdhaXRlciBkaWRuXHUyMDE5dCBoZWxwIHRvIGNsZWFuIHVwLiJdLCJrZXkiOjR9LHsibiI6NCwicHJlIjoiVHJhY3lcdTIwMTlzIHNwYWdoZXR0aSIsIm9wdGlvbnMiOlsid2FzIG11Y2ggYmV0dGVyIHRoYW4gQmVubnlcdTIwMTlzIGxhc2FnbmEuIiwid2FzIG11Y2ggd29yc2UgdGhhbiBCZW5ueVx1MjAxOXMgbGFzYWduYS4iLCJ3YXMgbm8gYmV0dGVyIHRoYW4gQmVubnlcdTIwMTlzIGxhc2FnbmEuIiwid2FzIGFsbW9zdCBhcyBnb29kIGFzIEJlbm55XHUyMDE5cyBsYXNhZ25hLiJdLCJrZXkiOjN9LHsibiI6NSwicHJlIjoiQmVubnkgd291bGQgbGlrZSB0byIsIm9wdGlvbnMiOlsid3JpdGUgYSBuZWdhdGl2ZSByZXZpZXcgb2YgTGUgRnJlbmNoLiIsIndyaXRlIHRvIHRoZSBvd25lciBhc2tpbmcgZm9yIGNvbXBlbnNhdGlvbi4iLCJ3cml0ZSB0byB0aGUgb3duZXIgYW5kIHN1Z2dlc3QgYW4gYXdhcmQuIiwid3JpdGUgdG8gSm9hbiBhYm91dCB2aXNpdGluZyBQYXJpcyBmb3IgaGVyIGJpcnRoZGF5LiJdLCJrZXkiOjF9LHsibiI6NiwicHJlIjoiVHJhY3kgYW5kIEJlbm55IHdvdWxkIGxpa2UgdG8iLCJvcHRpb25zIjpbImNlbGVicmF0ZSBKb2FuXHUyMDE5cyBiaXJ0aGRheSBhdCBMZSBGcmVuY2guIiwic2VlIEpvYW4gd2hlbiBzaGUgZ2V0cyBiYWNrIGZyb20gRnJhbmNlLiIsInRha2UgSm9hbiB0byBhIEZyZW5jaCByZXN0YXVyYW50LiIsInZpc2l0IEpvYW4gYmVmb3JlIHNoZSBjb21lcyBob21lLiJdLCJrZXkiOjJ9XX0seyJ0eXBlIjoiY2xvemUiLCJpbnN0ciI6IkhlcmUgaXMgYSByZXNwb25zZSB0byB0aGUgbWVzc2FnZS4gQ29tcGxldGUgdGhlIHJlc3BvbnNlIGJ5IGZpbGxpbmcgaW4gdGhlIGJsYW5rcy4gU2VsZWN0IHRoZSBiZXN0IGNob2ljZSBmb3IgZWFjaCBibGFuayBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoICYjOTY2MjsgKS4iLCJib2R5IjpbIkhpIFRyYWN5LFxuXG5JdCBzb3VuZHMgbGlrZSB5b3UgaGFkIGEgcmVhbGx5Iix7ImIiOjcsIm9wdGlvbnMiOlsiZGlzYXBwb2ludGluZyIsImF3ZXNvbWUiLCJkZWxpZ2h0ZnVsIiwidGVycmlmeWluZyJdLCJrZXkiOjF9LCJleHBlcmllbmNlIGF0IExlIEZyZW5jaC4gSSB1bmRlcnN0YW5kIHdoeSBCZW5ueSB3b3VsZCBsb3ZlIHRvIHZpc2l0IEZyYW5jZSBhZ2FpbjsgYm90aCB0aGUgRnJlbmNoIGFuZCBJdGFsaWFuIGZvb2QgaGVyZSIseyJiIjo4LCJvcHRpb25zIjpbImZhbGwgc2hvcnQgb2YiLCJhcmUgYmV0dGVyIHRoYW4iLCJhcmUgY29tcGFyYWJsZSB0byIsImFyZSBmb3IgbW9yZSBleHBlbnNpdmUgdGhhbiJdLCJrZXkiOjJ9LCJMZSBGcmVuY2ggYW5kIHByb2JhYmx5IGFueXRoaW5nIHlvdSB3b3VsZCBmaW5kIGluIFdpbm5pcGVnLiBFdmVuIHNvLCByZW1lbWJlciB0aGF0IExlIEZyZW5jaCBpcyBhIG5ldyByZXN0YXVyYW50LCBzbyBtYXliZSB5b3Ugc2hvdWxkIGdvIHRoZXJlIG9uZSBtb3JlIHRpbWUgYmVmb3JlIEJlbm55Iix7ImIiOjksIm9wdGlvbnMiOlsidGFrZXMgbWUgdGhlcmUgZm9yIG15IGJpcnRoZGF5IiwiY2FsbHMgdGhlIG93bmVyIGFib3V0IGhpcyBwYW50cyIsIndyaXRlcyBhIHJlYWxseSBiYWQgcmV2aWV3IiwidmlzaXRzIFBhcmlzIl0sImtleSI6M30sIi4gSSBrbm93IHRoYXQgdGhlIix7ImIiOjEwLCJvcHRpb25zIjpbIm93bmVyIiwic3BhZ2V0dGkiLCJ3aW5lIiwic2VydmljZSJdLCJrZXkiOjR9LCJ3YXMgcmVhbGx5IGJhZCwgYnV0IGl0IG1heSBiZSB0aGF0IHRoaXMgd2FzIG5vdCB0aGUgcmVndWxhciB3YWl0ZXIuIEhhdmluZyBzYWlkIHRoYXQsIEkgdGhpbmsgd2Ugc2hvdWxkIix7ImIiOjExLCJvcHRpb25zIjpbImdvIHRvIGEgZGlmZmVyZW50IHJlc3RhdXJhbnQiLCJlYXQgaW4gbXkgUGFyaXMgYXBhcnRtZW50IiwiYXZvaWQgZHJpbmtpbmcgdGhlIHdpbmUiLCJ0cnkgTGUgRnJlbmNoIGFnYWluIl0sImtleSI6MX0sIiwgd2hlbiB3ZSBtZWV0IG5leHQgbW9udGguXG5cblRha2UgY2FyZSxcblxuSm9hbiJdfV19LHsiaWQiOjIsIm5hbWUiOiJSZWFkaW5nIFBhcnQgMjogUmVhZGluZyB0byBBcHBseSBhIERpYWdyYW0iLCJ0aW1lIjoiOCBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIGRpYWdyYW0uIiwiaHRtbCI6IjxzdHlsZT4uYWUtZnJ7Ym9yZGVyOjFweCBzb2xpZCAjY2JkNWUxO2JvcmRlci1yYWRpdXM6OHB4O292ZXJmbG93OmhpZGRlbjtmb250LXNpemU6MTMuNXB4O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMjIyfS5hZS1mci1oZWFke2JhY2tncm91bmQ6I2YyZTlkYztwYWRkaW5nOjEycHggMTRweDtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjYjU0NjJmfS5hZS1mci1oZWFkIGgze21hcmdpbjowO2NvbG9yOiNiNTQ2MmY7Zm9udC1zaXplOjIycHg7bGV0dGVyLXNwYWNpbmc6LjVweH0uYWUtZnItYm9keXtwYWRkaW5nOjEycHggMTRweH0uYWUtZnItYm9keSBwe21hcmdpbjowIDAgOHB4O2xpbmUtaGVpZ2h0OjEuNDV9LmFlLWZyLXN1Yntjb2xvcjojYjU0NjJmO2ZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luOjEwcHggMCA0cHg7Zm9udC1zaXplOjE0cHh9LmFlLWZyIGg0e21hcmdpbjoxMnB4IDAgNHB4O2NvbG9yOiM0ZDVmMjQ7Zm9udC1zaXplOjE1cHh9LmFlLWZyIHRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMi41cHg7bWFyZ2luOjRweCAwIDZweH0uYWUtZnIgdGR7Ym9yZGVyOjFweCBzb2xpZCAjY2JkNWUxO3BhZGRpbmc6NHB4IDdweDt2ZXJ0aWNhbC1hbGlnbjp0b3A7dGV4dC1hbGlnbjpsZWZ0fS5hZS1mciAuYWUtZnItZmVle3doaXRlLXNwYWNlOm5vd3JhcDtmb250LXdlaWdodDpib2xkfS5hZS1mci1tbm90ZXtmb250LXNpemU6MTEuNXB4O2NvbG9yOiM1NTU7Zm9udC1zdHlsZTppdGFsaWM7bWFyZ2luOjJweCAwIDZweH0uYWUtZnItZm9vdHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjFweDtiYWNrZ3JvdW5kOiNjYmQ1ZTE7bWFyZ2luLXRvcDoxMHB4fS5hZS1mci1mb290IGRpdntiYWNrZ3JvdW5kOiNmN2YzZWM7cGFkZGluZzo5cHggMTJweDtmb250LXNpemU6MTJweDtsaW5lLWhlaWdodDoxLjV9LmFlLWZyLWZvb3Qgc3Ryb25ne2NvbG9yOiNiNTQ2MmZ9QG1lZGlhKG1heC13aWR0aDo1NjBweCl7LmFlLWZyLWZvb3R7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn19PC9zdHlsZT48ZGl2IGNsYXNzPVwiYWUtZnJcIj48ZGl2IGNsYXNzPVwiYWUtZnItaGVhZFwiPjxoMz5Gb3J0IFJvYmluc29uPC9oMz48L2Rpdj48ZGl2IGNsYXNzPVwiYWUtZnItYm9keVwiPjxwPkJ1aWx0IGFsb25nIGEgdml0YWwgdHJhZGluZyByb3V0ZSBpbiAxODQyLCBGb3J0IFJvYmluc29uIHNlcnZlZCBhcyBhIGh1YiBmb3IgdGhlIFJvYmluc29uIFRyYWRpbmcgQ29tcGFueS4gVmlzaXQgdG9kYXkgYW5kIGxlYXJuIHRoZSBoaXN0b3J5IGFuZCB0cmFkaXRpb25zIG9mIG5pbmV0ZWVudGgtY2VudHVyeSBDYW5hZGEuPC9wPjxwIGNsYXNzPVwiYWUtZnItc3ViXCI+SnVuZSAyIEZyZWUgQWRtaXNzaW9ucyBEYXk8L3A+PHA+VG8gY29tbWVtb3JhdGUgdGhlIEZvcnQmcnNxdW87cyAxNzV0aCBiaXJ0aGRheSwgYWRtaXNzaW9uIHdpbGwgYmUgZnJlZSBmb3IgdGhlIHB1YmxpYy48L3A+PGg0PlJlZ3VsYXIgQWRtaXNzaW9uPC9oND48dGFibGU+PHRyPjx0ZD5BZHVsdCAoMTkrKTwvdGQ+PHRkIGNsYXNzPVwiYWUtZnItZmVlXCI+JDEwPC90ZD48dGQgcm93c3Bhbj1cIjRcIj5BZG1pc3Npb24gcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBUcmFkZXImcnNxdW87cyBIb3VzZSwgQnJhbmR0IE11c2V1bSwgVHJhdmlzIExvZGdlLCBhbmQgR2lmdCBTaG9wLiBHdWlkZWQgdG91cnMgb3BlcmF0ZSBldmVyeSAyMCBtaW51dGVzLjwvdGQ+PC90cj48dHI+PHRkPlN0dWRlbnQgKDEzLTE4KTwvdGQ+PHRkIGNsYXNzPVwiYWUtZnItZmVlXCI+JDY8L3RkPjwvdHI+PHRyPjx0ZD5Zb3V0aCAoNi0xMikqPC90ZD48dGQgY2xhc3M9XCJhZS1mci1mZWVcIj4kNDwvdGQ+PC90cj48dHI+PHRkPkNoaWxkICg1IGFuZCB1bmRlcikqPC90ZD48dGQgY2xhc3M9XCJhZS1mci1mZWVcIj5GUkVFPC90ZD48L3RyPjwvdGFibGU+PHAgY2xhc3M9XCJhZS1mci1tbm90ZVwiPipDaGlsZHJlbiBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGFkdWx0cy48L3A+PHA+VG91ciBncm91cHMgbWF5IHF1YWxpZnkgZm9yIGEgMjAlIGRpc2NvdW50LiBUbyBib29rIGEgZ3JvdXAgdG91ciwgcGxlYXNlIGNvbnRhY3QgdXMuPC9wPjxoND5TcGVjaWFsIFRvdXJzICZhbXA7IEV2ZW50czwvaDQ+PHRhYmxlPjx0cj48dGQ+Rm9ydCBFc2NhcGUhPC90ZD48dGQgY2xhc3M9XCJhZS1mci1mZWVcIj5GcmVlPC90ZD48dGQ+QWxsIGRheTwvdGQ+PHRkPkZvbGxvdyBjbHVlcywgc29sdmUgcHV6emxlcywgYW5kIHNlYXJjaCB0aGUgRm9ydCBmb3IgdGhlIGFuc3dlcnMgdG8gdGhlIGVzY2FwZSBjaGFsbGVuZ2UuPC90ZD48L3RyPjx0cj48dGQ+R2hvc3QgVG91cjwvdGQ+PHRkIGNsYXNzPVwiYWUtZnItZmVlXCI+RnJlZTwvdGQ+PHRkPkhvdXJseTwvdGQ+PHRkPkxlYXJuIHRoZSB0YWxlIG9mIEVsZWFub3IgUm9iaW5zb24uICgzMCBtaW4pPC90ZD48L3RyPjx0cj48dGQ+SGVyaXRhZ2UgQ29va2luZyBXb3Jrc2hvcDwvdGQ+PHRkIGNsYXNzPVwiYWUtZnItZmVlXCI+JDI8L3RkPjx0ZD5Ib3VybHk8L3RkPjx0ZD5Db29rIHRyYWRpdGlvbmFsIGJyZWFkIG92ZXIgYW4gb3BlbiBmaXJlLiAoMzAgbWluKTwvdGQ+PC90cj48dHI+PHRkPkZpcmUgYSBSaWZsZSAoYWR1bHRzIG9ubHkpPC90ZD48dGQgY2xhc3M9XCJhZS1mci1mZWVcIj4kMjA8L3RkPjx0ZD5BbGwgZGF5PC90ZD48dGQ+V2l0aCB0aGUgZ3VpZGFuY2Ugb2YgYSBjZXJ0aWZpZWQgcHJvZmVzc2lvbmFsLCBsZWFybiB0byBsb2FkIGFuZCBmaXJlIGEgU25pZGVyLUVuZmllbGQgcmlmbGUuPC90ZD48L3RyPjwvdGFibGU+PHA+R3VpZGVzIGFyZSBmbHVlbnQgaW4gRnJlbmNoIGFuZCBFbmdsaXNoLCBhbmQgYXJlIGRyZXNzZWQgaW4gYXV0aGVudGljIGNsb3RoaW5nIG9mIHRoZSBwZXJpb2QuPC9wPjxoND5TY2hvb2wgUHJvZ3JhbXM8L2g0PjxwPlRoZSBGb3J0IHByb3ZpZGVzIGVkdWNhdGlvbmFsIG1hdGVyaWFscyB0aGF0IGNvbmZvcm0gdG8gdGhlIHByb3ZpbmNpYWwgc2Nob29sIGN1cnJpY3VsdW0uIFNlZSBodHRwOi8vd3d3LmZvcnRyb2JpbnNvbi5jYS9zY2hvb2wgZm9yIGRldGFpbHMuPC9wPjwvZGl2PjxkaXYgY2xhc3M9XCJhZS1mci1mb290XCI+PGRpdj48c3Ryb25nPkhvdXJzOjwvc3Ryb25nPiA5OjAwIGEubS4mbmRhc2g7NjowMCBwLm0uPGJyPjxzdHJvbmc+U2Vhc29uOjwvc3Ryb25nPiBNYXkgMSZuZGFzaDtTZXB0LiAzMDxicj48c3Ryb25nPkFkZHJlc3M6PC9zdHJvbmc+IDEgUm9iaW5zb24gUmQuPGJyPjxzdHJvbmc+Q29udGFjdDo8L3N0cm9uZz4gMS0yMDQtMjQyLTIyMjI8YnI+PHN0cm9uZz5XZWI6PC9zdHJvbmc+IHd3dy5mb3J0cm9iaW5zb24uY2E8L2Rpdj48ZGl2PjxzdHJvbmc+Tm90aWNlOiBBdWcuIDMmbmRhc2g7U2VwdC4gMzA6PC9zdHJvbmc+IFJlbm92YXRpb25zIG9uIGdyb3VuZHMgd2lsbCByZXN0cmljdCBhY2Nlc3MgdG8gc29tZSBhcmVhcy4gQWxsIGFyZWFzIHdpbGwgcmVvcGVuIGluIE1heSBvZiBuZXh0IHllYXIuPC9kaXY+PC9kaXY+PC9kaXY+In0sImJsb2NrcyI6W3sidHlwZSI6ImNsb3plIiwiaW5zdHIiOiJSZWFkIHRoZSBmb2xsb3dpbmcgZW1haWwgbWVzc2FnZSBhYm91dCB0aGUgZGlhZ3JhbSBvbiB0aGUgbGVmdC4gQ29tcGxldGUgdGhlIGVtYWlsIGJ5IGZpbGxpbmcgaW4gdGhlIGJsYW5rcy4gU2VsZWN0IHRoZSBiZXN0IGNob2ljZSBmb3IgZWFjaCBibGFuayBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoICYjOTY2MjsgKS4iLCJib2R5IjpbIlN1YmplY3Q6IFRvIEN1c3RvbWVyIFNlcnZpY2VcblRvOiBGb3J0IFJvYmluc29uIEN1c3RvbWVyIFNlcnZpY2UgPGZvcnRyb2JpbnNvbmN1c3RvbWVyc2VydmljZUBhbWFpbC5jb20+XG5Gcm9tOiBSaWNoYXJkIFBhc2NhbCA8cmljaGFyZHBhc2NhbEBhbWFpbC5jb20+XG5cbkRlYXIgRm9ydCBSb2JpbnNvbiBDdXN0b21lciBTZXJ2aWNlLFxuXG5JIHdlbnQgdG8gRm9ydCBSb2JpbnNvbiBsYXN0IHdlZWssIG9uIEF1Z3VzdCAzMHRoLiBBcyBhbiBhdmlkIGh1bnRlciwgSSB3YXMgbG9va2luZyBmb3J3YXJkIHRvIHRoZSBjaGFuY2UgdG8iLHsiYiI6MSwib3B0aW9ucyI6WyJjb29rIHRyYWRpdGlvbmFsIGZvb2QiLCJ1c2UgYSB0cmFkaXRpb25hbCByaWZsZSIsImxlYXJuIGxvY2FsIGhpc3RvcnkiLCJ3ZWFyIGhpc3RvcmljYWwgY2xvdGhpbmciXSwia2V5IjoyfSwiLiBIb3dldmVyLCBJIHdhcyBkaXNhcHBvaW50ZWQgdG8gZmluZCB0aGF0IG9wdGlvbiB1bmF2YWlsYWJsZSBkdWUgdG8gdGhlIix7ImIiOjIsIm9wdGlvbnMiOlsiYmlydGhkYXkgZXZlbnQiLCJjb29raW5nIHdvcmtzaG9wIiwiYWdlIHJlc3RyaWN0aW9uIiwic2l0ZSByZW5vdmF0aW9ucyJdLCJrZXkiOjR9LCIuIFRoYXQgd2FzIHRoZSBwcmltYXJ5IHB1cnBvc2Ugb2YgbXkgdmlzaXQsIGFuZCBJIGhhZCBhbHJlYWR5IHBhaWQgdGhlIGZ1bGwgcHJpY2Ugb2YiLHsiYiI6Mywib3B0aW9ucyI6WyIkNiIsIiQxMCIsIiQyMCIsIiQzMCJdLCJrZXkiOjJ9LCJ0byBlbnRlciB0aGUgZ3JvdW5kcy4gQmVjYXVzZSBvZiB0aGlzLCBJIHdhcyBob3BpbmcgeW91ciBvcmdhbml6YXRpb24gY291bGQgZ3JhbnQgbWUgZnJlZSBhZG1pc3Npb24gaW4gdGhlIHNwcmluZyBzbyB0aGF0IEkgd291bGQgaGF2ZSBhbm90aGVyIG9wcG9ydHVuaXR5LiBCeSB0aGUgd2F5LCB3aGlsZSBvbnNpdGUgSSBub3RpY2VkIGNoaWxkcmVuIHJ1bm5pbmcgYXJvdW5kIGV4Y2l0ZWRseSIseyJiIjo0LCJvcHRpb25zIjpbIndpdGhvdXQgc3VwZXJ2aXNpb24iLCJvbiBzZWxmLWd1aWRlZCB0b3VycyIsImZvbGxvd2luZyB0aGUgRm9ydCBFc2NhcGUhIGNsdWVzIiwiZWF0aW5nIGNvb2tpZXMgYW5kIHBpY25pYyBmb29kIl0sImtleSI6M30sIi4gSSBjb21tZW5kIHlvdSBvbiBnZXR0aW5nIHRoZW0gc28gZXhjaXRlZCBhYm91dCBoaXN0b3J5ISBJIGFtIGFuIGVsZW1lbnRhcnkgc2Nob29sIEZyZW5jaCB0ZWFjaGVyOyBhcmUgc3VjaCBnYW1lIG1hdGVyaWFscyBvZmZlcmVkIGluIEZyZW5jaD8gSG93IG1hbnkgcGVvcGxlIGFyZSBuZWVkZWQgZm9yIGEgZ3JvdXAgZGlzY291bnQ\/IEdpdmVuIHRoYXQiLHsiYiI6NSwib3B0aW9ucyI6WyJzdHVkZW50cyBjYW4gZW50ZXIgZm9yIGZyZWUiLCJ0aGUgZ3JvdW5kcyBoYXZlIHJlb3BlbmVkIiwidGhlIEZvcnQgaGFzIGJpbGluZ3VhbCBndWlkZXMiLCJ3b3Jrc2hvcHMgb2NjdXIgZXZlcnkgaG91ciJdLCJrZXkiOjN9LCIsIGEgdmlzaXQgdG8gdGhlIEZvcnQgY291bGQgYmUgYSBzdWl0YWJsZSBmaWVsZCB0cmlwIGZvciBteSBzdHVkZW50cy4gSSBsb29rIGZvcndhcmQgdG8gaGVhcmluZyBmcm9tIHlvdS5cblxuQmVzdCxcblxuUmljaGFyZCBQYXNjYWwiXX0seyJ0eXBlIjoic3RlbWxpc3QiLCJpbnN0ciI6IlVzaW5nIHRoZSBkcm9wLWRvd24gbWVudSAoICYjOTY2MjsgKSwgY2hvb3NlIHRoZSBiZXN0IG9wdGlvbi4iLCJpdGVtcyI6W3sibiI6NiwicHJlIjoiV2hhdCBpcyB0aGUgbWFpbiBwdXJwb3NlIG9mIHRoaXMgZW1haWw\/Iiwib3B0aW9ucyI6WyJ0byBjb21wbGFpbiBhYm91dCBhIGd1aWRlZCB0b3VyIiwidG8gc3VnZ2VzdCBhIHByb2dyYW0gY2hhbmdlIiwidG8gbWFrZSBhIGdyb3VwIHJlc2VydmF0aW9uIiwidG8gcmVxdWVzdCBmcmVlIGVudHJ5IHRvIHRoZSBGb3J0Il0sImtleSI6NH0seyJuIjo3LCJwcmUiOiJXaGF0IGNhbiB2aXNpdG9ycyB0byB0aGUgRm9ydCBkbyBhdCBubyBleHRyYSBjb3N0PyIsIm9wdGlvbnMiOlsidHJ5IG9uIHRyYWRpdGlvbmFsIGNsb3RoaW5nIiwicHJlcGFyZSB0cmFkaXRpb25hbCBicmVhZCIsImxpc3RlbiB0byBhIHNjYXJ5IHN0b3J5IiwidmlzaXQgb24gdGhlaXIgYmlydGhkYXkiXSwia2V5IjozfSx7Im4iOjgsInByZSI6IldoYXQgZG9lcyB0aGUgRm9ydCBvZmZlciBzY2hvb2wgdGVhY2hlcnM\/Iiwib3B0aW9ucyI6WyJzdHVkeSBtYXRlcmlhbHMgZm9yIHRoZWlyIGNsYXNzIGxldmVsIiwiZnJlZSBhZG1pc3Npb24gdG8gRm9ydCBSb2JpbnNvbiIsImEgZGlzY291bnQgb24gaW5zdHJ1Y3RvciBhZG1pc3Npb24iLCJ3b3Jrc2hlZXRzIGluIEZyZW5jaCBhbmQgRW5nbGlzaCJdLCJrZXkiOjF9XX1dfSx7ImlkIjozLCJuYW1lIjoiUmVhZGluZyBQYXJ0IDM6IFJlYWRpbmcgZm9yIEluZm9ybWF0aW9uIiwidGltZSI6IjkgbWludXRlcyIsInBhc3NhZ2UiOnsidHlwZSI6InRleHQiLCJsYWJlbCI6IlJlYWQgdGhlIGZvbGxvd2luZyBwYXNzYWdlLiIsImh0bWwiOiI8cD48c3Ryb25nPkEuPC9zdHJvbmc+IEFsdGhvdWdoIGNyeWluZyBpcyB1bml2ZXJzYWwgdG8gYWxtb3N0IGFsbCBodW1hbiBiZWluZ3MsIHRoaXMgbmF0dXJhbCBib2RpbHkgZnVuY3Rpb24gaGFzIHJlY2VpdmVkIGxpdHRsZSBhdHRlbnRpb24gZnJvbSByZXNlYXJjaGVycywgd2hvIGtub3cgbXVjaCBtb3JlIGFib3V0IGhvdyBhbmQgaW4gd2hhdCB3YXlzIHdlIGNyeSB0aGFuIHdoeSB3ZSBjcnkuIEFzIGEgYm9kaWx5IHByb2Nlc3MsIGNyeWluZyBpbnZvbHZlcyB0aGUgc2VjcmV0aW9uIG9mIGEgc2FsdHksIHByb3RlaW4tcmljaCBmbHVpZCB0aGF0IGlzIHByb2R1Y2VkIGJ5IGJvdGggdGhlIHRhcnNhbCBhbmQgdGhlIGxhY2hyeW1hbCBnbGFuZHMsIGxvY2F0ZWQgb24gdGhlIHVuZGVyc2lkZSBvZiBvdXIgZXllbGlkcy4gVG9nZXRoZXIgdGhlc2UgZ2xhbmRzIGFyZSByZXNwb25zaWJsZSBmb3IgdGhlIHRlYXIgcHJvZHVjdGlvbiBwcm9jZXNzLjwvcD48cD48c3Ryb25nPkIuPC9zdHJvbmc+IFRoZSB0YXJzYWwgZ2xhbmRzIGNvbnN0YW50bHkgcHJvZHVjZSBvaWx5LCBudXRyaWVudC1yaWNoIGJhc2FsIHRlYXJzJm1kYXNoO3VwIHRvIDEwIG91bmNlcyBhIGRheSZtZGFzaDtpbiBvcmRlciB0byBsdWJyaWNhdGUgYW5kIG5vdXJpc2ggb3VyIGV5ZXMgZHVyaW5nIGJvdGggb3VyIHdha2luZyBhbmQgc2xlZXBpbmcgaG91cnMuIEluIGNvbnRyYXN0LCByZWZsZXggdGVhcnMgYXJlIHByb2R1Y2VkIGJ5IHRoZSBsYWNocnltYWwgZ2xhbmRzLCBwcmltYXJpbHkgaW4gb3JkZXIgdG8gZmx1c2ggb3V0IGZvcmVpZ24gcGFydGljbGVzIGluIHRoZSBleWVzIGFuZCB0byBwcm90ZWN0IG91ciBleWVzIGZyb20gaXJyaXRhbnRzIHN1Y2ggYXMgY2hlbWljYWxzLCBhbGxlcmdlbnMsIG9yIGV2ZW4gdmFwb3VycyBmcm9tIHJhdyBvbmlvbnMuIFRoZSBnbGFuZHMgdGhhdCBwcm9kdWNlIHJlZmxleCB0ZWFycyBhcmUgYWxzbyByZXNwb25zaWJsZSBmb3IgZW1vdGlvbmFsIHRlYXJzLjwvcD48cD48c3Ryb25nPkMuPC9zdHJvbmc+IE9mIHRoZSB0aHJlZSB0eXBlcyBvZiB0ZWFycyB0aGF0IGh1bWFucyBwcm9kdWNlLCBlbW90aW9uYWwgdGVhcnMgcHV6emxlIHNjaWVudGlzdHMgdGhlIG1vc3QuIEh1bWFuIGJlaW5ncyBzZWVtIHRvIGJlIHRoZSBvbmx5IGFuaW1hbHMgdGhhdCBzaGVkIGVtb3Rpb25hbCB0ZWFycy4gV2hhdCBteXN0aWZpZXMgZXhwZXJ0cyBpcyB0aGUgcXVlc3Rpb24gb2Ygd2hldGhlciBvciBub3QgdGhlcmUgaXMgYSBiaW9sb2dpY2FsIGJlbmVmaXQgdG8gdGhlc2UgdGVhcnMgYW5kLCBpZiB0aGVyZSBpc24mcnNxdW87dCwgd2h5IHRoZXkgd2VyZSBub3Qgd2VlZGVkIG91dCBpbiB0aGUgcHJvY2VzcyBvZiBldm9sdXRpb24uIEFzIGluZmFudHMsIGl0IGlzIGFkdmFudGFnZW91cyBmb3IgdXMgdG8gY3J5IHNvIHRoYXQgd2Ugd2lsbCBnZXQgZmVkIG9yIHJlY2VpdmUgY2FyZSBpZiB3ZSBhcmUgaW4gcGFpbi4gV2h5LCB0aG91Z2gsIGRvIHdlIGNvbnRpbnVlIHRvIGNyeSBhcyBhZHVsdHM\/IFNvbWUgcmVzZWFyY2hlcnMgYXJndWUgdGhhdCBjcnlpbmcgbWlnaHQgYmUgYSBzb3J0IG9mIHZlc3RpZ2lhbCBiZWhhdmlvdXIsIHBlcnNpc3RpbmcgYWZ0ZXIgaW5mYW5jeSBiZWNhdXNlIGl0IHN0aWxsIHNlcnZlcyB0byBtYW5pcHVsYXRlIG90aGVycyBpbnRvIGdpdmluZyB1cyB3aGF0IHdlIHdhbnQuIFlldCB0aGlzIHRoZW9yeSBkb2VzIG5vdCBhY2NvdW50IGZvciB3aHkgd2UgY3J5IGluIHNpdHVhdGlvbnMgd2hlcmUgd2UgYXBwYXJlbnRseSBoYXZlIG5vdGhpbmcgdG8gZ2FpbiBieSBkb2luZyBzbywgc3VjaCBhcyBhdCBzYWQgbW92aWVzLjwvcD48cD48c3Ryb25nPkQuPC9zdHJvbmc+IEl0IGlzIHBvc3NpYmxlIHRoYXQgZW1vdGlvbmFsIHRlYXJzIGFyZSBhIGNvbW11bmljYXRpb24gbWV0aG9kIG9mIGxhc3QgcmVzb3J0Jm1kYXNoO3RoZSBvbmx5IHRoaW5nIGxlZnQgd2hlbiB3b3JkcyBmYWlsIHVzLiBXaGV0aGVyIG9yIG5vdCB0aGlzIGlzIHRoZSBjYXNlLCBlbW90aW9uYWwgdGVhcnMgYXJlIGFzc29jaWF0ZWQgd2l0aCBjZXJ0YWluIGhlYWx0aCBhZHZhbnRhZ2VzLiBTdHVkaWVzIGhhdmUgc2hvd24gdGhhdCB0aG9zZSB3aG8gd2VlcCBmcm9tIHRpbWUgdG8gdGltZSBzZWVtIHRvIGhhdmUgbG93ZXIgcmF0ZXMgb2YgdWxjZXJzLCBtaWdyYWluZSBoZWFkYWNoZXMsIGhlYXJ0IHByb2JsZW1zLCBhbmQgb3RoZXIgZGlzZWFzZXMuIFBlcmhhcHMsIHRoZW4sIHRlYXJzIGFyZSB0aGUgYm9keSZyc3F1bztzIHdheSBvZiByaWRkaW5nIGl0c2VsZiBvZiBlbW90aW9uYWwgdG94aW5zLiBXaGV0aGVyIG9yIG5vdCB0aGlzIGlzIHRydWUsIGl0IHNlZW1zIHJlYXNvbiBlbm91Z2ggdG8gbGV0IGdvIG9uY2UgaW4gYSB3aGlsZSBhbmQgaGF2ZSBhICZsZHF1bztnb29kIGNyeS4mcmRxdW87PC9wPjxwPjxzdHJvbmc+RS48L3N0cm9uZz4gTm90IGdpdmVuIGluIGFueSBvZiB0aGUgYWJvdmUgcGFyYWdyYXBocy48L3A+In0sImJsb2NrcyI6W3sidHlwZSI6Im1hdGNoIiwiaW5zdHIiOiJEZWNpZGUgd2hpY2ggcGFyYWdyYXBoLCBBIHRvIEQsIGhhcyB0aGUgaW5mb3JtYXRpb24gZ2l2ZW4gaW4gZWFjaCBzdGF0ZW1lbnQgYmVsb3cuIFNlbGVjdCBFIGlmIHRoZSBpbmZvcm1hdGlvbiBpcyBub3QgZ2l2ZW4gaW4gYW55IG9mIHRoZSBwYXJhZ3JhcGhzLiIsImxldHRlcnMiOlsiQSIsIkIiLCJDIiwiRCIsIkUiXSwiaXRlbXMiOlt7Im4iOjEsInRleHQiOiJSZXNlYXJjaGVycyBhcmUgdW5hYmxlIHRvIGV4cGxhaW4gdGhlIHB1cnBvc2Ugb2YgdGVhcnMgaW4gc29tZSBjb250ZXh0cy4iLCJrZXkiOjN9LHsibiI6MiwidGV4dCI6IkNyeWluZyByaW5zZXMgZHVzdCBhbmQgZGlydCBmcm9tIHRoZSBleWVzLiIsImtleSI6Mn0seyJuIjozLCJ0ZXh0IjoiU2NpZW50aXN0cyBrbm93IGEgbG90IGFib3V0IHRlYXIgcHJvZHVjdGlvbi4iLCJrZXkiOjF9LHsibiI6NCwidGV4dCI6IkFkdWx0cyBjcnkgbGVzcyB3aGVuIHRoZXkgYXJlIHNpY2suIiwia2V5Ijo1fSx7Im4iOjUsInRleHQiOiJTYWx0IGFuZCBwcm90ZWluIGludGFrZSBtYXkgaGF2ZSBhbiBlZmZlY3Qgb24gdGVhciBwcm9kdWN0aW9uLiIsImtleSI6NX0seyJuIjo2LCJ0ZXh0IjoiQ3J5aW5nIG1heSBhY3R1YWxseSBoYXZlIHBvc2l0aXZlIGhlYWx0aCBiZW5lZml0cy4iLCJrZXkiOjR9LHsibiI6NywidGV4dCI6IlRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGVhcnMgYW5kIGZlZWxpbmdzIGlzIHVuaXF1ZWx5IGh1bWFuLiIsImtleSI6M30seyJuIjo4LCJ0ZXh0IjoiRXllLWNsZWFuc2luZyB0ZWFycyBoYXZlIHRoZSBzYW1lIGJpb2xvZ2ljYWwgb3JpZ2luIGFzIGVtb3Rpb24tcHVyZ2luZyB0ZWFycy4iLCJrZXkiOjJ9LHsibiI6OSwidGV4dCI6IkluIG5vbi1odW1hbiwgcHJpbWF0ZSBzcGVjaWVzLCBjcnlpbmcgc2VydmVzIGEgY29tbXVuaWNhdGl2ZSBwdXJwb3NlLiIsImtleSI6NX1dfV19LHsiaWQiOjQsIm5hbWUiOiJSZWFkaW5nIFBhcnQgNDogUmVhZGluZyBmb3IgVmlld3BvaW50cyIsInRpbWUiOiIxMiBtaW51dGVzIiwicGFzc2FnZSI6eyJ0eXBlIjoidGV4dCIsImxhYmVsIjoiUmVhZCB0aGUgZm9sbG93aW5nIGFydGljbGUgZnJvbSBhIHdlYnNpdGUuIiwiaHRtbCI6IjxwPkEgcmVjZW50IHN0dWR5IG9mIDUwMCBDYW5hZGlhbiBjb21wYW5pZXMgaGF2aW5nIDUwIG9yIG1vcmUgZW1wbG95ZWVzIGZvdW5kIHRoYXQgZmlybXMgd2l0aCBwcmVkb21pbmFudGx5IGZlbWFsZSBzZW5pb3IgbWFuYWdlbWVudCBoYXZlIGEgaGlnaGVyIHJldHVybiBvbiBpbnZlc3RtZW50IHRoYW4gY29tcGFuaWVzIHdob3NlIHRvcCB0aWVyIGlzIGNvbXByaXNlZCBvZiBsZXNzIHRoYW4gNDUlIHdvbWVuLiBZZXQsIG92ZXJhbGwsIHdvbWVuIG9jY3VweSBvbmx5IDI0JSBvZiB0aGUgdXBwZXIgZWNoZWxvbnMuIFRoZSBzdHVkeSwgc2F5cyBpdHMgYXV0aG9yIFBleXRvbiBab2xkeSwgcmFpc2VzIHRoZSBxdWVzdGlvbiBvZiB3aHkgd29ya3BsYWNlIGdlbmRlciBpbWJhbGFuY2Ugc3RpbGwgZXhpc3RzIGFuZCBob3cgaXQmcnNxdW87cyBiZXN0IGFkZHJlc3NlZC4gJmxkcXVvO0l0JnJzcXVvO3Mgc2lnbmlmaWNhbnQsJnJkcXVvOyBzYXlzIFpvbGR5LCAmbGRxdW87YmVjYXVzZSBpbiB0d2VudHktZmlyc3QgY2VudHVyeSBDYW5hZGEsIHBlb3BsZSB0ZW5kIHRvIGJlbGlldmUsIHJpZ2h0bHkgb3Igd3JvbmdseSwgdGhhdCBhZHZhbmNlbWVudCBpcyBiYXNlZCBvbiBhY2hpZXZlbWVudHMsIG5vdCBjaHJvbW9zb21lcy4mcmRxdW87PC9wPjxwPkxlc2xleSBPcnRsaWViLCB3aG8gdGVhY2hlcyBvcmdhbml6YXRpb25hbCBiZWhhdmlvdXIgYXQgdGhlIFVuaXZlcnNpdHkgb2YgTWFuaXRvYmEsIHRoaW5rcyB0aGUgaW1iYWxhbmNlIHN0ZW1zIGZyb20gd29tZW4mcnNxdW87cyByZWx1Y3RhbmNlIHRvIGxvYmJ5IGZvciBwcm9tb3Rpb24uIFdoaWxlIG1lbiB0ZW5kIHRvIGp1bXAgYXQgdGhlIGNoYW5jZSB0byBhZHZhbmNlIHRvIHNlbmlvciBwb3NpdGlvbnMsIHNheXMgT3J0bGllYiwgd29tZW4gaG9sZCBiYWNrIHVudGlsIHRoZXkmcnNxdW87cmUgc3VyZSB0aGV5JnJzcXVvO3JlIHJlYWR5LiAmbGRxdW87V29tZW4gb2Z0ZW4gdmlldyBzZWxmLXByb21vdGlvbiBhcyBzb21laG93IGRpc3Rhc3RlZnVsIG9yIGRpY2V5LCZyZHF1bzsgT3J0bGllYiBzYXlzLiAmbGRxdW87UmlzayBhdmVyc2lvbiBvZnRlbiBob2xkcyB0aGVtIGJhY2suIElyb25pY2FsbHksIHRoaXMgaXMgYSBxdWFsaXR5IG5lZWRlZCBpbiB1cHBlciBtYW5hZ2VtZW50IHJvbGVzLiZyZHF1bzs8L3A+PHA+RGFsaG91c2llIFVuaXZlcnNpdHkgYnVzaW5lc3MgcHJvZmVzc29yIENhc3NpZHkgTm92YWsgYmVsaWV2ZXMgdGhhdCBicmVha2luZyB0aHJvdWdoIHRoZSBzby1jYWxsZWQgZ2xhc3MgY2VpbGluZyBpbnRvIHRvcCBtYW5hZ2VtZW50IHJvbGVzIGlzIHVwIHRvIHdvbWVuLCB3aG8gc2hvdWxkIHByb21vdGUgdGhlbXNlbHZlcyBtb3JlLiAmbGRxdW87V29tZW4gYXJlIHVzdWFsbHkgYmV0dGVyIGVkdWNhdGVkIHRoYW4gbWVuLCZyZHF1bzsgTm92YWsgc2F5cywgJmxkcXVvO3lldCB0aGV5JnJzcXVvO3JlIGxlc3MgYWJsZSB0byB2aXN1YWxpemUgdGhlbXNlbHZlcyBpbiBzZW5pb3IgcG9zaXRpb25zLiBIaXN0b3JpY2FsbHksIGJ1c2luZXNzIGN1bHR1cmUgaGFzIHN0ZXJlb3R5cGljYWxseSByZXByZXNlbnRlZCBtYWxlIHRhbGVudCwgbm90IGZlbWFsZSB0YWxlbnQuIEl0JnJzcXVvO3MgdXAgdG8gd29tZW4gdGhlbXNlbHZlcyB0byBhc3BpcmUgdG8gdG9wIHBvc2l0aW9ucyBhbmQgYmUgbW9yZSBzdHJhdGVnaWMgYWJvdXQgaG93IHRvIGdldCB0aGVyZS4mcmRxdW87PC9wPjxwPk5ldmVydGhlbGVzcywgS3JpcyBTdGFyb3dpdHosIGh1bWFuIHJlc291cmNlcyBwcm9mZXNzaW9uYWwgYXQgY29uc3VsdGluZyBmaXJtIFRheWxvciBNb3JlYXUsIHRoaW5rcyBnZW5kZXIgZGl2ZXJzaXR5IGlzbiZyc3F1bzt0IHRoZSByZXNwb25zaWJpbGl0eSBvZiB3b21lbi4gJmxkcXVvO1dvbWVuIGhhdmUgbG9mdHkgZ29hbHMsIGJ1dCBtYW55IGNvbXBhbmllcyBkb24mcnNxdW87dCByZWNvZ25pemUgdGhlbS4gU2VuaW9yIG1hbmFnZXJzIG5lZWQgdG8gdGFrZSBhbiBhY3RpdmUgcm9sZSBpbiBhY2hpZXZpbmcgd29ya3BsYWNlIGdlbmRlciBiYWxhbmNlLiZyZHF1bzsgRm9yIFN0YXJvd2l0eiwgc3RyaXZpbmcgZm9yIGdlbmRlciBiYWxhbmNlIGlzIHBhcnQgb2YgYSBnb29kIGJ1c2luZXNzIHN0cmF0ZWd5LiAmbGRxdW87Q29tcGFuaWVzIG11c3QgYWN0aXZlbHkgY3JlYXRlIGFuIGVudmlyb25tZW50IHdoZXJlIHdvbWVuIGZlZWwgY29tZm9ydGFibGUgZGlzY3Vzc2luZyB0aGVpciBhY2NvbXBsaXNobWVudHMgYW5kIGdvYWxzLCBiZWNhdXNlLCB1bHRpbWF0ZWx5LCB3aGF0JnJzcXVvO3MgZ29vZCBmb3Igd29tZW4gaXMgZ29vZCBmb3IgdGhlIGNvbXBhbnkuIEluIHN1Y2Nlc3NmdWwgY29tcGFuaWVzLCB3aGF0IHlvdSBzZWUgYXQgYWxsIGxldmVscywgaW5jbHVkaW5nIHRoZSB0b3AsIGlzIGRpdmVyc2l0eS4gVGFsZW50IGlzIGdlbmRlcmxlc3MuJnJkcXVvOzwvcD4ifSwiYmxvY2tzIjpbeyJ0eXBlIjoic3RlbWxpc3QiLCJpbnN0ciI6IlVzaW5nIHRoZSBkcm9wLWRvd24gbWVudSAoICYjOTY2MjsgKSwgY2hvb3NlIHRoZSBiZXN0IG9wdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGluZm9ybWF0aW9uIGdpdmVuIG9uIHRoZSB3ZWJzaXRlLiIsIml0ZW1zIjpbeyJuIjoxLCJwcmUiOiJDYXNzaWR5IE5vdmFrIHNheXMgd29tZW4gbmVlZCBtb3JlIiwib3B0aW9ucyI6WyJ0cmFpbmluZy4iLCJleHBlcnRpc2UuIiwiYm9sZG5lc3MuIiwic2VuaW9yaXR5LiJdLCJrZXkiOjN9LHsibiI6MiwicHJlIjoiV2hpY2ggdHdvIGV4cGVydHMgaGF2ZSBvcHBvc2luZyB2aWV3cyA\/Iiwib3B0aW9ucyI6WyJab2xkeSBhbmQgT3J0bGllYiIsIk5vdmFrIGFuZCBTdGFyb3dpdHoiLCJPcnRsaWViIGFuZCBOb3ZhayIsIlN0YXJvd2l0eiBhbmQgWm9sZHkiXSwia2V5IjoyfSx7Im4iOjMsInByZSI6Ik5vdmFrIGFuZCBTdGFyb3dpdHogd291bGQgbGlrZWx5IGFncmVlIHRoYXQgY29tcGFuaWVzIHNob3VsZCIsIm9wdGlvbnMiOlsiY29uc2lkZXIgb3RoZXIgdHlwZXMgb2YgZGl2ZXJzaXR5LiIsIm1pbmltaXplIHdvcmtwbGFjZSBjb21wZXRpdGlvbi4iLCJlbmNvdXJhZ2UgdGFjdGZ1bCBzZWxmLXByb21vdGlvbi4iLCJwcm9tb3RlIHRoZSBtb3N0IGVkdWNhdGVkIGVtcGxveWVlcy4iXSwia2V5IjozfSx7Im4iOjQsInByZSI6IldoYXQgd291bGQgU3Rhcm93aXR6IG1vc3QgbGlrZWx5IHN1cHBvcnQ\/Iiwib3B0aW9ucyI6WyJ0cmFuc3BhcmVudCBkZWNpc2lvbiBtYWtpbmciLCJpbmNyZWFzZWQgYXV0b2NyYXRpYyBtYW5hZ2VtZW50IiwibGVhZGVyc2hpcCB3b3Jrc2hvcHMgZm9yIHdvbWVuIiwiZ2VuZGVyLWJhc2VkIGhpcmluZyBxdW90YXMiXSwia2V5Ijo0fSx7Im4iOjUsInByZSI6IkEgZ29vZCB0aXRsZSBmb3IgdGhpcyBhcnRpY2xlIHdvdWxkIGJlIFx1MjAxY1dvcmtwbGFjZSBHZW5kZXIgRGl2ZXJzaXR5OiIsIm9wdGlvbnMiOlsiSGlzdG9yaWMgUGVyc3BlY3RpdmVzXHUyMDFkIiwiQW4gRXZlbiBQbGF5aW5nIEZpZWxkIEF0IExhc3RcdTIwMWQiLCJUaGUgT3JpZ2luIG9mIFN0ZXJlb3R5cGVzXHUyMDFkIiwiQ2F1c2VzIGFuZCBTb2x1dGlvbnNcdTIwMWQiXSwia2V5Ijo0fV19LHsidHlwZSI6ImNsb3plIiwiaW5zdHIiOiJUaGUgZm9sbG93aW5nIGlzIGEgY29tbWVudCBieSBhIHZpc2l0b3IgdG8gdGhlIHdlYnNpdGUgcGFnZS4gQ29tcGxldGUgdGhlIGNvbW1lbnQgYnkgY2hvb3NpbmcgdGhlIGJlc3Qgb3B0aW9uIHRvIGZpbGwgaW4gZWFjaCBibGFuay4iLCJib2R5IjpbIkkgb3duIGEgaGlnaGx5IHN1Y2Nlc3NmdWwgVG9yb250byBlbmdpbmVlcmluZyBjb21wYW55LiBNeSBlbnRpcmUgc2VuaW9yIG1hbmFnZW1lbnQgdGVhbSBoYXMgWFkgY2hyb21vc29tZXMgYW5kIGZhY2lhbCBoYWlyIGJ1dCByYW5nZXMgaW4gYWdlIGZyb20gMjggdG8gODAgYW5kIHJlcHJlc2VudHMgdHdlbHZlIGNvdW50cmllcyBvZiBvcmlnaW4sIG5pbmUgZXRobmljaXRpZXMsIGFuZCBmaXZlIGZpcnN0LWxhbmd1YWdlIGdyb3Vwcy4gU28gaXRcdTIwMTlzIHVuZGVyc3RhbmRhYmxlIHRoYXQgSSIseyJiIjo2LCJvcHRpb25zIjpbImFtIHNrZXB0aWNhbCBvZiIsImNhbiBhY2tub3dsZWRnZSIsImZlbHQgdmFsaWRhdGVkIGJ5IiwidG9vayBvZmZlbnNlIGF0Il0sImtleSI6MX0sInRoZSBzdHVkeVx1MjAxOXMgZmluZGluZ3MuIE5vbmV0aGVsZXNzLCBhcyBTdGFyb3dpdHogYWNrbm93bGVkZ2VzIGF0IHRoZSBlbmQsIix7ImIiOjcsIm9wdGlvbnMiOlsid29tZW4gbWF5IGJlIG1vcmUgdGFsZW50ZWQiLCJlcXVpdHkgaXMgdmFsdWFibGUgZm9yIG9yZ2FuaXphdGlvbnMiLCJhbGwgcGVvcGxlIG5lZWQgYSBnb2FsIGF0IHdvcmsiLCJnZW5kZXIgZGV0ZXJtaW5lcyBhIHBlcnNvblx1MjAxOXMgc3VjY2VzcyJdLCJrZXkiOjJ9LCIuIENvbXBhbmllcyB2YWx1ZSBkZWNpc2l2ZW5lc3MsIHNvIHN1cmVseSB0aGUgaGVzaXRhdGlvbiB0aGF0IGhvbGRzIGFueW9uZSBiYWNrIGZyb20gYXBwbHlpbmcgZm9yIHByb21vdGlvbiBpcyBzdWZmaWNpZW50IHJlYXNvbiB0byIseyJiIjo4LCJvcHRpb25zIjpbInN1cHBvcnQgZnVydGhlciBlZHVjYXRpb24iLCJkaXNjb3VyYWdlIHRoZWlyIHByb21vdGlvbiIsImNvbnNpZGVyIGNoYW5naW5nIHBvc2l0aW9ucyIsImRlbnkgcHVibGljIGFja25vd2xlZGdlbWVudCJdLCJrZXkiOjJ9LCIuIEhlbmNlLCBJIGFtIG5vdCBjb252aW5jZWQgYnkgT3J0bGllYlx1MjAxOXMgc3VnZ2VzdGlvbiB0aGF0IGNvbXBhbmllcyBiZW5lZml0IGZyb20iLHsiYiI6OSwib3B0aW9ucyI6WyJza2VwdGljYWwiLCJpbnRyb3ZlcnRlZCIsImNhdXRpb3VzIiwiZmVhcmxlc3MiXSwia2V5IjozfSwic2VuaW9yIG1hbmFnZXJzLiBIb3dldmVyLCBJIGFncmVlIHdpdGggd2hhdCBPcnRsaWViIHNheXMgYWJvdXQgdGhlIHRyYWl0cyBvZiBmZW1hbGUgZXhlY3V0aXZlcyBhbmQsIGluIGZhY3QsIHRoaW5rIGNvbXBhbmllcyBzaG91bGQgZ2l2ZSB0aGVtIix7ImIiOjEwLCJvcHRpb25zIjpbIm9uZ29pbmcgYXNzZXJ0aXZlbmVzcyB0cmFpbmluZyIsIm1vcmUgY29tcGV0aXRpdmUgc2FsYXJpZXMiLCJhZGRpdGlvbmFsIHRlY2huaWNhbCBpbnN0cnVjdGlvbiIsImZsZXhpYmxlIHdvcmtpbmcgc2NoZWR1bGVzIl0sImtleSI6MX0sIi4iXX1dfV19OwoKZnVuY3Rpb24gY2xiRXN0aW1hdGVSKHJhdyl7CiAgaWYgKHJhdyA+PSAzNSkgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCAxMFx1MjAxMzEyJywgbm90ZTonQWR2YW5jZWQgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAzMCkgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA5JywgIG5vdGU6J0VmZmVjdGl2ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDI3KSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDgnLCAgbm90ZTonR29vZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDIyKSByZXR1cm4geyBsZXZlbDonQ0VMUElQIDcnLCAgbm90ZTonQWRlcXVhdGUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxNykgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA2JywgIG5vdGU6J0RldmVsb3BpbmcgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxMSkgcmV0dXJuIHsgbGV2ZWw6J0NFTFBJUCA1JywgIG5vdGU6J0FjcXVpcmluZyBwcm9maWNpZW5jeScgfTsKICByZXR1cm4geyBsZXZlbDonQ0VMUElQIDQgb3IgYmVsb3cnLCBub3RlOidLZWVwIHByYWN0aWNpbmchJyB9Owp9CgooZnVuY3Rpb24oKXsKICAvKiAtLS0tIGluamVjdCBzY29wZWQgQ1NTIChXb3JkUHJlc3Mtc2FmZTogPHN0eWxlPiBpbiBjb250ZW50IGNhbiBiZSBzdHJpcHBlZCkgLS0tLSAqLwogIHZhciBDU1MgPSBgCi5jbHByLXdyYXB7LS1uYXZ5OiMwNTBFMjA7LS1iOTAwOiMwRDIzNTI7LS1iNzAwOiMxMjQ1QTg7LS1iNTAwOiMyNTYzRUI7LS1iNDAwOiMzQjgyRjY7LS1iMjAwOiM5M0M1RkQ7LS1iMTAwOiNEQkVBRkU7LS1iNTA6I0VGRjZGRjstLXRlYWw6IzBEOTQ4ODstLWN5YW46IzA2QjZENDstLWdyZWVuOiMxMEI5ODE7LS1ncmVlbjUwOiNFQ0ZERjU7LS1yb3NlOiNGNDNGNUU7LS10ZXh0OiMwRjE3MkE7LS1tdXRlZDojNDc1NTY5Oy0tc3VidGxlOiM5NEEzQjg7LS1ib3JkZXI6I0UyRThGMDstLWJhci1iZzojRThFQkVGOy0tYmFyLWJvcmRlcjojRDNEOUUwOy0tYmFyLXRleHQ6IzFGMjkzNzstLXBhbmVsLXAtYmc6I0Y0RjVGNzstLXBhbmVsLXAtYm9yZGVyOiNFM0U2RUE7LS1wYW5lbC1xLWJnOiNFOUY0Rjc7LS1wYW5lbC1xLWJvcmRlcjojRDZFOEVEOy0tZGQtb3Blbi1iZzojQ0JFQkY0O2ZvbnQtZmFtaWx5OidQbHVzIEpha2FydGEgU2Fucycsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksUm9ib3RvLHNhbnMtc2VyaWY7Y29sb3I6dmFyKC0tdGV4dCk7bWF4LXdpZHRoOjExODBweDttYXJnaW46MCBhdXRvO3BhZGRpbmc6MTZweCAxNnB4IDU2cHg7bGluZS1oZWlnaHQ6MS41O2ZvbnQtc2l6ZToxNnB4O30KLmNscHItd3JhcCAqLC5jbHByLXdyYXAgKjo6YmVmb3JlLC5jbHByLXdyYXAgKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94O30KLmNscHItd3JhcCBidXR0b257Zm9udC1mYW1pbHk6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjt9Ci5jbHByLXdyYXAgaDEsLmNscHItd3JhcCBoMiwuY2xwci13cmFwIGgzLC5jbHByLXdyYXAgcHttYXJnaW46MDt9Ci5jbHByLWhlcm97cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2JvcmRlci1yYWRpdXM6MjJweDtiYWNrZ3JvdW5kOnZhcigtLW5hdnkpO2NvbG9yOiNmZmY7cGFkZGluZzozNHB4IDM4cHg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6MTNweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2JveC1zaGFkb3c6MCAyMHB4IDQwcHggLTIwcHggcmdiYSg1LDE0LDMyLC40NSk7fQouY2xwci1hdXJvcmF7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtwb2ludGVyLWV2ZW50czpub25lO30KLmNscHItYXVyb3JhIHNwYW57cG9zaXRpb246YWJzb2x1dGU7ZGlzcGxheTpibG9jaztib3JkZXItcmFkaXVzOjUwJTtmaWx0ZXI6Ymx1cig0NnB4KTtvcGFjaXR5Oi41NTt9Ci5jbHByLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgxKXt3aWR0aDo0MjBweDtoZWlnaHQ6NDIwcHg7bGVmdDotMTIwcHg7dG9wOi0yMDBweDtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzEyNDVBOCAwJSx0cmFuc3BhcmVudCA3MCUpO30KLmNscHItYXVyb3JhIHNwYW46bnRoLWNoaWxkKDIpe3dpZHRoOjM4MHB4O2hlaWdodDozODBweDtyaWdodDotODBweDt0b3A6LTE2MHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMEQ5NDg4IDAlLHRyYW5zcGFyZW50IDcwJSk7fQouY2xwci1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMyl7d2lkdGg6MzQwcHg7aGVpZ2h0OjM0MHB4O3JpZ2h0OjIyJTtib3R0b206LTI0MHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDAlLHRyYW5zcGFyZW50IDcwJSk7fQouY2xwci1oZXJvLWJhZGdlc3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO3Bvc2l0aW9uOnJlbGF0aXZlO30KLmNscHItYmFkZ2UtYnJhbmR7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLWI5MDApO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTNweDtwYWRkaW5nOjRweCAxMXB4O2JvcmRlci1yYWRpdXM6OTk5cHg7bGV0dGVyLXNwYWNpbmc6LjAxZW07fQouY2xwci1iYWRnZS1zZXR7Y29sb3I6dmFyKC0tYjIwMCk7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO30KLmNscHItaGVybyBoMXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6Y2xhbXAoMjZweCw0dncsNDBweCk7Zm9udC13ZWlnaHQ6ODAwO2xldHRlci1zcGFjaW5nOi0uMDJlbTtsaW5lLWhlaWdodDoxLjEyO30KLmNscHItaGVyby1zdWJ7cG9zaXRpb246cmVsYXRpdmU7Y29sb3I6I0M3RDJFMztmb250LXNpemU6MTQuNXB4O21heC13aWR0aDo3NjBweDt9Ci5jbHByLWhlcm8tY2hpcHN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7cG9zaXRpb246cmVsYXRpdmU7fQouY2xwci1jaGlwe2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiNFNUVFRkI7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOCk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xNik7cGFkZGluZzo1cHggMTFweDtib3JkZXItcmFkaXVzOjk5OXB4O30KLmNscHItY3Rhe3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi10b3A6NnB4O2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjE1cHg7cGFkZGluZzoxMnB4IDIycHg7Ym9yZGVyLXJhZGl1czoxMnB4O2JveC1zaGFkb3c6MCAxMnB4IDI0cHggLTEwcHggcmdiYSgzNyw5OSwyMzUsLjgpO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xNXMsYmFja2dyb3VuZCAuMTVzO30KLmNscHItY3RhOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpO2JhY2tncm91bmQ6dmFyKC0tYjQwMCk7fQouY2xwci10b29sYmFye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7bWFyZ2luLXRvcDoxOHB4O3BhZGRpbmc6MTBweCAxNHB4O2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Ym9yZGVyLXJhZGl1czoxNHB4O2JveC1zaGFkb3c6MCA2cHggMThweCAtMTJweCByZ2JhKDE1LDIzLDQyLC4yNSk7cG9zaXRpb246c3RpY2t5O3RvcDo4cHg7ei1pbmRleDozMDt9Ci5jbHByLXRvb2xiYXJbaGlkZGVuXXtkaXNwbGF5Om5vbmU7fQouY2xwci10b29sYmFyLXNwYWNlcntmbGV4OjE7fQouY2xwci1zY29yZS1jaGlwe2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1iOTAwKTtiYWNrZ3JvdW5kOnZhcigtLWI1MCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtwYWRkaW5nOjZweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7fQouY2xwci10YnRue2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7Y29sb3I6dmFyKC0tdGV4dCk7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxM3B4O3BhZGRpbmc6OHB4IDE1cHg7Ym9yZGVyLXJhZGl1czoxMHB4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4xMnMsYm94LXNoYWRvdyAuMTJzO30KLmNscHItdGJ0bjpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTtib3gtc2hhZG93OjAgNnB4IDE0cHggLThweCByZ2JhKDE1LDIzLDQyLC4zKTt9Ci5jbHByLXRidG4tY2hlY2t7YmFja2dyb3VuZDp2YXIoLS1ncmVlbik7Ym9yZGVyLWNvbG9yOnZhcigtLWdyZWVuKTtjb2xvcjojZmZmO30KLmNscHItdGJ0bi1jaGVjazpob3ZlcntiYWNrZ3JvdW5kOiMwY2E2Nzg7fQouY2xwci10YnRuW2Rpc2FibGVkXXtvcGFjaXR5Oi41O2N1cnNvcjpub3QtYWxsb3dlZDt0cmFuc2Zvcm06bm9uZTtib3gtc2hhZG93Om5vbmU7fQouY2xwci1zaW17bWFyZ2luLXRvcDoxNnB4O30KLmNscHItc2ltW2hpZGRlbl17ZGlzcGxheTpub25lO30KLmNscHItZG90c3tkaXNwbGF5OmZsZXg7Z2FwOjhweDttYXJnaW46MCAwIDEycHggMnB4O2ZsZXgtd3JhcDp3cmFwO30KLmNscHItZG90e2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo3cHg7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tbXV0ZWQpO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7cGFkZGluZzo2cHggMTJweDtib3JkZXItcmFkaXVzOjk5OXB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YWxsIC4xNXM7fQouY2xwci1kb3QgYntkaXNwbGF5OmlubGluZS1mbGV4O3dpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1iMTAwKTtjb2xvcjp2YXIoLS1iOTAwKTthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250LXNpemU6MTFweDt9Ci5jbHByLWRvdC5jbHByLWN1cntiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2JvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTtjb2xvcjojZmZmO30KLmNscHItZG90LmNscHItY3VyIGJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4yNSk7Y29sb3I6I2ZmZjt9Ci5jbHByLWRvdC5jbHByLWRvbmUgYntiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTtjb2xvcjojZmZmO30KLmNscHItY2F0e2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTJweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDEwcHggMzBweCAtMThweCByZ2JhKDE1LDIzLDQyLC40KTt9Ci5jbHByLWJhcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O3BhZGRpbmc6MTFweCAxNnB4O2JhY2tncm91bmQ6dmFyKC0tYmFyLWJnKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTt9Ci5jbHByLWJhci10aXRsZXtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7Y29sb3I6dmFyKC0tYmFyLXRleHQpO2ZsZXg6MTttaW4td2lkdGg6MDt9Ci5jbHByLWJhci10aW1lcntmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1iYXItdGV4dCk7d2hpdGUtc3BhY2U6bm93cmFwO30KLmNscHItYmFyLXRpbWVyIGJ7Zm9udC13ZWlnaHQ6ODAwO30KLmNscHItY29sc3tkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnI7Z2FwOjA7fQouY2xwci1wYXNzYWdle3BhZGRpbmc6MjBweCAyMnB4O2JhY2tncm91bmQ6dmFyKC0tcGFuZWwtcC1iZyk7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCB2YXIoLS1wYW5lbC1wLWJvcmRlcik7bWF4LWhlaWdodDoxMjAwcHg7b3ZlcmZsb3c6YXV0bzt9Ci5jbHByLXFjb2x7cGFkZGluZzoxOHB4IDIycHg7YmFja2dyb3VuZDp2YXIoLS1wYW5lbC1xLWJnKTttYXgtaGVpZ2h0OjEyMDBweDtvdmVyZmxvdzphdXRvO30KLmNscHItcGxhYmVsLC5jbHByLWluc3Rye2Rpc3BsYXk6ZmxleDtnYXA6OXB4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWI5MDApO21hcmdpbi1ib3R0b206MTJweDt9Ci5jbHByLXBsYWJlbDo6YmVmb3JlLC5jbHByLWluc3RyOjpiZWZvcmV7Y29udGVudDoiaSI7ZmxleDpub25lO3dpZHRoOjE3cHg7aGVpZ2h0OjE3cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtjb2xvcjojZmZmO2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjgwMDtmb250LXN0eWxlOml0YWxpYztkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luLXRvcDoxcHg7fQouY2xwci1wYXNzYWdlIHB7Zm9udC1zaXplOjE0LjVweDtjb2xvcjojMWUyYTNhO21hcmdpbi1ib3R0b206MTFweDtsaW5lLWhlaWdodDoxLjcyO30KLmNscHItcGltZ3t3aWR0aDoxMDAlO2hlaWdodDphdXRvO2JvcmRlcjoxcHggc29saWQgdmFyKC0tcGFuZWwtcC1ib3JkZXIpO2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6I2ZmZjtkaXNwbGF5OmJsb2NrO30KLmNscHItYmxvY2t7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tcGFuZWwtcS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjE2cHggMTZweDttYXJnaW4tYm90dG9tOjE2cHg7fQouY2xwci1zdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDtmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS10ZXh0KTtwYWRkaW5nOjlweCAwO2xpbmUtaGVpZ2h0OjEuNzt9Ci5jbHByLXN0ZW0gKyAuY2xwci1zdGVte2JvcmRlci10b3A6MXB4IGRhc2hlZCAjRTZFREYxO30KLmNscHItc251bXtmb250LXdlaWdodDo4MDA7Y29sb3I6dmFyKC0tYjcwMCk7fQouY2xwci1jbG96ZXtmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS10ZXh0KTtsaW5lLWhlaWdodDoyLjE1O30KLmNscHItY2xvemUgLmNscHItcGFyYXttYXJnaW4tYm90dG9tOjEycHg7d2hpdGUtc3BhY2U6cHJlLXdyYXA7fQouY2xwci1tYXRjaC1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjEycHg7cGFkZGluZzoxMXB4IDA7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjY7fQouY2xwci1tYXRjaC1yb3cgKyAuY2xwci1tYXRjaC1yb3d7Ym9yZGVyLXRvcDoxcHggZGFzaGVkICNFNkVERjE7fQouY2xwci1tYXRjaC1yb3cgLmNscHItc251bXttYXJnaW4tdG9wOjVweDt9Ci8qIGRyb3Bkb3duIHdpZGdldCAqLwouY2xwci1kZHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmlubGluZS1mbGV4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW46MnB4IDJweDt9Ci5jbHByLWRkLWJ0bntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O21pbi13aWR0aDo2NHB4O21heC13aWR0aDozNDBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjQjdDMkNFO2JvcmRlci1yYWRpdXM6NnB4O3BhZGRpbmc6NXB4IDlweDtmb250LXNpemU6MTMuNXB4O2NvbG9yOnZhcigtLXRleHQpO2xpbmUtaGVpZ2h0OjEuMzU7dGV4dC1hbGlnbjpsZWZ0O3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTJzLGJvcmRlci1jb2xvciAuMTJzO30KLmNscHItZGQtYnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYjUwKTtib3JkZXItY29sb3I6dmFyKC0tYjQwMCk7fQouY2xwci1kZC5jbHByLW9wZW4gLmNscHItZGQtYnRue2JhY2tncm91bmQ6dmFyKC0tZGQtb3Blbi1iZyk7Ym9yZGVyLWNvbG9yOnZhcigtLWI0MDApO30KLmNscHItZGQtdHh0e2ZsZXg6MTttaW4td2lkdGg6MDt9Ci5jbHByLWRkLXR4dC5jbHByLWVtcHR5e2NvbG9yOnZhcigtLXN1YnRsZSk7bGV0dGVyLXNwYWNpbmc6M3B4O30KLmNscHItZGQtY2FyZXR7Zm9udC1zaXplOjlweDtjb2xvcjp2YXIoLS1iNzAwKTtmbGV4Om5vbmU7fQouY2xwci1kZC1tZW51e3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6NjA7dG9wOmNhbGMoMTAwJSArIDRweCk7bGVmdDowO21pbi13aWR0aDoyNDBweDttYXgtd2lkdGg6MzYwcHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI0M2RDBEQTtib3JkZXItcmFkaXVzOjhweDtib3gtc2hhZG93OjAgMTZweCAzNHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjQpO3BhZGRpbmc6NXB4O2Rpc3BsYXk6bm9uZTt9Ci5jbHByLWRkLmNscHItb3BlbiAuY2xwci1kZC1tZW51e2Rpc3BsYXk6YmxvY2s7fQouY2xwci1kZC1vcHR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjlweDtwYWRkaW5nOjhweCA5cHg7Ym9yZGVyLXJhZGl1czo2cHg7Zm9udC1zaXplOjEzLjVweDtjb2xvcjp2YXIoLS10ZXh0KTtjdXJzb3I6cG9pbnRlcjtsaW5lLWhlaWdodDoxLjQ7fQouY2xwci1kZC1vcHQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1iNTApO30KLmNscHItZGQtb3B0IC5jbHByLXJhZGlve2ZsZXg6bm9uZTt3aWR0aDoxNXB4O2hlaWdodDoxNXB4O2JvcmRlci1yYWRpdXM6NTAlO2JvcmRlcjoxLjVweCBzb2xpZCAjOUFBN0I0O21hcmdpbi10b3A6MXB4O30KLmNscHItZGQtb3B0LmNscHItc2VsIC5jbHByLXJhZGlve2JvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiA0MiUsI2ZmZiA0NyUpO30KLmNscHItZGQuY2xwci1yaWdodCAuY2xwci1kZC1idG57YmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTtib3JkZXI6MnB4IHNvbGlkIHZhcigtLWdyZWVuKTtjb2xvcjojMDQ3ODU3O30KLmNscHItZGQuY2xwci13cm9uZyAuY2xwci1kZC1idG57YmFja2dyb3VuZDojRkZGMUYyO2JvcmRlcjoycHggc29saWQgdmFyKC0tcm9zZSk7Y29sb3I6I0JFMTIzQzt9Ci5jbHByLXNvbHZlZHtkaXNwbGF5Om5vbmU7bWFyZ2luLWxlZnQ6N3B4O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMwNDc4NTc7fQouY2xwci1kZC5jbHByLXdyb25nIC5jbHByLXNvbHZlZHtkaXNwbGF5OmlubGluZTt9Ci5jbHByLW5hdntkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47cGFkZGluZzoxNHB4IDE4cHg7YmFja2dyb3VuZDp2YXIoLS1iYXItYmcpO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpO30KLmNscHItbmF2YnRue2JhY2tncm91bmQ6dmFyKC0tYjkwMCk7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweDtwYWRkaW5nOjlweCAyMHB4O2JvcmRlci1yYWRpdXM6OXB4O3RyYW5zaXRpb246dHJhbnNmb3JtIC4xMnMsYmFja2dyb3VuZCAuMTJzO30KLmNscHItbmF2YnRuOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tYjcwMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7fQouY2xwci1uYXZidG4uY2xwci1naG9zdHtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6dmFyKC0tbXV0ZWQpO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7fQouY2xwci1uYXZidG5bZGlzYWJsZWRde29wYWNpdHk6LjQ7Y3Vyc29yOm5vdC1hbGxvd2VkO3RyYW5zZm9ybTpub25lO30KLmNscHItcmVzdWx0c3ttYXJnaW4tdG9wOjE4cHg7fQouY2xwci1yZXN1bHRzW2hpZGRlbl17ZGlzcGxheTpub25lO30KLmNscHItcmVzLWNhcmR7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjE4cHg7cGFkZGluZzoyNHB4IDI2cHg7Ym94LXNoYWRvdzowIDE2cHggNDBweCAtMjJweCByZ2JhKDE1LDIzLDQyLC40KTt9Ci5jbHByLXJlcy10b3B7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MjBweDtmbGV4LXdyYXA6d3JhcDt9Ci5jbHByLXJlcy1zY29yZXtmb250LXNpemU6NDRweDtmb250LXdlaWdodDo4MDA7Y29sb3I6dmFyKC0tYjcwMCk7bGluZS1oZWlnaHQ6MTt9Ci5jbHByLXJlcy1zY29yZSBzcGFue2ZvbnQtc2l6ZToyMHB4O2NvbG9yOnZhcigtLXN1YnRsZSk7fQouY2xwci1yZXMtY2xie2JhY2tncm91bmQ6dmFyKC0tYjUwKTtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjEwcHggMTZweDt9Ci5jbHByLXJlcy1jbGIgYntkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxOHB4O2NvbG9yOnZhcigtLWI5MDApO30KLmNscHItcmVzLWNsYiBzbWFsbHtjb2xvcjp2YXIoLS1tdXRlZCk7fQouY2xwci1yZXMtYnJlYWt7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi10b3A6MTZweDt9Ci5jbHByLXJlcy1waWxse2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1tdXRlZCk7YmFja2dyb3VuZDojRjFGNUY5O2JvcmRlci1yYWRpdXM6OTk5cHg7cGFkZGluZzo2cHggMTNweDt9Ci5jbHByLXJlcy1hY3Rpb25ze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDttYXJnaW4tdG9wOjE4cHg7ZmxleC13cmFwOndyYXA7fQpAbWVkaWEobWF4LXdpZHRoOjgyMHB4KXsuY2xwci1jb2xze2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7fS5jbHByLXBhc3NhZ2V7Ym9yZGVyLXJpZ2h0Om5vbmU7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tcGFuZWwtcC1ib3JkZXIpO21heC1oZWlnaHQ6bm9uZTt9LmNscHItcWNvbHttYXgtaGVpZ2h0Om5vbmU7fX0KYDsKICB2YXIgc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOyBzdC50ZXh0Q29udGVudCA9IENTUzsgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdCk7CiAgdmFyIHdyYXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwcldyYXAnKTsKICB2YXIgc3RhcnRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclN0YXJ0Jyk7CiAgdmFyIHRvb2xiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwclRvb2xiYXInKTsKICB2YXIgc2ltID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJTaW0nKTsKICB2YXIgZG90c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJEb3RzJyk7CiAgdmFyIGNhdEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJDYXQnKTsKICB2YXIgcmVzdWx0c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJSZXN1bHRzJyk7CiAgdmFyIHNjb3JlQ2hpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByU2NvcmVDaGlwJyk7CiAgdmFyIGNoZWNrQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscHJDaGVjaycpOwogIHZhciByZXNldEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByUmVzZXQnKTsKCiAgdmFyIFEgPSBbXTsKICB2YXIgY3VyUGFydCA9IDA7CiAgdmFyIGNoZWNrZWQgPSBmYWxzZTsKCiAgZnVuY3Rpb24gZWwodGFnLCBjbHMsIGh0bWwpeyB2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7IGlmKGNscyllLmNsYXNzTmFtZT1jbHM7IGlmKGh0bWwhPW51bGwpZS5pbm5lckhUTUw9aHRtbDsgcmV0dXJuIGU7IH0KCiAgLyogQnVpbGQgdGhlIHBlcnNpc3RlbnQgcXVlc3Rpb24gbGlzdCBPTkNFOyBhdHRhY2ggLl9xIHRvIGVhY2ggaXRlbS9ibGFuayBzbwogICAgIHJlLXJlbmRlcmluZyBhIHBhcnQgcmV1c2VzIHRoZSBzYW1lIHN0YXRlIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXQuICovCiAgZnVuY3Rpb24gaW5pdFF1ZXN0aW9ucygpewogICAgUSA9IFtdOwogICAgUkRBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0KXsKICAgICAgcGFydC5ibG9ja3MuZm9yRWFjaChmdW5jdGlvbihibGspewogICAgICAgIGlmKGJsay50eXBlPT09J2Nsb3plJyl7CiAgICAgICAgICBibGsuYm9keS5mb3JFYWNoKGZ1bmN0aW9uKHRvayl7IGlmKHR5cGVvZiB0b2s9PT0nb2JqZWN0Jyl7IHRvay5fcT17c2VsOm51bGwsa2V5OnRvay5rZXksbjp0b2suYixwYXJ0OnBhcnQuaWR9OyBRLnB1c2godG9rLl9xKTsgfSB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgYmxrLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oaXQpeyBpdC5fcT17c2VsOm51bGwsa2V5Oml0LmtleSxuOml0Lm4scGFydDpwYXJ0LmlkfTsgUS5wdXNoKGl0Ll9xKTsgfSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gbWFrZURyb3Bkb3duKG9wdGlvbnMsIHFyZWYpewogICAgdmFyIGRkID0gZWwoJ3NwYW4nLCdjbHByLWRkJyk7CiAgICB2YXIgYnRuID0gZWwoJ2J1dHRvbicsJ2NscHItZGQtYnRuJyk7CiAgICB2YXIgdHh0ID0gZWwoJ3NwYW4nLCdjbHByLWRkLXR4dCBjbHByLWVtcHR5JywnICAgJyk7CiAgICB2YXIgY2FyZXQgPSBlbCgnc3BhbicsJ2NscHItZGQtY2FyZXQnLCdcdTI1YmUnKTsKICAgIGJ0bi5hcHBlbmRDaGlsZCh0eHQpOyBidG4uYXBwZW5kQ2hpbGQoY2FyZXQpOwogICAgdmFyIHNvbHZlZCA9IGVsKCdzcGFuJywnY2xwci1zb2x2ZWQnLCcnKTsKICAgIHZhciBtZW51ID0gZWwoJ3NwYW4nLCdjbHByLWRkLW1lbnUnKTsKICAgIG9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvcHQsIGkpewogICAgICB2YXIgbyA9IGVsKCdzcGFuJywnY2xwci1kZC1vcHQnKTsKICAgICAgby5hcHBlbmRDaGlsZChlbCgnc3BhbicsJ2NscHItcmFkaW8nKSk7CiAgICAgIG8uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLG51bGwsb3B0KSk7CiAgICAgIG8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgaWYoY2hlY2tlZCkgcmV0dXJuOwogICAgICAgIHFyZWYuc2VsID0gaSsxOwogICAgICAgIHR4dC50ZXh0Q29udGVudCA9IG9wdDsgdHh0LmNsYXNzTmFtZT0nY2xwci1kZC10eHQnOwogICAgICAgIG1lbnUucXVlcnlTZWxlY3RvckFsbCgnLmNscHItZGQtb3B0JykuZm9yRWFjaChmdW5jdGlvbih4KXt4LmNsYXNzTGlzdC5yZW1vdmUoJ2NscHItc2VsJyk7fSk7CiAgICAgICAgby5jbGFzc0xpc3QuYWRkKCdjbHByLXNlbCcpOwogICAgICAgIGNsb3NlQWxsKCk7CiAgICAgICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICAgIH0pOwogICAgICBtZW51LmFwcGVuZENoaWxkKG8pOwogICAgfSk7CiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICBpZihjaGVja2VkKSByZXR1cm47CiAgICAgIHZhciB3YXNPcGVuID0gZGQuY2xhc3NMaXN0LmNvbnRhaW5zKCdjbHByLW9wZW4nKTsKICAgICAgY2xvc2VBbGwoKTsKICAgICAgaWYoIXdhc09wZW4pIGRkLmNsYXNzTGlzdC5hZGQoJ2NscHItb3BlbicpOwogICAgfSk7CiAgICBkZC5hcHBlbmRDaGlsZChidG4pOyBkZC5hcHBlbmRDaGlsZChzb2x2ZWQpOyBkZC5hcHBlbmRDaGlsZChtZW51KTsKICAgIHFyZWYuZGRFbCA9IGRkOyBxcmVmLnR4dEVsID0gdHh0OyBxcmVmLnNvbHZlZEVsID0gc29sdmVkOyBxcmVmLm9wdGlvbnMgPSBvcHRpb25zOwogICAgaWYocXJlZi5zZWwhPW51bGwpewogICAgICB0eHQudGV4dENvbnRlbnQgPSBvcHRpb25zW3FyZWYuc2VsLTFdOyB0eHQuY2xhc3NOYW1lPSdjbHByLWRkLXR4dCc7CiAgICAgIHZhciBzbyA9IG1lbnUucXVlcnlTZWxlY3RvckFsbCgnLmNscHItZGQtb3B0JylbcXJlZi5zZWwtMV07IGlmKHNvKSBzby5jbGFzc0xpc3QuYWRkKCdjbHByLXNlbCcpOwogICAgfQogICAgcmV0dXJuIGRkOwogIH0KICBmdW5jdGlvbiBjbG9zZUFsbCgpeyB3cmFwLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHByLWRkLmNscHItb3BlbicpLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5jbGFzc0xpc3QucmVtb3ZlKCdjbHByLW9wZW4nKTt9KTsgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VBbGwpOwoKICBmdW5jdGlvbiBidWlsZFBhcnQocGkpewogICAgdmFyIHBhcnQgPSBSREFUQS5wYXJ0c1twaV07CiAgICBjYXRFbC5pbm5lckhUTUw9Jyc7CiAgICB2YXIgYmFyID0gZWwoJ2RpdicsJ2NscHItYmFyJyk7CiAgICBiYXIuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsJ2NscHItYmFyLXRpdGxlJywgJ1ByYWN0aWNlIFRlc3QgMSBcdTIwMTMgJytwYXJ0Lm5hbWUpKTsKICAgIGJhci5hcHBlbmRDaGlsZChlbCgnZGl2JywnY2xwci1iYXItdGltZXInLCdTdWdnZXN0ZWQgdGltZTogPGI+JytwYXJ0LnRpbWUrJzwvYj4nKSk7CiAgICBjYXRFbC5hcHBlbmRDaGlsZChiYXIpOwogICAgdmFyIGNvbHMgPSBlbCgnZGl2JywnY2xwci1jb2xzJyk7CiAgICB2YXIgbGVmdCA9IGVsKCdkaXYnLCdjbHByLXBhc3NhZ2UnKTsKICAgIGxlZnQuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsJ2NscHItcGxhYmVsJywgcGFydC5wYXNzYWdlLmxhYmVsKSk7CiAgICBpZihwYXJ0LnBhc3NhZ2UudHlwZT09PSdpbWFnZScpewogICAgICB2YXIgaW1nID0gZWwoJ2ltZycsJ2NscHItcGltZycpOyBpbWcuc3JjID0gcGFydC5wYXNzYWdlLnNyYzsgaW1nLmFsdCA9IHBhcnQucGFzc2FnZS5hbHR8fCcnOyBsZWZ0LmFwcGVuZENoaWxkKGltZyk7CiAgICB9IGVsc2UgewogICAgICBsZWZ0LmFwcGVuZENoaWxkKGVsKCdkaXYnLG51bGwsIHBhcnQucGFzc2FnZS5odG1sKSk7CiAgICB9CiAgICB2YXIgcmlnaHQgPSBlbCgnZGl2JywnY2xwci1xY29sJyk7CiAgICBwYXJ0LmJsb2Nrcy5mb3JFYWNoKGZ1bmN0aW9uKGJsb2NrKXsgcmlnaHQuYXBwZW5kQ2hpbGQoYnVpbGRCbG9jayhibG9jaywgcGFydCkpOyB9KTsKICAgIGNvbHMuYXBwZW5kQ2hpbGQobGVmdCk7IGNvbHMuYXBwZW5kQ2hpbGQocmlnaHQpOwogICAgY2F0RWwuYXBwZW5kQ2hpbGQoY29scyk7CiAgICB2YXIgbmF2ID0gZWwoJ2RpdicsJ2NscHItbmF2Jyk7CiAgICB2YXIgcHJldiA9IGVsKCdidXR0b24nLCdjbHByLW5hdmJ0biBjbHByLWdob3N0JywnXHUyMTkwIFByZXZpb3VzIHBhcnQnKTsKICAgIHZhciBuZXh0ID0gZWwoJ2J1dHRvbicsJ2NscHItbmF2YnRuJywnTmV4dCBwYXJ0IFx1MjE5MicpOwogICAgcHJldi5kaXNhYmxlZCA9IChwaT09PTApOyBuZXh0LmRpc2FibGVkID0gKHBpPT09UkRBVEEucGFydHMubGVuZ3RoLTEpOwogICAgcHJldi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IGlmKHBpPjApIGdvKHBpLTEpOyB9KTsKICAgIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBpZihwaTxSREFUQS5wYXJ0cy5sZW5ndGgtMSkgZ28ocGkrMSk7IH0pOwogICAgbmF2LmFwcGVuZENoaWxkKHByZXYpOyBuYXYuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICBjYXRFbC5hcHBlbmRDaGlsZChuYXYpOwogICAgaWYoY2hlY2tlZCkgYXBwbHlNYXJrcygpOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRCbG9jayhibG9jaywgcGFydCl7CiAgICB2YXIgd3JhcEIgPSBlbCgnZGl2JywnY2xwci1ibG9jaycpOwogICAgd3JhcEIuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsJ2NscHItaW5zdHInLCBibG9jay5pbnN0cikpOwogICAgaWYoYmxvY2sudHlwZT09PSdzdGVtbGlzdCcpewogICAgICBibG9jay5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0KXsKICAgICAgICB2YXIgcm93ID0gZWwoJ2RpdicsJ2NscHItc3RlbScpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsJ2NscHItc251bScsIGl0Lm4rJy4nKSk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJyxudWxsLCBpdC5wcmUrJyAnKSk7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKG1ha2VEcm9wZG93bihpdC5vcHRpb25zLCBpdC5fcSkpOwogICAgICAgIHdyYXBCLmFwcGVuZENoaWxkKHJvdyk7CiAgICAgIH0pOwogICAgfSBlbHNlIGlmKGJsb2NrLnR5cGU9PT0nY2xvemUnKXsKICAgICAgdmFyIGJveCA9IGVsKCdkaXYnLCdjbHByLWNsb3plJyk7CiAgICAgIGJsb2NrLmJvZHkuZm9yRWFjaChmdW5jdGlvbih0b2spewogICAgICAgIGlmKHR5cGVvZiB0b2s9PT0nc3RyaW5nJyl7CiAgICAgICAgICB2YXIgc2VncyA9IHRvay5zcGxpdCgnXG5cbicpOwogICAgICAgICAgc2Vncy5mb3JFYWNoKGZ1bmN0aW9uKHNlZywgaWR4KXsKICAgICAgICAgICAgaWYoaWR4PjApeyBib3guYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLG51bGwsJzxicj48YnI+JykpOyB9CiAgICAgICAgICAgIGJveC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZWcpKTsKICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBib3guYXBwZW5kQ2hpbGQobWFrZURyb3Bkb3duKHRvay5vcHRpb25zLCB0b2suX3EpKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgICB3cmFwQi5hcHBlbmRDaGlsZChib3gpOwogICAgfSBlbHNlIGlmKGJsb2NrLnR5cGU9PT0nbWF0Y2gnKXsKICAgICAgYmxvY2suaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdCl7CiAgICAgICAgdmFyIHJvdyA9IGVsKCdkaXYnLCdjbHByLW1hdGNoLXJvdycpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChtYWtlRHJvcGRvd24oYmxvY2subGV0dGVycywgaXQuX3EpKTsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCdjbHByLXNudW0nLCBpdC5uKycuJykpOwogICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsbnVsbCwgaXQudGV4dCkpOwogICAgICAgIHdyYXBCLmFwcGVuZENoaWxkKHJvdyk7CiAgICAgIH0pOwogICAgfQogICAgcmV0dXJuIHdyYXBCOwogIH0KCiAgZnVuY3Rpb24gYnVpbGREb3RzKCl7CiAgICBkb3RzRWwuaW5uZXJIVE1MPScnOwogICAgUkRBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwLCBpKXsKICAgICAgdmFyIGQgPSBlbCgnYnV0dG9uJywnY2xwci1kb3QnKyhpPT09Y3VyUGFydD8nIGNscHItY3VyJzonJykpOwogICAgICBkLmFwcGVuZENoaWxkKGVsKCdiJyxudWxsLChpKzEpKSk7CiAgICAgIGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLG51bGwsWydDb3JyZXNwb25kZW5jZScsJ0FwcGx5IGEgRGlhZ3JhbScsJ0luZm9ybWF0aW9uJywnVmlld3BvaW50cyddW2ldKSk7CiAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBnbyhpKTsgfSk7CiAgICAgIGRvdHNFbC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogIH0KICBmdW5jdGlvbiBnbyhwaSl7IGN1clBhcnQ9cGk7IGJ1aWxkRG90cygpOyBidWlsZFBhcnQocGkpOyBjYXRFbC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J3N0YXJ0J30pOyB9CgogIGZ1bmN0aW9uIHVwZGF0ZVNjb3JlQ2hpcCgpewogICAgdmFyIGFucyA9IFEuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxLnNlbCE9bnVsbDt9KS5sZW5ndGg7CiAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSBjaGVja2VkID8gKFEuZmlsdGVyKGZ1bmN0aW9uKHEpe3JldHVybiBxLnNlbD09PXEua2V5O30pLmxlbmd0aCsnIC8gJytRLmxlbmd0aCsnIGNvcnJlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChhbnMrJyAvICcrUS5sZW5ndGgrJyBhbnN3ZXJlZCcpOwogIH0KCiAgZnVuY3Rpb24gYXBwbHlNYXJrcygpewogICAgUS5mb3JFYWNoKGZ1bmN0aW9uKHEpewogICAgICBpZighcS5kZEVsKSByZXR1cm47CiAgICAgIHEuZGRFbC5jbGFzc0xpc3QucmVtb3ZlKCdjbHByLXJpZ2h0JywnY2xwci13cm9uZycpOwogICAgICBpZihxLnNlbD09PXEua2V5KXsgcS5kZEVsLmNsYXNzTGlzdC5hZGQoJ2NscHItcmlnaHQnKTsgfQogICAgICBlbHNlIHsKICAgICAgICBxLmRkRWwuY2xhc3NMaXN0LmFkZCgnY2xwci13cm9uZycpOwogICAgICAgIGlmKHEuc29sdmVkRWwpIHEuc29sdmVkRWwudGV4dENvbnRlbnQgPSAnXHUyNzEzICcrcS5vcHRpb25zW3Eua2V5LTFdOwogICAgICAgIGlmKHEuc2VsPT1udWxsICYmIHEudHh0RWwpeyBxLnR4dEVsLnRleHRDb250ZW50PScobm8gYW5zd2VyKSc7IHEudHh0RWwuY2xhc3NOYW1lPSdjbHByLWRkLXR4dCc7IH0KICAgICAgfQogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBkb0NoZWNrKCl7CiAgICBjaGVja2VkID0gdHJ1ZTsKICAgIGFwcGx5TWFya3MoKTsKICAgIHZhciBjb3JyZWN0ID0gUS5maWx0ZXIoZnVuY3Rpb24ocSl7cmV0dXJuIHEuc2VsPT09cS5rZXk7fSkubGVuZ3RoOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICBjaGVja0J0bi5kaXNhYmxlZCA9IHRydWU7CiAgICB2YXIgYnlQYXJ0ID0ge307CiAgICBRLmZvckVhY2goZnVuY3Rpb24ocSl7IGJ5UGFydFtxLnBhcnRdPWJ5UGFydFtxLnBhcnRdfHx7YzowLHQ6MH07IGJ5UGFydFtxLnBhcnRdLnQrKzsgaWYocS5zZWw9PT1xLmtleSlieVBhcnRbcS5wYXJ0XS5jKys7IH0pOwogICAgdmFyIGVzdCA9IGNsYkVzdGltYXRlUihjb3JyZWN0KTsKICAgIHZhciBwaWxscyA9IFJEQVRBLnBhcnRzLm1hcChmdW5jdGlvbihwKXsgdmFyIGI9YnlQYXJ0W3AuaWRdfHx7YzowLHQ6MH07IHJldHVybiAnPHNwYW4gY2xhc3M9ImNscHItcmVzLXBpbGwiPlBhcnQgJytwLmlkKyc6ICcrYi5jKycvJytiLnQrJzwvc3Bhbj4nOyB9KS5qb2luKCcnKTsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0iY2xwci1yZXMtY2FyZCI+JwogICAgICArICc8ZGl2IGNsYXNzPSJjbHByLXJlcy10b3AiPicKICAgICAgKyAnPGRpdiBjbGFzcz0iY2xwci1yZXMtc2NvcmUiPicrY29ycmVjdCsnPHNwYW4+LycrUS5sZW5ndGgrJzwvc3Bhbj48L2Rpdj4nCiAgICAgICsgJzxkaXYgY2xhc3M9ImNscHItcmVzLWNsYiI+PGI+Jytlc3QubGV2ZWwrJzwvYj48c21hbGw+Jytlc3Qubm90ZSsnICZtaWRkb3Q7IGVzdGltYXRlZCBSZWFkaW5nIGJhbmQ8L3NtYWxsPjwvZGl2PicKICAgICAgKyAnPC9kaXY+JwogICAgICArICc8ZGl2IGNsYXNzPSJjbHByLXJlcy1icmVhayI+JytwaWxscysnPC9kaXY+JwogICAgICArICc8ZGl2IGNsYXNzPSJjbHByLXJlcy1hY3Rpb25zIj48YnV0dG9uIGNsYXNzPSJjbHByLW5hdmJ0biBjbHByLWdob3N0IiBpZD0iY2xwclJldmlldyI+UmV2aWV3IGFuc3dlcnMgaW4gZWFjaCBwYXJ0PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iY2xwci1uYXZidG4iIGlkPSJjbHByUmV0cnkiPlRyeSBhZ2FpbjwvYnV0dG9uPjwvZGl2PicKICAgICAgKyAnPHAgc3R5bGU9Im1hcmdpbi10b3A6MTJweDtmb250LXNpemU6MTIuNXB4O2NvbG9yOnZhcigtLW11dGVkKSI+RXN0aW1hdGVkIGJhbmQgaXMgYSBzdHVkeSBndWlkZSBvbmx5LCBub3QgYW4gb2ZmaWNpYWwgQ0VMUElQIHNjb3JlLiBDb3JyZWN0IGFuc3dlcnMgYXJlIHNob3duIHdpdGggYSBncmVlbiBjaGVjayBvbiBlYWNoIGRyb3AtZG93biB5b3UgYW5zd2VyZWQgaW5jb3JyZWN0bHkuPC9wPicKICAgICAgKyAnPC9kaXY+JzsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSBmYWxzZTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByUmV0cnknKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHJlc2V0QWxsKTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHByUmV2aWV3JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBnbygwKTsgfSk7CiAgICByZXN1bHRzRWwuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnLGJsb2NrOidzdGFydCd9KTsKICB9CgogIGZ1bmN0aW9uIHJlc2V0QWxsKCl7CiAgICBjaGVja2VkPWZhbHNlOyBpbml0UXVlc3Rpb25zKCk7IGN1clBhcnQ9MDsKICAgIGNoZWNrQnRuLmRpc2FibGVkPWZhbHNlOwogICAgcmVzdWx0c0VsLmhpZGRlbj10cnVlOyByZXN1bHRzRWwuaW5uZXJIVE1MPScnOwogICAgYnVpbGREb3RzKCk7IGJ1aWxkUGFydCgwKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgc2ltLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonc3RhcnQnfSk7CiAgfQoKICBzdGFydEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICB3cmFwLnF1ZXJ5U2VsZWN0b3IoJy5jbHByLWhlcm8nKS5zdHlsZS5kaXNwbGF5PSdub25lJzsKICAgIHRvb2xiYXIuaGlkZGVuPWZhbHNlOyBzaW0uaGlkZGVuPWZhbHNlOwogICAgaW5pdFF1ZXN0aW9ucygpOyBjdXJQYXJ0PTA7IGNoZWNrZWQ9ZmFsc2U7CiAgICBidWlsZERvdHMoKTsgYnVpbGRQYXJ0KDApOyB1cGRhdGVTY29yZUNoaXAoKTsKICB9KTsKICBjaGVja0J0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGRvQ2hlY2spOwogIHJlc2V0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcmVzZXRBbGwpOwp9KSgpOw==\"))<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Reading Set 11 Practice Test 1: 4 parts, 38 questions in the real exam format with instant scoring and answer key. About 55 minutes. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6454","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6454","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=6454"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6454\/revisions"}],"predecessor-version":[{"id":6546,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6454\/revisions\/6546"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6454"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}