{"id":6421,"date":"2026-07-11T06:02:23","date_gmt":"2026-07-11T06:02:23","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-10-test-1-speaking\/"},"modified":"2026-07-12T03:16:18","modified_gmt":"2026-07-12T03:16:18","slug":"celpip-set-10-test-1-speaking","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-10-test-1-speaking\/","title":{"rendered":"CELPIP Speaking \u2014 Set 10 \u00b7 Practice Test 1"},"content":{"rendered":"<div id=\"clp-spk-root\" style=\"min-height:300px\">\n<p style=\"text-align:center;padding:40px 0;color:#888\">Loading CELPIP Speaking\u2026<\/p>\n<\/div>\n<p><script>eval(atob(\"d2luZG93LkNMUFNQS19EQVRBPXsic2V0IjoxMCwidGVzdCI6MSwidGl0bGUiOiJDRUxQSVAgU3BlYWtpbmcgXHUyMDE0IFNldCAxMCBcdTAwYjcgUHJhY3RpY2UgVGVzdCAxIiwiaGVhZGVyIjoiUHJhY3RpY2UgVGVzdCAxIiwiaW1ncyI6eyJzY2VuZSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zMTB0MS1zY2VuZS5qcGciLCJvcHRBIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3MxMHQxLW9wdC1hLmpwZyIsIm9wdEIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEwdDEtb3B0LWIuanBnIiwib3B0T3RoZXIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEwdDEtb3B0LW90aGVyLmpwZyIsInVudXN1YWwiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczEwdDEtdW51c3VhbC5qcGcifSwib3RoZXJVcmwiOiIvY2VscGlwLXNldC0xMC10ZXN0LTItc3BlYWtpbmcvIiwidGFza3MiOlt7ImsiOiJ3IiwibnVtIjowLCJ0eXBlRW4iOiJTcGVha2luZyBQcmFjdGljZSBUYXNrIiwicHJlcCI6MzAsInJlYyI6NjAsIndhcm11cCI6dHJ1ZSwicHJvbXB0IjoiVGFsayBhYm91dCBvbmUgb2YgeW91ciBiZXN0IGZyaWVuZHMuIiwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiVGhlIFByYWN0aWNlIFRhc2sgKHdhcm0tdXApIGlzIE5PVCBzY29yZWQgXHUyMDE0IGl0IGlzIGhlcmUgdG8gaGVscCB5b3UgZ2V0IHVzZWQgdG8gdGhlIGNvbnRyb2xzIGFuZCB3YXJtIHVwIHlvdXIgdm9pY2UuIiwiU3BlYWsgbmF0dXJhbGx5IGFib3V0IGEgYmVzdCBmcmllbmQ6IHRoZWlyIG5hbWUsIGhvdyB5b3UgbWV0LCB0aGVpciBwZXJzb25hbGl0eSwgYSBtZW1vcnkgeW91IHNoYXJlLiIsIlVzZSBpdCB0byBhZGp1c3QgeW91ciBwb3N0dXJlLCBtaWNyb3Bob25lIGRpc3RhbmNlLCBhbmQgc3BlYWtpbmcgcGFjZS4iXSwicGhyYXNlcyI6WyJNeSBiZXN0IGZyaWVuZCdzIG5hbWUgaXNcdTIwMjYiLCJXZSBtZXQgd2hlblx1MjAyNiIsIldoYXQgSSBsaWtlIG1vc3QgYWJvdXQgaGltL2hlciBpc1x1MjAyNiJdfSwiczYiOm51bGwsInM5IjpudWxsfSx7ImsiOiJ0MSIsIm51bSI6MSwidHlwZUVuIjoiR2l2aW5nIEFkdmljZSIsInByZXAiOjMwLCJyZWMiOjkwLCJwcm9tcHQiOiJQZW9wbGUgYXQgeW91ciB3b3JrcGxhY2Ugb2Z0ZW4gZGlzY3VzcyBldmVudHMgaW4gdGhlIG5ld3MuIFlvdXIgY28td29ya2VyIHdhbnRzIHRvIGpvaW4gdGhlc2UgZGlzY3Vzc2lvbnMsIGJ1dCBoZSBkb2Vzbid0IGtub3cgYSBsb3QgYWJvdXQgY3VycmVudCBldmVudHMuIEFkdmlzZSBoaW0gb24gZGlmZmVyZW50IHdheXMgaGUgY2FuIGxlYXJuIGFib3V0IHRoZSBuZXdzIHNvIGhlIGNhbiBwYXJ0aWNpcGF0ZSBpbiB0aGVzZSBkaXNjdXNzaW9ucy4iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJPcGVuaW5nOiBncmVldCB5b3VyIGZyaWVuZCBhbmQgcmVzdGF0ZSB0aGUgc2l0dWF0aW9uIGluIG9uZSBzZW50ZW5jZS4iLCJCb2R5OiBnaXZlIDJcdTIwMTMzIHBpZWNlcyBvZiBhZHZpY2UsIGVhY2ggd2l0aCBhIHJlYXNvbiBvciBleGFtcGxlIChGaXJzdFx1MjAyNiwgYmVjYXVzZVx1MjAyNjsgQW5vdGhlciBpZGVhIGlzXHUyMDI2KS4iLCJDbG9zaW5nOiBlbmNvdXJhZ2UgdGhlbSBhbmQgd2lzaCB0aGVtIGx1Y2suIiwiR2l2ZSB5b3VyIGNvLXdvcmtlciBjb25jcmV0ZSBuZXdzIGNoYW5uZWxzOiBhIHBob25lIG5ld3MgYXBwIHdpdGggbW9ybmluZyBwdXNoIGhlYWRsaW5lcyAoQ0JDL0JCQyksIGEgc2hvcnQgMTAtMTUgbWludXRlIG5ld3MgcG9kY2FzdCBvbiB0aGUgY29tbXV0ZSwgb25lIHRydXN0ZWQgbmV3c3BhcGVyIG9yIGEgZnJlZSBlbWFpbCBuZXdzbGV0dGVyIHJlYWQgd2l0aCBjb2ZmZWUuIFRlbGwgaGltIHRvIHNraW0gaGVhZGxpbmVzIGRhaWx5IGJ1dCBnbyBkZWVwIG9uIE9ORSBzdG9yeSwgYW5kIHRvIHN0YXJ0IGJ5IEFTS0lORyBxdWVzdGlvbnMgaW4gdGhlIGRpc2N1c3Npb25zIGluc3RlYWQgb2YgcHJldGVuZGluZyB0byBiZSBhbiBleHBlcnQuIl0sInBocmFzZXMiOlsiSWYgSSB3ZXJlIHlvdSwgSSdkXHUyMDI2IiwiWW91IHNob3VsZCBkZWZpbml0ZWx5XHUyMDI2IiwiQW5vdGhlciBvcHRpb24gaXMgdG9cdTIwMjYiLCJUcnVzdCBtZSwgeW91IHdvbid0IHJlZ3JldCBpdC4iXX0sInM2IjoiSGV5IE1hcmN1cywgc28geW91IHdhbnQgdG8gam9pbiB0aGUgbmV3cyB0YWxrcyBhdCBsdW5jaCBidXQgeW91IGZlZWwgYSBiaXQgbG9zdD8gRG8gbm90IHdvcnJ5LCBpdCBpcyBlYXNpZXIgdGhhbiB5b3UgdGhpbmsuIExldCBtZSBnaXZlIHlvdSBzb21lIHNpbXBsZSB3YXlzLiBGaXJzdCwgcHV0IGEgbmV3cyBhcHAgb24geW91ciBwaG9uZSwgbGlrZSBDQkMgb3IgQkJDLCBhbmQgdHVybiBvbiB0aGUgbm90aWZpY2F0aW9ucy4gRXZlcnkgbW9ybmluZyB5b3Ugd2lsbCBzZWUgdGhlIGJpZyBoZWFkbGluZXMsIGFuZCB0aGF0IGlzIGFscmVhZHkgZW5vdWdoIHRvIGZvbGxvdyB0aGUgY29udmVyc2F0aW9uLiBTZWNvbmQsIGxpc3RlbiB0byBhIHNob3J0IG5ld3MgcG9kY2FzdCBvbiB5b3VyIHdheSB0byB3b3JrLiBUZW4gb3IgZmlmdGVlbiBtaW51dGVzLCBhbmQgc29tZW9uZSBleHBsYWlucyB0aGUgbWFpbiBzdG9yaWVzIGZvciB5b3UsIHNvIHlvdSBsZWFybiB3aGlsZSB5b3UgZHJpdmUuIFRoaXJkLCBjaG9vc2Ugb25lIGdvb2QgbmV3c3BhcGVyIG9yIGEgZnJlZSBlbWFpbCBuZXdzbGV0dGVyLCBhbmQgcmVhZCBpdCB3aXRoIHlvdXIgY29mZmVlLiBEbyBub3QgdHJ5IHRvIHJlYWQgZXZlcnl0aGluZywgbm9ib2R5IGRvZXMuIEp1c3QgcGljayBvbmUgb3IgdHdvIHN0b3JpZXMgZWFjaCBkYXkgYW5kIGdvIGEgbGl0dGxlIGRlZXBlci4gQW5kIGhlcmUgaXMgbXkgYmVzdCB0aXA6IHdoZW4gcGVvcGxlIGFyZSB0YWxraW5nLCB5b3UgZG8gbm90IG5lZWQgdG8gYmUgYW4gZXhwZXJ0LiBKdXN0IGFzayBxdWVzdGlvbnMsIGxpa2UgJ1doYXQgZG8geW91IHRoaW5rIGFib3V0IHRoYXQ\/JyBQZW9wbGUgbG92ZSB0byBleHBsYWluLCBhbmQgeW91IGxlYXJuIGZhc3QuIFN0YXJ0IHNtYWxsLCBiZSBjdXJpb3VzLCBhbmQgaW4gb25lIG1vbnRoIHlvdSB3aWxsIGJlIHBhcnQgb2YgZXZlcnkgZGlzY3Vzc2lvbi4gWW91IGNhbiBkbyBpdCEiLCJzOSI6Ik1hcmN1cywgc28geW91IHdhbnQgdG8ganVtcCBpbnRvIHRoZSBuZXdzIGNvbnZlcnNhdGlvbnMgYXQgd29yayBidXQgeW91IGZlZWwgb3V0IG9mIHlvdXIgZGVwdGguIEhvbmVzdGx5LCB0aGF0IGlzIHRoZSBlYXNpZXN0IGdhcCBpbiB0aGUgd29ybGQgdG8gY2xvc2UsIGFuZCBJIGhhdmUgZ290IGEgd2hvbGUgc3lzdGVtIGZvciB5b3UuIFN0YXJ0IHdpdGggdGhlIGRhaWx5IGRyaXA6IHB1dCBvbmUgc29saWQgbmV3cyBhcHAgb24geW91ciBwaG9uZSwgQ0JDLCB0aGUgQkJDLCB3aGF0ZXZlciB5b3UgdHJ1c3QsIGFuZCBzd2l0Y2ggb24gdGhlIG1vcm5pbmcgbm90aWZpY2F0aW9ucy4gSnVzdCBza2ltbWluZyB0aG9zZSBwdXNoIGhlYWRsaW5lcyBvdmVyIGJyZWFrZmFzdCBnaXZlcyB5b3UgdGhlIHNrZWxldG9uIG9mIHRoZSBkYXkncyBldmVudHMsIHdoaWNoIGlzIHVzdWFsbHkgZW5vdWdoIHRvIGZvbGxvdywgYW5kIGpvaW4sIG1vc3Qgd2F0ZXItY29vbGVyIGNoYXRzLiBUaGVuLCB1cGdyYWRlIHlvdXIgY29tbXV0ZTogc3dhcCB0ZW4gbWludXRlcyBvZiBtdXNpYyBmb3IgYSBkYWlseSBuZXdzIHBvZGNhc3QsIG9uZSBvZiB0aG9zZSAndG9kYXkgZXhwbGFpbmVkJyBzdHlsZSBzaG93cywgYmVjYXVzZSB0aGV5IGRvIG5vdCBqdXN0IGxpc3QgdGhlIGhlYWRsaW5lcywgdGhleSB0ZWxsIHlvdSB3aHkgYSBzdG9yeSBtYXR0ZXJzLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGNvbnRleHQgdGhhdCBtYWtlcyB5b3Ugc291bmQgaW5mb3JtZWQuIFRoaXJkLCBnbyBmb3IgZGVwdGggb25jZSwgbm90IGJyZWFkdGggZXZlcnl3aGVyZTogcGljayBhIHNpbmdsZSByZXB1dGFibGUgbmV3c3BhcGVyIG9yIGEgZnJlZSBuZXdzbGV0dGVyIGFuZCwgZWFjaCBkYXksIHJlYWQgb25lIHN0b3J5IHByb3Blcmx5IHJhdGhlciB0aGFuIHNraW1taW5nIHR3ZW50eS4gS25vd2luZyBvbmUgdG9waWMgd2VsbCBiZWF0cyBrbm93aW5nIHR3ZW50eSB2YWd1ZWx5LiBBbmQgaGVyZSBpcyB0aGUgbWluZHNldCBzaGlmdCB0aGF0IG1hdHRlcnMgbW9zdDogeW91IGRvIG5vdCBoYXZlIHRvIGFycml2ZSBhcyBhbiBleHBlcnQuIFRoZSBmYXN0ZXN0IHdheSBpbnRvIGEgZGlzY3Vzc2lvbiBpcyB0byBhc2sgYSBnb29kIHF1ZXN0aW9uLCAnV2hhdCBkaWQgeW91IG1ha2Ugb2YgdGhhdD8nIG9yICdJIHNhdyB0aGUgaGVhZGxpbmUsIGJ1dCB3aGF0IGlzIHRoZSByZWFsIHN0b3J5PycgUGVvcGxlIGFyZSBmbGF0dGVyZWQgdG8gZXhwbGFpbiwgeW91IGxlYXJuIGluc3RhbnRseSwgYW5kIHlvdSBhcmUgcGFydCBvZiB0aGUgZ3JvdXAgZnJvbSBkYXkgb25lLiBHaXZlIGl0IHR3byB3ZWVrcyBvZiBzbWFsbCwgZGFpbHkgaGFiaXRzLCBhbmQgc29vbiB5b3Ugd2lsbCBiZSB0aGUgb25lIHN0YXJ0aW5nIHRoZSBjb252ZXJzYXRpb25zLiJ9LHsiayI6InQyIiwibnVtIjoyLCJ0eXBlRW4iOiJUYWxraW5nIGFib3V0IGEgUGVyc29uYWwgRXhwZXJpZW5jZSIsInByZXAiOjMwLCJyZWMiOjYwLCJwcm9tcHQiOiJUYWxrIGFib3V0IGEgdGltZSB3aGVuIHlvdSBkaWQgc29tZXRoaW5nIHdpdGggYSBmcmllbmQgd2hpbGUgZ3Jvd2luZyB1cC4gTWF5YmUgeW91IGNhbiB0YWxrIGFib3V0IGdvaW5nIG9uIGEgdHJpcCwgYXR0ZW5kaW5nIGEgcGFydHkgdG9nZXRoZXIsIG9yIGhlbHBpbmcgdGhlbSBwcmVwYXJlIGZvciB0aGVpciBmaXJzdCBkYXRlLiBXaGF0IGRpZCB5b3UgZG8sIHdoeSBkaWQgeW91IGRvIGl0LCBhbmQgaG93IGRpZCBpdCBtYWtlIHlvdSBmZWVsPyIsImltZyI6bnVsbCwidGlwcyI6eyJidWxsZXRzIjpbIkFuc3dlciBldmVyeSBwYXJ0IG9mIHRoZSBxdWVzdGlvbiAod2hhdCBoYXBwZW5lZCBcdTIwMTMgaG93IGl0IHVuZm9sZGVkIFx1MjAxMyB0aGUgb3V0Y29tZSAvIHdoeSBpdCBpcyBtZW1vcmFibGUpLiIsIlVzZSBwYXN0IHRlbnNlcyBhbmQgdGVsbCBpdCBpbiBvcmRlcjogVGhpcyBoYXBwZW5lZFx1MjAyNiBcdTIxOTIgVGhlblx1MjAyNiBcdTIxOTIgSW4gdGhlIGVuZFx1MjAyNiIsIkZpbmlzaCB3aXRoIGEgZmVlbGluZyBvciBhIGxlc3NvbiBsZWFybmVkLiIsIkFuc3dlciB0aGUgdGhyZWUgcGFydHM6IHdoYXQgeW91IGRpZCB3aXRoIHRoZSBmcmllbmQsIHdoeSB5b3UgZGlkIGl0LCBob3cgaXQgbWFkZSB5b3UgZmVlbC4gUGljayBvbmUgdml2aWQgY2hpbGRob29kIG1lbW9yeSAodGhlIHNhbXBsZXMgdXNlIGhlbHBpbmcgYSBiZXN0IGZyaWVuZCBnZXQgcmVhZHkgZm9yIGhpcyBmaXJzdCBkYXRlKSBhbmQgYWRkIGEgZnVubnksIHNwZWNpZmljIGRldGFpbCBzbyB0aGUgc3RvcnkgZmVlbHMgcmVhbC4iXSwicGhyYXNlcyI6WyJUaGlzIGhhcHBlbmVkIGFib3V0IHR3byB5ZWFycyBhZ29cdTIwMjYiLCJBdCBmaXJzdFx1MjAyNiwgYnV0IHRoZW5cdTIwMjYiLCJXaGF0IG1hZGUgaXQgdW5mb3JnZXR0YWJsZSB3YXNcdTIwMjYiLCJMb29raW5nIGJhY2ssIFx1MjAyNiJdfSwiczYiOiJJIHdhbnQgdG8gdGFsayBhYm91dCB0aGUgdGltZSBJIGhlbHBlZCBteSBiZXN0IGZyaWVuZCBOYW0gZ2V0IHJlYWR5IGZvciBoaXMgdmVyeSBmaXJzdCBkYXRlLiBXZSB3ZXJlIGFib3V0IGZvdXJ0ZWVuIHllYXJzIG9sZCwgaW4gZ3JhZGUgbmluZS4gT25lIGFmdGVybm9vbiwgTmFtIGNhbGxlZCBtZSBpbiBhIHRvdGFsIHBhbmljLCBhIGdpcmwgbmFtZWQgTGluaCBoYWQgc2FpZCB5ZXMgdG8gZ28gZm9yIGljZSBjcmVhbSB3aXRoIGhpbSBvbiBTYXR1cmRheSwgYW5kIGhlIGhhZCBubyBpZGVhIHdoYXQgdG8gZG8uIFNvIEkgd2VudCB0byBoaXMgaG91c2UgdG8gaGVscCBoaW0uIEZpcnN0LCB3ZSBvcGVuZWQgaGlzIHdob2xlIGNsb3NldCBhbmQgdHJpZWQgbWFueSBzaGlydHMsIGJlY2F1c2UgZXZlcnl0aGluZyBsb29rZWQgJ3RvbyBib3JpbmcnIG9yICd0b28gbXVjaCcuIEluIHRoZSBlbmQgd2UgY2hvc2UgYSBzaW1wbGUgYmx1ZSBzaGlydC4gVGhlbiB3ZSBwcmFjdGlzZWQgdGFsa2luZy4gSSBwcmV0ZW5kZWQgdG8gYmUgTGluaCwgYW5kIHdlIG1hZGUgcXVlc3Rpb25zIGhlIGNvdWxkIGFzayBoZXIsIHNvIHRoZXJlIHdvdWxkIGJlIG5vIHNpbGVudCBtb21lbnRzLiBJdCB3YXMgc28gZnVubnksIHdlIHdlcmUgYm90aCBsYXVnaGluZy4gSSBhbHNvIGxlbnQgaGltIHNvbWUgbW9uZXksIGp1c3QgaW4gY2FzZS4gV2h5IGRpZCBJIGRvIGl0PyBCZWNhdXNlIGhlIHdhcyBteSBiZXN0IGZyaWVuZCwgYW5kIGhlIHdhcyByZWFsbHkgbmVydm91cywgYW5kIHRoYXQgaXMgd2hhdCBmcmllbmRzIGFyZSBmb3IuIEhvdyBkaWQgaXQgbWFrZSBtZSBmZWVsPyBIb25lc3RseSwgSSBmZWx0IHByb3VkIGFuZCBraW5kIG9mIGdyb3duLXVwLCBsaWtlIGEgYmlnIGJyb3RoZXIuIEFuZCB3aGVuIHRoZSBkYXRlIHdlbnQgd2VsbCwgSSB3YXMgYXMgaGFwcHkgYXMgaGltLiBJdCBpcyBzdGlsbCBvbmUgb2YgbXkgZmF2b3VyaXRlIG1lbW9yaWVzLiIsInM5IjoiTGV0IG1lIHRlbGwgeW91IGFib3V0IHRoZSBhZnRlcm5vb24gSSBiZWNhbWUgbXkgYmVzdCBmcmllbmQncyBwZXJzb25hbCBkYXRpbmcgY29hY2guIFdlIHdlcmUgYm90aCBmb3VydGVlbiwgYW5kIGl0IGlzIHN0aWxsIG9uZSBvZiBteSB3YXJtZXN0IGNoaWxkaG9vZCBtZW1vcmllcy4gTXkgZnJpZW5kIE5hbSBwaG9uZWQgbWUgaW4gYW4gYWJzb2x1dGUgc3RhdGUgb2YgcGFuaWM6IGEgZ2lybCBpbiBvdXIgY2xhc3MsIExpbmgsIGhhZCBhZ3JlZWQgdG8gZ28gb3V0IGZvciBpY2UgY3JlYW0gd2l0aCBoaW0gdGhhdCBTYXR1cmRheSwgYW5kIGhlIHdhcyBjb252aW5jZWQgaGUgd2FzIGdvaW5nIHRvIG1ha2UgYSBmb29sIG9mIGhpbXNlbGYuIFNvIEkgY3ljbGVkIHN0cmFpZ2h0IG92ZXIgdG8gaGlzIGhvdXNlIHRvIHJ1biBkYW1hZ2UgY29udHJvbC4gVGhlIGZpcnN0IGNyaXNpcyB3YXMgdGhlIHdhcmRyb2JlLiBXZSBwdWxsZWQgZXZlcnkgc2hpcnQgb3V0IG9mIGhpcyBjbG9zZXQsIGFuZCBlYWNoIG9uZSB3YXMgZWl0aGVyICd0b28gYm9yaW5nJyBvciAndHJ5aW5nIHRvbyBoYXJkJywgdGVlbmFnZSBsb2dpYyBhdCBpdHMgZmluZXN0LCB1bnRpbCB3ZSBmaW5hbGx5IHNldHRsZWQgb24gYSBwbGFpbiBibHVlIHNoaXJ0IHRoYXQsIGluIGhpcyB3b3JkcywgJ2xvb2tlZCBsaWtlIEkgd2Fzbid0IHRyeWluZyBidXQgd2FzJy4gVGhlbiBjYW1lIHJlaGVhcnNhbC4gSSBwbGF5ZWQgdGhlIHJvbGUgb2YgTGluaCwgc2l0dGluZyBhY3Jvc3MgZnJvbSBoaW0sIHdoaWxlIHdlIGJyYWluc3Rvcm1lZCBxdWVzdGlvbnMgaGUgY291bGQgYXNrIHNvIHRoZSBjb252ZXJzYXRpb24gd291bGQgbmV2ZXIgc3RhbGwgaW50byB0aGF0IGRyZWFkZWQgYXdrd2FyZCBzaWxlbmNlLiBXZSB3ZXJlIGJvdGggY3J5aW5nIHdpdGggbGF1Z2h0ZXIgYXQgaG93IHNlcmlvdXNseSB3ZSB3ZXJlIHRha2luZyBpdC4gSSBldmVuIGxlbnQgaGltIGEgYml0IG9mIG1vbmV5LCBqdXN0IGluIGNhc2UuIFdoeSBkaWQgSSBkbyBhbGwgdGhpcz8gQmVjYXVzZSB0aGF0IGlzIHNpbXBseSB3aGF0IGJlc3QgZnJpZW5kcyBhcmUgZm9yLCB3aGVuIHlvdXIgZnJpZW5kIGlzIGRyb3duaW5nIGluIG5lcnZlcywgeW91IGp1bXAgaW4uIEFuZCBob3cgZGlkIGl0IGZlZWw\/IEdlbnVpbmVseSB3b25kZXJmdWwuIFRoZXJlIHdhcyBzb21ldGhpbmcgYWxtb3N0IGJpZy1icm90aGVybHkgYWJvdXQgaXQsIGFuZCB3aGVuIGhlIHRleHRlZCBtZSBhZnRlcndhcmRzIHRoYXQgdGhlIGRhdGUgaGFkIGdvbmUgcGVyZmVjdGx5LCBJIGZlbHQgZXZlcnkgYml0IGFzIHRocmlsbGVkIGFzIGhlIGRpZC4gSGVscGluZyBzb21lb25lIHlvdSBsb3ZlIGZhY2Ugc29tZXRoaW5nIHNjYXJ5LCB0aGF0IGZlZWxpbmcgaGFzIHN0dWNrIHdpdGggbWUgZm9yIHllYXJzLiJ9LHsiayI6InQzIiwibnVtIjozLCJ0eXBlRW4iOiJEZXNjcmliaW5nIGEgU2NlbmUiLCJwcmVwIjozMCwicmVjIjo2MCwicHJvbXB0IjoiRGVzY3JpYmUgc29tZSB0aGluZ3MgdGhhdCBhcmUgaGFwcGVuaW5nIGluIHRoZSBwaWN0dXJlIGJlbG93IGFzIHdlbGwgYXMgeW91IGNhbi4gVGhlIHBlcnNvbiB3aXRoIHdob20geW91IGFyZSBzcGVha2luZyBjYW5ub3Qgc2VlIHRoZSBwaWN0dXJlLiIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkZpcnN0IHNlbnRlbmNlOiBnaXZlIHRoZSBvdmVydmlldyAod2hlcmUgaXQgaXMsIHdoYXQgdGhlIGF0bW9zcGhlcmUgaXMgbGlrZSkuIiwiRGVzY3JpYmUgNFx1MjAxMzYgZGV0YWlscyBieSBsb2NhdGlvbjogaW4gdGhlIGZvcmVncm91bmQgLyBvbiB0aGUgbGVmdCAvIGF0IHRoZSBiYWNrXHUyMDI2OyB1c2UgdGhlIHByZXNlbnQgY29udGludW91cy4iLCJUaGUgbGlzdGVuZXIgQ0FOTk9UIHNlZSB0aGUgcGljdHVyZSBcdTIwMTQgYmUgc3BlY2lmaWM7IHdoZW4gdW5zdXJlLCB1c2Ugc2VlbXMgLyBhcHBlYXJzIC8gbG9va3MgbGlrZS4iLCJBIGJ1c3kgY29va2luZyBjbGFzcyBpbnNpZGUgYSBjb21tdW5pdHkgY2VudHJlOiBnbyBpbiBvcmRlciAtIHRoZSAnQ09NTVVOSVRZIENFTlRSRScgbm90aWNlYm9hcmQgYW5kIHRoZSB3YWxsIGNsb2NrIChhYm91dCA3IG8nY2xvY2spIC0+IHRoZSB3b21hbiBpbiB0aGUgZ3JlZW4gcG9sa2EtZG90IGFwcm9uIGNob3BwaW5nIG9yYW5nZSBjYXJyb3RzIGFuZCB0aGUgYmxvbmRlIGdpcmwgZ3JhdGluZyBwb3RhdG9lcyBhdCB0aGUgbG9uZyBjb3VudGVyIC0+IHRoZSBtYW4gaW4gdGhlIGdyZWVuIHN3ZWF0ZXIgcm9sbGluZyBkb3VnaCAtPiB0aGUgb2xkZXIgbWFuIGluIHJlZCBjYXJyeWluZyBhIGdyZWVuIHRyYXkgb2YgZHJpbmtzIC0+IHRoZSB3b21hbiBpbiByZWQgZnJ5aW5nIGVnZ3MgYXQgdGhlIHN0b3ZlIC0+IHRoZSBib3kgaW4gYmx1ZSB3YXNoaW5nIGxldHR1Y2UgYXQgdGhlIHNpbmsgLT4gdGhlIGNyb3dkIG9mIHBlb3BsZSB3YWl0aW5nIGJlaGluZC4iXSwicGhyYXNlcyI6WyJJbiB0aGUgZm9yZWdyb3VuZCwgXHUyMDI2IiwiT24gdGhlIHJpZ2h0LWhhbmQgc2lkZSwgXHUyMDI2IiwiSXQgbG9va3MgbGlrZVx1MjAyNiIsIlRoZSB3aG9sZSBwbGFjZSBmZWVsc1x1MjAyNiJdfSwiczYiOiJUaGlzIHBpY3R1cmUgc2hvd3MgYSBidXN5IGNvb2tpbmcgY2xhc3MgaW5zaWRlIGEgY29tbXVuaXR5IGNlbnRyZS4gT24gdGhlIHRvcC1sZWZ0IHdhbGwsIHRoZXJlIGlzIGEgbm90aWNlYm9hcmQgdGhhdCBzYXlzICdDT01NVU5JVFkgQ0VOVFJFJywgYW5kIGEgd29tYW4gaXMgcGlubmluZyBzb21lIHBhcGVycyBvbiBpdC4gTmVhciB0aGUgdG9wLCB0aGVyZSBpcyBhIHJvdW5kIGNsb2NrIHNob3dpbmcgYWJvdXQgc2V2ZW4gbydjbG9jaywgc28gbWF5YmUgaXQgaXMgYW4gZXZlbmluZyBjbGFzcy4gVGhlIHJvb20gaXMgZnVsbCBvZiBwZW9wbGUsIGFuZCBldmVyeW9uZSBpcyBjb29raW5nIHRvZ2V0aGVyIGF0IGEgbG9uZyBjb3VudGVyLiBJbiB0aGUgZnJvbnQsIGEgd29tYW4gd2l0aCBhIGdyZWVuIGFwcm9uIHdpdGggZG90cyBpcyBjdXR0aW5nIG9yYW5nZSBjYXJyb3RzIG9uIGEgYmx1ZSBib2FyZC4gTmV4dCB0byBoZXIsIGEgeW91bmcgd29tYW4gd2l0aCBsb25nIGJsb25kZSBoYWlyLCBpbiBhIHBpbmsgc2hpcnQsIGlzIGdyYXRpbmcgcG90YXRvZXMgaW50byBhIGJvd2wsIGFuZCB0aGVyZSBpcyBhIGJpZyBwb3Qgb24gdGhlIGZsb29yLiBJbiB0aGUgbWlkZGxlLCBhIG1hbiBpbiBhIGdyZWVuIHN3ZWF0ZXIgaXMgcm9sbGluZyBzb21lIGRvdWdoIHdpdGggYSByb2xsaW5nIHBpbi4gT24gdGhlIHJpZ2h0LCBhbiBvbGRlciBtYW4gaW4gYSByZWQgc2hpcnQgaXMgY2FycnlpbmcgYSBncmVlbiB0cmF5IGZ1bGwgb2YgZHJpbmtzLiBCZWhpbmQgaGltLCBhIHdvbWFuIGluIGEgcmVkIGRyZXNzIGlzIGNvb2tpbmcgZWdncyBpbiBhIHBhbiBvbiB0aGUgc3RvdmUuIEFuZCBpbiB0aGUgZnJvbnQtcmlnaHQsIGEgYm95IGluIGEgYmx1ZSBzaGlydCBpcyB3YXNoaW5nIGdyZWVuIGxldHR1Y2UgaW4gdGhlIHNpbmsuIE1hbnkgb3RoZXIgcGVvcGxlIGFyZSBzdGFuZGluZyBhbmQgd2FpdGluZyBpbiB0aGUgYmFjay4gRXZlcnlib2R5IGxvb2tzIGJ1c3kgYW5kIGhhcHB5LiIsInM5IjoiVGhpcyBpcyBhIHdvbmRlcmZ1bGx5IGNoYW90aWMgY29va2luZyBjbGFzcyB0YWtpbmcgcGxhY2UgaW4gYSBjb21tdW5pdHkgY2VudHJlLiBZb3UgY2FuIHRlbGwgZXhhY3RseSB3aGVyZSB3ZSBhcmUgYmVjYXVzZSB0aGVyZSBpcyBhIG5vdGljZWJvYXJkIG9uIHRoZSBiYWNrIHdhbGwgY2xlYXJseSBsYWJlbGxlZCAnQ09NTVVOSVRZIENFTlRSRScsIHdpdGggYSB3b21hbiByZWFjaGluZyB1cCB0byBwaW4gc29tZSBmbHllcnMgb250byBpdCwgYW5kIGEgcm91bmQgY2xvY2sgbmVhcmJ5IHJlYWRpbmcgYWJvdXQgc2V2ZW4sIHNvIEkgd291bGQgZ3Vlc3MgaXQgaXMgYW4gZXZlbmluZyBjbGFzcy4gVGhlIGhlYXJ0IG9mIHRoZSBzY2VuZSBpcyBhIGxvbmcgc2hhcmVkIGNvdW50ZXIgd2hlcmUgZXZlcnlvbmUgaXMgcHJlcHBpbmcgZm9vZCBhdCBvbmNlLiBJbiB0aGUgZm9yZWdyb3VuZCBvbiB0aGUgbGVmdCwgYSB3b21hbiBpbiBhIGJyaWdodCBncmVlbiBwb2xrYS1kb3QgYXByb24gaXMgY2hvcHBpbmcgb3JhbmdlIGNhcnJvdHMgb24gYSBibHVlIGN1dHRpbmcgYm9hcmQsIHdoaWxlIHJpZ2h0IGJlc2lkZSBoZXIgYSB5b3VuZyB3b21hbiB3aXRoIGxvbmcgYmxvbmRlIGhhaXIgYW5kIGEgcGluayB0b3AgZ3JhdGVzIHBvdGF0b2VzIGludG8gYSBib3dsLCBhIGxhcmdlIHN0b2NrcG90IHNpdHRpbmcgb24gdGhlIGZsb29yIGF0IGhlciBmZWV0LiBJbiB0aGUgY2VudHJlLCBhIG1hbiBpbiBhIGdyZWVuIHN3ZWF0ZXIgbGVhbnMgb3ZlciB0aGUgY291bnRlciwgcm9sbGluZyBvdXQgZG91Z2ggd2l0aCBhIHJvbGxpbmcgcGluLCBhbmQgYSB3b21hbiBiZWhpbmQgaGltIGhvbGRzIGEgbWl4aW5nIGJvd2wuIE92ZXIgb24gdGhlIHJpZ2h0LCBhbiBvbGRlciBnZW50bGVtYW4gaW4gYSByZWQgc2hpcnQgaXMgY2FyZWZ1bGx5IGNhcnJ5aW5nIGEgZ3JlZW4gdHJheSBsb2FkZWQgd2l0aCBnbGFzc2VzIG9mIGRyaW5rLCB3ZWF2aW5nIHRocm91Z2ggdGhlIGNyb3dkLiBKdXN0IHBhc3QgaGltLCBhIHdvbWFuIGluIGEgcmVkIGRyZXNzIHdvcmtzIHRoZSBzdG92ZSwgZnJ5aW5nIGEgY291cGxlIG9mIGVnZ3MgaW4gYSBwYW4gd2l0aCBwb3RzIGJlc2lkZSBoZXIuIEFuZCBkb3duIGluIHRoZSBmcm9udC1yaWdodCBjb3JuZXIsIGEgYm95IGluIGEgYmx1ZSBULXNoaXJ0IHJpbnNlcyBhIGhlYWQgb2YgZ3JlZW4gbGV0dHVjZSBpbiB0aGUgc2luay4gQmVoaW5kIGFsbCBvZiB0aGVtLCBhIGRpdmVyc2UgY3Jvd2Qgc3RhbmRzIGNoYXR0aW5nIGFuZCB3YWl0aW5nIHRoZWlyIHR1cm4uIFRoZSB3aG9sZSByb29tIHJhZGlhdGVzIHRoYXQgaGFwcHksIHNsaWdodGx5IG5vaXN5IGVuZXJneSBvZiBwZW9wbGUgbGVhcm5pbmcgdG8gY29vayB0b2dldGhlci4ifSx7ImsiOiJ0NCIsIm51bSI6NCwidHlwZUVuIjoiTWFraW5nIFByZWRpY3Rpb25zIiwicHJlcCI6MzAsInJlYyI6NjAsInByb21wdCI6IkluIHRoaXMgcGljdHVyZSwgd2hhdCBkbyB5b3UgdGhpbmsgd2lsbCBtb3N0IHByb2JhYmx5IGhhcHBlbiBuZXh0PyIsImltZyI6InNjZW5lIiwidGlwcyI6eyJidWxsZXRzIjpbIkVhY2ggcHJlZGljdGlvbiA9IHdpbGwgLyBiZSBnb2luZyB0byAvIHdpbGwgcHJvYmFibHkgKyBhIFJFQVNPTiBiYXNlZCBvbiBhIGRldGFpbCBpbiB0aGUgcGljdHVyZS4iLCJNYWtlIDNcdTIwMTM0IHByZWRpY3Rpb25zIGFib3V0IGRpZmZlcmVudCBwZW9wbGUgXHUyMDE0IGRvbid0IHN0b3AgYXQgb25lIGlkZWEuIiwiRmluaXNoIHdpdGggb25lIG92ZXJhbGwgcHJlZGljdGlvbiBmb3IgdGhlIHdob2xlIHNjZW5lLiIsIlNhbWUgY29tbXVuaXR5IGNvb2tpbmcgY2xhc3MgYXMgVGFzayAzIC0gbm93IHByZWRpY3Q6IHRoZSBjaG9wcGVkIGNhcnJvdHMgYW5kIGdyYXRlZCBwb3RhdG9lcyB3aWxsIGdvIGludG8gdGhlIGJpZyBwb3QgdG8gYmVjb21lIHNvdXAgb3Igc3RldzsgdGhlIG1hbiBpbiBncmVlbiB3aWxsIGN1dCBoaXMgcm9sbGVkIGRvdWdoIGZvciBicmVhZCBvciBkdW1wbGluZ3M7IHRoZSBtYW4gaW4gcmVkIHdpbGwgaGFuZCBvdXQgdGhlIHRyYXkgb2YgZHJpbmtzIHRvIHRoZSBwZW9wbGUgd2FpdGluZzsgdGhlIHdvbWFuIGF0IHRoZSBzdG92ZSB3aWxsIHBsYXRlIHRoZSBmcmllZCBlZ2dzOyB0aGUgYm95IHdpbGwgZmluaXNoIHRoZSBsZXR0dWNlIGZvciBhIHNhbGFkOyBhbmQgZmluYWxseSBldmVyeW9uZSB3aWxsIHNpdCBkb3duIGFuZCBzaGFyZSB0aGUgbWVhbCB0aGV5IGNvb2tlZCB0b2dldGhlci4iXSwicGhyYXNlcyI6WyJcdTIwMjZpcyBhYm91dCB0b1x1MjAyNiIsIkhlJ2xsIG1vc3QgbGlrZWx5XHUyMDI2IiwiSnVkZ2luZyBieVx1MjAyNiwgSSBleHBlY3RcdTIwMjYiLCJXaXRoaW4gbWludXRlcywgXHUyMDI2Il19LCJzNiI6IkkgdGhpbmsgaW4gdGhlIG5leHQgZmV3IG1pbnV0ZXMsIGFsbCB0aGlzIGZvb2Qgd2lsbCBzbG93bHkgYmVjb21lIGEgYmlnIG1lYWwuIFRoZSB3b21hbiBjdXR0aW5nIGNhcnJvdHMgYW5kIHRoZSBnaXJsIGdyYXRpbmcgcG90YXRvZXMgd2lsbCBmaW5pc2ggc29vbiwgYW5kIHRoZXkgd2lsbCBwdXQgZXZlcnl0aGluZyBpbnRvIHRoYXQgYmlnIHBvdCBvbiB0aGUgZmxvb3IsIEkgdGhpbmsgdGhleSBhcmUgbWFraW5nIGEgc291cCBvciBhIHN0ZXcgdG9nZXRoZXIuIFRoZSBtYW4gaW4gdGhlIGdyZWVuIHN3ZWF0ZXIgd2lsbCBjdXQgaGlzIGRvdWdoIGludG8gc21hbGwgcGllY2VzLCBtYXliZSB0byBtYWtlIGJyZWFkIG9yIGR1bXBsaW5ncywgYW5kIGhlIHdpbGwgcHV0IHRoZW0gaW4gdGhlIG92ZW4uIFRoZSBvbGRlciBtYW4gd2l0aCB0aGUgcmVkIHNoaXJ0IGFuZCB0aGUgZ3JlZW4gdHJheSB3aWxsIHdhbGsgdG8gdGhlIHBlb3BsZSBpbiB0aGUgYmFjayBhbmQgZ2l2ZSB0aGVtIHRoZSBkcmlua3MsIHNvIGV2ZXJ5Ym9keSBjYW4gaGF2ZSBzb21ldGhpbmcgd2hpbGUgdGhleSB3YWl0LiBUaGUgd29tYW4gYXQgdGhlIHN0b3ZlIHdpbGwgZmluaXNoIGZyeWluZyB0aGUgZWdncyBhbmQgcHV0IHRoZW0gb24gYSBwbGF0ZS4gVGhlIGJveSB3YXNoaW5nIHRoZSBsZXR0dWNlIHdpbGwgZmluaXNoIGFuZCBnaXZlIGl0IHRvIHNvbWVvbmUgdG8gbWFrZSBhIGZyZXNoIHNhbGFkLiBBbmQgSSBwcmVkaWN0IHRoYXQgYXQgdGhlIGVuZCwgd2hlbiBhbGwgdGhlIGRpc2hlcyBhcmUgcmVhZHksIHRoZSB0ZWFjaGVyIHdpbGwgY2FsbCBldmVyeW9uZSB0b2dldGhlciwgYW5kIHRoZXkgd2lsbCBzaXQgZG93biBhbmQgZWF0IHRoZSBtZWFsIHRoZXkgbWFkZSBhcyBhIGdyb3VwLiBNYXliZSBzb21lb25lIHdpbGwgZHJvcCBzb21ldGhpbmcgb3IgbWFrZSBhIHNtYWxsIG1lc3MsIGJ1dCBldmVyeW9uZSB3aWxsIGxhdWdoLiBJdCB3aWxsIGJlIGEgZnVuIGV2ZW5pbmcuIiwiczkiOiJHaXZlIHRoaXMgcm9vbSB0ZW4gbW9yZSBtaW51dGVzIGFuZCBhbGwgdGhhdCBmcmFudGljIGNob3BwaW5nIHdpbGwgcmVzb2x2ZSBpbnRvIGFuIGFjdHVhbCBkaW5uZXIuIFRoZSBjYXJyb3RzIGJlaW5nIHNsaWNlZCBhbmQgdGhlIHBvdGF0b2VzIGJlaW5nIGdyYXRlZCBhcmUgY2xlYXJseSBoZWFkZWQgZm9yIHRoYXQgYmlnIHN0b2NrcG90IG9uIHRoZSBmbG9vciwgc28gSSB3b3VsZCBiZXQgYSBoZWFydHkgc291cCBvciBzdGV3IGlzIGluIHByb2dyZXNzIGFuZCB3aWxsIHNvb24gYmUgc2ltbWVyaW5nIG9uIHRoZSBzdG92ZS4gVGhlIG1hbiByb2xsaW5nIGRvdWdoIGluIHRoZSBtaWRkbGUgd2lsbCBjdXQgb3Igc2hhcGUgaGlzIHNoZWV0IGludG8gcm9sbHMsIGJyZWFkIG9yIGR1bXBsaW5ncyBhbmQgc2xpZGUgdGhlbSBpbnRvIHRoZSBvdmVuLCBhbmQgaW4gaGFsZiBhbiBob3VyIHRoZSB3aG9sZSBjZW50cmUgd2lsbCBzbWVsbCBvZiBiYWtpbmcuIFRoZSBvbGRlciBnZW50bGVtYW4gZmVycnlpbmcgdGhhdCBncmVlbiB0cmF5IG9mIGRyaW5rcyBpcyBvYnZpb3VzbHkgYWJvdXQgdG8gcmVhY2ggdGhlIGNyb3dkIHdhaXRpbmcgYXQgdGhlIGJhY2ssIGhhbmRpbmcgZ2xhc3NlcyBhcm91bmQgc28gbm9ib2R5IGlzIHRoaXJzdHkgd2hpbGUgdGhlIGNvb2tpbmcgZmluaXNoZXMuIFRoZSB3b21hbiBhdCB0aGUgc3RvdmUgd2lsbCBwbGF0ZSB1cCBoZXIgZnJpZWQgZWdncywgYW5kIHRoZSBib3kgcmluc2luZyBsZXR0dWNlIGluIHRoZSBzaW5rIHdpbGwgcGFzcyBpdCBhbG9uZyBmb3Igc29tZW9uZSB0byB0b3NzIGludG8gYSBmcmVzaCBzYWxhZC4gTXkgb3ZlcmFsbCBwcmVkaWN0aW9uIGlzIHRoZSBzYXRpc2Z5aW5nIG9uZTogb25jZSBldmVyeSBkaXNoIGlzIHJlYWR5LCB0aGUgaW5zdHJ1Y3RvciB3aWxsIGNsYXAgYW5kIGNhbGwgZXZlcnlvbmUgdG8gZ2F0aGVyLCB0aGUgbG9uZyBjb3VudGVyIHdpbGwgYmUgY2xlYXJlZCBhbmQgc2V0LCBhbmQgdGhpcyBkaXZlcnNlLCBjaGVlcmZ1bCBncm91cCB3aWxsIGZpbmFsbHkgc2l0IGRvd24gdG8gZWF0IHRoZSBtZWFsIHRoZXkgYnVpbHQgdG9nZXRoZXIsIHdoaWNoLCBpbiBhIGNvbW11bml0eSBjb29raW5nIGNsYXNzLCBpcyB0aGUgZW50aXJlIHBvaW50LiBSZWFsaXN0aWNhbGx5LCBzb21lb25lIHdpbGwgYWxzbyBrbm9jayBvdmVyIGEgYm93bCBvciBvdmVyLXNhbHQgdGhlIHNvdXAgYWxvbmcgdGhlIHdheSwgYW5kIGl0IHdpbGwgYmUgbWV0IHdpdGggbGF1Z2h0ZXIgcmF0aGVyIHRoYW4gcGFuaWMuIEl0IGlzIHRoZSBraW5kIG9mIGV2ZW5pbmcgdGhhdCBlbmRzIHdpdGggZnVsbCBzdG9tYWNocywgbmV3IGZyaWVuZHNoaXBzLCBhbmQgYSBtb3VudGFpbiBvZiBkaXNoZXMgd2FpdGluZyBpbiB0aGF0IHNpbmsuIn0seyJrIjoidDUiLCJudW0iOjUsInR5cGVFbiI6IkNvbXBhcmluZyBhbmQgUGVyc3VhZGluZyIsInBoYXNlZCI6dHJ1ZSwiY2hvb3NlIjp7InByZXAiOjYwLCJzaXR1YXRpb24iOiJZb3UgYW5kIGEgY28td29ya2VyLCBKb2huLCBhcmUgZ29pbmcgb3V0IGZvciBsdW5jaC4gQW5vdGhlciBjby13b3JrZXIsIExpc2EsIGFza2VkIHlvdSB0byBicmluZyBiYWNrIGEgaGVhbHRoeSBsdW5jaCBmb3IgaGVyLiBZb3UgZm91bmQgdHdvIHN1aXRhYmxlIG9wdGlvbnMuIFVzaW5nIHRoZSBwaWN0dXJlcyBhbmQgaW5mb3JtYXRpb24gYmVsb3csIGNob29zZSB0aGUgb3B0aW9uIHRoYXQgeW91IHByZWZlci4gSW4gdGhlIG5leHQgc2VjdGlvbiwgeW91IHdpbGwgbmVlZCB0byBwZXJzdWFkZSBKb2huIHRoYXQgeW91ciBjaG9pY2UgaXMgdGhlIGJldHRlciBjaG9pY2UuIiwibm90ZSI6IklmIHlvdSBkbyBub3QgY2hvb3NlIGFuIG9wdGlvbiwgdGhlIGNvbXB1dGVyIHdpbGwgY2hvb3NlIG9uZSBmb3IgeW91LiBZb3UgZG8gbm90IG5lZWQgdG8gc3BlYWsgZm9yIHRoaXMgcGFydC4iLCJvcHRpb25zIjpbeyJ0aXRsZSI6IkthbGUgU2FsYWQiLCJpbWciOiJvcHRBIiwiYnVsbGV0cyI6WyJwcmljZTogJDExLjk5IiwibWFkZSB3aXRoIHRvbWF0b2VzLCBjdWN1bWJlcnMsIGFuZCBrYWxlIHdpdGggYSBsaWdodCBkcmVzc2luZyIsInZlcnkgbnV0cml0aW91cyIsImxvdyBpbiBmYXQgYW5kIGNhbG9yaWVzIl19LHsidGl0bGUiOiJQcm90ZWluIEJvd2wiLCJpbWciOiJvcHRCIiwiYnVsbGV0cyI6WyJwcmljZTogJDExLjk5IiwibWFkZSB3aXRoIHF1aW5vYSwgYXZvY2FkbywgY2hpY2tlbiwgYW5kIHRvbWF0b2VzIiwidmVyeSBmaWxsaW5nIGFuZCBkZWxpY2lvdXMiLCJnb29kIGJhbGFuY2Ugb2YgcHJvdGVpbiBhbmQgaGVhbHRoeSBmYXRzIl19XX0sInNwZWFrIjp7InByZXAiOjYwLCJyZWMiOjYwLCJwcm9tcHQiOiJKb2huIGlzIHN1Z2dlc3RpbmcgYSBkaWZmZXJlbnQgb3B0aW9uIChzaG93biBiZWxvdykuIFBlcnN1YWRlIEpvaG4gdGhhdCB0aGUgb3B0aW9uIHlvdSBjaG9zZSBpcyB0aGUgYmV0dGVyIGNob2ljZSBieSBjb21wYXJpbmcgdGhlIHR3by4iLCJvdGhlckxhYmVsIjoiWW91ciBDby1Xb3JrZXIncyBTdWdnZXN0aW9uIiwib3RoZXIiOnsidGl0bGUiOiJCdXJnZXIgYW5kIEZyaWVzIiwiaW1nIjoib3B0T3RoZXIiLCJidWxsZXRzIjpbInByaWNlOiAkMTUuOTkiLCJtYWRlIHdpdGggcHJvY2Vzc2VkIG1lYXQgYW5kIG1pbmltYWwgdmVnZXRhYmxlcyIsImhpZ2ggaW4gZmF0IGFuZCBjYWxvcmllcyIsImxvdyBpbiBudXRyaWVudHMiXX19LCJ0aXBzIjp7ImJ1bGxldHMiOlsiU3RydWN0dXJlOiBhY2tub3dsZWRnZSB0aGUgb3RoZXIgcGVyc29uJ3MgY2hvaWNlIFx1MjE5MiBnaXZlIDJcdTIwMTMzIGFkdmFudGFnZXMgb2YgeW91cnMgKGRpcmVjdCBjb21wYXJpc29uKSBcdTIxOTIgd3JhcCB1cC4iLCJDb21wYXJlIHVzaW5nIHRoZSBudW1iZXJzIG9uIHRoZSBjYXJkczogcHJpY2UsIGR1cmF0aW9uLCBjYXBhY2l0eSwgZXhwZXJpZW5jZS4iLCJZb3UgZG8gTk9UIG5lZWQgdG8gc3BlYWsgZHVyaW5nIHRoZSBjaG9vc2luZyBzdGVwIFx1MjAxNCBqdXN0IGNsaWNrIGFuIG9wdGlvbi4iLCJUaGUgc2FtcGxlcyBjaG9vc2UgdGhlIFByb3RlaW4gQm93bCAoJDExLjk5IC0gcXVpbm9hLCBhdm9jYWRvLCBjaGlja2VuLCB0b21hdG9lczsgZmlsbGluZyBhbmQgYmFsYW5jZWQpLiBMaXNhIGFza2VkIGZvciBhIEhFQUxUSFkgbHVuY2gsIGFuZCB0aGUgUHJvdGVpbiBCb3dsIGtlZXBzIGhlciBmdWxsIGFsbCBhZnRlcm5vb24sIHVubGlrZSB0aGUgbGlnaHRlciBLYWxlIFNhbGFkLiBKb2huJ3MgQnVyZ2VyIGFuZCBGcmllcyBpcyAkMTUuOTksIHByb2Nlc3NlZCwgaGlnaCBpbiBmYXQgYW5kIGxvdyBpbiBudXRyaWVudHMgLSB0aGUgb3Bwb3NpdGUgb2Ygd2hhdCBMaXNhIHdhbnRlZC4gSWYgeW91IHByZWZlciB0aGUgS2FsZSBTYWxhZCBpbnN0ZWFkLCBzdHJlc3MgdGhhdCBpdCBpcyB0aGUgbW9zdCBudXRyaXRpb3VzIGFuZCBsb3dlc3QgaW4gY2Fsb3JpZXMuIl0sInBocmFzZXMiOlsiSSBzZWUgd2h5IHlvdSBsaWtlXHUyMDI2LCBidXRcdTIwMjYiLCJDb21wYXJlZCB0b1x1MjAyNiwgdGhpcyBvbmVcdTIwMjYiLCJJdCdzIGJldHRlciB2YWx1ZTogXHUyMDI2IHZlcnN1cyBcdTIwMjYiLCJJZiB0aGUgZ29hbCBpc1x1MjAyNiwgdGhlIGNob2ljZSBpcyBjbGVhci4iXX0sInM2IjoiSm9obiwgSSBrbm93IHlvdSBhcmUgaHVuZ3J5IGFuZCB0aGUgYnVyZ2VyIGFuZCBmcmllcyBsb29rIHRhc3R5LCBidXQgcmVtZW1iZXIsIExpc2EgZGlkIG5vdCBhc2sgZm9yIHRhc3R5LCBzaGUgYXNrZWQgZm9yIGEgaGVhbHRoeSBsdW5jaC4gU28gbG9vayBhdCB0aGUgYnVyZ2VyIGNhcmQgd2l0aCBtZTogaXQgY29zdHMgJDE1Ljk5LCBpdCBpcyBtYWRlIHdpdGggcHJvY2Vzc2VkIG1lYXQgYW5kIGZldyB2ZWdldGFibGVzLCBpdCBpcyBoaWdoIGluIGZhdCwgYW5kIGxvdyBpbiBudXRyaWVudHMuIFRoYXQgaXMgdGhlIG9wcG9zaXRlIG9mIGhlYWx0aHkhIElmIHdlIGJyaW5nIHRoYXQgdG8gTGlzYSwgc2hlIHdpbGwgbm90IGJlIGhhcHB5LiBUaGF0IGlzIHdoeSBJIGNob3NlIHRoZSBQcm90ZWluIEJvd2wuIEZpcnN0LCBpdCBpcyByZWFsbHkgaGVhbHRoeTogcXVpbm9hLCBhdm9jYWRvLCBjaGlja2VuLCBhbmQgdG9tYXRvZXMsIGdvb2QgcHJvdGVpbiBhbmQgZ29vZCBmYXRzLiBTZWNvbmQsIGl0IGlzIGZpbGxpbmcuIExpc2Egd29ya3MgYWxsIGFmdGVybm9vbiwgc28gc2hlIG5lZWRzIGVuZXJneSwgbm90IGp1c3QgbGVhdmVzLiBUaGUgc2FsYWQgaXMgbmljZSB0b28sIGJ1dCBpdCBpcyBsaWdodCwgYW5kIG1heWJlIHNoZSB3aWxsIGJlIGh1bmdyeSBhZ2FpbiBhdCB0aHJlZSBvJ2Nsb2NrLiBUaGlyZCwgbG9vayBhdCB0aGUgcHJpY2UsIHRoZSBQcm90ZWluIEJvd2wgaXMgb25seSAkMTEuOTksIHNvIGl0IGlzIGZvdXIgZG9sbGFycyBjaGVhcGVyIHRoYW4geW91ciBidXJnZXIsIGFuZCBtdWNoIGJldHRlciBmb3IgaGVyLiBTbyB3ZSBzYXZlIG1vbmV5IEFORCB3ZSBtYWtlIExpc2EgaGFwcHkuIFlvdSBjYW4gc3RpbGwgYnV5IHlvdXIgYnVyZ2VyIGZvciB5b3Vyc2VsZiBpZiB5b3Ugd2FudCEgQnV0IGZvciBMaXNhLCB0aGUgUHJvdGVpbiBCb3dsIGlzIGNsZWFybHkgdGhlIGJlc3QgY2hvaWNlLiBEZWFsPyIsInM5IjoiSm9obiwgSSBjYW4gc2VlIHRoZSBidXJnZXIgYW5kIGZyaWVzIGNhbGxpbmcgeW91ciBuYW1lLCBidXQgbGV0J3MgcmVtZW1iZXIgdGhlIGFjdHVhbCBtaXNzaW9uIGhlcmU6IExpc2EgZGlkIG5vdCBhc2sgdXMgdG8gYnJpbmcgYmFjayBzb21ldGhpbmcgZGVsaWNpb3VzLCBzaGUgc3BlY2lmaWNhbGx5IGFza2VkIGZvciBhIGhlYWx0aHkgbHVuY2guIEFuZCBvbiB0aGF0IG1lYXN1cmUsIHlvdXIgc3VnZ2VzdGlvbiBmYWxscyBhcGFydCB0aGUgbW9tZW50IHlvdSByZWFkIHRoZSBjYXJkOiAkMTUuOTksIG1hZGUgd2l0aCBwcm9jZXNzZWQgbWVhdCBhbmQgbWluaW1hbCB2ZWdldGFibGVzLCBoaWdoIGluIGZhdCwgYW5kLCB0aGVpciB3b3JkcyBub3QgbWluZSwgbG93IGluIG51dHJpZW50cy4gQnJpbmdpbmcgdGhhdCBiYWNrIHRvIExpc2Egd291bGQgbm90IGJlIGRvaW5nIGhlciBhIGZhdm91cjsgaXQgd291bGQgYmUgaWdub3Jpbmcgd2hhdCBzaGUgYXNrZWQgZm9yLiBUaGF0IGlzIHdoeSBJIGhhdmUgZ29uZSB3aXRoIHRoZSBQcm90ZWluIEJvd2wsIGFuZCBJIHRoaW5rIGl0IHdpbnMgb24gZXZlcnkgcG9pbnQgdGhhdCBtYXR0ZXJzIHRvIGhlci4gRmlyc3QsIGl0IGlzIGdlbnVpbmVseSBoZWFsdGh5IGluIHRoZSB3YXkgc2hlIG1lYW50OiBxdWlub2EsIGF2b2NhZG8sIGNoaWNrZW4gYW5kIHRvbWF0b2VzLCB3aXRoIGEgZ29vZCBiYWxhbmNlIG9mIHByb3RlaW4gYW5kIGhlYWx0aHkgZmF0cywgYSBwcm9wZXIsIG5vdXJpc2hpbmcgbWVhbCwgbm90IGEgZ3VpbHR5IG9uZS4gU2Vjb25kLCBhbmQgdGhpcyBpcyBrZXksIGl0IGlzIGZpbGxpbmcuIExpc2EgaGFzIGdvdCBhIGxvbmcgYWZ0ZXJub29uIG9mIHdvcmsgYWhlYWQsIGFuZCBwcm90ZWluIGFuZCBjb21wbGV4IGNhcmJzIHdpbGwgYWN0dWFsbHkgY2FycnkgaGVyIHRocm91Z2ggaXQuIFRoZSBLYWxlIFNhbGFkIHdhcyBteSBvdGhlciBvcHRpb24sIGFuZCBpdCBpcyB0aGUgbW9zdCBudXRyaXRpb3VzIGFuZCBsb3dlc3QgaW4gY2Fsb3JpZXMgb2YgdGhlIGxvdCwgYnV0IGhvbmVzdGx5LCBpdCBpcyBsaWdodCwgYW5kIEkgc3VzcGVjdCBzaGUgd291bGQgYmUgcmFpZGluZyB0aGUgdmVuZGluZyBtYWNoaW5lIGJ5IHRocmVlIG8nY2xvY2suIFRoaXJkLCB0aGUgbW9uZXk6IHRoZSBQcm90ZWluIEJvd2wgaXMgJDExLjk5LCBhIGZ1bGwgZm91ciBkb2xsYXJzIGNoZWFwZXIgdGhhbiB5b3VyIGJ1cmdlciwgc28gd2UgZG8gcmlnaHQgYnkgTGlzYSBhbmQgc3BlbmQgbGVzcy4gTG9vaywgbm9ib2R5IGlzIHN0b3BwaW5nIHlvdSBmcm9tIGJ1eWluZyB0aGF0IGJ1cmdlciBmb3IgeW91cnNlbGYsIGVuam95IGl0LiBCdXQgZm9yIHRoZSBsdW5jaCBMaXNhIGFjdHVhbGx5IHJlcXVlc3RlZCwgdGhlIFByb3RlaW4gQm93bCBpcyB0aGUgb2J2aW91cywgZWFzeSBjaG9pY2UuIFNoYWxsIHdlIG9yZGVyIGl0PyJ9LHsiayI6InQ2IiwibnVtIjo2LCJ0eXBlRW4iOiJEZWFsaW5nIHdpdGggYSBEaWZmaWN1bHQgU2l0dWF0aW9uIiwicHJlcCI6NjAsInJlYyI6NjAsInByb21wdCI6IllvdSBhbmQgdHdvIGZyaWVuZHMsIFN0ZXZlbiBhbmQgQWxpc29uLCBzZWUgYSB0ZWVuYWdlciBicmVhayB0aGUgd2luZG93IG9mIGEgbmVpZ2hib3VyJ3MgaG91c2UgYW5kIHJ1biBhd2F5LiBTdGV2ZW4gd2FudHMgdG8gdGVsbCB0aGUgdGVlbmFnZXIncyBwYXJlbnRzIGZpcnN0LiBBbGlzb24gd2FudHMgdG8gdGVsbCB0aGUgbmVpZ2hib3VyIGZpcnN0LiIsImNob29zZU9uZSI6WyJUYWxrIHRvIFN0ZXZlbi4gRXhwbGFpbiB3aHkgeW91IHByZWZlciB0byB0YWxrIHRvIHRoZSBuZWlnaGJvdXIgZmlyc3QuIiwiVGFsayB0byBBbGlzb24uIEV4cGxhaW4gd2h5IHlvdSBwcmVmZXIgdG8gdGFsayB0byB0aGUgcGFyZW50cyBmaXJzdC4iXSwiaW1nIjpudWxsLCJ0aXBzIjp7ImJ1bGxldHMiOlsiUGljayBPTkUgb3B0aW9uIChFSVRIRVIgb3IgT1IpIGltbWVkaWF0ZWx5IFx1MjAxNCBkb24ndCB3YXN0ZSB0aW1lIGRlY2lkaW5nLiIsIlN0cnVjdHVyZTogb3BlbiBwb2xpdGVseSBcdTIxOTIgZXhwbGFpbiB5b3VyIHJlYXNvbnMvZXZpZGVuY2UgXHUyMTkyIHByb3Bvc2UgYSBzb2x1dGlvbiBcdTIxOTIgc21vb3RoIHRoaW5ncyBvdmVyLiIsIlN0YXkgY2FsbSBhbmQgcmVzcGVjdGZ1bCBcdTIwMTQgaG93IHlvdSBoYW5kbGUgdGhlIHNpdHVhdGlvbiBpcyBwYXJ0IG9mIHdoYXQncyBiZWluZyByYXRlZCAoTGlzdGVuYWJpbGl0eSkuIiwiVGhlIHNhbXBsZXMgcGljayBvcHRpb24gMSAtIHBlcnN1YWRlIFN0ZXZlbiB0aGF0IHlvdSBzaG91bGQgdGVsbCB0aGUgTkVJR0hCT1VSIGZpcnN0LiBMb2dpYzogaXQgaXMgdGhlIG5laWdoYm91cidzIHdpbmRvdyBhbmQgcHJvcGVydHksIHNvIHRoZSB2aWN0aW0gaGFzIHRoZSByaWdodCB0byBrbm93IGZpcnN0IGFuZCB0byBkZWNpZGUgd2hldGhlciB0byBjYWxsIHRoZSBwb2xpY2Ugb3IgdGhlaXIgaW5zdXJhbmNlOyBnb2luZyB0byB0aGUgcGFyZW50cyBmaXJzdCBjb3VsZCBsZXQgdGhlbSBxdWlldGx5IGNvdmVyIGl0IHVwIG9yIHR1cm4gaXQgaW50byBhbiBhcmd1bWVudCBiZWZvcmUgdGhlIG93bmVyIGV2ZW4ga25vd3MuIE9mZmVyIGEgY29tcHJvbWlzZTogdGVsbCB0aGUgbmVpZ2hib3VyIG5vdywgdGhlbiBhbGwgZ28gdG8gdGhlIHBhcmVudHMgdG9nZXRoZXIuIl0sInBocmFzZXMiOlsiQ291bGQgSSBqdW1wIGluIGZvciBhIG1vbWVudD8iLCJJIHVuZGVyc3RhbmQgeW91ciBjb25jZXJuLCBidXRcdTIwMjYiLCJIb3cgYWJvdXQgd2VcdTIwMjY\/IiwiSSdsbCB0YWtlIHJlc3BvbnNpYmlsaXR5IGZvciB0aGlzLiJdfSwiczYiOiJTdGV2ZW4sIHdhaXQgYSBzZWNvbmQgYmVmb3JlIHdlIGdvIHRvIHRoZSBib3kncyBwYXJlbnRzLiBJIHVuZGVyc3RhbmQgeW91ciBpZGVhLCB5b3Ugd2FudCB0byBiZSBmYWlyIHRvIHRoZSBmYW1pbHkgYW5kIGxldCB0aGUgcGFyZW50cyBmaXggaXQgcXVpZXRseS4gVGhhdCBpcyBraW5kLiBCdXQgcGxlYXNlIHRoaW5rIHdpdGggbWUuIEl0IHdhcyB0aGUgbmVpZ2hib3VyJ3Mgd2luZG93IHRoYXQgd2FzIGJyb2tlbi4gSXQgaXMgaGlzIGhvdXNlLCBoaXMgcHJvcGVydHksIGFuZCBoaXMgcHJvYmxlbSBub3cuIEkgcmVhbGx5IGJlbGlldmUgaGUgaGFzIHRoZSByaWdodCB0byBrbm93IGZpcnN0LiBJbWFnaW5lIGlmIGl0IHdhcyB5b3VyIGhvdXNlLCB3b3VsZCB5b3Ugd2FudCB5b3VyIG5laWdoYm91cnMgdG8gZ28gdG8gdGhlIGJveSdzIGZhbWlseSBhbmQgZGVjaWRlIGV2ZXJ5dGhpbmcgd2l0aG91dCB0ZWxsaW5nIHlvdT8gSSB3b3VsZCBmZWVsIGxlZnQgb3V0LCBhbmQgbWF5YmUgYSBsaXR0bGUgYW5ncnkuIEFsc28sIGlmIHdlIHRlbGwgdGhlIHBhcmVudHMgZmlyc3QsIHNvbWUgcGFyZW50cyBnZXQgZGVmZW5zaXZlLiBUaGV5IG1pZ2h0IHNheSAnbXkgc29uIHdvdWxkIG5ldmVyIGRvIHRoYXQsJyBvciB0aGV5IG1pZ2h0IHF1aWV0bHkgcmVwYWlyIGl0IGFuZCBoaWRlIGl0LCBhbmQgdGhlIG5laWdoYm91ciBuZXZlciBsZWFybnMgdGhlIHRydXRoLiBTbyBoZXJlIGlzIHdoYXQgSSBzdWdnZXN0LiBMZXQncyB0ZWxsIHRoZSBuZWlnaGJvdXIgbm93LCBjYWxtbHksIGFuZCB0ZWxsIGhpbSBleGFjdGx5IHdoYXQgd2Ugc2F3LiBUaGVuLCBhbmQgdGhpcyBpcyBpbXBvcnRhbnQsIHdlIG9mZmVyIHRvIGdvIFdJVEggaGltIHRvIHRoZSBib3kncyBwYXJlbnRzIHRvZ2V0aGVyLiBUaGF0IHdheSBpdCBpcyBmYWlyIGZvciBldmVyeWJvZHksIHRoZSBwYXJlbnRzIHN0aWxsIGdldCBhIGNoYW5jZSB0byBoZWxwLCBhbmQgbm9ib2R5IGZlZWxzIHRyaWNrZWQuIENhbiB3ZSBkbyBpdCB0aGF0IHdheSwgU3RldmVuPyIsInM5IjoiU3RldmVuLCBob2xkIG9uIGp1c3QgYSBtb21lbnQgYmVmb3JlIHdlIGtub2NrIG9uIHRoYXQgYm95J3MgZG9vci4gSSB1bmRlcnN0YW5kIHlvdXIgaW5zdGluY3QsIGFuZCBpdCBpcyBhIGRlY2VudCBvbmU6IHlvdSB3YW50IHRvIGdpdmUgdGhlIGZhbWlseSBhIGNoYW5jZSB0byBwdXQgdGhpbmdzIHJpZ2h0IHF1aWV0bHksIHdpdGhvdXQgZW1iYXJyYXNzbWVudC4gQnV0IEkgd291bGQgbGlrZSB0byBwZXJzdWFkZSB5b3UgdGhhdCB0aGUgbmVpZ2hib3VyIGhhcyB0byBiZSB0b2xkIGZpcnN0LCBhbmQgaGVyZSBpcyBteSByZWFzb25pbmcuIFRoZSBzaW1wbGVzdCBwb2ludCBpcyBvbmUgb2YgcmlnaHRzOiBpdCB3YXMgdGhlIG5laWdoYm91cidzIHdpbmRvdywgdGhlIG5laWdoYm91cidzIGhvdXNlLCB0aGUgbmVpZ2hib3VyJ3MgcHJvcGVydHkgdGhhdCB3YXMganVzdCBkYW1hZ2VkLiBIZSBpcyB0aGUgaW5qdXJlZCBwYXJ0eSwgYW5kIGhlIGhhcyBldmVyeSByaWdodCB0byBiZSB0aGUgZmlyc3QgdG8ga25vdyBhbmQgdG8gZGVjaWRlIGhvdyBoZSB3YW50cyB0byBoYW5kbGUgaXQsIHdoZXRoZXIgdGhhdCBpcyBjYWxsaW5nIHRoZSBwb2xpY2UsIGNvbnRhY3RpbmcgaGlzIGluc3VyYW5jZSwgb3Igc3BlYWtpbmcgdG8gdGhlIHBhcmVudHMgaGltc2VsZi4gSWYgdGhlIHRocmVlIG9mIHVzIGdvIHRvIHRoZSB0ZWVuYWdlcidzIHBhcmVudHMgZmlyc3QsIHdlIGFyZSBlZmZlY3RpdmVseSBtYWtpbmcgdGhhdCBkZWNpc2lvbiBmb3IgaGltLCBiZWhpbmQgaGlzIGJhY2suIEltYWdpbmUgaXQgd2VyZSB5b3VyIGhvbWU6IHdvdWxkIHlvdSBub3QgZmVlbCBzaWRlbGluZWQsIGV2ZW4gYmV0cmF5ZWQsIGlmIHRoZSBuZWlnaGJvdXJzIGhhZCBodWRkbGVkIHdpdGggdGhlIGN1bHByaXQncyBmYW1pbHkgYmVmb3JlIGFueW9uZSB0b2xkIHlvdT8gVGhlcmUgaXMgYWxzbyBhIHByYWN0aWNhbCByaXNrLiBTb21lIHBhcmVudHMsIGZhY2VkIHdpdGggYW4gYWNjdXNhdGlvbiBhYm91dCB0aGVpciBjaGlsZCwgZ2V0IGRlZmVuc2l2ZSBvbiByZWZsZXgsICdteSBzb24gd291bGQgbmV2ZXInLCBvciB3b3JzZSwgcXVpZXRseSBmaXggdGhlIHdpbmRvdyBzbyB0aGUgd2hvbGUgdGhpbmcgZGlzYXBwZWFycywgYW5kIHRoZSBvd25lciBuZXZlciBsZWFybnMgd2hhdCBoYXBwZW5lZC4gVGhhdCBpcyBub3QgZmFpcm5lc3M7IHRoYXQgaXMgYSBjb3Zlci11cCB3ZSB3b3VsZCBoYXZlIGhlbHBlZCBhcnJhbmdlLiBTbyBoZXJlIGlzIG15IGNvbXByb21pc2UsIGFuZCBJIHRoaW5rIGl0IHNhdGlzZmllcyB5b3VyIGNvbmNlcm4gdG9vOiBsZXQncyB0ZWxsIHRoZSBuZWlnaGJvdXIgcmlnaHQgbm93LCBjYWxtbHkgYW5kIGZhY3R1YWxseSwgZXhhY3RseSB3aGF0IHdlIHNhdy4gVGhlbiB3ZSBvZmZlciB0byB3YWxrIG92ZXIgdG8gdGhlIHBhcmVudHMgdG9nZXRoZXIsIGFsbCBvZiB1cywgc28gdGhlIGZhbWlseSBzdGlsbCBnZXRzIHRoZWlyIGNoYW5jZSB0byBtYWtlIGl0IHJpZ2h0LCBidXQgb3V0IGluIHRoZSBvcGVuLiBGYWlyIHRvIGV2ZXJ5b25lLiBBZ3JlZWQ\/In0seyJrIjoidDciLCJudW0iOjcsInR5cGVFbiI6IkV4cHJlc3NpbmcgT3BpbmlvbnMiLCJwcmVwIjozMCwicmVjIjo5MCwicHJvbXB0IjoiRG8geW91IHRoaW5rIHNjaG9vbHRlYWNoZXJzIHNob3VsZCBzdGlsbCB0ZWFjaCBjaGlsZHJlbiBob3cgdG8gd3JpdGUgYnkgaGFuZCwgb3Igc2hvdWxkIHRoZXkgb25seSB0ZWFjaCB0eXBpbmc\/IEV4cGxhaW4geW91ciByZWFzb25zLiIsInByb21wdExlYWQiOiJBbnN3ZXIgdGhlIGZvbGxvd2luZyBxdWVzdGlvbi4iLCJpbWciOm51bGwsInRpcHMiOnsiYnVsbGV0cyI6WyJTdGF0ZSB5b3VyIHBvc2l0aW9uIGNsZWFybHkgaW4gdGhlIGZpcnN0IHNlbnRlbmNlIChwaWNraW5nIG9uZSBzaWRlIGlzIGVhc2llciB0byBkZXZlbG9wIHRoYW4gc3RheWluZyBuZXV0cmFsKS4iLCJHaXZlIDJcdTIwMTMzIHJlYXNvbnMsIGVhY2ggZGV2ZWxvcGVkIG92ZXIgMlx1MjAxMzMgc2VudGVuY2VzIHdpdGggYW4gZXhhbXBsZTsgOTAgc2Vjb25kcyBpcyBsb25nIFx1MjAxNCBkb24ndCBzdG9wIGVhcmx5LiIsIkFja25vd2xlZGdlIHRoZSBvdGhlciBzaWRlIGluIG9uZSBzZW50ZW5jZSAoVGhhdCBzYWlkLCBcdTIwMjYpIHRoZW4gY29uY2x1ZGUgXHUyMDE0IGl0IHNob3dzIGJhbGFuY2VkIHRoaW5raW5nLiIsIlRoZSBzYW1wbGVzIGFyZ3VlIHRoYXQgc2Nob29scyBzaG91bGQgS0VFUCB0ZWFjaGluZyBoYW5kd3JpdGluZyAobm90IHN3aXRjaCB0byB0eXBpbmcgb25seSkuIENvbmNyZXRlIHJlYXNvbnM6IGZvcm1pbmcgbGV0dGVycyBieSBoYW5kIGJ1aWxkcyBmaW5lIG1vdG9yIGNvbnRyb2wgYW5kIGhlbHBzIHlvdW5nIGtpZHMgbGVhcm4gdG8gcmVhZDsgcmVzZWFyY2ggbGlua3MgaGFuZHdyaXRpbmcgdG8gc3Ryb25nZXIgbWVtb3J5IGFuZCBjb21wcmVoZW5zaW9uOyBhbmQgcGVuLWFuZC1wYXBlciBzdGlsbCB3b3JrcyB3aGVuIHRoZXJlIGlzIG5vIGRldmljZSBvciBiYXR0ZXJ5LiBDb25jZWRlIHRoYXQgdHlwaW5nIG11c3QgYmUgdGF1Z2h0IHRvbyAtIHRoZSBhbnN3ZXIgaXMgQk9USCwgbm90IHJlcGxhY2luZyBvbmUgd2l0aCB0aGUgb3RoZXIuIl0sInBocmFzZXMiOlsiSWYgSSBoYWQgdG8gY2hvb3NlLCBJJ2Qgc2F5XHUyMDI2IiwiTXkgbWFpbiByZWFzb24gaXNcdTIwMjYiLCJGb3IgZXhhbXBsZSwgXHUyMDI2IiwiVGhhdCBzYWlkLCBcdTIwMjYiLCJBbGwgdGhpbmdzIGNvbnNpZGVyZWQsIFx1MjAyNiJdfSwiczYiOiJJbiBteSBvcGluaW9uLCBzY2hvb2xzIHNob3VsZCBkZWZpbml0ZWx5IHN0aWxsIHRlYWNoIGNoaWxkcmVuIHRvIHdyaXRlIGJ5IGhhbmQuIEkgYW0gbm90IGFnYWluc3QgdHlwaW5nLCBraWRzIG5lZWQgaXQgdG9vLCBidXQgaGFuZHdyaXRpbmcgc2hvdWxkIG5vdCBkaXNhcHBlYXIuIEkgaGF2ZSB0aHJlZSByZWFzb25zLiBGaXJzdCwgZm9yIHNtYWxsIGNoaWxkcmVuLCB3cml0aW5nIGJ5IGhhbmQgaGVscHMgdGhlIGJyYWluIGFuZCB0aGUgZmluZ2VycyBncm93LiBXaGVuIGEgY2hpbGQgZm9ybXMgdGhlIGxldHRlciAnQScgd2l0aCBhIHBlbmNpbCwgYWdhaW4gYW5kIGFnYWluLCBoZSBsZWFybnMgdGhlIHNoYXBlLCBhbmQgdGhpcyBhY3R1YWxseSBoZWxwcyBoaW0gbGVhcm4gdG8gcmVhZCBmYXN0ZXIuIEEga2V5Ym9hcmQgY2Fubm90IHRlYWNoIHRoYXQuIFNlY29uZCwgbWFueSB0ZWFjaGVycyBhbmQgc3R1ZGllcyBzYXkgdGhhdCB3ZSByZW1lbWJlciB0aGluZ3MgYmV0dGVyIHdoZW4gd2Ugd3JpdGUgdGhlbSBieSBoYW5kLiBXaGVuIHlvdSB0eXBlLCB5b3UgZ28gZmFzdCwgbGlrZSBhIG1hY2hpbmUsIGJ1dCB3aGVuIHlvdSB3cml0ZSwgeW91ciBicmFpbiB3b3JrcyBtb3JlLCBhbmQgdGhlIGluZm9ybWF0aW9uIHN0YXlzLiBUaGF0IGlzIHdoeSBtYW55IHN0dWRlbnRzIHN0aWxsIHRha2Ugbm90ZXMgd2l0aCBhIHBlbi4gVGhpcmQsIHRlY2hub2xvZ3kgaXMgbm90IGFsd2F5cyB0aGVyZS4gVGhlIGJhdHRlcnkgZGllcywgdGhlIGludGVybmV0IHN0b3BzLCBvciBpbiBhbiBleGFtIHRoZXJlIGlzIG5vIGNvbXB1dGVyLiBBIHBlcnNvbiB3aG8gY2FuIG9ubHkgdHlwZSB3aWxsIGJlIHN0dWNrLiBQZW4gYW5kIHBhcGVyIGFsd2F5cyB3b3JrLiBPZiBjb3Vyc2UsIEkgYWdyZWUgdGhhdCB0eXBpbmcgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIHRoZSBtb2Rlcm4gd29ybGQsIGFuZCBzY2hvb2xzIG11c3QgdGVhY2ggaXQgd2VsbC4gQnV0IGl0IHNob3VsZCBiZSAnYW5kJywgbm90ICdvcicuIFRlYWNoIGJvdGguIERyb3BwaW5nIGhhbmR3cml0aW5nIGNvbXBsZXRlbHkgd291bGQgYmUgYSBiaWcgbWlzdGFrZSBmb3IgeW91bmcgY2hpbGRyZW4uIiwiczkiOiJNeSB2aWV3IGlzIGNsZWFyOiBzY2hvb2xzIHNob3VsZCBhYnNvbHV0ZWx5IGtlZXAgdGVhY2hpbmcgaGFuZHdyaXRpbmcsIGFuZCBJIHNheSB0aGF0IGFzIHNvbWVvbmUgd2hvIGZ1bGx5IGFjY2VwdHMgdGhhdCB0eXBpbmcgaXMgYW4gZXNzZW50aWFsIG1vZGVybiBza2lsbC4gVGhpcyBzaG91bGQgbm90IGJlIGFuIGVpdGhlci1vciBxdWVzdGlvbiwgYnV0IGlmIHdlIGFyZSBmb3JjZWQgdG8gZGVmZW5kIGhhbmR3cml0aW5nIGFnYWluc3QgdGhvc2Ugd2hvIHdvdWxkIGRyb3AgaXQgZW50aXJlbHksIHRoZSBjYXNlIGlzIHN0cm9uZy4gTXkgZmlyc3QgcmVhc29uIGlzIGRldmVsb3BtZW50YWwuIEZvciB5b3VuZyBjaGlsZHJlbiwgcGh5c2ljYWxseSBmb3JtaW5nIGxldHRlcnMgd2l0aCBhIHBlbmNpbCB0cmFpbnMgZmluZSBtb3RvciBjb250cm9sIGFuZCwgY3J1Y2lhbGx5LCBjZW1lbnRzIGxldHRlciByZWNvZ25pdGlvbjsgdGhlIGFjdCBvZiBkcmF3aW5nIGFuICdhJyBvdmVyIGFuZCBvdmVyIGlzIHBhcnQgb2YgaG93IGEgY2hpbGQgbGVhcm5zIHRvIHJlYWQgaXQuIEEga2V5Ym9hcmQsIHdoZXJlIGV2ZXJ5IGxldHRlciBpcyBhbiBpZGVudGljYWwga2V5cHJlc3MsIHNpbXBseSBjYW5ub3QgYnVpbGQgdGhhdCBjb25uZWN0aW9uLiBTZWNvbmQsIHRoZXJlIGlzIGEgcm9idXN0IGJvZHkgb2YgcmVzZWFyY2ggc2hvd2luZyB0aGF0IHdlIHByb2Nlc3MgYW5kIHJlbWVtYmVyIGluZm9ybWF0aW9uIGJldHRlciB3aGVuIHdlIHdyaXRlIGl0IGJ5IGhhbmQgdGhhbiB3aGVuIHdlIHR5cGUgaXQuIFR5cGluZyBpcyBmYXN0IGFuZCBtZWNoYW5pY2FsLCBzbyB3ZSB0ZW5kIHRvIHRyYW5zY3JpYmUgbWluZGxlc3NseTsgaGFuZHdyaXRpbmcgaXMgc2xvd2VyLCB3aGljaCBmb3JjZXMgdGhlIGJyYWluIHRvIHN1bW1hcml6ZSBhbmQgZW5nYWdlLCB3aGljaCBpcyBleGFjdGx5IHdoeSBzbyBtYW55IHN0dWRlbnRzIHN0aWxsIHN3ZWFyIGJ5IHBlbi1hbmQtcGFwZXIgbm90ZXMuIFRoaXJkLCB0aGVyZSBpcyBwbGFpbiByZXNpbGllbmNlOiBiYXR0ZXJpZXMgZGllLCBuZXR3b3JrcyBmYWlsLCBhbmQgZXhhbSBoYWxscyBhbmQgZ292ZXJubWVudCBmb3JtcyBzdGlsbCBydW4gb24gaW5rLiBTb21lb25lIHdobyBjYW4gb25seSB0eXBlIGlzIGhlbHBsZXNzIHRoZSBtb21lbnQgdGhlIHNjcmVlbiBnb2VzIGRhcmssIHdoZXJlYXMgcGVuIGFuZCBwYXBlciBuZXZlciBjcmFzaC4gTm93LCB0aGUgZmFpciBjb25jZXNzaW9uOiB0eXBpbmcgZGVzZXJ2ZXMgYSBzZXJpb3VzIHBsYWNlIGluIHRoZSBjdXJyaWN1bHVtIHRvbywgY2hpbGRyZW4gd2hvIGNhbm5vdCB0eXBlIHF1aWNrbHkgYW5kIGFjY3VyYXRlbHkgd2lsbCBiZSBhdCBhIHJlYWwgZGlzYWR2YW50YWdlIGluIGFsbW9zdCBldmVyeSBmdXR1cmUgam9iLiBCdXQgdGhlIGdvYWwgc2hvdWxkIGJlIGZsdWVuY3kgaW4gYm90aCwgbm90IHJlcGxhY2luZyBvbmUgd2l0aCB0aGUgb3RoZXIuIEFiYW5kb25pbmcgaGFuZHdyaXRpbmcgdG8gc2F2ZSB0aW1ldGFibGUgc3BhY2Ugd291bGQgYmUgYSBzaG9ydC1zaWdodGVkIHRyYWRlLCBlc3BlY2lhbGx5IGZvciB0aGUgeW91bmdlc3QgbGVhcm5lcnMgd2hvIG5lZWQgaXQgbW9zdC4ifSx7ImsiOiJ0OCIsIm51bSI6OCwidHlwZUVuIjoiRGVzY3JpYmluZyBhbiBVbnVzdWFsIFNpdHVhdGlvbiIsInByZXAiOjMwLCJyZWMiOjYwLCJwcm9tcHQiOiJZb3UgYXJlIHZpc2l0aW5nIHlvdXIgZnJpZW5kIE1hcnkgYXQgaGVyIGhvdXNlLCBhbmQgeW91IHJlYWxseSBsaWtlIGhlciBuZXdseSByZW5vdmF0ZWQga2l0Y2hlbiBzaG93biBpbiB0aGUgcGljdHVyZS4gWW91ciBvdGhlciBmcmllbmQsIFNhaWRhLCBpcyBjdXJyZW50bHkgbG9va2luZyBmb3IgYSBuZXcga2l0Y2hlbiBzdHlsZSBmb3IgaGVyIGhvdXNlLiBDYWxsIFNhaWRhIGFuZCBkZXNjcmliZSBpbiBkZXRhaWwgd2hhdCBNYXJ5J3Mga2l0Y2hlbiBsb29rcyBsaWtlLCBhbmQgYXNrIFNhaWRhIGlmIHNoZSB3b3VsZCBsaWtlIHRvIHVzZSB0aGUgc2FtZSBzdHlsZS4iLCJpbWciOiJ1bnVzdWFsIiwidGlwcyI6eyJidWxsZXRzIjpbIlRoaXMgaXMgYSBQSE9ORSBDQUxMOiBncmVldCB0aGUgcmlnaHQgcGVyc29uICh0aGUgcG9saWNlIC8geW91ciBmcmllbmQpLCB0aGVuIHNheSB3aGVyZSB5b3UgYXJlLiIsIkRlc2NyaWJlIGZyb20gZ2VuZXJhbCB0byBzcGVjaWZpYzsgdGhlIHBpY3R1cmUgaXMgbWVhbnQgdG8gYmUgc3RyYW5nZSBcdTIwMTQganVzdCBkZXNjcmliZSB3aGF0IHlvdSBzZWUsIHVzaW5nICdJdCBsb29rcyBsaWtlIC8gYXMgaWZcdTIwMjYnLiIsIkVuZCB3aXRoIGEgcmVxdWVzdCBmb3IgYWN0aW9uIChzZW5kIGEgcGF0cm9sIC8gYXNrIHdoZXJlIHRvIGJ1eSkuIiwiVGhpcyBpcyBhIHBob25lIGNhbGwgdG8gU2FpZGEgYWJvdXQgTWFyeSdzIHF1aXJreSByZW5vdmF0ZWQga2l0Y2hlbi4gS2V5IGRldGFpbHM6IHNsZWVrIGdyZXkgc3RhaW5sZXNzIGFwcGxpYW5jZXM7IGFuIGVsZWN0cmljIGNvb2t0b3Agd2l0aCBmb3VyIGJsYWNrIGNvaWwgYnVybmVycyBhbmQgYSBsaXR0bGUgZ3JlZW4gZGlnaXRhbCBjbG9jayByZWFkaW5nIDA4OjUzOyBhYm92ZSB0aGUgY291bnRlciBhIHdpbmRvdyBsb29raW5nIG9udG8gZ3JlZW5lcnksIHdpdGggYSBwYXBlci10b3dlbCByb2xsIGhlbGQgdXAgYnkgdHdvIGxpdHRsZSBqZXN0ZXIgZmlndXJlcyBvbiB0aGUgc2lsbDsgdGhlIHN0YXIgZmVhdHVyZSBpcyB0aGUgU0lOSyAtIGl0IGlzIGJ1aWx0IGludG8gYSBnbGFzcyBhcXVhcml1bSBmdWxsIG9mIG9yYW5nZSBjbG93bmZpc2gsIGdyZWVuIHBsYW50cyBhbmQgcHVycGxlIGNvcmFsLCB3aXRoIHRoZSB0YXAgZGlwcGluZyBpbnRvIHRoZSB3YXRlcjsgYSBwaW5rIHRvd2VsIG9uIHRoZSBvdmVuIGRvb3IgYW5kIHdoaXRlIGNhYmluZXRzIHdpdGggZGFyayBoYW5kbGVzLiBFbmQgYnkgYXNraW5nIFNhaWRhIGlmIHNoZSB3b3VsZCBsaWtlIHRoZSBzYW1lIHN0eWxlLiJdLCJwaHJhc2VzIjpbIkknbSBjYWxsaW5nIHRvIHJlcG9ydFx1MjAyNiIsIlBpY3R1cmUgdGhpczogXHUyMDI2IiwiSXQgbG9va3MgYXMgaWZcdTIwMjYiLCJDb3VsZCB5b3Ugc2VuZFx1MjAyNiAvIERvIHlvdSBrbm93IHdoZXJlXHUyMDI2PyJdfSwiczYiOiJTYWlkYSwgaGksIGl0J3MgbWUhIEkgYW0gYXQgTWFyeSdzIGhvdXNlIHJpZ2h0IG5vdywgYW5kIHlvdSBoYXZlIHRvIGhlYXIgYWJvdXQgaGVyIG5ldyBraXRjaGVuLCB5b3UgYXJlIGxvb2tpbmcgZm9yIGlkZWFzLCBhbmQgdGhpcyBvbmUgaXMgYW1hemluZyBhbmQgdmVyeSB1bnVzdWFsLiBMZXQgbWUgZGVzY3JpYmUgaXQuIEV2ZXJ5dGhpbmcgaXMgbW9kZXJuIGFuZCBncmV5LCBsaWtlIHN0YWlubGVzcyBzdGVlbC4gVGhlcmUgaXMgYSBjb29rdG9wIHdpdGggZm91ciBibGFjayByb3VuZCBidXJuZXJzLCBhbmQgbmV4dCB0byBpdCBhIGxpdHRsZSBncmVlbiBkaWdpdGFsIGNsb2NrIHRoYXQgc2F5cyAwODo1My4gQWJvdmUgdGhlIGNvdW50ZXIgdGhlcmUgaXMgYSB3aW5kb3cgd2l0aCBncmVlbiBvdXRzaWRlLCBhbmQsIHRoaXMgaXMgc28gY3V0ZSwgdGhlIHBhcGVyIHRvd2VsIHJvbGwgaXMgaGVsZCB1cCBieSB0d28gbGl0dGxlIGplc3RlciBmaWd1cmVzLCBsaWtlIHNtYWxsIGVsdmVzIG9uIHRoZSB3aW5kb3dzaWxsLiBCdXQgdGhlIGJlc3QgcGFydCBpcyB0aGUgc2luay4gQXJlIHlvdSByZWFkeT8gVGhlIHNpbmsgaXMgYnVpbHQgaW5zaWRlIGEgZmlzaCB0YW5rISBJdCBpcyBsaWtlIGEgZ2xhc3MgYXF1YXJpdW0gYXJvdW5kIHRoZSBzaW5rLCBmdWxsIG9mIHdhdGVyLCB3aXRoIG9yYW5nZSBjbG93bmZpc2ggc3dpbW1pbmcsIGdyZWVuIHBsYW50cywgYW5kIHB1cnBsZSBjb3JhbCwgYW5kIHRoZSB0YXAgZ29lcyBkb3duIGludG8gdGhlIHdhdGVyLiBJdCBpcyBsaWtlIEZpbmRpbmcgTmVtbyBpbiB0aGUga2l0Y2hlbiEgVGhlcmUgaXMgYWxzbyBhIHNvZnQgcGluayB0b3dlbCBvbiB0aGUgb3ZlbiBkb29yLCBhbmQgd2hpdGUgY2FiaW5ldHMgd2l0aCBkYXJrIGhhbmRsZXMuIEl0IGlzIGNsZWFuLCBtb2Rlcm4sIGFuZCBmdWxsIG9mIGZ1biBzdXJwcmlzZXMuIFNvIFNhaWRhLCB3aGF0IGRvIHlvdSB0aGluaywgd291bGQgeW91IGxpa2UgdGhpcyBzYW1lIHN0eWxlIGZvciB5b3VyIGtpdGNoZW4\/IEkgY2FuIGFzayBNYXJ5IGZvciBoZXIgZGVzaWduZXIhIiwiczkiOiJTYWlkYSwgaXQncyBtZSwgSSBhbSBzdGFuZGluZyBpbiBNYXJ5J3MgbmV3bHkgcmVub3ZhdGVkIGtpdGNoZW4gcmlnaHQgbm93LCBhbmQgdGhlIHNlY29uZCBJIHdhbGtlZCBpbiBJIHRob3VnaHQgb2YgeW91IGFuZCB5b3VyIHJlbm92YXRpb24gaHVudCwgYmVjYXVzZSB0aGlzIGlzIHVubGlrZSBhbnkga2l0Y2hlbiBJIGhhdmUgZXZlciBzZWVuLiBMZXQgbWUgcGFpbnQgdGhlIHBpY3R1cmUuIFRoZSB3aG9sZSB0aGluZyBpcyBzbGVlayBhbmQgbW9kZXJuLCBkb25lIGluIGdyZXkgc3RhaW5sZXNzLXN0ZWVsIHRvbmVzLCB2ZXJ5IGNsZWFuIGxpbmVzLiBUaGVyZSBpcyBhbiBlbGVjdHJpYyBjb29rdG9wIHdpdGggZm91ciBibGFjayBjb2lsIGJ1cm5lcnMsIGFuZCBzZXQgaW50byB0aGUgY29uc29sZSBpcyBhIGxpdHRsZSBncmVlbiBkaWdpdGFsIGNsb2NrIGdsb3dpbmcgMDg6NTMuIEFib3ZlIHRoZSBjb3VudGVyIHRoZXJlIGlzIGEgd2luZG93IGxvb2tpbmcgb3V0IG9udG8gZ3JlZW5lcnksIGFuZCBoZXJlIGlzIHRoZSBmaXJzdCBxdWlya3kgdG91Y2g6IHRoZSBwYXBlci10b3dlbCBob2xkZXIgb24gdGhlIHNpbGwgaXMgaGVsZCB1cCBieSB0d28gdGlueSBjYXJ2ZWQgamVzdGVyIGZpZ3VyZXMsIGxpa2UgbGl0dGxlIGVsdmVzIHNob3VsZGVyaW5nIHRoZSBiYXIuIENoYXJtaW5nIGFuZCBzbGlnaHRseSBib25rZXJzLiBCdXQgdGhlIHNob3dzdG9wcGVyLCBhcmUgeW91IHNpdHRpbmcgZG93biwgaXMgdGhlIHNpbmsuIEl0IGlzIGJ1aWx0IHN0cmFpZ2h0IGludG8gYSBnbGFzcyBhcXVhcml1bS4gVGhlIGJhc2luIHNpdHMgaW4gdGhlIG1pZGRsZSBvZiBhIHdhdGVyIHRhbmsgdGhhdCB3cmFwcyBhcm91bmQgaXQsIGNvbXBsZXRlIHdpdGggYnJpZ2h0IG9yYW5nZSBjbG93bmZpc2ggZGFydGluZyBhYm91dCwgZmVhdGhlcnkgZ3JlZW4gcGxhbnRzLCBwdXJwbGUgY29yYWwgYW5kIGxpdHRsZSBwZWJibGVzLCBhbmQgdGhlIHRhcCBhY3R1YWxseSBkaXBzIGRvd24gaW50byB0aGUgd2F0ZXIuIEl0IGlzIGxpa2UgZG9pbmcgeW91ciBkaXNoZXMgaW5zaWRlIEZpbmRpbmcgTmVtby4gVG8gZmluaXNoIGl0IG9mZiwgdGhlcmUgaXMgYSBzb2Z0IHBpbmsgdG93ZWwgZHJhcGVkIG92ZXIgdGhlIG92ZW4gZG9vciBhbmQgY3Jpc3Agd2hpdGUgY2FiaW5ldHMgd2l0aCBkYXJrIG92YWwgaGFuZGxlcy4gU28gdGhlIG92ZXJhbGwgc3R5bGUgaXMgbW9kZXJuIGFuZCBtaW5pbWFsaXN0LCBidXQgd2l0aCB0aGVzZSBwbGF5ZnVsLCB1bmV4cGVjdGVkIGZlYXR1cmVzIHRoYXQgbWFrZSBpdCB1bmZvcmdldHRhYmxlIHJhdGhlciB0aGFuIGNvbGQuIFNvIHRlbGwgbWUgaG9uZXN0bHk6IGlzIHRoaXMgdGhlIGtpbmQgb2YgZGFyaW5nLCBmdW4gc3R5bGUgeW91IHdvdWxkIHdhbnQgZm9yIHlvdXIgb3duIGtpdGNoZW4sIG9yIGlzIHRoZSBmaXNoLXRhbmsgc2luayBhIHN0ZXAgdG9vIGZhcj8gSWYgeW91IGxvdmUgaXQsIEkgd2lsbCBnZXQgTWFyeSB0byBzaGFyZSBoZXIgZGVzaWduZXIncyBudW1iZXIuIn1dLCJ1aSI6eyJzdGFydFRlc3QiOiJTdGFydCB0aGUgdGVzdCIsIm1pY0VuYWJsZSI6IkVuYWJsZSBtaWNyb3Bob25lIiwibWljUmVhZHkiOiJNaWNyb3Bob25lIHJlYWR5IiwibWljQmxvY2tlZCI6Ik1pY3JvcGhvbmUgaXMgYmxvY2tlZCBvciB1bmF2YWlsYWJsZSBcdTIwMTQgdGhlIHBhZ2Ugd2lsbCBydW4gaW4gdGltZXItb25seSBtb2RlICh5b3UgY2FuIHN0aWxsIHByYWN0aXNlIHNwZWFraW5nIGFsb25nIHdpdGggdGhlIHRpbWVycykuIiwibWljTm90ZSI6IlJlY29yZGluZ3MgYXJlIHN0b3JlZCB0ZW1wb3JhcmlseSBpbiB5b3VyIGJyb3dzZXIgb25seSBcdTIwMTQgbm90aGluZyBpcyB1cGxvYWRlZCB0byBhbnkgc2VydmVyLiBUaGV5IGFyZSBsb3N0IHdoZW4geW91IGNsb3NlIHRoZSBwYWdlLCBzbyBkb3dubG9hZCBhbnkgeW91IHdhbnQgdG8ga2VlcC4iLCJwcmVwVGl0bGUiOiJQcmVwYXJhdGlvbiBUaW1lIiwicmVjVGl0bGUiOiJSZWNvcmRpbmciLCJzdGFydFByZXAiOiJcdTI1YjYgU3RhcnQgcHJlcGFyYXRpb24iLCJza2lwUHJlcCI6IlNraXAgXHUyMDE0IHJlY29yZCBub3cgXHUwMGJiIiwic3RvcFJlYyI6Ilx1MjVhMCBTdG9wIHJlY29yZGluZyIsInJlY29yZGVkIjoiUmVjb3JkZWQiLCJyZVJlY29yZCI6Ilx1MjFiYiBSZWNvcmQgYWdhaW4iLCJkb3dubG9hZCI6Ilx1MmIwNyBEb3dubG9hZCIsInRpbWVyT25seSI6IlRpbWVyLW9ubHkgbW9kZSAobm90IHJlY29yZGluZykiLCJzcGVha05vdyI6IlNQRUFLIE5PVyBcdTIwMTQgcmVjb3JkaW5nIHN0b3BzIGF1dG9tYXRpY2FsbHkgd2hlbiB0aW1lIGlzIHVwIiwibmV4dCI6Ik5FWFQiLCJjaG9vc2VIaW50IjoiQ2xpY2sgdG8gY2hvb3NlIG9uZSBvcHRpb24gXHUyMDE0IGlmIHRoZSA2MCBzZWNvbmRzIHJ1biBvdXQsIHRoZSBzeXN0ZW0gY2hvb3NlcyBmb3IgeW91IiwiY29uZmlybUNob2ljZSI6IkNvbmZpcm0gY2hvaWNlICYgY29udGludWUgXHUwMGJiIiwieW91ckNob2ljZSI6IllvdXIgQ2hvaWNlIiwidGlwc1RvZ2dsZSI6Ilx1ZDgzZFx1ZGNhMSBUaXBzICYgc2FtcGxlIGFuc3dlcnMgKG9wZW4gYWZ0ZXIgeW91IGZpbmlzaCBzcGVha2luZykiLCJ0YWJUaXBzIjoiT3V0bGluZSAmIHBocmFzZXMiLCJ0YWJTNiI6IlNhbXBsZSBDTEIgNiIsInRhYlM5IjoiU2FtcGxlIENMQiA5IiwidGFiUnVicmljIjoiU2VsZi1hc3Nlc3NtZW50IiwicnVicmljTm90ZSI6Ikxpc3RlbiB0byB5b3VyIHJlY29yZGluZywgdGhlbiByYXRlIHlvdXJzZWxmIDFcdTIwMTM1IG9uIGVhY2ggY3JpdGVyaW9uICh0aGUgNCBvZmZpY2lhbCBDRUxQSVAgcmF0aW5nIGRpbWVuc2lvbnMpOiIsInJ1YnJpY0NyaXQiOlsiQ29udGVudCAmIENvaGVyZW5jZSBcdTIwMTQgY29tcGxldGUgaWRlYXMsIGxvZ2ljYWwgZmxvdyIsIlZvY2FidWxhcnkgXHUyMDE0IHJhbmdlIGFuZCBwcmVjaXNpb24iLCJMaXN0ZW5hYmlsaXR5IFx1MjAxNCBwcm9udW5jaWF0aW9uLCBpbnRvbmF0aW9uLCBmbHVlbmN5IiwiVGFzayBGdWxmaWxsbWVudCBcdTIwMTQgYWRkcmVzc2VzIHRoZSB0YXNrLCBhcHByb3ByaWF0ZSBsZW5ndGgiXSwiZXN0aW1hdGUiOiJFc3RpbWF0ZWQgbGV2ZWwgKGZvciByZWZlcmVuY2UpOiIsImVzdERpc2NsYWltZXIiOiJTZWxmLWFzc2Vzc21lbnQgaXMgYSByb3VnaCBndWlkZSBvbmx5IFx1MjAxNCBpdCBkb2VzIG5vdCByZXBsYWNlIGFuIG9mZmljaWFsIHNjb3JlLiIsInVzZWZ1bFBocmFzZXMiOiJVc2VmdWwgcGhyYXNlcyIsImVuZFRpdGxlIjoiU3BlYWtpbmcgdGVzdCBjb21wbGV0ZSEiLCJlbmRTdWIiOiJSZXBsYXkgZWFjaCB0YXNrLCBjb21wYXJlIHlvdXIgYW5zd2VycyB3aXRoIHRoZSBDTEIgNiAvIENMQiA5IHNhbXBsZXMsIHRoZW4gcmF0ZSB5b3Vyc2VsZi4iLCJlbmROb1JlYyI6Im5vdCByZWNvcmRlZCIsImVuZFJlZG8iOiJcdTIxYmIgU3RhcnQgb3ZlciIsImVuZFQyIjoiQ29udGludWUgdG8gUHJhY3RpY2UgVGVzdCIsImVuZEh1YiI6Ilx1MjE5MCBCYWNrIHRvIENFTFBJUCBIdWIiLCJ3YXJtdXBCYWRnZSI6Ildhcm0tdXAgXHUyMDE0IG5vdCBzY29yZWQiLCJpbnRyb05vdGVzIjpbIkFuIGFjY3VyYXRlIHNpbXVsYXRpb24gb2YgdGhlIHJlYWwgQ0VMUElQIEdlbmVyYWwgU3BlYWtpbmcgdGVzdDogMSBwcmFjdGljZSAod2FybS11cCkgdGFzayArIDggc2NvcmVkIHRhc2tzLCBhYm91dCAyMCBtaW51dGVzIGluIHRvdGFsLiIsIkVhY2ggdGFzazogcmVhZCB0aGUgcHJvbXB0IFx1MjE5MiA8Yj5QcmVwYXJhdGlvbjwvYj4gY291bnRkb3duIFx1MjE5MiBzd2l0Y2hlcyBhdXRvbWF0aWNhbGx5IHRvIDxiPlJlY29yZGluZzwvYj4gKHdpdGggYSBiZWVwKSBcdTIxOTIgc3RvcHMgd2hlbiB0aW1lIGlzIHVwLiIsIk9uIHRoZSByZWFsIHRlc3QgeW91IGNhbm5vdCBnbyBiYWNrIHRvIGEgcHJldmlvdXMgdGFzay4gSW4gcHJhY3RpY2UgbW9kZSwgeW91IGNhbiBjbGljayB0aGUgbnVtYmVyZWQgY2hpcHMgYWJvdmUgdG8gcmV2aXNpdCBhbnkgdGFzay4iLCJBZnRlciBzcGVha2luZyBvbiBlYWNoIHRhc2ssIG9wZW4gPGI+VGlwcyAmIHNhbXBsZSBhbnN3ZXJzPC9iPiB0byBjb21wYXJlIHlvdXIgcmVzcG9uc2Ugd2l0aCB0aGUgQ0xCIDYgYW5kIENMQiA5IHNhbXBsZXMuIl0sImhlcm9UYWciOiJDRUxQSVAgR2VuZXJhbCBcdTIwMTQgU3BlYWtpbmciLCJoZXJvTWV0YSI6WyI4IHRhc2tzICsgd2FybS11cCIsIn4yMCBtaW51dGVzIiwiUmVjb3JkICYgcmVwbGF5IiwiQ0xCIDYgLyBDTEIgOSBzYW1wbGVzIl19fTsKLyogQ0VMUElQIFNwZWFraW5nIEVuZ2luZSB2MS4wIC0gQWxsRW5nbGlzaDRVIC0gdmFuaWxsYSBKUywgcHJlZml4IGNscC1zcGsgKi8KKGZ1bmN0aW9uKCl7CiJ1c2Ugc3RyaWN0IjsKdmFyIEQgPSB3aW5kb3cuQ0xQU1BLX0RBVEEsIFUgPSBELnVpOwp2YXIgcm9vdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjbHAtc3BrLXJvb3QiKTsKaWYoIXJvb3QpIHJldHVybjsKCi8qIC0tLS0tLS0tLS0gc3R5bGUgLS0tLS0tLS0tLSAqLwp2YXIgQ1NTID0gIiIrCiIuY2xwLXNway13cmFwe21heC13aWR0aDoxMTQwcHg7bWFyZ2luOjAgYXV0bztwYWRkaW5nOjAgMTRweCA2MHB4O2ZvbnQtZmFtaWx5Oi1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLEFyaWFsLHNhbnMtc2VyaWY7Y29sb3I6IzIzMjcyZDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkfSIrCiIuY2xwLXNway13cmFwICp7Ym94LXNpemluZzpib3JkZXItYm94fSIrCiIuY2xwLXNway1oZXJve2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjN2YxZDFkIDAlLCNiOTFjMWMgNTUlLCNkYzI2MjYgMTAwJSk7Ym9yZGVyLXJhZGl1czoxOHB4O2NvbG9yOiNmZmY7cGFkZGluZzozMHB4IDMwcHggMjZweDttYXJnaW46MThweCAwIDIwcHg7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufSIrCiIuY2xwLXNway1oZXJvOmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6LTYwcHg7dG9wOi02MHB4O3dpZHRoOjIyMHB4O2hlaWdodDoyMjBweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjA4KX0iKwoiLmNscC1zcGstaGVybyAudGFne2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMTYpO2JvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMzUpO3BhZGRpbmc6M3B4IDEycHg7Ym9yZGVyLXJhZGl1czo5OTlweDtmb250LXNpemU6MTIuNXB4O2xldHRlci1zcGFjaW5nOi42cHg7Zm9udC13ZWlnaHQ6NjAwfSIrCiIuY2xwLXNway1oZXJvIGgxe21hcmdpbjoxMHB4IDAgNnB4O2ZvbnQtc2l6ZToyN3B4O2xpbmUtaGVpZ2h0OjEuMjU7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstaGVybyAubWV0YXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDttYXJnaW4tdG9wOjEycHh9IisKIi5jbHAtc3BrLWhlcm8gLm1ldGEgc3BhbntiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjIyKTtwYWRkaW5nOjRweCAxMnB4O2JvcmRlci1yYWRpdXM6OTk5cHg7Zm9udC1zaXplOjEyLjVweH0iKwoiLmNscC1zcGstY2hpcHN7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo3cHg7bWFyZ2luOjAgMCAxNHB4fSIrCiIuY2xwLXNway1jaGlwe21pbi13aWR0aDozOHB4O2hlaWdodDozNHB4O2JvcmRlci1yYWRpdXM6OXB4O2JvcmRlcjoxLjVweCBzb2xpZCAjZDNkOGRmO2JhY2tncm91bmQ6I2ZmZjtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzLjVweDtjb2xvcjojNWI2NTcyO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MCAxMHB4fSIrCiIuY2xwLXNway1jaGlwLmN1cntiYWNrZ3JvdW5kOiMwYjU3ZDA7Ym9yZGVyLWNvbG9yOiMwYjU3ZDA7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstY2hpcC5kb25le2JhY2tncm91bmQ6I2U2ZjRlYTtib3JkZXItY29sb3I6IzdiYzM5NDtjb2xvcjojMWU3YjNlfSIrCiIuY2xwLXNway1wYW5lbHtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZDlkZGUzO2JvcmRlci1yYWRpdXM6MTJweDtvdmVyZmxvdzpoaWRkZW47Ym94LXNoYWRvdzowIDJweCAxMHB4IHJnYmEoMzAsNDAsNjAsLjA2KX0iKwoiLmNscC1zcGstYmFye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7YmFja2dyb3VuZDojZWNlY2VlO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkNWQ1ZDg7cGFkZGluZzo5cHggMTRweDtmbGV4LXdyYXA6d3JhcH0iKwoiLmNscC1zcGstYmFyIC50e2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTQuNXB4O2NvbG9yOiMzYzQwNDZ9IisKIi5jbHAtc3BrLWJhciAubXttYXJnaW4tbGVmdDphdXRvO2ZvbnQtc2l6ZToxMi41cHg7Y29sb3I6IzU1NTt3aGl0ZS1zcGFjZTpub3dyYXB9IisKIi5jbHAtc3BrLWJhciAubSBie2NvbG9yOiMyMzI3MmR9IisKIi5jbHAtc3BrLW5leHR7YmFja2dyb3VuZDojMTQ2N2M2O2NvbG9yOiNmZmY7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czo0cHg7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMi41cHg7bGV0dGVyLXNwYWNpbmc6LjhweDtwYWRkaW5nOjdweCAxOHB4O2N1cnNvcjpwb2ludGVyfSIrCiIuY2xwLXNway1uZXh0OmhvdmVye2JhY2tncm91bmQ6IzBmNTdhYn0iKwoiLmNscC1zcGstYm9keXtwYWRkaW5nOjE4cHggMjBweCAyMnB4fSIrCiIuY2xwLXNway1wcm9tcHR7ZGlzcGxheTpmbGV4O2dhcDo5cHg7Y29sb3I6IzBiNTM5NDtmb250LXdlaWdodDo2MDA7Zm9udC1zaXplOjE1LjVweDtsaW5lLWhlaWdodDoxLjV9IisKIi5jbHAtc3BrLXByb21wdCAuaXtmbGV4OjAgMCBhdXRvO3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojMmM3Y2IwO2NvbG9yOiNmZmY7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6ODAwO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tdG9wOjJweH0iKwoiLmNscC1zcGstbGVhZHtjb2xvcjojMGI1Mzk0O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tYm90dG9tOjRweH0iKwoiLmNscC1zcGstY2hvb3NlMXttYXJnaW46MTRweCAwIDA7cGFkZGluZzoxMnB4IDE2cHg7YmFja2dyb3VuZDojZjVmN2ZhO2JvcmRlcjoxcHggc29saWQgI2RmZTRlYTtib3JkZXItcmFkaXVzOjlweDtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNTV9IisKIi5jbHAtc3BrLWNob29zZTEgLmV7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiM4YTFmMWY7bGV0dGVyLXNwYWNpbmc6LjRweH0iKwoiLmNscC1zcGstaW1ne2Rpc3BsYXk6YmxvY2s7bWF4LXdpZHRoOjU0MHB4O3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjY2ZkNGRhO2JvcmRlci1yYWRpdXM6OHB4O21hcmdpbjoxNnB4IDAgNHB4fSIrCiIuY2xwLXNway1ub3Rle2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM4YTkyOWM7bWFyZ2luLXRvcDo2cHh9IisKIi5jbHAtc3BrLXRpbWVycm93e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjoyMHB4IDAgNnB4fSIrCiIuY2xwLXNway10aW1lcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxNnB4O2JhY2tncm91bmQ6I2U5ZWNlZjtib3JkZXI6MXB4IHNvbGlkICNkNmRhZGU7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTZweCAyNnB4O21pbi13aWR0aDozMDBweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfSIrCiIuY2xwLXNway10aW1lciAuaWN7d2lkdGg6NDRweDtoZWlnaHQ6NDRweDtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiNmOGY5ZmE7Ym9yZGVyOjFweCBzb2xpZCAjZDZkYWRlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtmb250LXNpemU6MjJweH0iKwoiLmNscC1zcGstdGltZXIgLmxie2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMzMzODNmO2ZvbnQtc2l6ZToxNXB4fSIrCiIuY2xwLXNway10aW1lciAubntmb250LXNpemU6MjZweDtmb250LXdlaWdodDo4MDA7Y29sb3I6IzBiNTdkMDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXM7bWluLXdpZHRoOjUycHg7dGV4dC1hbGlnbjpjZW50ZXJ9IisKIi5jbHAtc3BrLXRpbWVyLnJlY3tiYWNrZ3JvdW5kOiNmZGVjZWI7Ym9yZGVyLWNvbG9yOiNmM2I2YjN9IisKIi5jbHAtc3BrLXRpbWVyLnJlYyAubntjb2xvcjojYzYyODI4fSIrCiIuY2xwLXNway10aW1lci5yZWMgLmlje2JhY2tncm91bmQ6I2ZmZjtib3JkZXItY29sb3I6I2YzYjZiM30iKwoiLmNscC1zcGstZG90e3dpZHRoOjE0cHg7aGVpZ2h0OjE0cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojZTUzOTM1O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2FuaW1hdGlvbjpjbHBibGluayAxcyBpbmZpbml0ZX0iKwoiQGtleWZyYW1lcyBjbHBibGlua3swJSwxMDAle29wYWNpdHk6MX01MCV7b3BhY2l0eTouMjV9fSIrCiIuY2xwLXNway1jdHJ7ZGlzcGxheTpmbGV4O2dhcDoxMHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC13cmFwOndyYXA7bWFyZ2luOjE0cHggMCAycHh9IisKIi5jbHAtc3BrLWJ0bntib3JkZXI6MS41cHggc29saWQgI2M5Y2ZkNjtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzMzMzgzZjtib3JkZXItcmFkaXVzOjlweDtwYWRkaW5nOjlweCAxOHB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTMuNXB4O2N1cnNvcjpwb2ludGVyfSIrCiIuY2xwLXNway1idG46aG92ZXJ7Ym9yZGVyLWNvbG9yOiM5YWEzYWR9IisKIi5jbHAtc3BrLWJ0bi5wcml7YmFja2dyb3VuZDojMGI1N2QwO2JvcmRlci1jb2xvcjojMGI1N2QwO2NvbG9yOiNmZmZ9IisKIi5jbHAtc3BrLWJ0bi5wcmk6aG92ZXJ7YmFja2dyb3VuZDojMGE0Y2I1fSIrCiIuY2xwLXNway1idG4ud2FybntiYWNrZ3JvdW5kOiNjNjI4Mjg7Ym9yZGVyLWNvbG9yOiNjNjI4Mjg7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstc3BlYWtub3d7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6I2M2MjgyODtmb250LXdlaWdodDo3MDA7Zm9udC1zaXplOjEzcHg7bWFyZ2luLXRvcDo4cHg7bGV0dGVyLXNwYWNpbmc6LjNweH0iKwoiLmNscC1zcGstcmV2aWV3e21hcmdpbjoxNnB4IGF1dG8gMDttYXgtd2lkdGg6NjQwcHg7YmFja2dyb3VuZDojZjJmOWYzO2JvcmRlcjoxcHggc29saWQgI2JmZTNjNjtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxNHB4IDE4cHh9IisKIi5jbHAtc3BrLXJldmlldyAub2t7Y29sb3I6IzFlN2IzZTtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjE0LjVweH0iKwoiLmNscC1zcGstcmV2aWV3IGF1ZGlve3dpZHRoOjEwMCU7bWFyZ2luOjEwcHggMCA4cHh9IisKIi5jbHAtc3BrLW1pY3ttYXJnaW46MTJweCBhdXRvIDA7bWF4LXdpZHRoOjY0MHB4O2JhY2tncm91bmQ6I2ZmZjhlNjtib3JkZXI6MXB4IHNvbGlkICNlY2Q5YTA7Ym9yZGVyLXJhZGl1czoxMHB4O3BhZGRpbmc6MTBweCAxNnB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOiM3YTViMTJ9IisKIi5jbHAtc3BrLW9wdHN7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyO2dhcDoxNnB4O21hcmdpbjoxOHB4IDAgNHB4fSIrCiIuY2xwLXNway1jYXJke2JvcmRlcjoycHggc29saWQgI2Q1ZGFlMDtib3JkZXItcmFkaXVzOjExcHg7cGFkZGluZzoxM3B4IDE1cHggMTVweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOiNmZmY7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE1c30iKwoiLmNscC1zcGstY2FyZDpob3Zlcntib3JkZXItY29sb3I6IzhmYjRlOH0iKwoiLmNscC1zcGstY2FyZC5zZWx7Ym9yZGVyLWNvbG9yOiMyZTllNGY7YmFja2dyb3VuZDojZWVmOWYwfSIrCiIuY2xwLXNway1jYXJkLnBsYWlue2N1cnNvcjpkZWZhdWx0fSIrCiIuY2xwLXNway1jYXJkIC5oZHt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MTIuNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojNmI3NDgwO2xldHRlci1zcGFjaW5nOi4zcHg7bWFyZ2luLWJvdHRvbTo4cHh9IisKIi5jbHAtc3BrLWNhcmQgaW1ne3dpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo3cHg7Ym9yZGVyOjFweCBzb2xpZCAjZTJlNmVhfSIrCiIuY2xwLXNway1jYXJkIC50dHtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjE1cHg7bWFyZ2luOjEwcHggMCA2cHg7Y29sb3I6IzIzMjcyZH0iKwoiLmNscC1zcGstY2FyZCB1bHttYXJnaW46MDtwYWRkaW5nLWxlZnQ6MThweDtmb250LXNpemU6MTMuNXB4O2xpbmUtaGVpZ2h0OjEuNTU7Y29sb3I6IzNjNDM0Yn0iKwoiLmNscC1zcGstY2FyZCAucGlja3ttYXJnaW4tdG9wOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiMyZTllNGY7Zm9udC1zaXplOjEzcHg7bWluLWhlaWdodDoxOHB4fSIrCiIuY2xwLXNway1oaW50e3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM2Yjc0ODA7Zm9udC1zaXplOjEzcHg7bWFyZ2luLXRvcDoxMHB4fSIrCiIuY2xwLXNway1hY2N7bWFyZ2luLXRvcDoyMnB4O2JvcmRlcjoxcHggc29saWQgI2Q5ZGRlMztib3JkZXItcmFkaXVzOjExcHg7b3ZlcmZsb3c6aGlkZGVufSIrCiIuY2xwLXNway1hY2M+YnV0dG9ue3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpsZWZ0O2JhY2tncm91bmQ6I2Y2ZjdmOTtib3JkZXI6MDtwYWRkaW5nOjEycHggMTZweDtmb250LXdlaWdodDo4MDA7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzNjNDA0NjtjdXJzb3I6cG9pbnRlcn0iKwoiLmNscC1zcGstYWNjYm9keXtkaXNwbGF5Om5vbmU7cGFkZGluZzoxNHB4IDE2cHggMThweDtiYWNrZ3JvdW5kOiNmZmZ9IisKIi5jbHAtc3BrLWFjYy5vcGVuIC5jbHAtc3BrLWFjY2JvZHl7ZGlzcGxheTpibG9ja30iKwoiLmNscC1zcGstdGFic3tkaXNwbGF5OmZsZXg7Z2FwOjZweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tYm90dG9tOjEycHh9IisKIi5jbHAtc3BrLXRhYntib3JkZXI6MS41cHggc29saWQgI2M5Y2ZkNjtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjZweCAxNXB4O2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTIuNXB4O2N1cnNvcjpwb2ludGVyO2NvbG9yOiM0YTUyNWN9IisKIi5jbHAtc3BrLXRhYi5vbntiYWNrZ3JvdW5kOiMwYjU3ZDA7Ym9yZGVyLWNvbG9yOiMwYjU3ZDA7Y29sb3I6I2ZmZn0iKwoiLmNscC1zcGstdGFicGFuZXtkaXNwbGF5Om5vbmU7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjY1fSIrCiIuY2xwLXNway10YWJwYW5lLm9ue2Rpc3BsYXk6YmxvY2t9IisKIi5jbHAtc3BrLXRhYnBhbmUgdWx7cGFkZGluZy1sZWZ0OjIwcHg7bWFyZ2luOjhweCAwfSIrCiIuY2xwLXNway10YWJwYW5lIGxpe21hcmdpbjo1cHggMH0iKwoiLmNscC1zcGstc2FtcGxle2JhY2tncm91bmQ6I2Y4ZjlmYjtib3JkZXI6MXB4IHNvbGlkICNlM2U3ZWM7Ym9yZGVyLWxlZnQ6NHB4IHNvbGlkICMwYjU3ZDA7Ym9yZGVyLXJhZGl1czo4cHg7cGFkZGluZzoxM3B4IDE2cHg7d2hpdGUtc3BhY2U6cHJlLXdyYXB9IisKIi5jbHAtc3BrLXNhbXBsZS5zNntib3JkZXItbGVmdC1jb2xvcjojZThhMTNjfSIrCiIuY2xwLXNway1waHJ7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo3cHg7bWFyZ2luLXRvcDoxMHB4fSIrCiIuY2xwLXNway1waHIgc3BhbntiYWNrZ3JvdW5kOiNlZWYzZmI7Ym9yZGVyOjFweCBzb2xpZCAjY2RkZGY1O2NvbG9yOiMxNzRhOWM7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjRweCAxMnB4O2ZvbnQtc2l6ZToxMi41cHg7Zm9udC13ZWlnaHQ6NjAwfSIrCiIuY2xwLXNway1ydWJ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO3dpZHRoOjEwMCU7Zm9udC1zaXplOjEzLjVweH0iKwoiLmNscC1zcGstcnViIHRke3BhZGRpbmc6N3B4IDZweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWVmMGYzfSIrCiIuY2xwLXNway1zdGFye2N1cnNvcjpwb2ludGVyO2ZvbnQtc2l6ZToxOXB4O2NvbG9yOiNjOWNmZDY7cGFkZGluZzowIDFweDt1c2VyLXNlbGVjdDpub25lfSIrCiIuY2xwLXNway1zdGFyLm9ue2NvbG9yOiNmMGE3MWJ9IisKIi5jbHAtc3BrLWVzdHttYXJnaW4tdG9wOjEwcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxZTdiM2V9IisKIi5jbHAtc3BrLWJhZGdle2Rpc3BsYXk6aW5saW5lLWJsb2NrO2JhY2tncm91bmQ6I2ZmZjNjZDtib3JkZXI6MXB4IHNvbGlkICNlOGQ0OGI7Y29sb3I6IzdhNWIxMjtib3JkZXItcmFkaXVzOjk5OXB4O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjcwMDtwYWRkaW5nOjNweCAxMnB4O21hcmdpbi1ib3R0b206MTBweH0iKwoiLmNscC1zcGstaW50cm8gdWx7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjc7cGFkZGluZy1sZWZ0OjIwcHh9IisKIi5jbHAtc3BrLWludHJvIGxpe21hcmdpbjo3cHggMH0iKwoiLmNscC1zcGstbWljcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7ZmxleC13cmFwOndyYXA7YmFja2dyb3VuZDojZjZmN2Y5O2JvcmRlcjoxcHggc29saWQgI2UwZTRlOTtib3JkZXItcmFkaXVzOjEwcHg7cGFkZGluZzoxM3B4IDE2cHg7bWFyZ2luOjE2cHggMH0iKwoiLmNscC1zcGstbWljc3R7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxMy41cHh9IisKIi5jbHAtc3BrLW1pY3N0Lm9re2NvbG9yOiMxZTdiM2V9LmNscC1zcGstbWljc3QuYmFke2NvbG9yOiNjNjI4Mjh9IisKIi5jbHAtc3BrLWVuZCB0YWJsZXtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7d2lkdGg6MTAwJTtmb250LXNpemU6MTRweH0iKwoiLmNscC1zcGstZW5kIHRkLC5jbHAtc3BrLWVuZCB0aHtwYWRkaW5nOjlweCA4cHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2VjZWZmMjt0ZXh0LWFsaWduOmxlZnR9IisKIi5jbHAtc3BrLWVuZCBhdWRpb3toZWlnaHQ6MzRweDttYXgtd2lkdGg6MjMwcHh9IisKIkBtZWRpYShtYXgtd2lkdGg6NzAwcHgpey5jbHAtc3BrLW9wdHN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcn0uY2xwLXNway1iYXIgLm17b3JkZXI6MzttYXJnaW4tbGVmdDowO3dpZHRoOjEwMCV9LmNscC1zcGstaGVybyBoMXtmb250LXNpemU6MjJweH0uY2xwLXNway1ib2R5e3BhZGRpbmc6MTRweCAxMnB4IDE4cHh9fSI7CnZhciBzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7IHN0LnRleHRDb250ZW50ID0gQ1NTOyBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0KTsKCi8qIC0tLS0tLS0tLS0gc3RhdGUgLS0tLS0tLS0tLSAqLwp2YXIgUyA9IHsKICBjdXI6IC0xLCAgICAgICAgICAgIC8qIC0xIGludHJvLCAwLi44IHRhc2tzLCA5OSBlbmQgKi8KICBtaWNTdGF0ZTogImlkbGUiLCAgIC8qIGlkbGV8b2t8YmFkICovCiAgc3RyZWFtOiBudWxsLCByZWNvcmRlcjogbnVsbCwgY2h1bmtzOiBbXSwKICB0aW1lcjogbnVsbCwgcGhhc2U6IHt9LCB0NWNob2ljZToge30sIHJlY3M6IHt9LCBydWJyaWM6IHt9LAogIG1pbWU6ICIiLCBleHQ6ICJ3ZWJtIgp9OwpELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCl7IFMucGhhc2VbdC5rXSA9IHQucGhhc2VkID8gImNob29zZS1pZGxlIiA6ICJpZGxlIjsgfSk7CgpmdW5jdGlvbiBwaWNrTWltZSgpewogIGlmKCF3aW5kb3cuTWVkaWFSZWNvcmRlcikgcmV0dXJuIG51bGw7CiAgdmFyIGNhbmRzID0gW1siYXVkaW8vd2VibTtjb2RlY3M9b3B1cyIsIndlYm0iXSxbImF1ZGlvL3dlYm0iLCJ3ZWJtIl0sWyJhdWRpby9tcDQiLCJtNGEiXSxbImF1ZGlvL29nZztjb2RlY3M9b3B1cyIsIm9nZyJdXTsKICBmb3IodmFyIGk9MDtpPGNhbmRzLmxlbmd0aDtpKyspeyB0cnl7IGlmKE1lZGlhUmVjb3JkZXIuaXNUeXBlU3VwcG9ydGVkKGNhbmRzW2ldWzBdKSkgcmV0dXJuIGNhbmRzW2ldOyB9Y2F0Y2goZSl7fSB9CiAgcmV0dXJuIFsiIiwid2VibSJdOwp9CmZ1bmN0aW9uIGVuc3VyZU1pYyhjYil7CiAgaWYoUy5taWNTdGF0ZT09PSJvayIpIHJldHVybiBjYih0cnVlKTsKICBpZihTLm1pY1N0YXRlPT09ImJhZCIpIHJldHVybiBjYihmYWxzZSk7CiAgaWYoIW5hdmlnYXRvci5tZWRpYURldmljZXMgfHwgIW5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhIHx8ICF3aW5kb3cuTWVkaWFSZWNvcmRlcil7IFMubWljU3RhdGU9ImJhZCI7IHJldHVybiBjYihmYWxzZSk7IH0KICBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0pLnRoZW4oZnVuY3Rpb24oc3RyZWFtKXsKICAgIFMuc3RyZWFtID0gc3RyZWFtOyB2YXIgbSA9IHBpY2tNaW1lKCk7IFMubWltZSA9IG1bMF07IFMuZXh0ID0gbVsxXTsgUy5taWNTdGF0ZT0ib2siOyBjYih0cnVlKTsKICB9KS5jYXRjaChmdW5jdGlvbigpeyBTLm1pY1N0YXRlPSJiYWQiOyBjYihmYWxzZSk7IH0pOwp9CmZ1bmN0aW9uIGJlZXAobil7CiAgdHJ5ewogICAgdmFyIGN0eCA9IHdpbmRvdy5fX2NscEFDID0gd2luZG93Ll9fY2xwQUMgfHwgbmV3ICh3aW5kb3cuQXVkaW9Db250ZXh0fHx3aW5kb3cud2Via2l0QXVkaW9Db250ZXh0KSgpOwogICAgdmFyIHQwID0gY3R4LmN1cnJlbnRUaW1lOwogICAgZm9yKHZhciBpPTA7aTxuO2krKyl7CiAgICAgIHZhciBvID0gY3R4LmNyZWF0ZU9zY2lsbGF0b3IoKSwgZyA9IGN0eC5jcmVhdGVHYWluKCk7CiAgICAgIG8uZnJlcXVlbmN5LnZhbHVlID0gODgwOyBvLmNvbm5lY3QoZyk7IGcuY29ubmVjdChjdHguZGVzdGluYXRpb24pOwogICAgICBnLmdhaW4uc2V0VmFsdWVBdFRpbWUoMC4wMDAxLHQwK2kqMC4yNSk7IGcuZ2Fpbi5leHBvbmVudGlhbFJhbXBUb1ZhbHVlQXRUaW1lKDAuMTgsdDAraSowLjI1KzAuMDIpOwogICAgICBnLmdhaW4uZXhwb25lbnRpYWxSYW1wVG9WYWx1ZUF0VGltZSgwLjAwMDEsdDAraSowLjI1KzAuMTgpOwogICAgICBvLnN0YXJ0KHQwK2kqMC4yNSk7IG8uc3RvcCh0MCtpKjAuMjUrMC4yKTsKICAgIH0KICB9Y2F0Y2goZSl7fQp9CmZ1bmN0aW9uIHN0b3BUaW1lcigpeyBpZihTLnRpbWVyKXsgY2xlYXJJbnRlcnZhbChTLnRpbWVyKTsgUy50aW1lcj1udWxsOyB9IH0KZnVuY3Rpb24gY291bnRkb3duKHNlY3MsIG9uVGljaywgb25FbmQpewogIHN0b3BUaW1lcigpOwogIHZhciBlbmQgPSBEYXRlLm5vdygpICsgc2VjcyoxMDAwOwogIG9uVGljayhzZWNzKTsKICBTLnRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgIHZhciBsZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5yb3VuZCgoZW5kLURhdGUubm93KCkpLzEwMDApKTsKICAgIG9uVGljayhsZWZ0KTsKICAgIGlmKGxlZnQ8PTApeyBzdG9wVGltZXIoKTsgb25FbmQoKTsgfQogIH0sIDI1MCk7Cn0KZnVuY3Rpb24gc3RvcFJlY29yZGluZygpewogIGlmKFMucmVjb3JkZXIgJiYgUy5yZWNvcmRlci5zdGF0ZSE9PSJpbmFjdGl2ZSIpeyB0cnl7IFMucmVjb3JkZXIuc3RvcCgpOyB9Y2F0Y2goZSl7fSB9CiAgUy5yZWNvcmRlciA9IG51bGw7Cn0KZnVuY3Rpb24gbGVhdmVDbGVhbnVwKCl7IHN0b3BUaW1lcigpOyBzdG9wUmVjb3JkaW5nKCk7IH0KCi8qIC0tLS0tLS0tLS0gaGVscGVycyAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGVsKHRhZywgY2xzLCBodG1sKXsgdmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOyBpZihjbHMpZS5jbGFzc05hbWU9Y2xzOyBpZihodG1sIT1udWxsKWUuaW5uZXJIVE1MPWh0bWw7IHJldHVybiBlOyB9CmZ1bmN0aW9uIGZtdE1ldGEodCl7CiAgaWYodC5waGFzZWQpIHJldHVybiAiIjsKICByZXR1cm4gIlByZXBhcmF0aW9uOiA8Yj4iK3QucHJlcCsiIHNlY29uZHM8L2I+ICZuYnNwO1JlY29yZGluZzogPGI+Iit0LnJlYysiIHNlY29uZHM8L2I+IjsKfQpmdW5jdGlvbiB0YXNrVGl0bGUodCl7CiAgaWYodC53YXJtdXApIHJldHVybiBELmhlYWRlcisiIC0gU3BlYWtpbmcgUHJhY3RpY2UgVGFzayI7CiAgcmV0dXJuIEQuaGVhZGVyKyIgLSBTcGVha2luZyBUYXNrICIrdC5udW0rIjogIit0LnR5cGVFbjsKfQpmdW5jdGlvbiBlc3RUZXh0KGF2Zyl7CiAgaWYoYXZnPj00LjUpIHJldHVybiAiQ0xCIDkrIjsgaWYoYXZnPj0zLjUpIHJldHVybiAiQ0xCIDdcdTIwMTM4IjsgaWYoYXZnPj0yLjUpIHJldHVybiAiQ0xCIDVcdTIwMTM2IjsgcmV0dXJuICJDTEIgNCBvciBiZWxvdyI7Cn0KCi8qIC0tLS0tLS0tLS0gcmVuZGVyIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gcmVuZGVyKCl7CiAgbGVhdmVDbGVhbnVwKCk7CiAgcm9vdC5pbm5lckhUTUwgPSAiIjsKICB2YXIgd3JhcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXdyYXAiKTsKICB3cmFwLmFwcGVuZENoaWxkKGhlcm8oKSk7CiAgaWYoUy5jdXI+PTAgJiYgUy5jdXI8RC50YXNrcy5sZW5ndGgpIHdyYXAuYXBwZW5kQ2hpbGQoY2hpcHMoKSk7CiAgaWYoUy5jdXI9PT0tMSkgd3JhcC5hcHBlbmRDaGlsZChpbnRybygpKTsKICBlbHNlIGlmKFMuY3VyPT09OTkpIHdyYXAuYXBwZW5kQ2hpbGQoZW5kU2NyZWVuKCkpOwogIGVsc2Ugd3JhcC5hcHBlbmRDaGlsZCh0YXNrUGFuZWwoRC50YXNrc1tTLmN1cl0pKTsKICByb290LmFwcGVuZENoaWxkKHdyYXApOwogIHRyeXsgd2luZG93LnNjcm9sbFRvKHt0b3A6IHJvb3Qub2Zmc2V0VG9wLTEwLCBiZWhhdmlvcjoic21vb3RoIn0pOyB9Y2F0Y2goZSl7fQp9CmZ1bmN0aW9uIGhlcm8oKXsKICB2YXIgaCA9IGVsKCJkaXYiLCJjbHAtc3BrLWhlcm8iKTsKICBoLmFwcGVuZENoaWxkKGVsKCJzcGFuIiwidGFnIixVLmhlcm9UYWcpKTsKICBoLmFwcGVuZENoaWxkKGVsKCJoMSIsbnVsbCxELnRpdGxlLnNwbGl0KCJcdTIwMTQiKVsxXSA\/ICJTcGVha2luZyBcdTIwMTQiK0QudGl0bGUuc3BsaXQoIlx1MjAxNCIpWzFdIDogRC50aXRsZSkpOwogIHZhciBtID0gZWwoImRpdiIsIm1ldGEiKTsKICBVLmhlcm9NZXRhLmZvckVhY2goZnVuY3Rpb24oeCl7IG0uYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwseCkpOyB9KTsKICBoLmFwcGVuZENoaWxkKG0pOwogIHJldHVybiBoOwp9CmZ1bmN0aW9uIGNoaXBzKCl7CiAgdmFyIGMgPSBlbCgiZGl2IiwiY2xwLXNway1jaGlwcyIpOwogIEQudGFza3MuZm9yRWFjaChmdW5jdGlvbih0LGkpewogICAgdmFyIGIgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1jaGlwIisoaT09PVMuY3VyPyIgY3VyIjooUy5yZWNzW3Qua10\/IiBkb25lIjoiIikpLCB0Lndhcm11cD8iVyI6U3RyaW5nKHQubnVtKSk7CiAgICBiLnRpdGxlID0gdC50eXBlRW47CiAgICBiLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBTLmN1cj1pOyByZW5kZXIoKTsgfTsKICAgIGMuYXBwZW5kQ2hpbGQoYik7CiAgfSk7CiAgdmFyIGUgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1jaGlwIisoUy5jdXI9PT05OT8iIGN1ciI6IiIpLCJcdWQ4M2NcdWRmYzEiKTsKICBlLnRpdGxlID0gIkZpbmlzaCI7IGUub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPTk5OyByZW5kZXIoKTsgfTsKICBjLmFwcGVuZENoaWxkKGUpOwogIHJldHVybiBjOwp9CmZ1bmN0aW9uIGludHJvKCl7CiAgdmFyIHAgPSBlbCgiZGl2IiwiY2xwLXNway1wYW5lbCBjbHAtc3BrLWludHJvIik7CiAgdmFyIGJhciA9IGVsKCJkaXYiLCJjbHAtc3BrLWJhciIpOwogIGJhci5hcHBlbmRDaGlsZChlbCgic3BhbiIsInQiLEQuaGVhZGVyKyIgLSBTcGVha2luZyIpKTsKICB2YXIgbnggPSBlbCgiYnV0dG9uIiwiY2xwLXNway1uZXh0IixVLm5leHQpOyBueC5zdHlsZS5tYXJnaW5MZWZ0PSJhdXRvIjsKICBueC5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9MDsgcmVuZGVyKCk7IH07CiAgYmFyLmFwcGVuZENoaWxkKG54KTsKICBwLmFwcGVuZENoaWxkKGJhcik7CiAgdmFyIGIgPSBlbCgiZGl2IiwiY2xwLXNway1ib2R5Iik7CiAgdmFyIHByID0gZWwoImRpdiIsImNscC1zcGstcHJvbXB0Iik7CiAgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJpIiwiaSIpKTsgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLG51bGwsIlNwZWFraW5nIFRlc3QgSW5zdHJ1Y3Rpb25zIikpOwogIGIuYXBwZW5kQ2hpbGQocHIpOwogIHZhciB1bCA9IGVsKCJ1bCIpOwogIFUuaW50cm9Ob3Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyB1bC5hcHBlbmRDaGlsZChlbCgibGkiLG51bGwseCkpOyB9KTsKICBiLmFwcGVuZENoaWxkKHVsKTsKICB2YXIgbWljcm93ID0gZWwoImRpdiIsImNscC1zcGstbWljcm93Iik7CiAgdmFyIG1idG4gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4gcHJpIixVLm1pY0VuYWJsZSk7CiAgdmFyIG1zdCA9IGVsKCJzcGFuIiwiY2xwLXNway1taWNzdCIsIiIpOwogIG1idG4ub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICBtYnRuLmRpc2FibGVkID0gdHJ1ZTsKICAgIGVuc3VyZU1pYyhmdW5jdGlvbihvayl7CiAgICAgIG1zdC5jbGFzc05hbWUgPSAiY2xwLXNway1taWNzdCAiKyhvaz8ib2siOiJiYWQiKTsKICAgICAgbXN0LmlubmVySFRNTCA9IG9rID8gIlx1MjcxNCAiK1UubWljUmVhZHkgOiAiXHUyNzE2ICIrVS5taWNCbG9ja2VkOwogICAgICBpZighb2spIG1idG4uZGlzYWJsZWQgPSBmYWxzZTsKICAgIH0pOwogIH07CiAgbWljcm93LmFwcGVuZENoaWxkKG1idG4pOyBtaWNyb3cuYXBwZW5kQ2hpbGQobXN0KTsKICBiLmFwcGVuZENoaWxkKG1pY3Jvdyk7CiAgYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIixVLm1pY05vdGUpKTsKICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgdmFyIGdvID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5zdGFydFRlc3QrIiBcdTI1YjYiKTsKICBnby5zdHlsZS5mb250U2l6ZT0iMTVweCI7IGdvLnN0eWxlLnBhZGRpbmc9IjEycHggMjZweCI7CiAgZ28ub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyPTA7IHJlbmRlcigpOyB9OwogIGN0ci5hcHBlbmRDaGlsZChnbyk7CiAgYi5hcHBlbmRDaGlsZChjdHIpOwogIHAuYXBwZW5kQ2hpbGQoYik7CiAgcmV0dXJuIHA7Cn0KCi8qIC0tLS0tLS0tLS0gdGFzayBwYW5lbCAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIHRhc2tQYW5lbCh0KXsKICB2YXIgcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBhbmVsIik7CiAgdmFyIGJhciA9IGVsKCJkaXYiLCJjbHAtc3BrLWJhciIpOwogIGJhci5hcHBlbmRDaGlsZChlbCgic3BhbiIsInQiLHRhc2tUaXRsZSh0KSkpOwogIHZhciBtZXRhID0gZWwoInNwYW4iLCJtIiwgdC5waGFzZWQgPyBwaGFzZWRNZXRhKHQpIDogZm10TWV0YSh0KSk7CiAgYmFyLmFwcGVuZENoaWxkKG1ldGEpOwogIHZhciBueCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLW5leHQiLFUubmV4dCk7CiAgbngub25jbGljayA9IGZ1bmN0aW9uKCl7IFMuY3VyID0gKFMuY3VyKzEgPCBELnRhc2tzLmxlbmd0aCkgPyBTLmN1cisxIDogOTk7IHJlbmRlcigpOyB9OwogIGJhci5hcHBlbmRDaGlsZChueCk7CiAgcC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciBiID0gZWwoImRpdiIsImNscC1zcGstYm9keSIpOwogIGlmKHQud2FybXVwKSBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWJhZGdlIixVLndhcm11cEJhZGdlKSk7CiAgaWYodC5waGFzZWQpIHJlbmRlclQ1KHQsYixtZXRhKTsKICBlbHNlIHJlbmRlclN0ZCh0LGIpOwogIGlmKHQudGlwcykgYi5hcHBlbmRDaGlsZChhY2NvcmRpb24odCkpOwogIHAuYXBwZW5kQ2hpbGQoYik7CiAgcmV0dXJuIHA7Cn0KZnVuY3Rpb24gcGhhc2VkTWV0YSh0KXsKICB2YXIgcGggPSBTLnBoYXNlW3Qua118fCIiOwogIGlmKHBoLmluZGV4T2YoImNob29zZSIpPT09MCkgcmV0dXJuICJQcmVwYXJhdGlvbjogPGI+Iit0LmNob29zZS5wcmVwKyIgc2Vjb25kczwvYj4iOwogIHJldHVybiAiUHJlcGFyYXRpb246IDxiPiIrdC5zcGVhay5wcmVwKyIgc2Vjb25kczwvYj4gJm5ic3A7UmVjb3JkaW5nOiA8Yj4iK3Quc3BlYWsucmVjKyIgc2Vjb25kczwvYj4iOwp9CmZ1bmN0aW9uIHByb21wdFJvdyh0ZXh0LCBsZWFkKXsKICB2YXIgYm94ID0gZWwoImRpdiIpOwogIGlmKGxlYWQpeyBib3guYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbGVhZCIsbGVhZCkpOyB9CiAgdmFyIHByID0gZWwoImRpdiIsImNscC1zcGstcHJvbXB0Iik7CiAgcHIuYXBwZW5kQ2hpbGQoZWwoInNwYW4iLCJpIiwiaSIpKTsKICBwci5hcHBlbmRDaGlsZChlbCgic3BhbiIsbnVsbCx0ZXh0KSk7CiAgYm94LmFwcGVuZENoaWxkKHByKTsKICByZXR1cm4gYm94Owp9CmZ1bmN0aW9uIHJlbmRlclN0ZCh0LGIpewogIGIuYXBwZW5kQ2hpbGQocHJvbXB0Um93KHQucHJvbXB0LCB0LnByb21wdExlYWQpKTsKICBpZih0LmNob29zZU9uZSl7CiAgICB2YXIgYyA9IGVsKCJkaXYiLCJjbHAtc3BrLWNob29zZTEiLCI8ZGl2IGNsYXNzPSdlJz5DaG9vc2UgT05FOjwvZGl2PjxkaXYgY2xhc3M9J2UnIHN0eWxlPSdtYXJnaW4tdG9wOjZweCc+RUlUSEVSPC9kaXY+PGRpdj4iK3QuY2hvb3NlT25lWzBdKyI8L2Rpdj48ZGl2IGNsYXNzPSdlJyBzdHlsZT0nbWFyZ2luLXRvcDo2cHgnPk9SPC9kaXY+PGRpdj4iK3QuY2hvb3NlT25lWzFdKyI8L2Rpdj4iKTsKICAgIGIuYXBwZW5kQ2hpbGQoYyk7CiAgfQogIGlmKHQuaW1nICYmIEQuaW1nc1t0LmltZ10pewogICAgdmFyIGltID0gZWwoImltZyIsImNscC1zcGstaW1nIik7IGltLnNyYyA9IEQuaW1nc1t0LmltZ107IGltLmFsdCA9IHQudHlwZUVuOwogICAgYi5hcHBlbmRDaGlsZChpbSk7CiAgfQogIGIuYXBwZW5kQ2hpbGQodGltZXJCbG9jayh0LmssIHQucHJlcCwgdC5yZWMsICJ0IikpOwp9CmZ1bmN0aW9uIHJlbmRlclQ1KHQsYixtZXRhRWwpewogIHZhciBwaCA9IFMucGhhc2VbdC5rXTsKICBpZihwaC5pbmRleE9mKCJjaG9vc2UiKT09PTApewogICAgYi5hcHBlbmRDaGlsZChwcm9tcHRSb3codC5jaG9vc2Uuc2l0dWF0aW9uKSk7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLHQuY2hvb3NlLm5vdGUpKTsKICAgIHZhciBncmlkID0gZWwoImRpdiIsImNscC1zcGstb3B0cyIpOwogICAgdC5jaG9vc2Uub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG8saWR4KXsKICAgICAgdmFyIGNhcmQgPSBlbCgiZGl2IiwiY2xwLXNway1jYXJkIisoUy50NWNob2ljZVt0LmtdPT09aWR4PyIgc2VsIjoiIikpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGltZ1RpdGxlQnVsbGV0cyhvKSk7CiAgICAgIHZhciBwayA9IGVsKCJkaXYiLCJwaWNrIiwgUy50NWNob2ljZVt0LmtdPT09aWR4ID8gIlx1MjcxNCBTZWxlY3RlZCIgOiAiIik7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQocGspOwogICAgICBjYXJkLm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICAgIFMudDVjaG9pY2VbdC5rXSA9IGlkeDsKICAgICAgICBncmlkLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLWNhcmQiKS5mb3JFYWNoKGZ1bmN0aW9uKGNkLGopewogICAgICAgICAgY2QuY2xhc3NOYW1lID0gImNscC1zcGstY2FyZCIrKGo9PT1pZHg\/IiBzZWwiOiIiKTsKICAgICAgICAgIGNkLnF1ZXJ5U2VsZWN0b3IoIi5waWNrIikudGV4dENvbnRlbnQgPSAoaj09PWlkeCk\/Ilx1MjcxNCBTZWxlY3RlZCI6IiI7CiAgICAgICAgfSk7CiAgICAgICAgY2J0bi5zdHlsZS5kaXNwbGF5ID0gImlubGluZS1ibG9jayI7CiAgICAgIH07CiAgICAgIGdyaWQuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIGIuYXBwZW5kQ2hpbGQoZ3JpZCk7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLWhpbnQiLFUuY2hvb3NlSGludCkpOwogICAgLyogY291bnRkb3duIGZvciBjaG9vc2UgcGhhc2UgKi8KICAgIHZhciB0cm93ID0gZWwoImRpdiIsImNscC1zcGstdGltZXJyb3ciKTsKICAgIHZhciB0bSA9IGVsKCJkaXYiLCJjbHAtc3BrLXRpbWVyIik7CiAgICB0bS5hcHBlbmRDaGlsZChlbCgic3BhbiIsImljIiwiXHVkODNkXHVkZDUyIikpOwogICAgdmFyIGxiID0gZWwoImRpdiIpOyBsYi5hcHBlbmRDaGlsZChlbCgiZGl2IiwibGIiLFUucHJlcFRpdGxlKSk7CiAgICB0bS5hcHBlbmRDaGlsZChsYik7CiAgICB2YXIgbiA9IGVsKCJzcGFuIiwibiIsU3RyaW5nKHQuY2hvb3NlLnByZXApKTsKICAgIHRtLmFwcGVuZENoaWxkKG4pOwogICAgdHJvdy5hcHBlbmRDaGlsZCh0bSk7CiAgICBiLmFwcGVuZENoaWxkKHRyb3cpOwogICAgdmFyIGN0ciA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogICAgdmFyIHN0YXJ0ID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5zdGFydFByZXApOwogICAgdmFyIGNidG4gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLFUuY29uZmlybUNob2ljZSk7CiAgICBjYnRuLnN0eWxlLmRpc3BsYXkgPSAoUy50NWNob2ljZVt0LmtdIT1udWxsKT8iaW5saW5lLWJsb2NrIjoibm9uZSI7CiAgICB2YXIgZ29TcGVhayA9IGZ1bmN0aW9uKCl7CiAgICAgIHN0b3BUaW1lcigpOwogICAgICBpZihTLnQ1Y2hvaWNlW3Qua109PW51bGwpIFMudDVjaG9pY2VbdC5rXSA9IDA7CiAgICAgIFMucGhhc2VbdC5rXSA9ICJzcGVhayI7CiAgICAgIHJlbmRlcigpOwogICAgfTsKICAgIHN0YXJ0Lm9uY2xpY2sgPSBmdW5jdGlvbigpewogICAgICBzdGFydC5kaXNhYmxlZCA9IHRydWU7CiAgICAgIFMucGhhc2VbdC5rXSA9ICJjaG9vc2UtcnVuIjsKICAgICAgY291bnRkb3duKHQuY2hvb3NlLnByZXAsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50ID0gU3RyaW5nKGxlZnQpOyB9LCBnb1NwZWFrKTsKICAgIH07CiAgICBjYnRuLm9uY2xpY2sgPSBnb1NwZWFrOwogICAgY3RyLmFwcGVuZENoaWxkKHN0YXJ0KTsgY3RyLmFwcGVuZENoaWxkKGNidG4pOwogICAgYi5hcHBlbmRDaGlsZChjdHIpOwogICAgaWYoUy5waGFzZVt0LmtdPT09ImNob29zZS1ydW4iKXsKICAgICAgc3RhcnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICBjb3VudGRvd24odC5jaG9vc2UucHJlcCwgZnVuY3Rpb24obGVmdCl7IG4udGV4dENvbnRlbnQ9U3RyaW5nKGxlZnQpOyB9LCBnb1NwZWFrKTsKICAgIH0KICB9IGVsc2UgewogICAgbWV0YUVsLmlubmVySFRNTCA9IHBoYXNlZE1ldGEodCk7CiAgICBiLmFwcGVuZENoaWxkKHByb21wdFJvdyh0LnNwZWFrLnByb21wdCkpOwogICAgdmFyIGdyaWQgPSBlbCgiZGl2IiwiY2xwLXNway1vcHRzIik7CiAgICB2YXIgb3RoZXIgPSBlbCgiZGl2IiwiY2xwLXNway1jYXJkIHBsYWluIik7CiAgICBvdGhlci5hcHBlbmRDaGlsZChlbCgiZGl2IiwiaGQiLHQuc3BlYWsub3RoZXJMYWJlbCkpOwogICAgb3RoZXIuYXBwZW5kQ2hpbGQoaW1nVGl0bGVCdWxsZXRzKHQuc3BlYWsub3RoZXIpKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQob3RoZXIpOwogICAgdmFyIGNob3NlbiA9IHQuY2hvb3NlLm9wdGlvbnNbUy50NWNob2ljZVt0LmtdIT1udWxsID8gUy50NWNob2ljZVt0LmtdIDogMF07CiAgICB2YXIgbWluZSA9IGVsKCJkaXYiLCJjbHAtc3BrLWNhcmQgcGxhaW4gc2VsIik7CiAgICBtaW5lLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJoZCIsVS55b3VyQ2hvaWNlKSk7CiAgICBtaW5lLmFwcGVuZENoaWxkKGltZ1RpdGxlQnVsbGV0cyhjaG9zZW4pKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQobWluZSk7CiAgICBiLmFwcGVuZENoaWxkKGdyaWQpOwogICAgYi5hcHBlbmRDaGlsZCh0aW1lckJsb2NrKHQuaywgdC5zcGVhay5wcmVwLCB0LnNwZWFrLnJlYywgInQ1cyIpKTsKICB9Cn0KZnVuY3Rpb24gaW1nVGl0bGVCdWxsZXRzKG8pewogIHZhciBib3ggPSBlbCgiZGl2Iik7CiAgaWYoby5pbWcgJiYgRC5pbWdzW28uaW1nXSl7IHZhciBpbSA9IGVsKCJpbWciKTsgaW0uc3JjID0gRC5pbWdzW28uaW1nXTsgaW0uYWx0ID0gby50aXRsZTsgYm94LmFwcGVuZENoaWxkKGltKTsgfQogIGJveC5hcHBlbmRDaGlsZChlbCgiZGl2IiwidHQiLG8udGl0bGUpKTsKICB2YXIgdWwgPSBlbCgidWwiKTsKICBvLmJ1bGxldHMuZm9yRWFjaChmdW5jdGlvbih4KXsgdWwuYXBwZW5kQ2hpbGQoZWwoImxpIixudWxsLHgpKTsgfSk7CiAgYm94LmFwcGVuZENoaWxkKHVsKTsKICByZXR1cm4gYm94Owp9CgovKiAtLS0tLS0tLS0tIHByZXAvcmVjb3JkIGJsb2NrIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gdGltZXJCbG9jayhrZXksIHByZXBTZWNzLCByZWNTZWNzLCBtb2RlKXsKICB2YXIgYm94ID0gZWwoImRpdiIpOwogIHZhciB0cm93ID0gZWwoImRpdiIsImNscC1zcGstdGltZXJyb3ciKTsKICB2YXIgdG0gPSBlbCgiZGl2IiwiY2xwLXNway10aW1lciIpOwogIHZhciBpYyA9IGVsKCJzcGFuIiwiaWMiLCJcdWQ4M2RcdWRkNTIiKTsKICB2YXIgbGIgPSBlbCgiZGl2Iik7IHZhciBsYnQgPSBlbCgiZGl2IiwibGIiLFUucHJlcFRpdGxlKTsgbGIuYXBwZW5kQ2hpbGQobGJ0KTsKICB2YXIgbiA9IGVsKCJzcGFuIiwibiIsU3RyaW5nKHByZXBTZWNzKSk7CiAgdG0uYXBwZW5kQ2hpbGQoaWMpOyB0bS5hcHBlbmRDaGlsZChsYik7IHRtLmFwcGVuZENoaWxkKG4pOwogIHRyb3cuYXBwZW5kQ2hpbGQodG0pOyBib3guYXBwZW5kQ2hpbGQodHJvdyk7CiAgdmFyIHNwZWFrbm93ID0gZWwoImRpdiIsImNscC1zcGstc3BlYWtub3ciLCIiKTsgYm94LmFwcGVuZENoaWxkKHNwZWFrbm93KTsKICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7IGJveC5hcHBlbmRDaGlsZChjdHIpOwogIHZhciByZXZpZXdTbG90ID0gZWwoImRpdiIpOyBib3guYXBwZW5kQ2hpbGQocmV2aWV3U2xvdCk7CiAgdmFyIG1pY25vdGUgPSBlbCgiZGl2Iik7IGJveC5hcHBlbmRDaGlsZChtaWNub3RlKTsKCiAgZnVuY3Rpb24gc2hvd0lkbGUoKXsKICAgIGN0ci5pbm5lckhUTUwgPSAiIjsgc3BlYWtub3cudGV4dENvbnRlbnQgPSAiIjsKICAgIHRtLmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRpbWVyIjsgbGJ0LnRleHRDb250ZW50ID0gVS5wcmVwVGl0bGU7IGljLnRleHRDb250ZW50ID0gIlx1ZDgzZFx1ZGQ1MiI7IG4udGV4dENvbnRlbnQgPSBTdHJpbmcocHJlcFNlY3MpOwogICAgdmFyIHN0YXJ0ID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIHByaSIsVS5zdGFydFByZXApOwogICAgc3RhcnQub25jbGljayA9IHN0YXJ0UHJlcDsKICAgIGN0ci5hcHBlbmRDaGlsZChzdGFydCk7CiAgICBpZihTLnJlY3Nba2V5XSkgc2hvd1JldmlldyhmYWxzZSk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UHJlcCgpewogICAgZW5zdXJlTWljKGZ1bmN0aW9uKCl7CiAgICAgIGN0ci5pbm5lckhUTUwgPSAiIjsKICAgICAgdmFyIHNraXAgPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLFUuc2tpcFByZXApOwogICAgICBza2lwLm9uY2xpY2sgPSBmdW5jdGlvbigpeyBzdG9wVGltZXIoKTsgc3RhcnRSZWMoKTsgfTsKICAgICAgY3RyLmFwcGVuZENoaWxkKHNraXApOwogICAgICBjb3VudGRvd24ocHJlcFNlY3MsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50ID0gU3RyaW5nKGxlZnQpOyB9LCBmdW5jdGlvbigpeyBzdGFydFJlYygpOyB9KTsKICAgIH0pOwogIH0KICBmdW5jdGlvbiBzdGFydFJlYygpewogICAgYmVlcCgyKTsKICAgIHRtLmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRpbWVyIHJlYyI7CiAgICBpYy5pbm5lckhUTUwgPSAiPHNwYW4gY2xhc3M9J2NscC1zcGstZG90Jz48L3NwYW4+IjsKICAgIG4udGV4dENvbnRlbnQgPSBTdHJpbmcocmVjU2Vjcyk7CiAgICBjdHIuaW5uZXJIVE1MID0gIiI7CiAgICB2YXIgc3RvcHBlZCA9IGZhbHNlOwogICAgdmFyIGhhdmVNaWMgPSAoUy5taWNTdGF0ZT09PSJvayIgJiYgUy5zdHJlYW0pOwogICAgbGJ0LnRleHRDb250ZW50ID0gaGF2ZU1pYyA\/IFUucmVjVGl0bGUgOiBVLnRpbWVyT25seTsKICAgIHNwZWFrbm93LnRleHRDb250ZW50ID0gVS5zcGVha05vdzsKICAgIG1pY25vdGUuaW5uZXJIVE1MID0gaGF2ZU1pYyA\/ICIiIDogIjxkaXYgY2xhc3M9J2NscC1zcGstbWljJz4iK1UubWljQmxvY2tlZCsiPC9kaXY+IjsKICAgIHZhciB0MCA9IERhdGUubm93KCk7CiAgICB2YXIgZmluaXNoID0gZnVuY3Rpb24oKXsKICAgICAgaWYoc3RvcHBlZCkgcmV0dXJuOyBzdG9wcGVkID0gdHJ1ZTsKICAgICAgc3RvcFRpbWVyKCk7IGJlZXAoMSk7CiAgICAgIHNwZWFrbm93LnRleHRDb250ZW50ID0gIiI7CiAgICAgIHZhciBzZWNzID0gTWF0aC5taW4ocmVjU2VjcywgTWF0aC5yb3VuZCgoRGF0ZS5ub3coKS10MCkvMTAwMCkpOwogICAgICBpZihoYXZlTWljICYmIFMucmVjb3JkZXIpewogICAgICAgIFMucmVjb3JkZXIub25zdG9wID0gZnVuY3Rpb24oKXsKICAgICAgICAgIHZhciBibG9iID0gbmV3IEJsb2IoUy5jaHVua3MsIFMubWltZT97dHlwZTpTLm1pbWV9OnVuZGVmaW5lZCk7CiAgICAgICAgICBpZihTLnJlY3Nba2V5XSAmJiBTLnJlY3Nba2V5XS51cmwpeyB0cnl7IFVSTC5yZXZva2VPYmplY3RVUkwoUy5yZWNzW2tleV0udXJsKTsgfWNhdGNoKGUpe30gfQogICAgICAgICAgUy5yZWNzW2tleV0gPSB7IGJsb2I6IGJsb2IsIHVybDogVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSwgc2Vjczogc2VjcyB9OwogICAgICAgICAgUy5yZWNvcmRlciA9IG51bGw7CiAgICAgICAgICBzaG93SWRsZSgpOyBzaG93UmV2aWV3KHRydWUpOwogICAgICAgIH07CiAgICAgICAgdHJ5eyBTLnJlY29yZGVyLnN0b3AoKTsgfWNhdGNoKGUpeyBTLnJlY3Nba2V5XSA9IHtibG9iOm51bGwsdXJsOm51bGwsc2VjczpzZWNzfTsgc2hvd0lkbGUoKTsgc2hvd1Jldmlldyh0cnVlKTsgfQogICAgICB9IGVsc2UgewogICAgICAgIFMucmVjc1trZXldID0geyBibG9iOm51bGwsIHVybDpudWxsLCBzZWNzOiBzZWNzIH07CiAgICAgICAgc2hvd0lkbGUoKTsgc2hvd1Jldmlldyh0cnVlKTsKICAgICAgfQogICAgfTsKICAgIGlmKGhhdmVNaWMpewogICAgICBTLmNodW5rcyA9IFtdOwogICAgICB0cnl7CiAgICAgICAgUy5yZWNvcmRlciA9IFMubWltZSA\/IG5ldyBNZWRpYVJlY29yZGVyKFMuc3RyZWFtLHttaW1lVHlwZTpTLm1pbWV9KSA6IG5ldyBNZWRpYVJlY29yZGVyKFMuc3RyZWFtKTsKICAgICAgICBTLnJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IGZ1bmN0aW9uKGV2KXsgaWYoZXYuZGF0YSAmJiBldi5kYXRhLnNpemUpIFMuY2h1bmtzLnB1c2goZXYuZGF0YSk7IH07CiAgICAgICAgUy5yZWNvcmRlci5zdGFydCgpOwogICAgICB9Y2F0Y2goZSl7IFMucmVjb3JkZXIgPSBudWxsOyBoYXZlTWljID0gZmFsc2U7IGxidC50ZXh0Q29udGVudCA9IFUudGltZXJPbmx5OyB9CiAgICB9CiAgICB2YXIgc3RvcCA9IGVsKCJidXR0b24iLCJjbHAtc3BrLWJ0biB3YXJuIixVLnN0b3BSZWMpOwogICAgc3RvcC5vbmNsaWNrID0gZmluaXNoOwogICAgY3RyLmFwcGVuZENoaWxkKHN0b3ApOwogICAgY291bnRkb3duKHJlY1NlY3MsIGZ1bmN0aW9uKGxlZnQpeyBuLnRleHRDb250ZW50ID0gU3RyaW5nKGxlZnQpOyB9LCBmaW5pc2gpOwogIH0KICBmdW5jdGlvbiBzaG93UmV2aWV3KHNjcm9sbFRvKXsKICAgIHZhciByID0gUy5yZWNzW2tleV07IGlmKCFyKSByZXR1cm47CiAgICByZXZpZXdTbG90LmlubmVySFRNTCA9ICIiOwogICAgdmFyIHJ2ID0gZWwoImRpdiIsImNscC1zcGstcmV2aWV3Iik7CiAgICBydi5hcHBlbmRDaGlsZChlbCgiZGl2Iiwib2siLCJcdTI3MTQgIitVLnJlY29yZGVkKyIgKCIrci5zZWNzKyJzKSIpKTsKICAgIGlmKHIudXJsKXsKICAgICAgdmFyIGF1ID0gZWwoImF1ZGlvIik7IGF1LmNvbnRyb2xzID0gdHJ1ZTsgYXUuc3JjID0gci51cmw7CiAgICAgIHJ2LmFwcGVuZENoaWxkKGF1KTsKICAgICAgdmFyIHJvdyA9IGVsKCJkaXYiLCJjbHAtc3BrLWN0ciIpOwogICAgICB2YXIgZGwgPSBlbCgiYSIsImNscC1zcGstYnRuIixVLmRvd25sb2FkKTsKICAgICAgZGwuaHJlZiA9IHIudXJsOyBkbC5kb3dubG9hZCA9ICJjZWxwaXAtcyIrRC5zZXQrInQiK0QudGVzdCsiLXRhc2siKyhrZXk9PT0idyI\/IjAiOmtleS5yZXBsYWNlKCJ0IiwiIikpKyIuIitTLmV4dDsKICAgICAgcm93LmFwcGVuZENoaWxkKGRsKTsKICAgICAgcnYuYXBwZW5kQ2hpbGQocm93KTsKICAgIH0KICAgIHJldmlld1Nsb3QuYXBwZW5kQ2hpbGQocnYpOwogICAgaWYoc2Nyb2xsVG8peyB0cnl7IHJ2LnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoiY2VudGVyIn0pOyB9Y2F0Y2goZSl7fSB9CiAgfQogIHNob3dJZGxlKCk7CiAgcmV0dXJuIGJveDsKfQoKLyogLS0tLS0tLS0tLSB0aXBzL3NhbXBsZXMgYWNjb3JkaW9uIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gYWNjb3JkaW9uKHQpewogIHZhciBhY2MgPSBlbCgiZGl2IiwiY2xwLXNway1hY2MiKTsKICB2YXIgYnRuID0gZWwoImJ1dHRvbiIsbnVsbCxVLnRpcHNUb2dnbGUpOwogIGJ0bi5vbmNsaWNrID0gZnVuY3Rpb24oKXsgYWNjLmNsYXNzTmFtZSA9IGFjYy5jbGFzc05hbWUuaW5kZXhPZigib3BlbiIpPi0xID8gImNscC1zcGstYWNjIiA6ICJjbHAtc3BrLWFjYyBvcGVuIjsgfTsKICBhY2MuYXBwZW5kQ2hpbGQoYnRuKTsKICB2YXIgYm9keSA9IGVsKCJkaXYiLCJjbHAtc3BrLWFjY2JvZHkiKTsKICB2YXIgdGFicyA9IGVsKCJkaXYiLCJjbHAtc3BrLXRhYnMiKTsKICB2YXIgcGFuZXMgPSBbXTsKICBmdW5jdGlvbiBhZGRUYWIobGFiZWwsIHBhbmVCdWlsZGVyKXsKICAgIHZhciBpID0gcGFuZXMubGVuZ3RoOwogICAgdmFyIHRiID0gZWwoImJ1dHRvbiIsImNscC1zcGstdGFiIisoaT09PTA\/IiBvbiI6IiIpLGxhYmVsKTsKICAgIHZhciBwbiA9IGVsKCJkaXYiLCJjbHAtc3BrLXRhYnBhbmUiKyhpPT09MD8iIG9uIjoiIikpOwogICAgcGFuZUJ1aWxkZXIocG4pOwogICAgdGIub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgIHRhYnMucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstdGFiIikuZm9yRWFjaChmdW5jdGlvbih4LGopeyB4LmNsYXNzTmFtZSA9ICJjbHAtc3BrLXRhYiIrKGo9PT1pPyIgb24iOiIiKTsgfSk7CiAgICAgIGJvZHkucXVlcnlTZWxlY3RvckFsbCgiLmNscC1zcGstdGFicGFuZSIpLmZvckVhY2goZnVuY3Rpb24oeCxqKXsgeC5jbGFzc05hbWUgPSAiY2xwLXNway10YWJwYW5lIisoaj09PWk\/IiBvbiI6IiIpOyB9KTsKICAgIH07CiAgICB0YWJzLmFwcGVuZENoaWxkKHRiKTsgcGFuZXMucHVzaChwbik7CiAgfQogIGFkZFRhYihVLnRhYlRpcHMsIGZ1bmN0aW9uKHBuKXsKICAgIHZhciB1bCA9IGVsKCJ1bCIpOwogICAgdC50aXBzLmJ1bGxldHMuZm9yRWFjaChmdW5jdGlvbih4KXsgdWwuYXBwZW5kQ2hpbGQoZWwoImxpIixudWxsLHgpKTsgfSk7CiAgICBwbi5hcHBlbmRDaGlsZCh1bCk7CiAgICBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IixudWxsLCI8Yj4iK1UudXNlZnVsUGhyYXNlcysiOjwvYj4iKSk7CiAgICB2YXIgcGggPSBlbCgiZGl2IiwiY2xwLXNway1waHIiKTsKICAgIHQudGlwcy5waHJhc2VzLmZvckVhY2goZnVuY3Rpb24oeCl7IHBoLmFwcGVuZENoaWxkKGVsKCJzcGFuIixudWxsLHgpKTsgfSk7CiAgICBwbi5hcHBlbmRDaGlsZChwaCk7CiAgfSk7CiAgaWYodC5zNikgYWRkVGFiKFUudGFiUzYsIGZ1bmN0aW9uKHBuKXsgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstc2FtcGxlIHM2Iix0LnM2KSk7IH0pOwogIGlmKHQuczkpIGFkZFRhYihVLnRhYlM5LCBmdW5jdGlvbihwbil7IHBuLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLXNhbXBsZSIsdC5zOSkpOyB9KTsKICBpZighdC53YXJtdXApIGFkZFRhYihVLnRhYlJ1YnJpYywgZnVuY3Rpb24ocG4pewogICAgcG4uYXBwZW5kQ2hpbGQoZWwoImRpdiIsbnVsbCxVLnJ1YnJpY05vdGUpKTsKICAgIHZhciB0YiA9IGVsKCJ0YWJsZSIsImNscC1zcGstcnViIik7CiAgICBpZighUy5ydWJyaWNbdC5rXSkgUy5ydWJyaWNbdC5rXSA9IFswLDAsMCwwXTsKICAgIHZhciBlc3REID0gZWwoImRpdiIsImNscC1zcGstZXN0IiwiIik7CiAgICBVLnJ1YnJpY0NyaXQuZm9yRWFjaChmdW5jdGlvbihjcixjaSl7CiAgICAgIHZhciB0ciA9IGVsKCJ0ciIpOwogICAgICB0ci5hcHBlbmRDaGlsZChlbCgidGQiLG51bGwsY3IpKTsKICAgICAgdmFyIHRkID0gZWwoInRkIik7IHRkLnN0eWxlLndoaXRlU3BhY2UgPSAibm93cmFwIjsgdGQuc3R5bGUudGV4dEFsaWduID0gInJpZ2h0IjsKICAgICAgZm9yKHZhciBzMj0xO3MyPD01O3MyKyspewogICAgICAgIChmdW5jdGlvbihzdil7CiAgICAgICAgICB2YXIgc3AgPSBlbCgic3BhbiIsImNscC1zcGstc3RhciIrKFMucnVicmljW3Qua11bY2ldPj1zdj8iIG9uIjoiIiksIlx1MjYwNSIpOwogICAgICAgICAgc3Aub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgIFMucnVicmljW3Qua11bY2ldID0gc3Y7CiAgICAgICAgICAgIHRkLnF1ZXJ5U2VsZWN0b3JBbGwoIi5jbHAtc3BrLXN0YXIiKS5mb3JFYWNoKGZ1bmN0aW9uKHgsail7IHguY2xhc3NOYW1lID0gImNscC1zcGstc3RhciIrKGo8c3Y\/IiBvbiI6IiIpOyB9KTsKICAgICAgICAgICAgdXBkKCk7CiAgICAgICAgICB9OwogICAgICAgICAgdGQuYXBwZW5kQ2hpbGQoc3ApOwogICAgICAgIH0pKHMyKTsKICAgICAgfQogICAgICB0ci5hcHBlbmRDaGlsZCh0ZCk7CiAgICAgIHRiLmFwcGVuZENoaWxkKHRyKTsKICAgIH0pOwogICAgcG4uYXBwZW5kQ2hpbGQodGIpOwogICAgcG4uYXBwZW5kQ2hpbGQoZXN0RCk7CiAgICBwbi5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLXNway1ub3RlIixVLmVzdERpc2NsYWltZXIpKTsKICAgIGZ1bmN0aW9uIHVwZCgpewogICAgICB2YXIgYXJyID0gUy5ydWJyaWNbdC5rXTsgdmFyIGRvbmUgPSBhcnIuZXZlcnkoZnVuY3Rpb24oeCl7cmV0dXJuIHg+MDt9KTsKICAgICAgZXN0RC50ZXh0Q29udGVudCA9IGRvbmUgPyAoVS5lc3RpbWF0ZSsiICIrZXN0VGV4dChhcnIucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGErYjt9LDApLzQpKSA6ICIiOwogICAgfQogICAgdXBkKCk7CiAgfSk7CiAgYm9keS5pbnNlcnRCZWZvcmUodGFicywgYm9keS5maXJzdENoaWxkKTsKICBwYW5lcy5mb3JFYWNoKGZ1bmN0aW9uKHBuKXsgYm9keS5hcHBlbmRDaGlsZChwbik7IH0pOwogIGFjYy5hcHBlbmRDaGlsZChib2R5KTsKICByZXR1cm4gYWNjOwp9CgovKiAtLS0tLS0tLS0tIGVuZCBzY3JlZW4gLS0tLS0tLS0tLSAqLwpmdW5jdGlvbiBlbmRTY3JlZW4oKXsKICB2YXIgcCA9IGVsKCJkaXYiLCJjbHAtc3BrLXBhbmVsIGNscC1zcGstZW5kIik7CiAgdmFyIGJhciA9IGVsKCJkaXYiLCJjbHAtc3BrLWJhciIpOwogIGJhci5hcHBlbmRDaGlsZChlbCgic3BhbiIsInQiLEQuaGVhZGVyKyIgLSBTcGVha2luZyBcdTIwMTQgIitVLmVuZFRpdGxlKSk7CiAgcC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciBiID0gZWwoImRpdiIsImNscC1zcGstYm9keSIpOwogIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsbnVsbCwiPGI+IitVLmVuZFRpdGxlKyI8L2I+ICIrVS5lbmRTdWIpKTsKICB2YXIgdGIgPSBlbCgidGFibGUiKTsKICB2YXIgdGhyID0gZWwoInRyIik7IFsiVGFzayIsIlR5cGUiLCJSZWNvcmRpbmciLCIiXS5mb3JFYWNoKGZ1bmN0aW9uKGgpeyB0aHIuYXBwZW5kQ2hpbGQoZWwoInRoIixudWxsLGgpKTsgfSk7CiAgdGIuYXBwZW5kQ2hpbGQodGhyKTsKICB2YXIgbnJlYyA9IDA7CiAgRC50YXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHQsaSl7CiAgICB2YXIgdHIgPSBlbCgidHIiKTsKICAgIHRyLmFwcGVuZENoaWxkKGVsKCJ0ZCIsbnVsbCwiPGI+IisodC53YXJtdXA\/IlciOnQubnVtKSsiPC9iPiIpKTsKICAgIHRyLmFwcGVuZENoaWxkKGVsKCJ0ZCIsbnVsbCx0LnR5cGVFbikpOwogICAgdmFyIHIgPSBTLnJlY3NbdC5rXTsKICAgIHZhciB0ZCA9IGVsKCJ0ZCIpOwogICAgaWYociAmJiByLnVybCl7IG5yZWMrKzsgdmFyIGF1ID0gZWwoImF1ZGlvIik7IGF1LmNvbnRyb2xzID0gdHJ1ZTsgYXUuc3JjID0gci51cmw7IHRkLmFwcGVuZENoaWxkKGF1KTsgfQogICAgZWxzZSBpZihyKXsgbnJlYysrOyB0ZC50ZXh0Q29udGVudCA9IHIuc2VjcysicyAoIitVLnRpbWVyT25seSsiKSI7IH0KICAgIGVsc2UgdGQuaW5uZXJIVE1MID0gIjxzcGFuIHN0eWxlPSdjb2xvcjojYzYyODI4Jz4iK1UuZW5kTm9SZWMrIjwvc3Bhbj4iOwogICAgdHIuYXBwZW5kQ2hpbGQodGQpOwogICAgdmFyIHRkMiA9IGVsKCJ0ZCIpOwogICAgdmFyIGdvID0gZWwoImJ1dHRvbiIsImNscC1zcGstYnRuIiwiXHUyMTkyIik7CiAgICBnby5vbmNsaWNrID0gZnVuY3Rpb24oKXsgUy5jdXI9aTsgcmVuZGVyKCk7IH07CiAgICB0ZDIuYXBwZW5kQ2hpbGQoZ28pOwogICAgdHIuYXBwZW5kQ2hpbGQodGQyKTsKICAgIHRiLmFwcGVuZENoaWxkKHRyKTsKICB9KTsKICBiLmFwcGVuZENoaWxkKHRiKTsKICAvKiBydWJyaWMgYXZnICovCiAgdmFyIHZhbHMgPSBbXTsKICBPYmplY3Qua2V5cyhTLnJ1YnJpYykuZm9yRWFjaChmdW5jdGlvbihrKXsgdmFyIGE9Uy5ydWJyaWNba107IGlmKGEgJiYgYS5ldmVyeShmdW5jdGlvbih4KXtyZXR1cm4geD4wO30pKSB2YWxzLnB1c2goYS5yZWR1Y2UoZnVuY3Rpb24oeCx5KXtyZXR1cm4geCt5O30sMCkvNCk7IH0pOwogIGlmKHZhbHMubGVuZ3RoKXsKICAgIHZhciBhdmcgPSB2YWxzLnJlZHVjZShmdW5jdGlvbihhLGMpe3JldHVybiBhK2M7fSwwKS92YWxzLmxlbmd0aDsKICAgIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstZXN0IixVLmVzdGltYXRlKyIgIitlc3RUZXh0KGF2ZykrIiAoIit2YWxzLmxlbmd0aCsiIHRhc2socykgc2VsZi1yYXRlZCkiKSk7CiAgICBiLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtc3BrLW5vdGUiLFUuZXN0RGlzY2xhaW1lcikpOwogIH0KICB2YXIgY3RyID0gZWwoImRpdiIsImNscC1zcGstY3RyIik7CiAgdmFyIHJlZG8gPSBlbCgiYnV0dG9uIiwiY2xwLXNway1idG4iLFUuZW5kUmVkbyk7CiAgcmVkby5vbmNsaWNrID0gZnVuY3Rpb24oKXsKICAgIE9iamVjdC5rZXlzKFMucmVjcykuZm9yRWFjaChmdW5jdGlvbihrKXsgaWYoUy5yZWNzW2tdJiZTLnJlY3Nba10udXJsKXsgdHJ5e1VSTC5yZXZva2VPYmplY3RVUkwoUy5yZWNzW2tdLnVybCk7fWNhdGNoKGUpe30gfSB9KTsKICAgIFMucmVjcyA9IHt9OyBTLnJ1YnJpYyA9IHt9OyBTLnQ1Y2hvaWNlID0ge307CiAgICBELnRhc2tzLmZvckVhY2goZnVuY3Rpb24odCl7IFMucGhhc2VbdC5rXSA9IHQucGhhc2VkPyJjaG9vc2UtaWRsZSI6ImlkbGUiOyB9KTsKICAgIFMuY3VyID0gLTE7IHJlbmRlcigpOwogIH07CiAgdmFyIHQyID0gZWwoImEiLCJjbHAtc3BrLWJ0biBwcmkiLFUuZW5kVDIrIiAiKyhELnRlc3Q9PT0xPzI6MSkrIiBcdTIxOTIiKTsgdDIuaHJlZiA9IEQub3RoZXJVcmw7CiAgdmFyIGh1YiA9IGVsKCJhIiwiY2xwLXNway1idG4iLFUuZW5kSHViKTsgaHViLmhyZWYgPSAiL2NlbHBpcC8iOwogIGN0ci5hcHBlbmRDaGlsZChyZWRvKTsgY3RyLmFwcGVuZENoaWxkKHQyKTsgY3RyLmFwcGVuZENoaWxkKGh1Yik7CiAgYi5hcHBlbmRDaGlsZChjdHIpOwogIGIuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1zcGstbWljIixVLm1pY05vdGUpKTsKICBwLmFwcGVuZENoaWxkKGIpOwogIHJldHVybiBwOwp9CgovKiBleHBvc2UgZm9yIHRlc3RzICovCndpbmRvdy5DTFBTUEsgPSB7IHN0YXRlOiBTLCBkYXRhOiBELCBnb3RvOiBmdW5jdGlvbihpKXsgUy5jdXI9aTsgcmVuZGVyKCk7IH0sIHJlbmRlcjogcmVuZGVyIH07CnJlbmRlcigpOwp9KSgpOwo=\"));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Speaking Set 10 Practice Test 1: all 8 official-style tasks with on-screen prep and recording timers, sample responses and self-assessment tips. 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-6421","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6421","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=6421"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6421\/revisions"}],"predecessor-version":[{"id":6511,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6421\/revisions\/6511"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}