{"id":6396,"date":"2026-07-10T16:52:13","date_gmt":"2026-07-10T16:52:13","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-8-test-2-writing\/"},"modified":"2026-07-12T03:24:40","modified_gmt":"2026-07-12T03:24:40","slug":"celpip-set-8-test-2-writing","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-8-test-2-writing\/","title":{"rendered":"CELPIP Writing \u2014 Set 8 \u00b7 Practice Test 2"},"content":{"rendered":"<div class=\"clpw-wrap\" id=\"clpwApp\"><\/div>\n<p><script>eval(atob(\"dmFyIFdEQVRBPXsibWV0YSI6eyJicmFuZCI6IkNFTFBJUCIsInNldCI6IlNldCA4IFx1MDBiNyBQcmFjdGljZSBUZXN0IDIiLCJ0aXRsZSI6IkNFTFBJUCBXcml0aW5nIFByYWN0aWNlIFRlc3QiLCJ0b3RhbE1pbiI6NTN9LCJ0YXNrcyI6W3siaWQiOjEsImJhclRpdGxlIjoiUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBXcml0aW5nIFRhc2sgMTogV3JpdGluZyBhbiBFbWFpbCIsIm5hbWUiOiJXcml0aW5nIGFuIEVtYWlsIiwibWludXRlcyI6MjcsIndvcmRBaW0iOiIxNTBcdTIwMTMyMDAgd29yZHMiLCJyZWFkSGVhZCI6IlJlYWQgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4iLCJzY2VuYXJpbyI6IllvdSB3b3JrIGZvciBhIGNsb3RoaW5nIGNvbXBhbnkuIFlvdXIgY29tcGFueSBoYXMgYSBuZXcgc3R5bGUgb2YgY29hdC4iLCJwcm9tcHRIZWFkIjoiV3JpdGUgYW4gZW1haWwgdG8gYSBtYWdhemluZSBpbiBhYm91dCAxNTBcdTIwMTMyMDAgd29yZHMuIFRlbGwgdGhlIG1hZ2F6aW5lIGFib3V0IHRoZSBuZXcgc3R5bGUgb2YgY29hdC4gWW91ciBlbWFpbCBzaG91bGQgZG8gdGhlIGZvbGxvd2luZyB0aGluZ3M6IiwiYnVsbGV0cyI6WyJQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHlvdXIgY29tcGFueS4iLCJQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBuZXcgc3R5bGUgb2YgY29hdC4iLCJTdWdnZXN0IHdobyBtaWdodCBidXkgdGhpcyBjb2F0IGFuZCB3aHkuIiwiSW52aXRlIHRoZSBzdGFmZiBhdCB0aGUgbWFnYXppbmUgdG8gd3JpdGUgYWJvdXQgdGhlIGNvYXQuIl0sIm9wdGlvbnMiOm51bGwsInNhbU5vdGUiOiJUaGVzZSBhcmUgQWxsRW5nbGlzaDRVIG1vZGVsIGFuc3dlcnMgd3JpdHRlbiBmb3IgdGhpcyBleGFjdCBUYXNrIDEgZW1haWwgcHJvbXB0IChwaXRjaGluZyB5b3VyIGNvbXBhbnkncyBuZXcgY29hdCB0byBhIG1hZ2F6aW5lKSwgc2hvd24gYXQgdGhyZWUgc2NvcmUgbGV2ZWxzIChDRUxQSVAgNFx1MjAxMzUsIDdcdTIwMTM4IGFuZCAxMFx1MjAxMzEyKSBzbyB5b3UgY2FuIHNlZSBob3cgdGhlIHNhbWUgdGFzayByZWFkcyBhcyBpdCBpbXByb3Zlcy4gVGhleSBhcmUgQUU0VSBzdHVkeSBtb2RlbHMsIG5vdCBvZmZpY2lhbCBDRUxQSVAgc2FtcGxlczsgdGhlIDRcdTIwMTM1IG1vZGVsIGRlbGliZXJhdGVseSBrZWVwcyBzb21lIGVycm9ycy4iLCJzYW1wbGVzIjpbeyJsZXZlbCI6IkNFTFBJUCA0XHUyMDEzNSBSZXNwb25zZSIsIm5vdGUiOiJBbGwgZm91ciBidWxsZXRzIGNvdmVyZWQgd2l0aCBob25lc3QgZW50aHVzaWFzbTsgc2ltcGxlIHByb21vdGlvbmFsIGxhbmd1YWdlIHdpdGggcmVjdXJyaW5nIGVycm9ycy4iLCJ0ZXh0IjoiRGVhciBTdHlsZSBXZWVrbHkgTWFnYXppbmUsXG5cbk15IG5hbWUgaXMgTGFuIGFuZCBJIHdvcmsgaW4gRXZlck5vcnRoIEFwcGFyZWwsIGEgY2xvdGhpbmcgY29tcGFueSBpbiBWYW5jb3V2ZXIuIE91ciBjb21wYW55IG1ha2Ugd2ludGVyIGNsb3RoZXMgc2luY2UgMjAxNiwgYW5kIG91ciBqYWNrZXRzIGFyZSBwb3B1bGFyIGluIHRoZSB3ZXN0IG9mIENhbmFkYS5cblxuSSB3cml0ZSBiZWNhdXNlIHdlIGhhdmUgYSBuZXcgY29hdCB0aGlzIHNlYXNvbiwgdGhlIG5hbWUgaXMgQXVyb3JhIFBhcmthLCBhbmQgSSB0aGluayB5b3VyIHJlYWRlcnMgd2lsbCBsb3ZlIGl0LiBUaGUgY29hdCBpcyB2ZXJ5IHdhcm0sIGdvb2QgZm9yIG1pbnVzIDMwIGRlZ3JlZSwgYnV0IGl0IGlzIGxpZ2h0IGFuZCBub3QgaGVhdnkgbGlrZSBvdGhlciB3aW50ZXIgY29hdHMuIFRoZSBvdXRzaWRlIG1hdGVyaWFsIGlzIDEwMCBwZXJjZW50IHJlY3ljbGVkIGZyb20gcGxhc3RpYyBib3R0bGVzLCBhbmQgaXQgZG9uJ3QgbGV0IHdhdGVyIGNvbWUgaW4uIFRoZSBjb2F0IGhhdmUgc2l4IGNvbG9ycywgYmlnIHBvY2tldHMsIGFuZCB5b3UgY2FuIGZvbGQgaXQgc21hbGwgaW50byBpdHMgb3duIGJhZyBmb3IgdHJhdmVsLlxuXG5XaG8gd2lsbCBidXkgdGhpcyBjb2F0PyBJIHRoaW5rIHN0dWRlbnRzIGFuZCB3b3JrZXJzIHdobyB3YWl0IGZvciB0aGUgYnVzIGluIHdpbnRlciwgYW5kIHBlb3BsZSB3aG8gdHJhdmVsLCBiZWNhdXNlIGl0IGlzIHdhcm0sIG5vdCBleHBlbnNpdmUsIGFuZCBnb29kIGZvciB0aGUgcGxhbmV0LlxuXG5XZSB3YW50IHRvIGludml0ZSB5b3VyIG1hZ2F6aW5lIHRvIHdyaXRlIGFib3V0IHRoZSBBdXJvcmEgUGFya2EuIFdlIGNhbiBzZW5kIGZyZWUgc2FtcGxlcyBmb3IgeW91ciB0ZWFtIHRvIHRlc3QgaW4gdGhlIHJlYWwgd2ludGVyLlxuXG5QbGVhc2UgY29udGFjdCBtZSBhbnkgdGltZS5cblxuQmVzdCByZWdhcmRzLFxuTGFuIFBoYW0sIEV2ZXJOb3J0aCBBcHBhcmVsIn0seyJsZXZlbCI6IkNFTFBJUCA3XHUyMDEzOCBSZXNwb25zZSIsIm5vdGUiOiJBIHRpZHkgbWVkaWEgcGl0Y2g6IGNvbXBhbnkgY3JlZGVudGlhbHMsIGNvbmNyZXRlIHByb2R1Y3Qgc3BlY3MsIGEgY2xlYXIgYXVkaWVuY2UgYW5kIGFuIGVhc3kgY2FsbCB0byBhY3Rpb24uIiwidGV4dCI6IkRlYXIgU3R5bGUgV2Vla2x5IEVkaXRvcmlhbCBUZWFtLFxuXG5JIGFtIHdyaXRpbmcgZnJvbSBFdmVyTm9ydGggQXBwYXJlbCwgYSBWYW5jb3V2ZXItYmFzZWQgY2xvdGhpbmcgY29tcGFueSB0aGF0IGhhcyBzcGVjaWFsaXplZCBpbiBDYW5hZGlhbiB3aW50ZXIgd2VhciBzaW5jZSAyMDE2LiBPdXIgamFja2V0cyBhcmUgbm93IHNvbGQgaW4gbW9yZSB0aGFuIGVpZ2h0eSBzdG9yZXMgYWNyb3NzIFdlc3Rlcm4gQ2FuYWRhLCBhbmQgc3VzdGFpbmFiaWxpdHkgaGFzIGJlZW4gcGFydCBvZiBvdXIgc3RvcnkgZnJvbSB0aGUgZmlyc3Qgc3RpdGNoLlxuXG5UaGlzIHNlYXNvbiB3ZSBhcmUgbGF1bmNoaW5nIG91ciBtb3N0IGV4Y2l0aW5nIHByb2R1Y3QgeWV0OiB0aGUgQXVyb3JhIFBhcmthLiBJdCBpcyByYXRlZCBmb3IgbWludXMgdGhpcnR5IGRlZ3JlZXMgeWV0IHdlaWdocyB1bmRlciBhIGtpbG9ncmFtLCBpdHMgd2F0ZXJwcm9vZiBzaGVsbCBpcyB3b3ZlbiBlbnRpcmVseSBmcm9tIHJlY3ljbGVkIGJvdHRsZXMsIGFuZCBpdCBwYWNrcyBpbnRvIGl0cyBvd24gcG9ja2V0IGZvciB0cmF2ZWwuIFdpdGggc2l4IGNvbG91cnMgYW5kIGEgY3V0IGRlc2lnbmVkIGZvciBsYXllcmluZywgaXQgYnJpZGdlcyB0aGUgZ2FwIGJldHdlZW4gdGVjaG5pY2FsIG91dGRvb3IgZ2VhciBhbmQgZXZlcnlkYXkgY2l0eSBzdHlsZSBcdTIwMTQgYXQgYSBtaWQtcmFuZ2UgcHJpY2Ugb2YgJDI0OS5cblxuV2UgYmVsaWV2ZSB0aGUgcGFya2Egd2lsbCBhcHBlYWwgdG8gdGhyZWUgZ3JvdXBzIHlvdXIgbWFnYXppbmUga25vd3Mgd2VsbDogdHJhbnNpdCBjb21tdXRlcnMgd2hvIHN0YW5kIGluIHRoZSBjb2xkLCBzdHVkZW50cyB3aG8gd2FudCBvbmUgY29hdCB0aGF0IGxhc3RzLCBhbmQgZWNvLWNvbnNjaW91cyBzaG9wcGVycyB3aG8gcmVhZCBsYWJlbHMgYmVmb3JlIGJ1eWluZy5cblxuV2Ugd291bGQgYmUgZGVsaWdodGVkIGlmIHlvdXIgdGVhbSBjb25zaWRlcmVkIGZlYXR1cmluZyB0aGUgQXVyb3JhIFBhcmthIHRoaXMgd2ludGVyLiBXZSBjYW4gcHJvdmlkZSByZXZpZXcgc2FtcGxlcyBpbiB5b3VyIHNpemVzLCBoaWdoLXJlc29sdXRpb24gcGhvdG9zLCBhbmQgYW4gaW50ZXJ2aWV3IHdpdGggb3VyIGRlc2lnbmVyIGF0IHlvdXIgY29udmVuaWVuY2UuXG5cblRoYW5rIHlvdSBmb3IgeW91ciB0aW1lIFx1MjAxNCBJIGxvb2sgZm9yd2FyZCB0byBoZWFyaW5nIGZyb20geW91LlxuXG5XYXJtIHJlZ2FyZHMsXG5MYW4gUGhhbVxuTWVkaWEgUmVsYXRpb25zLCBFdmVyTm9ydGggQXBwYXJlbCJ9LHsibGV2ZWwiOiJDRUxQSVAgMTBcdTIwMTMxMiBSZXNwb25zZSIsIm5vdGUiOiJBIHBvbGlzaGVkIHBpdGNoIHdpdGggYSBzdG9yeSBhbmdsZSBmb3IgdGhlIGVkaXRvcnMsIHByZWNpc2Ugc3BlY3MsIGRlZmluZWQgYXVkaWVuY2VzIGFuZCBhIGZyaWN0aW9ubGVzcyBpbnZpdGF0aW9uLiIsInRleHQiOiJEZWFyIFN0eWxlIFdlZWtseSBFZGl0b3JpYWwgVGVhbSxcblxuRXZlcnkgd2ludGVyIHlvdXIgcmVhZGVycyBhc2sgdGhlIHNhbWUgcXVlc3Rpb246IGlzIHRoZXJlIGEgY29hdCB0aGF0IGlzIGdlbnVpbmVseSB3YXJtLCBnZW51aW5lbHkgc3VzdGFpbmFibGUgYW5kIHN0aWxsIGxvb2tzIGdvb2QgZG93bnRvd24\/IFRoaXMgeWVhciB3ZSBiZWxpZXZlIHRoZSBhbnN3ZXIgaXMgeWVzIFx1MjAxNCBhbmQgd2Ugd291bGQgbG92ZSB5b3VyIHRlYW0gdG8gcHV0IHRoYXQgY2xhaW0gdG8gdGhlIHRlc3QuXG5cbkZpcnN0LCBhIHdvcmQgb24gd2hvIHdlIGFyZS4gRXZlck5vcnRoIEFwcGFyZWwgaXMgYSBWYW5jb3V2ZXIgY2xvdGhpbmcgY29tcGFueSBmb3VuZGVkIGluIDIwMTY7IHdlIGRlc2lnbiBhbGwgb3VyIHdpbnRlciB3ZWFyIGxvY2FsbHksIG1hbnVmYWN0dXJlIHdpdGggY2VydGlmaWVkIGZhaXItbGFib3VyIHBhcnRuZXJzLCBhbmQgbm93IHNlbGwgdGhyb3VnaCBlaWdodHktcGx1cyByZXRhaWxlcnMgYWNyb3NzIFdlc3Rlcm4gQ2FuYWRhLlxuXG5PdXIgbmV3IEF1cm9yYSBQYXJrYSBpcyB0aGUgcGllY2Ugd2UgaGF2ZSBzcGVudCB0aHJlZSB5ZWFycyBwZXJmZWN0aW5nLiBJdCBpcyBjb21mb3J0LXJhdGVkIHRvIG1pbnVzIHRoaXJ0eSwgd2VpZ2hzIHVuZGVyIGEga2lsb2dyYW0sIGFuZCBpdHMgd2F0ZXJwcm9vZiBzaGVsbCBmYWJyaWMgaXMgc3B1biBlbnRpcmVseSBmcm9tIHJlY3ljbGVkIGJvdHRsZXMgXHUyMDE0IGFib3V0IGZvcnR5IG9mIHRoZW0gcGVyIGNvYXQuIEl0IGNvbXByZXNzZXMgaW50byBpdHMgb3duIHBvY2tldCBmb3IgdHJhdmVsLCBjb21lcyBpbiBzaXggY29sb3VycywgYW5kIHJldGFpbHMgYXQgJDI0OSwgZGVsaWJlcmF0ZWx5IHBvc2l0aW9uZWQgYmVsb3cgdGhlIGJpZyB0ZWNobmljYWwgYnJhbmRzLlxuXG5XZSBzZWUgdGhyZWUgbmF0dXJhbCByZWFkZXJzaGlwczogY29tbXV0ZXJzIHdobyB3YWl0IG9uIHdpbnRlciBwbGF0Zm9ybXMsIHN0dWRlbnRzIHNlZWtpbmcgb25lIGNvYXQgZm9yIGZvdXIgeWVhcnMsIGFuZCBzaG9wcGVycyB3aG8gY2hvb3NlIHdpdGggdGhlIHBsYW5ldCBpbiBtaW5kLlxuXG5XZSB3b3VsZCBiZSBkZWxpZ2h0ZWQgdG8gc2VuZCByZXZpZXcgc2FtcGxlcyBmb3IgeW91ciB3cml0ZXJzIHRvIHdlYXIgdGhyb3VnaCBhIHJlYWwgY29sZCBzbmFwLCBhbG9uZyB3aXRoIHBob3RvZ3JhcGh5IGFuZCBhY2Nlc3MgdG8gb3VyIGhlYWQgZGVzaWduZXIgZm9yIGludGVydmlld3MuIElmIHRoZSBwYXJrYSBkb2VzIG5vdCBsaXZlIHVwIHRvIHRoaXMgZW1haWwsIHNheSBzbyBpbiBwcmludCBcdTIwMTQgd2UgYXJlIGNvbmZpZGVudCBpdCB3aWxsLlxuXG5XYXJtIHJlZ2FyZHMsXG5MYW4gUGhhbVxuTWVkaWEgUmVsYXRpb25zLCBFdmVyTm9ydGggQXBwYXJlbCJ9XX0seyJpZCI6MiwiYmFyVGl0bGUiOiJQcmFjdGljZSBUZXN0IDIgXHUyMDEzIFdyaXRpbmcgVGFzayAyOiBSZXNwb25kaW5nIHRvIFN1cnZleSBRdWVzdGlvbnMiLCJuYW1lIjoiUmVzcG9uZGluZyB0byBTdXJ2ZXkgUXVlc3Rpb25zIiwibWludXRlcyI6MjYsIndvcmRBaW0iOiIxNTBcdTIwMTMyMDAgd29yZHMiLCJyZWFkSGVhZCI6IlJlYWQgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbi4iLCJzY2VuYXJpb0hlYWQiOiJQcmludGVyIFN1cnZleSIsInNjZW5hcmlvIjoiWW91ciBib3NzIHRoaW5rcyBwYXBlciBpcyB1bm5lY2Vzc2FyeSBiZWNhdXNlIGV2ZXJ5b25lIGhhcyBhIGNvbXB1dGVyIGFuZCBhY2Nlc3MgdG8gdGhlIGludGVybmV0LiBZb3VyIGJvc3Mgd2FudHMgdG8gdGFrZSBhd2F5IGFsbCB0aGUgcHJpbnRlcnMgc28gdGhhdCBwZW9wbGUgdXNlIG11Y2ggbGVzcyBwYXBlci4gT3RoZXIgcGVvcGxlIHRoaW5rIHRoYXQgdGhpcyB3aWxsIGJlIHZlcnkgaW5jb252ZW5pZW50LiBZb3VyIGJvc3MgYXNrZWQgeW91IHRvIHJlc3BvbmQgdG8gYW4gb3BpbmlvbiBzdXJ2ZXkgYWJvdXQgd2hldGhlciB0byBrZWVwIHRoZSBwcmludGVycy4iLCJwcm9tcHRIZWFkIjoiQ2hvb3NlIHRoZSBvcHRpb24gdGhhdCB5b3UgcHJlZmVyLiBXaHkgZG8geW91IHByZWZlciB5b3VyIGNob2ljZT8gRXhwbGFpbiB0aGUgcmVhc29ucyBmb3IgeW91ciBjaG9pY2UuIFdyaXRlIGFib3V0IDE1MFx1MjAxMzIwMCB3b3Jkcy4iLCJidWxsZXRzIjpbXSwib3B0aW9ucyI6W3sia2V5IjoiQSIsImxhYmVsIjoiT3B0aW9uIEE6IEkgdGhpbmsgd2Ugc2hvdWxkIGtlZXAgdGhlIHByaW50ZXJzIGluIHRoZSBvZmZpY2UuIn0seyJrZXkiOiJCIiwibGFiZWwiOiJPcHRpb24gQjogSSB0aGluayB3ZSBzaG91bGQgaGF2ZSBhIHBhcGVybGVzcyBvZmZpY2Ugd2l0aCBubyBwcmludGVycy4ifV0sInNhbU5vdGUiOiJUaGVzZSBhcmUgQWxsRW5nbGlzaDRVIG1vZGVsIGFuc3dlcnMgd3JpdHRlbiBmb3IgdGhpcyBleGFjdCBUYXNrIDIgb3Bpbmlvbi1zdXJ2ZXkgcHJvbXB0IChrZWVwaW5nIHRoZSBvZmZpY2UgcHJpbnRlcnMgdmVyc3VzIGdvaW5nIGZ1bGx5IHBhcGVybGVzcyksIHNob3duIGF0IHRocmVlIHNjb3JlIGxldmVscyAoQ0VMUElQIDRcdTIwMTM1LCA3XHUyMDEzOCBhbmQgMTBcdTIwMTMxMikgc28geW91IGNhbiBzZWUgaG93IHRoZSBzYW1lIHRhc2sgcmVhZHMgYXMgaXQgaW1wcm92ZXMuIFRoZXkgYXJlIEFFNFUgc3R1ZHkgbW9kZWxzLCBub3Qgb2ZmaWNpYWwgQ0VMUElQIHNhbXBsZXM7IHRoZSA0XHUyMDEzNSBtb2RlbCBkZWxpYmVyYXRlbHkga2VlcHMgc29tZSBlcnJvcnMuIiwic2FtcGxlcyI6W3sibGV2ZWwiOiJDRUxQSVAgNFx1MjAxMzUgUmVzcG9uc2UiLCJub3RlIjoiT3B0aW9uIEEgd2l0aCBjb25jcmV0ZSBkYWlseS13b3JrIHJlYXNvbnM7IHNpbXBsZSBzdHJ1Y3R1cmVzIGFuZCB0eXBpY2FsIGVycm9ycy4iLCJ0ZXh0IjoiSSBjaG9vc2UgT3B0aW9uIEEuIEkgdGhpbmsgd2Ugc2hvdWxkIGtlZXAgdGhlIHByaW50ZXJzIGluIG91ciBvZmZpY2UuXG5cbkZpcnN0IHJlYXNvbiwgc29tZSBkb2N1bWVudHMgbXVzdCBiZSBvbiBwYXBlci4gT3VyIGNsaWVudHMgc2lnbiBjb250cmFjdHMgZXZlcnkgd2VlaywgYW5kIG1hbnkgY2xpZW50cyB3YW50IHRvIHJlYWQgdGhlIGNvbnRyYWN0IG9uIHBhcGVyIGFuZCBrZWVwIG9uZSBjb3B5LiBBbHNvIHRoZSBnb3Zlcm5tZW50IGZvcm1zIGFuZCB0aGUgc2hpcHBpbmcgcGFwZXJzIG11c3QgYmUgcHJpbnRlZC4gSWYgd2UgaGF2ZSBubyBwcmludGVyLCB3ZSBtdXN0IGdvIHRvIHRoZSBwcmludCBzaG9wIG9uIGFub3RoZXIgc3RyZWV0IGFuZCBwYXkgbW9uZXkgZXZlcnkgdGltZS4gVGhpcyBpcyBzbG93IGFuZCBub3QgcHJvZmVzc2lvbmFsLlxuXG5TZWNvbmQsIHJlYWRpbmcgb24gcGFwZXIgaXMgZWFzaWVyIGZvciBjaGVja2luZyBtaXN0YWtlcy4gV2hlbiBJIGNoZWNrIGEgbG9uZyByZXBvcnQgb24gdGhlIHNjcmVlbiwgbXkgZXllcyBnZXQgdGlyZWQgYW5kIEkgbWlzcyBzbWFsbCBlcnJvcnMuIE9uIHBhcGVyIEkgZmluZCB0aGVtIGZhc3Qgd2l0aCBteSBwZW4uXG5cblRoaXJkLCBub3QgZXZlcnlib2R5IGlzIHlvdW5nIHdpdGggY29tcHV0ZXIgc2tpbGxzLiBTb21lIG9sZGVyIGNvbGxlYWd1ZXMgd29yayBiZXR0ZXIgd2l0aCBwYXBlciwgYW5kIHRoZXkgZmVlbCBzdHJlc3Mgd2l0aG91dCBpdC5cblxuSSBhZ3JlZSB3ZSBwcmludCB0b28gbXVjaCBub3cuIE1heWJlIHdlIGNhbiBrZWVwIG9ubHkgdHdvIHByaW50ZXJzLCBub3QgZml2ZSwgYW5kIG1ha2UgYSBydWxlIHRvIHByaW50IG9ubHkgaW1wb3J0YW50IHRoaW5ncy4gQnV0IHplcm8gcHJpbnRlcnMgaXMgdG9vIGV4dHJlbWUuIFNvIEkgcHJlZmVyIE9wdGlvbiBBLiJ9LHsibGV2ZWwiOiJDRUxQSVAgN1x1MjAxMzggUmVzcG9uc2UiLCJub3RlIjoiQSBwcmFjdGljYWwgT3B0aW9uIEEgZGVmZW5jZTogbGVnYWwgbmVlZHMsIHByb29mcmVhZGluZyBhbmQgYWNjZXNzaWJpbGl0eSwgZW5kaW5nIHdpdGggYSBjb21wcm9taXNlIHRoZSBib3NzIGNhbiBhY2NlcHQuIiwidGV4dCI6IkluIHJlc3BvbnNlIHRvIHRoZSBzdXJ2ZXksIEkgd291bGQgY2hvb3NlIE9wdGlvbiBBOiB0aGUgb2ZmaWNlIHNob3VsZCBrZWVwIGl0cyBwcmludGVycyBcdTIwMTQgdGhvdWdoIGZld2VyIG9mIHRoZW0uXG5cbk15IGZpcnN0IHJlYXNvbiBpcyB0aGF0IHNvbWUgcGFwZXIgaXMgbm90IG9wdGlvbmFsLiBDbGllbnRzIHN0aWxsIGV4cGVjdCBzaWduZWQgY29udHJhY3QgY29waWVzLCBzZXZlcmFsIGdvdmVybm1lbnQgYW5kIGNvdXJpZXIgZm9ybXMgZXhpc3Qgb25seSBvbiBwYXBlciwgYW5kIG91ciBhdWRpdG9ycyBhc2sgZm9yIHBoeXNpY2FsIGZpbGVzIGV2ZXJ5IHllYXIuIFdpdGhvdXQgYW55IHByaW50ZXIsIGV2ZXJ5IG9uZSBvZiB0aG9zZSByb3V0aW5lIHRhc2tzIGJlY29tZXMgYSB0cmlwIHRvIGEgY29weSBzaG9wIFx1MjAxNCBzbG93ZXIsIGxlc3Mgc2VjdXJlIGFuZCB1bnByb2Zlc3Npb25hbCBpbiBmcm9udCBvZiBjbGllbnRzLlxuXG5TZWNvbmQsIHBhcGVyIHN0aWxsIGhhcyByZWFsIHdvcmsgdmFsdWUuIENhcmVmdWwgcHJvb2ZyZWFkaW5nLCBtYXJraW5nIHVwIGRlc2lnbnMsIGFuZCBjb21wYXJpbmcgbG9uZyBkb2N1bWVudHMgc2lkZSBieSBzaWRlIGFyZSBhbGwgZGVtb25zdHJhYmx5IGVhc2llciBpbiBwcmludCwgYW5kIGNvbGxlYWd1ZXMgd2hvIGdyZXcgdXAgb24gcGFwZXIgc2hvdWxkIG5vdCBiZSBmb3JjZWQgaW50byB0b29scyB0aGF0IHNsb3cgdGhlbSBkb3duLlxuXG5UaGlyZCwgYSBwcmludGVybGVzcyBvZmZpY2UgZG9lcyBub3QgYXV0b21hdGljYWxseSBtZWFuIGFuIGVmZmljaWVudCBvbmU7IGl0IGNhbiBzaW1wbHkgbW92ZSB0aGUgcHJpbnRpbmcgaG9tZSwgd2hlcmUgdGhlIGNvbXBhbnkgY2Fubm90IGNvbnRyb2wgY29zdCBvciBjb25maWRlbnRpYWxpdHkuXG5cblRoYXQgc2FpZCwgdGhlIGJvc3MncyBnb2FsIGlzIHJpZ2h0LiBJIHdvdWxkIHN1cHBvcnQgY3V0dGluZyBvdXIgZml2ZSBwcmludGVycyB0byB0d28sIHNldHRpbmcgcGVyc29uYWwgcHJpbnQgcXVvdGFzLCBhbmQgZGVmYXVsdGluZyB0byBkaWdpdGFsIHNpZ25hdHVyZXMgd2hlcmV2ZXIgY2xpZW50cyBhY2NlcHQgdGhlbS4gUmVkdWNlIHBhcGVyIGRyYW1hdGljYWxseSBcdTIwMTQgYnV0IGtlZXAgdGhlIHRvb2wgZm9yIHRoZSBjYXNlcyB0aGF0IHRydWx5IG5lZWQgaXQuIE9wdGlvbiBBLCB3aXRoIGRpc2NpcGxpbmUuIn0seyJsZXZlbCI6IkNFTFBJUCAxMFx1MjAxMzEyIFJlc3BvbnNlIiwibm90ZSI6IkEgZm9yd2FyZC1sb29raW5nIE9wdGlvbiBCIGFyZ3VtZW50IHRoYXQgYWRkcmVzc2VzIGV2ZXJ5IHN0YW5kYXJkIG9iamVjdGlvbiBhbmQgcHJvcG9zZXMgYSB0cmFuc2l0aW9uIHBsYW4uIiwidGV4dCI6Ikkgd291bGQgY2hvb3NlIE9wdGlvbiBCOiBpdCBpcyB0aW1lIGZvciBvdXIgb2ZmaWNlIHRvIGdvIHBhcGVybGVzcyBcdTIwMTQgcHJvdmlkZWQgd2UgZG8gaXQgd2l0aCBhIHBsYW4gcmF0aGVyIHRoYW4gYSBkZWNyZWUuXG5cblRoZSBjYXNlIHN0YXJ0cyB3aXRoIGhvbmVzdHkgYWJvdXQgb3VyIGN1cnJlbnQgcHJpbnRpbmcuIEF1ZGl0IHRoZSByZWN5Y2xpbmcgYmlucyBhbmQgeW91IHdpbGwgZmluZCB0aGVtIGZ1bGwgb2Ygc2luZ2xlLXVzZSBwcmludG91dHM6IGVtYWlscyBwcmludGVkIHRvIGJlIHJlYWQgb25jZSwgZHJhZnRzIHByaW50ZWQgdG8gYmUgY29ycmVjdGVkIGFuZCByZXByaW50ZWQuIFdlIGFyZSBub3QgcHJlc2VydmluZyBpbXBvcnRhbnQgZG9jdW1lbnRzOyB3ZSBhcmUgYnV5aW5nLCBwcmludGluZywgc3RvcmluZyBhbmQgc2hyZWRkaW5nIHBhcGVyIG91dCBvZiBoYWJpdCBcdTIwMTQgYXQgYSByZWFsIGNvc3QgaW4gbW9uZXksIHNwYWNlIGFuZCBjYXJib24uXG5cblNlY29uZCwgZXZlcnkgc2VyaW91cyBmdW5jdGlvbiBoYXMgYSBkaWdpdGFsIGVxdWl2YWxlbnQgdGhhdCBpcyBub3QgbWVyZWx5IGFkZXF1YXRlIGJ1dCBiZXR0ZXIuIEUtc2lnbmF0dXJlIHBsYXRmb3JtcyBhcmUgbGVnYWxseSByZWNvZ25pemVkIGFuZCBnaXZlIGNsaWVudHMgaW5zdGFudCBjb3VudGVyc2lnbmVkIGNvcGllczsgY2xvdWQgZG9jdW1lbnRzIGFyZSBzZWFyY2hhYmxlLCBiYWNrZWQgdXAgYW5kIGFjY2Vzcy1jb250cm9sbGVkLCB1bmxpa2UgdGhlIGZpbGluZyBjYWJpbmV0OyB0YWJsZXQgbWFyay11cCBoYXMgY2F1Z2h0IHVwIHdpdGggdGhlIHJlZCBwZW4uIE1vc3Qgb2Ygb3VyIHBhcnRuZXIgZmlybXMgaGF2ZSBhbHJlYWR5IG1hZGUgdGhpcyBzd2l0Y2ggXHUyMDE0IHdlIGluY3JlYXNpbmdseSBsb29rIGxpa2UgdGhlIGxhc3QgcGFwZXIgb2ZmaWNlIGluIHRoZSBidWlsZGluZy5cblxuVGhpcmQsIHNlY3VyaXR5OiBwcmludGVkIHBhZ2VzIGxlZnQgb24gdHJheXMgYW5kIGRlc2tzIGFyZSBvdXIgbW9zdCBjb21tb24gY29uZmlkZW50aWFsaXR5IGxhcHNlLiBSZW1vdmluZyB0aGUgcHJpbnRlcnMgcmVtb3ZlcyB0aGUgbGVhay5cblxuVGhlIG9iamVjdGlvbnMgZGVzZXJ2ZSBhbnN3ZXJzLCBub3QgZGlzbWlzc2FsOiBrZWVwIGEgc2luZ2xlIG1hbmFnZWQgcHJpbnQgc3RhdGlvbiBmb3IgdGhlIHJhcmUgbGVnYWwgb3IgY291cmllciBmb3JtLCB0cmFpbiBldmVyeW9uZSBvbiB0aGUgZGlnaXRhbCB0b29scywgYW5kIHBoYXNlIHRoZSBjaGFuZ2Ugb3ZlciBhIHF1YXJ0ZXIuIEJ1dCB0aGUgZGlyZWN0aW9uIGlzIGNsZWFyLCBhbmQgY2xpbmdpbmcgdG8gZml2ZSBwcmludGVycyBkZWxheXMgdGhlIGluZXZpdGFibGUuIEkgc3VwcG9ydCBPcHRpb24gQi4ifV19XSwicnVicmljIjpbeyJrIjoiQ29udGVudCAvIENvaGVyZW5jZSIsImQiOiJBbGwgcmVxdWlyZWQgcG9pbnRzIGFyZSBjb3ZlcmVkIGFuZCBkZXZlbG9wZWQgd2l0aCBjbGVhciwgbG9naWNhbGx5IGNvbm5lY3RlZCBpZGVhcyBhbmQgcGFyYWdyYXBocy4ifSx7ImsiOiJWb2NhYnVsYXJ5IiwiZCI6IldvcmQgY2hvaWNlIGlzIHZhcmllZCwgcHJlY2lzZSBhbmQgc3VpdHMgdGhlIHRvbmUgKGEgc2VtaS1mb3JtYWwgZW1haWwgLyBhIHJlYXNvbmVkIG9waW5pb24pLiJ9LHsiayI6IlJlYWRhYmlsaXR5IiwiZCI6IkdyYW1tYXIsIHNwZWxsaW5nIGFuZCBwdW5jdHVhdGlvbiBhcmUgYWNjdXJhdGUgZW5vdWdoIHRoYXQgdGhlIHJlYWRlciBpcyBuZXZlciBzbG93ZWQgZG93bi4ifSx7ImsiOiJUYXNrIEZ1bGZpbGxtZW50IiwiZCI6IlRoZSByZXNwb25zZSBmaXRzIHRoZSBwdXJwb3NlIGFuZCBhdWRpZW5jZSwga2VlcHMgdGhlIDE1MFx1MjAxMzIwMCB3b3JkIGxlbmd0aCwgYW5kIHJlYWRzIGxpa2UgYSByZWFsIGVtYWlsIC8gc3VydmV5IGFuc3dlci4ifV0sInNjb3JpbmdOb3RlIjoiQ0VMUElQIFdyaXRpbmcgaXMgcmF0ZWQgYnkgaHVtYW4gcmF0ZXJzIG9uIGEgc2NhbGUgZnJvbSBNIHRvIDEyIHRoYXQgbWFwcyAxOjEgdG8gdGhlIENhbmFkaWFuIExhbmd1YWdlIEJlbmNobWFya3MgKENMQikuIEVhY2ggdGFzayBpcyBqdWRnZWQgaG9saXN0aWNhbGx5IG9uIGZvdXIgZGltZW5zaW9ucyBcdTIwMTQgQ29udGVudC9Db2hlcmVuY2UsIFZvY2FidWxhcnksIFJlYWRhYmlsaXR5IGFuZCBUYXNrIEZ1bGZpbGxtZW50LiBUaGVyZSBpcyBubyBzaW5nbGUgXHUyMDE4Y29ycmVjdFx1MjAxOSBhbnN3ZXIsIHNvIHVzZSB0aGUgc2FtcGxlIHJlc3BvbnNlcyBhbmQgdGhlIHNlbGYtY2hlY2sgYmVsb3cgdG8gc2VlIHdoZXJlIHlvdXIgd3JpdGluZyBzaXRzIGFuZCB3aGF0IHRvIGltcHJvdmUuIn07CihmdW5jdGlvbigpewogICJ1c2Ugc3RyaWN0IjsKICBpZih3aW5kb3cuX19jbHB3SW5pdCkgcmV0dXJuOyB3aW5kb3cuX19jbHB3SW5pdCA9IHRydWU7CgogIHZhciBMUyA9ICJhZTR1X2NscHdfczF0MV92MSI7CiAgdmFyIHN0YXRlID0geyBhY3RpdmU6MSwgc2FtcGxlczp7MTpmYWxzZSwyOmZhbHNlfSwgdGFiOnsxOjAsMjowfSwgb3B0Om51bGwsCiAgICAgICAgICAgICAgICB0ZXh0OnsxOiIiLDI6IiJ9LCBydWJyaWM6ezE6e30sMjp7fX0sCiAgICAgICAgICAgICAgICB0aW1lcjp7MTp7cmVtOldEQVRBLnRhc2tzWzBdLm1pbnV0ZXMqNjAscnVuOmZhbHNlLGl2Om51bGx9LAogICAgICAgICAgICAgICAgICAgICAgICAyOntyZW06V0RBVEEudGFza3NbMV0ubWludXRlcyo2MCxydW46ZmFsc2UsaXY6bnVsbH19IH07CgogIC8vIC0tLS0tLS0tLS0gaGVscGVycyAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gZXNjKHMpeyByZXR1cm4gU3RyaW5nKHMpLnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKTsgfQogIGZ1bmN0aW9uIHdjKHMpeyB2YXIgbT0oc3x8IiIpLnRyaW0oKS5tYXRjaCgvXFMrL2cpOyByZXR1cm4gbT9tLmxlbmd0aDowOyB9CiAgZnVuY3Rpb24gZm10KHNlYyl7IHNlYz1NYXRoLm1heCgwLHNlY3wwKTsgdmFyIG09TWF0aC5mbG9vcihzZWMvNjApLCBzPXNlYyU2MDsgcmV0dXJuIChtPDEwPyIwIjoiIikrbSsiOiIrKHM8MTA\/IjAiOiIiKStzOyB9CiAgZnVuY3Rpb24gbG9hZCgpeyB0cnl7IHZhciBvPUpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oTFMpKTsgaWYobyYmdHlwZW9mIG89PT0ib2JqZWN0Iil7CiAgICAgICAgc3RhdGUudGV4dFsxXT1vLnQxfHwiIjsgc3RhdGUudGV4dFsyXT1vLnQyfHwiIjsgc3RhdGUub3B0PW8ub3B0fHxudWxsOwogICAgICAgIHN0YXRlLnJ1YnJpY1sxXT1vLnIxfHx7fTsgc3RhdGUucnVicmljWzJdPW8ucjJ8fHt9OyB9IH1jYXRjaChlKXt9IH0KICBmdW5jdGlvbiBzYXZlKCl7IHRyeXsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oTFMsIEpTT04uc3RyaW5naWZ5KHsKICAgICAgICB0MTpzdGF0ZS50ZXh0WzFdLCB0MjpzdGF0ZS50ZXh0WzJdLCBvcHQ6c3RhdGUub3B0LCByMTpzdGF0ZS5ydWJyaWNbMV0sIHIyOnN0YXRlLnJ1YnJpY1syXSB9KSk7IH1jYXRjaChlKXt9CiAgICAgICAgZmxhc2hTYXZlZCgpOyB9CiAgdmFyIHNhdmVkVE89bnVsbDsKICBmdW5jdGlvbiBmbGFzaFNhdmVkKCl7IHZhciBlbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1NhdmVkIik7IGlmKCFlbCkgcmV0dXJuOwogICAgICAgIGVsLmNsYXNzTGlzdC5hZGQoImNscHctc2F2ZWQtb24iKTsgaWYoc2F2ZWRUTykgY2xlYXJUaW1lb3V0KHNhdmVkVE8pOwogICAgICAgIHNhdmVkVE89c2V0VGltZW91dChmdW5jdGlvbigpeyBlbC5jbGFzc0xpc3QucmVtb3ZlKCJjbHB3LXNhdmVkLW9uIik7IH0sMTIwMCk7IH0KCiAgLy8gLS0tLS0tLS0tLSBDU1MgLS0tLS0tLS0tLQogIHZhciBDU1MgPSAiIgogICsiLmNscHctd3JhcHstLW5hdnk6IzA1MEUyMDstLWI5MDA6IzBEMjM1MjstLWI3MDA6IzEyNDVBODstLWI1MDA6IzI1NjNFQjstLWI0MDA6IzNCODJGNjstLWIyMDA6IzkzQzVGRDstLWIxMDA6I0RCRUFGRTstLWI1MDojRUZGNkZGOy0tdGVhbDojMEQ5NDg4Oy0tZ3JlZW46IzEwQjk4MTstLWdyZWVuNTA6I0VDRkRGNTstLXJvc2U6I0Y0M0Y1RTstLXJvc2U1MDojRkZGMUYzOy0tb3JhbmdlOiNGOTczMTY7LS1hbWJlcjUwOiNGRkZCRUI7LS10ZXh0OiMwRjE3MkE7LS1tdXRlZDojNDc1NTY5Oy0tc3VidGxlOiM5NEEzQjg7LS1ib3JkZXI6I0UyRThGMDstLWNyaW1zb246I0I0MkIzQzstLXBhZ2U6I0Y4RkFGRjtmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLFJvYm90byxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLXRleHQpO21heC13aWR0aDoxMTQwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjE2cHggMTZweCA1NnB4O2xpbmUtaGVpZ2h0OjEuNTU7Zm9udC1zaXplOjE2cHg7fSIKICArIi5jbHB3LXdyYXAgKiwuY2xwdy13cmFwICo6OmJlZm9yZSwuY2xwdy13cmFwICo6OmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDt9IgogICsiLmNscHctd3JhcCBidXR0b257Zm9udC1mYW1pbHk6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjt9IgogICsiLmNscHctd3JhcCBoMSwuY2xwdy13cmFwIGgyLC5jbHB3LXdyYXAgaDMsLmNscHctd3JhcCBwe21hcmdpbjowO30iCiAgLy8gaGVybwogICsiLmNscHctaGVyb3twb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdzpoaWRkZW47Ym9yZGVyLXJhZGl1czoyMnB4O2JhY2tncm91bmQ6dmFyKC0tbmF2eSk7Y29sb3I6I2ZmZjtwYWRkaW5nOjM0cHggMzhweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxM3B4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Ym94LXNoYWRvdzowIDIwcHggNDBweCAtMjBweCByZ2JhKDUsMTQsMzIsLjQ1KSwwIDRweCAxMnB4IC02cHggcmdiYSg1LDE0LDMyLC4zKTt9IgogICsiLmNscHctYXVyb3Jhe3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7cG9pbnRlci1ldmVudHM6bm9uZTt9IgogICsiLmNscHctYXVyb3JhIHNwYW57cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyLXJhZGl1czo1MCU7ZmlsdGVyOmJsdXIoNjBweCk7b3BhY2l0eTouNTthbmltYXRpb246Y2xwd0Zsb2F0IDE0cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7fSIKICArIi5jbHB3LWF1cm9yYSBzcGFuOm50aC1jaGlsZCgxKXt3aWR0aDo0MjBweDtoZWlnaHQ6NDIwcHg7bGVmdDotMTIwcHg7dG9wOi0yMDBweDtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzEyNDVBOCAwJSx0cmFuc3BhcmVudCA3MCUpO30iCiAgKyIuY2xwdy1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7d2lkdGg6MzgwcHg7aGVpZ2h0OjM4MHB4O3JpZ2h0Oi04MHB4O3RvcDotMTYwcHg7YmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMwRDk0ODggMCUsdHJhbnNwYXJlbnQgNzAlKTthbmltYXRpb24tZGVsYXk6LTRzO30iCiAgKyIuY2xwdy1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMyl7d2lkdGg6MzQwcHg7aGVpZ2h0OjM0MHB4O3JpZ2h0OjIyJTtib3R0b206LTI0MHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMjU2M0VCIDAlLHRyYW5zcGFyZW50IDcwJSk7YW5pbWF0aW9uLWRlbGF5Oi04czt9IgogICsiQGtleWZyYW1lcyBjbHB3RmxvYXR7ZnJvbXt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEpO310b3t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoNDBweCwyNnB4LDApIHNjYWxlKDEuMTIpO319IgogICsiLmNscHctaGJhZGdlc3tkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtd3JhcDp3cmFwO3Bvc2l0aW9uOnJlbGF0aXZlO30iCiAgKyIuY2xwdy1iYnJhbmR7YmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTtjb2xvcjojZmZmO2ZvbnQtd2VpZ2h0OjgwMDtmb250LXNpemU6MTJweDtsZXR0ZXItc3BhY2luZzouMTJlbTtwYWRkaW5nOjVweCAxMnB4O2JvcmRlci1yYWRpdXM6NnB4O30iCiAgKyIuY2xwdy1ic2V0e2NvbG9yOnZhcigtLWIyMDApO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjYwMDt9IgogICsiLmNscHctaGVybyBoMXtwb3NpdGlvbjpyZWxhdGl2ZTtmb250LXNpemU6Y2xhbXAoMjZweCw0dncsNDBweCk7Zm9udC13ZWlnaHQ6ODAwO2xldHRlci1zcGFjaW5nOi0uMDJlbTtsaW5lLWhlaWdodDoxLjEyO30iCiAgKyIuY2xwdy1oZXJvLXN1Yntwb3NpdGlvbjpyZWxhdGl2ZTtjb2xvcjojQzdEMkU4O2ZvbnQtc2l6ZToxNXB4O21heC13aWR0aDo2MGNoO30iCiAgKyIuY2xwdy1oY2hpcHN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7cG9zaXRpb246cmVsYXRpdmU7fSIKICArIi5jbHB3LWNoaXB7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOSk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDE0NywxOTcsMjUzLC4yNSk7Y29sb3I6I0RCRUFGRTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7cGFkZGluZzo2cHggMTRweDtib3JkZXItcmFkaXVzOjMycHg7YmFja2Ryb3AtZmlsdGVyOmJsdXIoNHB4KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsYmFja2dyb3VuZCAuMjVzIGVhc2U7fSIKICArIi5jbHB3LWNoaXA6aG92ZXJ7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNSk7fSIKICArIi5jbHB3LWN0YXtwb3NpdGlvbjpyZWxhdGl2ZTtiYWNrZ3JvdW5kOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czoxMHB4O2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjEzcHggMzRweDttYXJnaW4tdG9wOjJweDtib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjY1KTt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjJzIGVhc2UsYm94LXNoYWRvdyAuMjJzIGVhc2UsYmFja2dyb3VuZCAuMjJzIGVhc2U7fSIKICArIi5jbHB3LWN0YTpob3Zlcnt0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTtiYWNrZ3JvdW5kOnZhcigtLWI0MDApO2JveC1zaGFkb3c6MCAxNHB4IDI2cHggLThweCByZ2JhKDM3LDk5LDIzNSwuNzUpO30iCiAgLy8gdG9vbGJhcgogICsiLmNscHctdG9vbHN7cG9zaXRpb246c3RpY2t5O3RvcDo4cHg7ei1pbmRleDo2MDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTMpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDhweCk7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjhweCAxMnB4O21hcmdpbjoxOHB4IDAgMDtib3gtc2hhZG93OjAgOHB4IDI0cHggLTE0cHggcmdiYSgxNSwyMyw0MiwuMjUpLDAgMnB4IDZweCAtNHB4IHJnYmEoMTUsMjMsNDIsLjEyKTttaW4taGVpZ2h0OjUycHg7fSIKICArIi5jbHB3LXdjb3VudHtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjEzcHg7Y29sb3I6dmFyKC0tYjkwMCk7YmFja2dyb3VuZDp2YXIoLS1iNTApO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7Ym9yZGVyLXJhZGl1czozMnB4O3BhZGRpbmc6N3B4IDE0cHg7fSIKICArIi5jbHB3LXNwYWNlcntmbGV4OjE7fSIKICArIi5jbHB3LXNhdmVke2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1ncmVlbik7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuMnMgZWFzZTt9IgogICsiLmNscHctc2F2ZWQtb257b3BhY2l0eToxO30iCiAgKyIuY2xwdy10YnRue2JvcmRlci1yYWRpdXM6MTBweDtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7cGFkZGluZzo5cHggMTZweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7YmFja2dyb3VuZDojZmZmO2NvbG9yOnZhcigtLW11dGVkKTttaW4taGVpZ2h0OjQwcHg7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsYm94LXNoYWRvdyAuMnMgZWFzZSxiYWNrZ3JvdW5kIC4ycyBlYXNlO30iCiAgKyIuY2xwdy10YnRuOmhvdmVye3RyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpO2JveC1zaGFkb3c6MCA2cHggMTRweCAtOHB4IHJnYmEoMTUsMjMsNDIsLjMpO30iCiAgLy8gZG90cwogICsiLmNscHctc2lte21hcmdpbi10b3A6MThweDt9IgogICsiLmNscHctZG90c3tkaXNwbGF5OmZsZXg7Z2FwOjZweDttYXJnaW46MCAwIDEwcHggMnB4O30iCiAgKyIuY2xwdy1kb3R7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1zdWJ0bGUpO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtib3JkZXItcmFkaXVzOjMycHg7cGFkZGluZzo1cHggMTRweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjI1cyBlYXNlLGNvbG9yIC4yNXMgZWFzZTt9IgogICsiLmNscHctZG90Lm9ue2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Ym9yZGVyLWNvbG9yOnZhcigtLWI1MDApO2NvbG9yOiNmZmY7fSIKICArIi5jbHB3LWRvdC5maWxsZWR7YmFja2dyb3VuZDp2YXIoLS1iMTAwKTtib3JkZXItY29sb3I6dmFyKC0tYjIwMCk7Y29sb3I6dmFyKC0tYjkwMCk7fSIKICAvLyBjYXQgY2FyZAogICsiLmNscHctY2F0e3Bvc2l0aW9uOnJlbGF0aXZlO2JvcmRlcjoxcHggc29saWQgI0QzRDlFMDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDojZmZmO2JveC1zaGFkb3c6MCAxMHB4IDMwcHggLTE4cHggcmdiYSgxNSwyMyw0MiwuMjIpLDAgMnB4IDhweCAtNXB4IHJnYmEoMTUsMjMsNDIsLjEpO30iCiAgKyIuY2xwdy10YXNre2Rpc3BsYXk6bm9uZTt9IgogICsiLmNscHctdGFzay5vbntkaXNwbGF5OmJsb2NrO30iCiAgKyIuY2xwdy1iYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtiYWNrZ3JvdW5kOiNFOEVCRUY7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0QzRDlFMDtib3JkZXItcmFkaXVzOjEwcHggMTBweCAwIDA7cGFkZGluZzo5cHggMTRweDttaW4taGVpZ2h0OjQ0cHg7fSIKICArIi5jbHB3LWJhci10e2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMUYyOTM3O2ZsZXg6MTttaW4td2lkdGg6MDt9IgogICsiLmNscHctYmFyLXRpbWV7Zm9udC1zaXplOjEycHg7Y29sb3I6IzFGMjkzNzt3aGl0ZS1zcGFjZTpub3dyYXA7fSIKICArIi5jbHB3LWJhci10aW1lIGJ7Zm9udC13ZWlnaHQ6ODAwO2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtczt9IgogICsiLmNscHctYmFyLXRpbWUubG93IGJ7Y29sb3I6dmFyKC0tcm9zZSk7fSIKICAvLyBzcGxpdAogICsiLmNscHctc3BsaXR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczptaW5tYXgoMjIwcHgsMjkwcHgpIDFmcjt9IgogICsiLmNscHctcmVhZHtiYWNrZ3JvdW5kOiNGNEY2Rjg7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjRTNFNkVBO3BhZGRpbmc6MTZweCAxNnB4IDE4cHg7fSIKICArIi5jbHB3LXdyaXRle2JhY2tncm91bmQ6I0VBRjRGNztwYWRkaW5nOjE2cHggMThweCAxOHB4O30iCiAgKyIuY2xwdy1yaGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtnYXA6OHB4O21hcmdpbi1ib3R0b206OHB4O30iCiAgKyIuY2xwdy1pbmZve2ZsZXg6bm9uZTt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O21hcmdpbi10b3A6MXB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjExcHg7Zm9udC1zdHlsZTppdGFsaWM7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO30iCiAgKyIuY2xwdy1yaGVhZCBwe2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS1iOTAwKTt9IgogICsiLmNscHctc2NlbmFyaW8taHtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo4MDA7Y29sb3I6IzMzNDE1NTttYXJnaW4tYm90dG9tOjRweDt9IgogICsiLmNscHctc2NlbmFyaW97Zm9udC1zaXplOjEzLjVweDtjb2xvcjojMzM0MTU1O2xpbmUtaGVpZ2h0OjEuNjt9IgogICsiLmNscHctc2FtdG9nZ2xle21hcmdpbi10b3A6MTRweDt3aWR0aDoxMDAlO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MS41cHggc29saWQgdmFyKC0tY3JpbXNvbik7Y29sb3I6dmFyKC0tY3JpbXNvbik7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHg7Ym9yZGVyLXJhZGl1czo5cHg7cGFkZGluZzoxMXB4IDEycHg7dGV4dC1hbGlnbjpjZW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlLGNvbG9yIC4ycyBlYXNlO30iCiAgKyIuY2xwdy1zYW10b2dnbGU6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTtjb2xvcjojZmZmO30iCiAgKyIuY2xwdy1wcm9tcHRyb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7Z2FwOjhweDttYXJnaW4tYm90dG9tOjhweDt9IgogICsiLmNscHctcHJvbXB0cm93IHB7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWI5MDApO30iCiAgKyIuY2xwdy1idWxsZXRze21hcmdpbjowIDAgMTJweCAwO3BhZGRpbmctbGVmdDoyMHB4O2NvbG9yOiMzMzQxNTU7Zm9udC1zaXplOjEzLjVweDt9IgogICsiLmNscHctYnVsbGV0cyBsaXttYXJnaW46M3B4IDA7fSIKICArIi5jbHB3LW9wdHN7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtnYXA6OHB4O21hcmdpbjowIDAgMTJweDt9IgogICsiLmNscHctb3B0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDo5cHg7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI0Q2RThFRDtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjEwcHggMTJweDtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTMuNXB4O2NvbG9yOiMzMzQxNTU7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzIGVhc2UsYmFja2dyb3VuZCAuMnMgZWFzZTt9IgogICsiLmNscHctb3B0OmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1iNDAwKTt9IgogICsiLmNscHctb3B0LnNlbHtib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7YmFja2dyb3VuZDp2YXIoLS1iNTApO30iCiAgKyIuY2xwdy1vcHQgaW5wdXR7bWFyZ2luLXRvcDozcHg7YWNjZW50LWNvbG9yOnZhcigtLWI1MDApO2ZsZXg6bm9uZTt9IgogICsiLmNscHctdGF7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjI2MHB4O3Jlc2l6ZTp2ZXJ0aWNhbDtib3JkZXI6MXB4IHNvbGlkICNDOUQ2RGM7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxM3B4IDE0cHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNjtjb2xvcjojMEYxNzJBO2JhY2tncm91bmQ6I2ZmZjtib3gtc2hhZG93Omluc2V0IDAgMXB4IDNweCByZ2JhKDE1LDIzLDQyLC4wNSk7fSIKICArIi5jbHB3LXRhOmZvY3Vze291dGxpbmU6bm9uZTtib3JkZXItY29sb3I6dmFyKC0tYjQwMCk7Ym94LXNoYWRvdzowIDAgMCAzcHggcmdiYSg1OSwxMzAsMjQ2LC4xNSk7fSIKICArIi5jbHB3LXdtZXRlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2ZsZXgtd3JhcDp3cmFwO21hcmdpbi10b3A6OXB4O30iCiAgKyIuY2xwdy13cGlsbHtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjEzcHg7Ym9yZGVyLXJhZGl1czozMnB4O3BhZGRpbmc6NnB4IDE0cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1tdXRlZCk7fSIKICArIi5jbHB3LXdwaWxsLmxvd3tjb2xvcjp2YXIoLS1tdXRlZCk7fSIKICArIi5jbHB3LXdwaWxsLmdvb2R7Y29sb3I6IzA0Nzg1NztiYWNrZ3JvdW5kOnZhcigtLWdyZWVuNTApO2JvcmRlci1jb2xvcjojQTdGM0QwO30iCiAgKyIuY2xwdy13cGlsbC5vdmVye2NvbG9yOiNCNDUzMDk7YmFja2dyb3VuZDp2YXIoLS1hbWJlcjUwKTtib3JkZXItY29sb3I6I0ZERTY4QTt9IgogICsiLmNscHctd3BpbGwubWF4e2NvbG9yOiNCRTEyM0M7YmFja2dyb3VuZDp2YXIoLS1yb3NlNTApO2JvcmRlci1jb2xvcjojRkVDREQzO30iCiAgKyIuY2xwdy10bXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NnB4O21hcmdpbi1sZWZ0OmF1dG87fSIKICArIi5jbHB3LXRtci1idG57Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1tdXRlZCk7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMi41cHg7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzo3cHggMTJweDt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2UsY29sb3IgLjJzIGVhc2UsYm9yZGVyLWNvbG9yIC4ycyBlYXNlO30iCiAgKyIuY2xwdy10bXItYnRuOmhvdmVye2JvcmRlci1jb2xvcjp2YXIoLS1iNDAwKTtjb2xvcjp2YXIoLS1iNzAwKTt9IgogICsiLmNscHctdG1yLWJ0bi5ydW57YmFja2dyb3VuZDp2YXIoLS1iNTAwKTtib3JkZXItY29sb3I6dmFyKC0tYjUwMCk7Y29sb3I6I2ZmZjt9IgogIC8vIHNhbXBsZSBwYW5lbAogICsiLmNscHctc2FtcGxlc3ttYXJnaW4tdG9wOjE0cHg7Ym9yZGVyLXRvcDoxcHggZGFzaGVkICNEM0Q5RTA7cGFkZGluZzoxNnB4IDE4cHggMjBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4O30iCiAgKyIuY2xwdy1zYW1wbGVzW2hpZGRlbl17ZGlzcGxheTpub25lO30iCiAgKyIuY2xwdy1zYW1ub3Rle2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6dmFyKC0tbXV0ZWQpO21hcmdpbi1ib3R0b206MTJweDt9IgogICsiLmNscHctdGFic3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEycHg7fSIKICArIi5jbHB3LXRhYntib3JkZXI6MXB4IHNvbGlkICNEOURFRTU7YmFja2dyb3VuZDojRjFGM0Y2O2NvbG9yOiM0NzU1Njk7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxM3B4O2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6OXB4IDE2cHg7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlLGNvbG9yIC4ycyBlYXNlO30iCiAgKyIuY2xwdy10YWIub257YmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTtib3JkZXItY29sb3I6dmFyKC0tY3JpbXNvbik7Y29sb3I6I2ZmZjt9IgogICsiLmNscHctc2FtYm9keXtiYWNrZ3JvdW5kOiNGN0Y4RkE7Ym9yZGVyOjFweCBzb2xpZCAjRTdFQUVFO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjE2cHggMThweDt9IgogICsiLmNscHctc2FtbHZse2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzouMDZlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6dmFyKC0tY3JpbXNvbik7bWFyZ2luLWJvdHRvbTo4cHg7fSIKICArIi5jbHB3LXNhbXRleHR7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzFGMjkzNztsaW5lLWhlaWdodDoxLjc7d2hpdGUtc3BhY2U6cHJlLXdyYXA7fSIKICArIi5jbHB3LXNhbWhpbnR7bWFyZ2luLXRvcDoxMnB4O2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6IzQ3NTU2OTtiYWNrZ3JvdW5kOiNFRUYyRkY7Ym9yZGVyOjFweCBzb2xpZCAjREJFM0ZGO2JvcmRlci1yYWRpdXM6OHB4O3BhZGRpbmc6OXB4IDEycHg7fSIKICArIi5jbHB3LXNhbWhpbnQgYntjb2xvcjp2YXIoLS1iOTAwKTt9IgogIC8vIHJ1YnJpYyAvIHNjb3JpbmcKICArIi5jbHB3LXBhbmVse21hcmdpbi10b3A6MThweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO2JvcmRlci1yYWRpdXM6MTZweDtwYWRkaW5nOjIwcHggMjJweDtib3gtc2hhZG93OjAgMTBweCAzMHB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjIpO30iCiAgKyIuY2xwdy1wYW5lbCBoMntmb250LXNpemU6MTlweDtmb250LXdlaWdodDo4MDA7Y29sb3I6dmFyKC0tYjkwMCk7bWFyZ2luLWJvdHRvbTo0cHg7fSIKICArIi5jbHB3LXBhbmVsIC5jbHB3LWxlYWR7Zm9udC1zaXplOjEzLjVweDtjb2xvcjp2YXIoLS1tdXRlZCk7bWFyZ2luLWJvdHRvbToxNHB4O30iCiAgKyIuY2xwdy1ydWJncmlke2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcjtnYXA6MTBweDt9IgogICsiLmNscHctcnVie2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTtib3JkZXItcmFkaXVzOjExcHg7cGFkZGluZzoxMnB4IDE0cHg7YmFja2dyb3VuZDojRkNGREZGO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4ycyBlYXNlLGJhY2tncm91bmQgLjJzIGVhc2U7fSIKICArIi5jbHB3LXJ1Yjpob3Zlcntib3JkZXItY29sb3I6dmFyKC0tYjQwMCk7fSIKICArIi5jbHB3LXJ1Yi5kb25le2JvcmRlci1jb2xvcjojQTdGM0QwO2JhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7fSIKICArIi5jbHB3LXJ1YiBpbnB1dHttYXJnaW4tdG9wOjNweDthY2NlbnQtY29sb3I6dmFyKC0tZ3JlZW4pO2ZsZXg6bm9uZTt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O30iCiAgKyIuY2xwdy1ydWIta3tmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjEzLjVweDtjb2xvcjp2YXIoLS1iOTAwKTt9IgogICsiLmNscHctcnViLWR7Zm9udC1zaXplOjEyLjVweDtjb2xvcjp2YXIoLS1tdXRlZCk7bGluZS1oZWlnaHQ6MS41O21hcmdpbi10b3A6MnB4O30iCiAgKyIuY2xwdy1zY29yZWJveHttYXJnaW4tdG9wOjE0cHg7Zm9udC1zaXplOjEzcHg7Y29sb3I6IzMzNDE1NTtsaW5lLWhlaWdodDoxLjY7YmFja2dyb3VuZDp2YXIoLS1iNTApO2JvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6MTRweCAxNnB4O30iCiAgKyIuY2xwdy1zY29yZWJveCBie2NvbG9yOnZhcigtLWI5MDApO30iCiAgKyIuY2xwdy1jbGJyb3d7ZGlzcGxheTpmbGV4O2dhcDo4cHg7ZmxleC13cmFwOndyYXA7bWFyZ2luLXRvcDoxMnB4O30iCiAgKyIuY2xwdy1jbGJ0YWd7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOnZhcigtLWI3MDApO2JhY2tncm91bmQ6I2ZmZjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO2JvcmRlci1yYWRpdXM6MzJweDtwYWRkaW5nOjZweCAxM3B4O30iCiAgKyIuY2xwdy1mb290e21hcmdpbi10b3A6MTZweDtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1zdWJ0bGUpO3RleHQtYWxpZ246Y2VudGVyO30iCiAgKyJAbWVkaWEobWF4LXdpZHRoOjgyMHB4KXsuY2xwdy1zcGxpdHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO30uY2xwdy1yZWFke2JvcmRlci1yaWdodDpub25lO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFM0U2RUE7fS5jbHB3LXJ1YmdyaWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjt9LmNscHctaGVyb3twYWRkaW5nOjI2cHggMjJweDt9fSIKICA7CgogIGZ1bmN0aW9uIGluamVjdENTUygpeyBpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1N0eWxlIikpIHJldHVybjsKICAgIHZhciBzdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOyBzdC5pZD0iY2xwd1N0eWxlIjsgc3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoQ1NTKSk7CiAgICAoZG9jdW1lbnQuaGVhZHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5hcHBlbmRDaGlsZChzdCk7IH0KCiAgLy8gLS0tLS0tLS0tLSBidWlsZCAtLS0tLS0tLS0tCiAgZnVuY3Rpb24gdGFza0hUTUwodCl7CiAgICB2YXIgZD1XREFUQS50YXNrc1t0LTFdOyB2YXIgaD0iIjsKICAgIGgrPSc8ZGl2IGNsYXNzPSJjbHB3LXRhc2snKyh0PT09c3RhdGUuYWN0aXZlPycgb24nOicnKSsnIiBkYXRhLXRhc2s9IicrdCsnIiBpZD0iY2xwd1Rhc2snK3QrJyI+JzsKICAgIGgrPSAnPGRpdiBjbGFzcz0iY2xwdy1iYXIiPjxzcGFuIGNsYXNzPSJjbHB3LWJhci10Ij4nK2VzYyhkLmJhclRpdGxlKSsnPC9zcGFuPicKICAgICAgICsnPHNwYW4gY2xhc3M9ImNscHctYmFyLXRpbWUiIGlkPSJjbHB3QmFyVGltZScrdCsnIj5UaW1lIHJlbWFpbmluZzogPGI+JytmbXQoc3RhdGUudGltZXJbdF0ucmVtKSsnPC9iPjwvc3Bhbj4nCiAgICAgICArJzxidXR0b24gY2xhc3M9ImNscHctdG1yLWJ0biIgZGF0YS10bmV4dD0iJyt0KyciPicrKHQ8V0RBVEEudGFza3MubGVuZ3RoPydORVhUJzonRE9ORScpKyc8L2J1dHRvbj48L2Rpdj4nOwogICAgaCs9ICc8ZGl2IGNsYXNzPSJjbHB3LXNwbGl0Ij4nOwogICAgLy8gbGVmdAogICAgaCs9ICAnPGRpdiBjbGFzcz0iY2xwdy1yZWFkIj4nOwogICAgaCs9ICAgJzxkaXYgY2xhc3M9ImNscHctcmhlYWQiPjxzcGFuIGNsYXNzPSJjbHB3LWluZm8iPmk8L3NwYW4+PHA+Jytlc2MoZC5yZWFkSGVhZCkrJzwvcD48L2Rpdj4nOwogICAgaWYoZC5zY2VuYXJpb0hlYWQpeyBoKz0nPGRpdiBjbGFzcz0iY2xwdy1zY2VuYXJpby1oIj4nK2VzYyhkLnNjZW5hcmlvSGVhZCkrJzwvZGl2Pic7IH0KICAgIGgrPSAgICc8ZGl2IGNsYXNzPSJjbHB3LXNjZW5hcmlvIj4nK2VzYyhkLnNjZW5hcmlvKSsnPC9kaXY+JzsKICAgIGgrPSAgICc8YnV0dG9uIGNsYXNzPSJjbHB3LXNhbXRvZ2dsZSIgZGF0YS1zYW10b2dnbGU9IicrdCsnIj5DbGljayBoZXJlIHRvIHZpZXcgc2FtcGxlIHJlc3BvbnNlczwvYnV0dG9uPic7CiAgICBoKz0gICc8L2Rpdj4nOwogICAgLy8gcmlnaHQKICAgIGgrPSAgJzxkaXYgY2xhc3M9ImNscHctd3JpdGUiPic7CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy1wcm9tcHRyb3ciPjxzcGFuIGNsYXNzPSJjbHB3LWluZm8iPmk8L3NwYW4+PHA+Jytlc2MoZC5wcm9tcHRIZWFkKSsnPC9wPjwvZGl2Pic7CiAgICBpZihkLmJ1bGxldHMgJiYgZC5idWxsZXRzLmxlbmd0aCl7IGgrPSc8dWwgY2xhc3M9ImNscHctYnVsbGV0cyI+JzsgZC5idWxsZXRzLmZvckVhY2goZnVuY3Rpb24oYil7IGgrPSc8bGk+Jytlc2MoYikrJzwvbGk+JzsgfSk7IGgrPSc8L3VsPic7IH0KICAgIGlmKGQub3B0aW9ucyl7IGgrPSc8ZGl2IGNsYXNzPSJjbHB3LW9wdHMiPic7IGQub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG8pewogICAgICAgIGgrPSc8bGFiZWwgY2xhc3M9ImNscHctb3B0Jysoc3RhdGUub3B0PT09by5rZXk\/JyBzZWwnOicnKSsnIiBkYXRhLW9wdHdyYXA9Iicrby5rZXkrJyI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJjbHB3T3B0IiB2YWx1ZT0iJytvLmtleSsnIicrKHN0YXRlLm9wdD09PW8ua2V5PycgY2hlY2tlZCc6JycpKyc+PHNwYW4+Jytlc2Moby5sYWJlbCkrJzwvc3Bhbj48L2xhYmVsPic7IH0pOwogICAgICAgIGgrPSc8L2Rpdj4nOyB9CiAgICBoKz0gICAnPHRleHRhcmVhIGNsYXNzPSJjbHB3LXRhIiBpZD0iY2xwd1RhJyt0KyciIGRhdGEtdGE9IicrdCsnIiBwbGFjZWhvbGRlcj0iVHlwZSB5b3VyIHJlc3BvbnNlIGhlcmUuLi4iPicrZXNjKHN0YXRlLnRleHRbdF0pKyc8L3RleHRhcmVhPic7CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy13bWV0ZXIiPic7CiAgICBoKz0gICAgICc8c3BhbiBjbGFzcz0iY2xwdy13cGlsbCIgaWQ9ImNscHdXcGlsbCcrdCsnIj4wIHdvcmRzPC9zcGFuPic7CiAgICBoKz0gICAgICc8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEyLjVweDtjb2xvcjojNjQ3NDhCOyI+YWltICcrZXNjKGQud29yZEFpbSkrJzwvc3Bhbj4nOwogICAgaCs9ICAgICAnPHNwYW4gY2xhc3M9ImNscHctdG1yIj4nCiAgICAgICAgICAgICArJzxidXR0b24gY2xhc3M9ImNscHctdG1yLWJ0biIgZGF0YS10c3RhcnQ9IicrdCsnIj5TdGFydCB0aW1lcjwvYnV0dG9uPicKICAgICAgICAgICAgICsnPGJ1dHRvbiBjbGFzcz0iY2xwdy10bXItYnRuIiBkYXRhLXRyZXNldD0iJyt0KyciPlJlc2V0PC9idXR0b24+PC9zcGFuPic7CiAgICBoKz0gICAnPC9kaXY+JzsKICAgIGgrPSAgJzwvZGl2Pic7CiAgICBoKz0gJzwvZGl2Pic7IC8vIHNwbGl0CiAgICAvLyBzYW1wbGVzCiAgICBoKz0gJzxkaXYgY2xhc3M9ImNscHctc2FtcGxlcyIgaWQ9ImNscHdTYW0nK3QrJyIgaGlkZGVuPic7CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy1zYW1ub3RlIj4nKyhkLnNhbU5vdGU\/ZC5zYW1Ob3RlOidUaGVzZSBhcmUgdGhlIG9mZmljaWFsIHByYWN0aWNlIHNhbXBsZSByZXNwb25zZXMgYXQgdGhyZWUgc2NvcmUgbGV2ZWxzLiBMb3dlci1sZXZlbCBzYW1wbGVzIGtlZXAgdGhlaXIgb3JpZ2luYWwgbWlzdGFrZXMgb24gcHVycG9zZSAmbWRhc2g7IHN0dWR5IHdoYXQgY2hhbmdlcyBhcyB0aGUgc2NvcmUgcmlzZXMuJykrJzwvZGl2Pic7CiAgICBoKz0gICAnPGRpdiBjbGFzcz0iY2xwdy10YWJzIiBpZD0iY2xwd1RhYnMnK3QrJyI+JzsKICAgIGQuc2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uKHMsaSl7IGgrPSc8YnV0dG9uIGNsYXNzPSJjbHB3LXRhYicrKGk9PT0wPycgb24nOicnKSsnIiBkYXRhLXRhYj0iJyt0KyciIGRhdGEtaT0iJytpKyciPicrZXNjKHMubGV2ZWwpKyc8L2J1dHRvbj4nOyB9KTsKICAgIGgrPSAgICc8L2Rpdj4nOwogICAgaCs9ICAgJzxkaXYgY2xhc3M9ImNscHctc2FtYm9keSIgaWQ9ImNscHdTYW1Cb2R5Jyt0KyciPjwvZGl2Pic7CiAgICBoKz0gJzwvZGl2Pic7CiAgICBoKz0nPC9kaXY+JzsKICAgIHJldHVybiBoOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICB2YXIgcm9vdD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd0FwcCIpOyBpZighcm9vdCkgcmV0dXJuOwogICAgdmFyIG09V0RBVEEubWV0YSwgaD0iIjsKICAgIC8vIGhlcm8KICAgIGgrPSc8c2VjdGlvbiBjbGFzcz0iY2xwdy1oZXJvIj48ZGl2IGNsYXNzPSJjbHB3LWF1cm9yYSI+PHNwYW4+PC9zcGFuPjxzcGFuPjwvc3Bhbj48c3Bhbj48L3NwYW4+PC9kaXY+JzsKICAgIGgrPSAnPGRpdiBjbGFzcz0iY2xwdy1oYmFkZ2VzIj48c3BhbiBjbGFzcz0iY2xwdy1iYnJhbmQiPicrZXNjKG0uYnJhbmQpKyc8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctYnNldCI+Jytlc2MobS5zZXQpKyc8L3NwYW4+PC9kaXY+JzsKICAgIGgrPSAnPGgxPicrZXNjKG0udGl0bGUpKyc8L2gxPic7CiAgICBoKz0gJzxwIGNsYXNzPSJjbHB3LWhlcm8tc3ViIj5Xcml0ZSB5b3VyIHJlc3BvbnNlLCB0aW1lIHlvdXJzZWxmLCB0aGVuIGNvbXBhcmUgaXQgd2l0aCBvZmZpY2lhbCBzYW1wbGUgYW5zd2VycyBhdCB0aHJlZSBzY29yZSBsZXZlbHMgJm1kYXNoOyBDRUxQSVAgNCZuZGFzaDs1LCA3Jm5kYXNoOzggYW5kIDEwJm5kYXNoOzEyLjwvcD4nOwogICAgaCs9ICc8ZGl2IGNsYXNzPSJjbHB3LWhjaGlwcyI+PHNwYW4gY2xhc3M9ImNscHctY2hpcCI+MiB0YXNrczwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1jaGlwIj5+JyttLnRvdGFsTWluKycgbWludXRlczwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1jaGlwIj4xNTAmbmRhc2g7MjAwIHdvcmRzIGVhY2g8L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctY2hpcCI+U2FtcGxlIGFuc3dlcnMgaW5jbHVkZWQ8L3NwYW4+PC9kaXY+JzsKICAgIGgrPSAnPGJ1dHRvbiBjbGFzcz0iY2xwdy1jdGEiIGlkPSJjbHB3U3RhcnQiPlN0YXJ0IHdyaXRpbmc8L2J1dHRvbj4nOwogICAgaCs9Jzwvc2VjdGlvbj4nOwogICAgLy8gdG9vbGJhcgogICAgaCs9JzxkaXYgY2xhc3M9ImNscHctdG9vbHMiPjxzcGFuIGNsYXNzPSJjbHB3LXdjb3VudCIgaWQ9ImNscHdUb3RXb3JkcyI+V29yZHMgJm1kYXNoOyBUYXNrIDE6IDAgJm1pZGRvdDsgVGFzayAyOiAwPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LXNhdmVkIiBpZD0iY2xwd1NhdmVkIj5EcmFmdCBzYXZlZCAmIzEwMDAzOzwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1zcGFjZXIiPjwvc3Bhbj48YnV0dG9uIGNsYXNzPSJjbHB3LXRidG4iIGlkPSJjbHB3UmVzZXRBbGwiPlJlc2V0IGFsbDwvYnV0dG9uPjwvZGl2Pic7CiAgICAvLyBzaW0KICAgIGgrPSc8c2VjdGlvbiBjbGFzcz0iY2xwdy1zaW0iPjxkaXYgY2xhc3M9ImNscHctZG90cyIgaWQ9ImNscHdEb3RzIj4nOwogICAgV0RBVEEudGFza3MuZm9yRWFjaChmdW5jdGlvbihkKXsgaCs9JzxidXR0b24gY2xhc3M9ImNscHctZG90IiBkYXRhLWRvdD0iJytkLmlkKyciPlRhc2sgJytkLmlkKycgJm1pZGRvdDsgJytlc2MoZC5uYW1lKSsnPC9idXR0b24+JzsgfSk7CiAgICBoKz0nPC9kaXY+PGRpdiBjbGFzcz0iY2xwdy1jYXQiIGlkPSJjbHB3Q2F0Ij4nOwogICAgV0RBVEEudGFza3MuZm9yRWFjaChmdW5jdGlvbihkKXsgaCs9dGFza0hUTUwoZC5pZCk7IH0pOwogICAgaCs9JzwvZGl2Pjwvc2VjdGlvbj4nOwogICAgLy8gcnVicmljIHBhbmVsCiAgICBoKz0nPHNlY3Rpb24gY2xhc3M9ImNscHctcGFuZWwiPjxoMj5TY29yZSB5b3VyIG93biB3cml0aW5nPC9oMj48cCBjbGFzcz0iY2xwdy1sZWFkIj5UaGVyZSBpcyBubyBhbnN3ZXIga2V5IGZvciBXcml0aW5nLiBSYXRlIGVhY2ggcmVzcG9uc2UgYWdhaW5zdCB0aGUgZm91ciBvZmZpY2lhbCBDRUxQSVAgZGltZW5zaW9ucy48L3A+JzsKICAgIGgrPSc8ZGl2IGNsYXNzPSJjbHB3LXJ1YmdyaWQiIGlkPSJjbHB3UnViR3JpZCI+PC9kaXY+JzsKICAgIGgrPSc8ZGl2IGNsYXNzPSJjbHB3LXNjb3JlYm94Ij4nK2VzYyhXREFUQS5zY29yaW5nTm90ZSkrJzxkaXYgY2xhc3M9ImNscHctY2xicm93Ij48c3BhbiBjbGFzcz0iY2xwdy1jbGJ0YWciPk08L3NwYW4+PHNwYW4gY2xhc3M9ImNscHctY2xidGFnIj5DTEIgNCZuZGFzaDs1ICZyYXJyOyBkZXZlbG9waW5nPC9zcGFuPjxzcGFuIGNsYXNzPSJjbHB3LWNsYnRhZyI+Q0xCIDcmbmRhc2g7OCAmcmFycjsgYWRlcXVhdGUmbmRhc2g7Z29vZDwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1jbGJ0YWciPkNMQiA5Jm5kYXNoOzEyICZyYXJyOyBzdHJvbmc8L3NwYW4+PC9kaXY+PC9kaXY+JzsKICAgIGgrPSc8L3NlY3Rpb24+JzsKICAgIGgrPSc8ZGl2IGNsYXNzPSJjbHB3LWZvb3QiPkFsbEVuZ2xpc2g0VSAmbWlkZG90OyBDRUxQSVAgV3JpdGluZyBQcmFjdGljZSAmbWlkZG90OyAnK2VzYyhXREFUQS5tZXRhLnNldCkrJzwvZGl2Pic7CiAgICByb290LmlubmVySFRNTD1oOwogICAgYnVpbGRSdWJyaWMoKTsKICAgIFdEQVRBLnRhc2tzLmZvckVhY2goZnVuY3Rpb24oZCl7IHJlbmRlclNhbXBsZShkLmlkKTsgdXBkYXRlV0MoZC5pZCk7IH0pOwogICAgd2lyZUV2ZW50cygpOwogICAgcmVmcmVzaERvdHMoKTsKICAgIHVwZGF0ZVRvdGFscygpOwogIH0KCiAgZnVuY3Rpb24gYnVpbGRSdWJyaWMoKXsKICAgIHZhciBnPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3UnViR3JpZCIpOyBpZighZykgcmV0dXJuOyB2YXIgaD0iIjsKICAgIFdEQVRBLnJ1YnJpYy5mb3JFYWNoKGZ1bmN0aW9uKHIsaSl7CiAgICAgIHZhciBvbiA9IHN0YXRlLnJ1YnJpY1tzdGF0ZS5hY3RpdmVdICYmIHN0YXRlLnJ1YnJpY1tzdGF0ZS5hY3RpdmVdW2ldOwogICAgICBoKz0nPGxhYmVsIGNsYXNzPSJjbHB3LXJ1YicrKG9uPycgZG9uZSc6JycpKyciIGRhdGEtcnVid3JhcD0iJytpKyciPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgZGF0YS1ydWI9IicraSsnIicrKG9uPycgY2hlY2tlZCc6JycpKyc+PHNwYW4+PHNwYW4gY2xhc3M9ImNscHctcnViLWsiPicrZXNjKHIuaykrJzwvc3Bhbj48c3BhbiBjbGFzcz0iY2xwdy1ydWItZCI+Jytlc2Moci5kKSsnPC9zcGFuPjwvc3Bhbj48L2xhYmVsPic7CiAgICB9KTsKICAgIGcuaW5uZXJIVE1MPWg7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJTYW1wbGUodCl7CiAgICB2YXIgZD1XREFUQS50YXNrc1t0LTFdLCBpPXN0YXRlLnRhYlt0XSwgcz1kLnNhbXBsZXNbaV07CiAgICB2YXIgYm9keT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1NhbUJvZHkiK3QpOyBpZighYm9keSkgcmV0dXJuOwogICAgYm9keS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImNscHctc2FtbHZsIj4nK2VzYyhzLmxldmVsKSsnPC9kaXY+PGRpdiBjbGFzcz0iY2xwdy1zYW10ZXh0Ij4nK2VzYyhzLnRleHQpKyc8L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0iY2xwdy1zYW1oaW50Ij48Yj5XaGF0IHNldHMgdGhpcyBsZXZlbCBhcGFydDo8L2I+ICcrZXNjKHMubm90ZSkrJzwvZGl2Pic7CiAgICB2YXIgdGFicz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1RhYnMiK3QpOyBpZih0YWJzKXsgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh0YWJzLmNoaWxkcmVuLGZ1bmN0aW9uKGIsYmkpeyBiLmNsYXNzTGlzdC50b2dnbGUoIm9uIixiaT09PWkpOyB9KTsgfQogIH0KCiAgZnVuY3Rpb24gdXBkYXRlV0ModCl7CiAgICB2YXIgbj13YyhzdGF0ZS50ZXh0W3RdKTsgdmFyIHBpbGw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdXcGlsbCIrdCk7IGlmKCFwaWxsKSByZXR1cm47CiAgICBwaWxsLnRleHRDb250ZW50PW4rKG49PT0xPyIgd29yZCI6IiB3b3JkcyIpOwogICAgcGlsbC5jbGFzc05hbWU9ImNscHctd3BpbGwgIisobjwxNTA\/ImxvdyI6KG48PTIwMD8iZ29vZCI6KG48PTI1MD8ib3ZlciI6Im1heCIpKSk7CiAgICB1cGRhdGVUb3RhbHMoKTsKICB9CiAgZnVuY3Rpb24gdXBkYXRlVG90YWxzKCl7CiAgICB2YXIgZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdUb3RXb3JkcyIpOyBpZihlbCkgZWwuaW5uZXJIVE1MPSJXb3JkcyAmbWRhc2g7IFRhc2sgMTogIit3YyhzdGF0ZS50ZXh0WzFdKSsiICZtaWRkb3Q7IFRhc2sgMjogIit3YyhzdGF0ZS50ZXh0WzJdKTsKICB9CgogIGZ1bmN0aW9uIHJlZnJlc2hEb3RzKCl7CiAgICB2YXIgZG90cz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd0RvdHMiKTsgaWYoIWRvdHMpIHJldHVybjsKICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoZG90cy5jaGlsZHJlbixmdW5jdGlvbihiKXsgdmFyIGlkPStiLmdldEF0dHJpYnV0ZSgiZGF0YS1kb3QiKTsKICAgICAgYi5jbGFzc0xpc3QudG9nZ2xlKCJvbiIsaWQ9PT1zdGF0ZS5hY3RpdmUpOwogICAgICBiLmNsYXNzTGlzdC50b2dnbGUoImZpbGxlZCIsIGlkIT09c3RhdGUuYWN0aXZlICYmIHdjKHN0YXRlLnRleHRbaWRdKT4wKTsgfSk7CiAgICBXREFUQS50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKGQpeyB2YXIgZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdUYXNrIitkLmlkKTsgaWYoZWwpIGVsLmNsYXNzTGlzdC50b2dnbGUoIm9uIixkLmlkPT09c3RhdGUuYWN0aXZlKTsgfSk7CiAgfQoKICBmdW5jdGlvbiBzd2l0Y2hUYXNrKHQpeyBzdGF0ZS5hY3RpdmU9dDsgcmVmcmVzaERvdHMoKTsgYnVpbGRSdWJyaWMoKTsKICAgIHZhciBjYXQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdDYXQiKTsgaWYoY2F0JiZjYXQuc2Nyb2xsSW50b1ZpZXcpIGNhdC5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6InNtb290aCIsYmxvY2s6InN0YXJ0In0pOyB9CgogIC8vIHRpbWVycwogIGZ1bmN0aW9uIHRpY2sodCl7IHZhciBUPXN0YXRlLnRpbWVyW3RdOyBpZihULnJlbTw9MCl7IHN0b3BUaW1lcih0KTsgcmV0dXJuOyB9IFQucmVtLS07IHBhaW50VGltZSh0KTsgaWYoVC5yZW08PTApIHN0b3BUaW1lcih0KTsgfQogIGZ1bmN0aW9uIHBhaW50VGltZSh0KXsgdmFyIGVsPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3QmFyVGltZSIrdCk7IHZhciBUPXN0YXRlLnRpbWVyW3RdOwogICAgaWYoZWwpeyBlbC5pbm5lckhUTUw9IlRpbWUgcmVtYWluaW5nOiA8Yj4iK2ZtdChULnJlbSkrIjwvYj4iOyBlbC5jbGFzc0xpc3QudG9nZ2xlKCJsb3ciLFQucmVtPD0xMjApOyB9CiAgICB2YXIgYnRuPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLXRzdGFydD0iJyt0KyciXScpOyBpZihidG4peyBidG4udGV4dENvbnRlbnQ9VC5ydW4\/IlBhdXNlIHRpbWVyIjooVC5yZW08PTA\/IlRpbWUgdXAiOiJTdGFydCB0aW1lciIpOyBidG4uY2xhc3NMaXN0LnRvZ2dsZSgicnVuIixULnJ1bik7IH0gfQogIGZ1bmN0aW9uIHN0YXJ0VGltZXIodCl7IHZhciBUPXN0YXRlLnRpbWVyW3RdOyBpZihULnJlbTw9MCkgcmV0dXJuOyBULnJ1bj10cnVlOyBpZihULml2KSBjbGVhckludGVydmFsKFQuaXYpOyBULml2PXNldEludGVydmFsKGZ1bmN0aW9uKCl7dGljayh0KTt9LDEwMDApOyBwYWludFRpbWUodCk7IH0KICBmdW5jdGlvbiBzdG9wVGltZXIodCl7IHZhciBUPXN0YXRlLnRpbWVyW3RdOyBULnJ1bj1mYWxzZTsgaWYoVC5pdil7IGNsZWFySW50ZXJ2YWwoVC5pdik7IFQuaXY9bnVsbDsgfSBwYWludFRpbWUodCk7IH0KICBmdW5jdGlvbiB0b2dnbGVUaW1lcih0KXsgc3RhdGUudGltZXJbdF0ucnVuP3N0b3BUaW1lcih0KTpzdGFydFRpbWVyKHQpOyB9CiAgZnVuY3Rpb24gcmVzZXRUaW1lcih0KXsgc3RvcFRpbWVyKHQpOyBzdGF0ZS50aW1lclt0XS5yZW09V0RBVEEudGFza3NbdC0xXS5taW51dGVzKjYwOyBwYWludFRpbWUodCk7IH0KCiAgLy8gLS0tLS0tLS0tLSBldmVudHMgLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHdpcmVFdmVudHMoKXsKICAgIHZhciByb290PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHB3QXBwIik7CiAgICB2YXIgc3RhcnQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNscHdTdGFydCIpOwogICAgaWYoc3RhcnQpIHN0YXJ0LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpeyBzd2l0Y2hUYXNrKDEpOyBzdGFydFRpbWVyKDEpOyB9KTsKICAgIHZhciByZXNldEFsbD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1Jlc2V0QWxsIik7CiAgICBpZihyZXNldEFsbCkgcmVzZXRBbGwuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7CiAgICAgIGlmKCFjb25maXJtKCJDbGVhciBib3RoIGRyYWZ0cywgc2VsZWN0ZWQgb3B0aW9uIGFuZCB0aW1lcnMgb24gdGhpcyBkZXZpY2U\/IikpIHJldHVybjsKICAgICAgc3RhdGUudGV4dFsxXT0iIjtzdGF0ZS50ZXh0WzJdPSIiO3N0YXRlLm9wdD1udWxsO3N0YXRlLnJ1YnJpYz17MTp7fSwyOnt9fTsKICAgICAgcmVzZXRUaW1lcigxKTtyZXNldFRpbWVyKDIpOyBzYXZlKCk7IHJlbmRlcigpOyB9KTsKCiAgICByb290LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihlKXsKICAgICAgdmFyIGVsPWUudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLWRvdF0sW2RhdGEtc2FtdG9nZ2xlXSxbZGF0YS10YWJdLFtkYXRhLXRzdGFydF0sW2RhdGEtdHJlc2V0XSxbZGF0YS10bmV4dF0iKTsgaWYoIWVsKSByZXR1cm47CiAgICAgIGlmKGVsLmhhc0F0dHJpYnV0ZSgiZGF0YS1kb3QiKSl7IHN3aXRjaFRhc2soK2VsLmdldEF0dHJpYnV0ZSgiZGF0YS1kb3QiKSk7IH0KICAgICAgZWxzZSBpZihlbC5oYXNBdHRyaWJ1dGUoImRhdGEtc2FtdG9nZ2xlIikpeyB2YXIgdD0rZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXNhbXRvZ2dsZSIpOyB2YXIgcD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2xwd1NhbSIrdCk7CiAgICAgICAgaWYocCl7IHAuaGlkZGVuPSFwLmhpZGRlbjsgZWwudGV4dENvbnRlbnQ9cC5oaWRkZW4\/IkNsaWNrIGhlcmUgdG8gdmlldyBzYW1wbGUgcmVzcG9uc2VzIjoiSGlkZSBzYW1wbGUgcmVzcG9uc2VzIjsgaWYoIXAuaGlkZGVuKSByZW5kZXJTYW1wbGUodCk7IH0gfQogICAgICBlbHNlIGlmKGVsLmhhc0F0dHJpYnV0ZSgiZGF0YS10YWIiKSl7IHZhciB0dD0rZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXRhYiIpOyBzdGF0ZS50YWJbdHRdPStlbC5nZXRBdHRyaWJ1dGUoImRhdGEtaSIpOyByZW5kZXJTYW1wbGUodHQpOyB9CiAgICAgIGVsc2UgaWYoZWwuaGFzQXR0cmlidXRlKCJkYXRhLXRzdGFydCIpKXsgdG9nZ2xlVGltZXIoK2VsLmdldEF0dHJpYnV0ZSgiZGF0YS10c3RhcnQiKSk7IH0KICAgICAgZWxzZSBpZihlbC5oYXNBdHRyaWJ1dGUoImRhdGEtdHJlc2V0IikpeyByZXNldFRpbWVyKCtlbC5nZXRBdHRyaWJ1dGUoImRhdGEtdHJlc2V0IikpOyB9CiAgICAgIGVsc2UgaWYoZWwuaGFzQXR0cmlidXRlKCJkYXRhLXRuZXh0IikpeyB2YXIgY3VyPStlbC5nZXRBdHRyaWJ1dGUoImRhdGEtdG5leHQiKTsgaWYoY3VyPFdEQVRBLnRhc2tzLmxlbmd0aCl7IHN3aXRjaFRhc2soY3VyKzEpOyB9IH0KICAgIH0pOwoKICAgIHJvb3QuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLGZ1bmN0aW9uKGUpeyB2YXIgdGE9ZS50YXJnZXQuY2xvc2VzdCgiW2RhdGEtdGFdIik7IGlmKCF0YSkgcmV0dXJuOwogICAgICB2YXIgdD0rdGEuZ2V0QXR0cmlidXRlKCJkYXRhLXRhIik7IHN0YXRlLnRleHRbdF09dGEudmFsdWU7IHVwZGF0ZVdDKHQpOyByZWZyZXNoRG90cygpOyBzYXZlKCk7IH0pOwoKICAgIHJvb3QuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixmdW5jdGlvbihlKXsKICAgICAgdmFyIG9wdD1lLnRhcmdldC5jbG9zZXN0KCdpbnB1dFtuYW1lPSJjbHB3T3B0Il0nKTsKICAgICAgaWYob3B0KXsgc3RhdGUub3B0PW9wdC52YWx1ZTsgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1vcHR3cmFwXSIpLGZ1bmN0aW9uKGwpeyBsLmNsYXNzTGlzdC50b2dnbGUoInNlbCIsbC5nZXRBdHRyaWJ1dGUoImRhdGEtb3B0d3JhcCIpPT09c3RhdGUub3B0KTsgfSk7IHNhdmUoKTsgcmV0dXJuOyB9CiAgICAgIHZhciBydWI9ZS50YXJnZXQuY2xvc2VzdCgiW2RhdGEtcnViXSIpOwogICAgICBpZihydWIpeyB2YXIgaT0rcnViLmdldEF0dHJpYnV0ZSgiZGF0YS1ydWIiKTsgaWYoIXN0YXRlLnJ1YnJpY1tzdGF0ZS5hY3RpdmVdKSBzdGF0ZS5ydWJyaWNbc3RhdGUuYWN0aXZlXT17fTsgc3RhdGUucnVicmljW3N0YXRlLmFjdGl2ZV1baV09cnViLmNoZWNrZWQ7CiAgICAgICAgdmFyIHdyYXA9cnViLmNsb3Nlc3QoIltkYXRhLXJ1YndyYXBdIik7IGlmKHdyYXApIHdyYXAuY2xhc3NMaXN0LnRvZ2dsZSgiZG9uZSIscnViLmNoZWNrZWQpOyBzYXZlKCk7IH0KICAgIH0pOwogIH0KCiAgZnVuY3Rpb24gYm9vdCgpeyBsb2FkKCk7IGluamVjdENTUygpOyByZW5kZXIoKTsgfQogIGlmKGRvY3VtZW50LnJlYWR5U3RhdGU9PT0ibG9hZGluZyIpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGJvb3QpOyBlbHNlIGJvb3QoKTsKfSkoKTsKCg==\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Writing Set 8 Practice Test 2: Task 1 (email) and Task 2 (survey response) with timers and word counter, plus a self-assessment guide. 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-6396","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6396","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=6396"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6396\/revisions"}],"predecessor-version":[{"id":6565,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6396\/revisions\/6565"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}