Performance from Previous Plans
Performance from Previous Plans

Performance from Previous Plans

eyJzdGF0dXMiOjIwMCwiZGF0YSI6eyJpZCI6IjU3NHItaDVuYyIsIm5hbWUiOiJQZXJmb3JtYW5jZSBmcm9tIFByZXZpb3VzIFBsYW5zIiwibWV0YWRhdGEiOiJ7XCJpbWFnZVwiOlwiL2FwaS9hc3NldHMvQzlDNzk0OUMtMDJBRS00RTE0LTk5NjktNzhEMEFDN0M5RkZCXCJ9IiwiY2F0ZWdvcmllcyI6W3siaWQiOiJ1bmNhdGVnb3JpemVkIiwibmFtZSI6InVuY2F0ZWdvcml6ZWQiLCJnb2FscyI6W3siaWQiOiI2amN1LTY2eTkiLCJuYW1lIjoiQ29weSBvZiBSZW5ld2FibGUgZW5lcmd5IGdlbmVyYXRlZCBieSBXU0NDIiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJpY29uXCI6XCJjcm9zc2hhaXJcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0RGMUU5N0IwLTU0ODQtNDQ1NS1CRjZGLTREMkJFRDM2NTNDRFwifV0sW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqSmFudWFyeSAyMDE4IFVwZGF0ZSoqXFxuXFxuLSAtIC1cXG5cXG4qKlF1YXJ0ZXIgMyoqXFxuXFxuMjAxNi8xNyA9IDEsMTQ0LDU5MlxcblxcbjIwMTcvMTggPSAxLDAxNyw1MDFcXG5cXG5UaGlzIGlzIHJlZHVjdGlvbiBvZiAxMSUsIGhvd2V2ZXIsIHRoZXJlIHdhcyBhIDE0JSByZWR1Y3Rpb24gaW4gdGhlIG51bWJlciBvZiBzdW5zaGluZSBob3VycyByZWNvcmRlZCBpbiB0aGlzIHBlcmlvZC4gU29sYXIgUFYgc29tZXRpbWVzIG92ZXIgcGVyZm9ybXMgYW5kIHNvbWV0aW1lcyB1bmRlciBwZXJmb3JtcyBkZXBlbmRpbmcgb24gd2VhdGhlciBjb25kaXRpb25zLCBzaGFkaW5nIGFuZCBpbnZlcnRvciByZXBsYWNlbWVudHMuIFRoaXMgaXMgZXhwZWN0ZWQgYW5kIGlzIHRoZSBleHBsYW5hdGlvbiBmb3IgdGhlIHNsaWdodGx5IGxvd2VyIG91dHB1dC5cXG5cXG5cIn1dXX0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuT3VyIGZpcnN0IGJhdGNoIG9mIG5ldyBzY2hvb2wgaW5zdGFsbGF0aW9ucyAoeDMpIHdhcyBjb21wbGV0ZWQgaW4gU2VwdC4gT3VyIHNlY29uZCBiYXRjaCB3aWxsIGJlZ2luIGluIDIgd2Vla3MgYW5kIHdpbGwgYmUgZmluaXNoZWQgYnkgbWlkLU1hcmNoICh4OSBzY2hvb2xzKS4gV2VzdGhhbXBuZXR0IHNvbGFyIGZhcm0gd2lsbCBiZSBsaXZlIG9uIDh0aCBGZWIgYW5kIHdlIGhhdmUgNiBuZXcgc2l0ZXMgaW4gb3VyIHBpcGVsaW5lIGZvciBkZXZlbG9wbWVudCBvdmVyIHRoZSBuZXh0IDIgZmluYW5jaWFsIHllYXJzICh1cCB0byAxOS8yMCkuIEZlYXNpYmx5IHN0dWRpZXMgYXJlIGdldHRpbmcgdW5kZXJ3YXkgYXQgdGhlc2Ugc2l0ZXMuXFxuXFxuXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvOEM2M0U3NTktMjlGNi00RTQ1LUI0RjgtMDIyN0Y3RjQ0Q0M0XCJ9XV19XSxcInRpdGxlX2ltYWdlXCI6XCIvYXBpL2Fzc2V0cy8zQTk5NUQwNy1CN0Y2LTQ4REYtODczQS00MUEzNjg4RjQxQUNcIixcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbmNyZWFzZSByZW5ld2FibGUgZW5lcmd5IGdlbmVyYXRlZCBieSBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbFwiLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOnRydWUsXCJjdXN0b21fc3VidGl0bGVcIjpcIldlIGFyZSBjb21taXR0ZWQgdG8gZGV2ZWxvcGluZyBhIHNlY3VyZSwgYWZmb3JkYWJsZSBhbmQgc3VzdGFpbmFibGUgZW5lcmd5IHN1cHBseSBhbmQgbWFraW5nIHVzZSBvZiBlbmVyZ3kgZnJvbSByZW5ld2FibGUgc291cmNlcy4gVGhpcyBpcyBzZXQgb3V0IGluIHRoZSBXZXN0IFN1c3NleCBzdHJhdGVneVwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE4LTA0LTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTktMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6Ik1XaCIsInRhcmdldCI6OTE0MSwidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6NjE1NC45NCwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiI3M2FkLXg5MmgifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjoxLFwibW9udGhcIjozLFwieWVhclwiOjIwMTh9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOX0sXCJhY3Rpb25fdHlwZVwiOlwiaW5jcmVhc2VcIixcIm1haW50YWluX3R5cGVcIjpcIj5cIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTd9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxN319LFwic3RhcnRcIjpcIjIwMTctMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTctMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJyZW5ld2FibGUgZW5lcmd5IGdlbmVyYXRlZCBieSBXU0NDXCJ9In0sImNyZWF0ZWRfYXQiOiIyMDE5LTA3LTA4VDE0OjEzOjU3LjY1MVoiLCJ2ZXJzaW9uIjoiMjAxOS0wNy0wOFQxNDoxMzo1Ny42NTFaIiwidGFyZ2V0X3RvbGVyYW5jZSI6MzY1Ni40LCJpZCI6ImlqZWQtandhdSJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbXSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOS0wNy0wOFQxNDoxNDowOC4yNzZaIiwiY3JlYXRlZF9hdCI6IjIwMTktMDctMDhUMTQ6MTM6NTcuNzEyWiIsInZlcnNpb24iOiIyMDE5LTA3LTA4VDE0OjE0OjA4LjI3NloiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6InJ1aGItdnM4dCIsIm5hbWUiOiJQcmltYXJ5IFB1cGlsIEF0dGFpbm1lbnQiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKktleSBTdGFnZSAyKipcXG5cXG5QdXBpbHMgYWdlZCBmcm9tIDcgdG8gMTEgeWVhcnMgb2xkIHdvcmsgYXQgS2V5IFN0YWdlIDIuIFRoZSBuZXcgbW9yZSBjaGFsbGVuZ2luZyBuYXRpb25hbCBjdXJyaWN1bHVtLCB3aGljaCB3YXMgaW50cm9kdWNlZCBpbiAyMDE0LCB3YXMgYXNzZXNzZWQgYnkgbmV3IHRlc3RzIGFuZCBpbnRlcmltIGZyYW1ld29ya3MgZm9yIHRlYWNoZXIgYXNzZXNzbWVudC4gUmVzdWx0cyBmb3IgMjAxNiBhbmQgc3Vic2VxdWVudCB5ZWFycyBhcmUgbm8gbG9uZ2VyIHJlcG9ydGVkIGFzIGxldmVscywgZWFjaCBwdXBpbCByZWNlaXZlcyB0aGVpciB0ZXN0IHJlc3VsdHMgYXMgYSBzY2FsZWQgc2NvcmUgYW5kIHRlYWNoZXIgYXNzZXNzbWVudHMgYmFzZWQgb24gdGhlIHN0YW5kYXJkcyBpbiB0aGUgaW50ZXJpbSBmcmFtZXdvcmsuIFRoZSBpbnRlcmltIGFzc2Vzc21lbnQgY3JpdGVyaWEgcHJvdmlkZWQgYnkgdGhlIFN0YW5kYXJkcyBhbmQgVGVzdGluZyBBZ2VuY3kgaW5kaWNhdGVkIHRoYXQgYXNzZXNzbWVudCBzaG91bGQgYmUgYmFzZWQgb24gMTAwJSBhY2hpZXZlbWVudCBhbmQgbm90IGEg4oCYYmVzdCBmaXTigJkgbW9kZWwuIFdlc3QgU3Vzc2V4IGFwcGxpZWQgdGhpcyBhZHZpY2Ugcmlnb3JvdXNseS4gQmVjYXVzZSBvZiB0aGUgY2hhbmdlcyBkZXRhaWxlZCBhYm92ZSwgZmlndXJlcyBmb3IgMjAxNiBhbmQgMjAxNyBhcmUgbm90IGNvbXBhcmFibGUgdG8gdGhvc2UgZm9yIGVhcmxpZXIgeWVhcnMuIExldmVscyBhcmUgbm90IGNvbXBhcmFibGUgd2l0aCBzY2FsZWQgc2NvcmVzIG9yIHRlYWNoZXIgYXNzZXNzbWVudCBvdXRjb21lcy4gVGhlIGV4cGVjdGF0aW9ucyBmb3IgcHVwaWxzIGF0IHRoZSBlbmQgb2Yga2V5IHN0YWdlIDIgaGF2ZSBiZWVuIHJhaXNlZC5cXG5cXG4qKkRlY2VtYmVyIDIwMTcgVXBkYXRlOioqXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqRGVjZW1iZXIgMjAxNyBVcGRhdGU6KipcXG5cXG4tIC0gLVxcblxcbioqMjAxNi0yMDE3IFJlYWRpbmcsIFdyaXRpbmcgYW5kIE1hdGhzIChSV00pKipcXG5cXG5UaGUgbWFpbiBwdWJsaXNoZWQgaW5kaWNhdG9yIHJlbWFpbnMgUmVhZGluZywgV3JpdGluZyBhbmQgTWF0aHMgKFJXTSksIHRob3NlIHB1cGlscyB3aG8gcmVhY2ggb3IgZXhjZWVkIHRoZSBleHBlY3RlZCBzdGFuZGFyZCBpbiBhbGwgb2YgcmVhZGluZyB0ZXN0LCB3cml0aW5nIHRlYWNoZXIgYXNzZXNzbWVudCBhbmQgbWF0aHMgdGVzdC4gSW4gV2VzdCBTdXNzZXggNTUlIG9mIGFsbCBwdXBpbHMgcmVhY2hlZCB0aGF0IHN0YW5kYXJkIGNvbXBhcmVkIHRvIHRoZSBuYXRpb25hbCBhdmVyYWdlIG9mIDYyJS4gVGhlIFdlc3QgU3Vzc2V4IGF2ZXJhZ2UgaGFzIGluY3JlYXNlZCBtb3JlIHJhcGlkbHkgdGhhbiB0aGUgbmF0aW9uYWwgYW5kIHRoZSBnYXAgaGFzIG5vdyByZWR1Y2VkIGJ5IDIlIHRvIGp1c3QgNyUuIFRoZSBzYW1lIHBpY3R1cmUgaXMgcmVmbGVjdGVkIGFnYWluc3QgdGhlIFNvdXRoIEVhc3QsIHdoZXJlIHRoZSBpbmNyZWFzZSBpcyBvbmx5IDglLCB0aGUgZ2FwIGhhcyBub3cgcmVkdWNlZCBieSAyJSB0byBqdXN0IDglLlxcblxcbldoaWxzdCB0aGVyZSB3YXMgYSAxMCUgcG9pbnQgaW5jcmVhc2UgZnJvbSAyMDE2LCB0aGUgcmF0ZSBvZiBpbXByb3ZlbWVudCBuZWVkcyB0byBhY2NlbGVhcmF0ZSBzbyB0aGF0IHRoZSAyMDIyIHRhcmdldCBpcyByZWFjaGVkLiBXcml0aW5nIGFuZCBtYXRoZW1hdGljcyByZW1haW4gdGhlIGFyZWFzIG9mIGNvbmNlcm4uXFxuXFxuR3JlYXRlciBEZXB0aFxcblxcblVzaW5nIHRoZSBTdGFuZGFyZCBhbmQgVGVzdGluZyBBZ2VuY3nigJlzIGFzc2Vzc21lbnQgY3JpdGVyaWEsIHRoZSBleHBlY3RlZCBzdGFuZGFyZCBpbiB0aGUgdGVzdHMgaXMgYSBzY2FsZWQgc2NvcmUgb2YgMTAwIG9yIGFib3ZlLiBTb21lIHB1cGlscyB3aG8gYXR0YWluIHRoZSBleHBlY3RlZCBzdGFuZGFyZCBhcmUganVkZ2VkIHRvIGJlIOKAnHdvcmtpbmcgYXQgZ3JlYXRlciBkZXB0aCB3aXRoaW4gdGhlIGV4cGVjdGVkIHN0YW5kYXJk4oCdIChHRFMpLiBHRFMgaXMgdXNlZCBpbiB0aGUgY2hhcnRzIGJlbG93LCBidXQgaW4gc29tZSBwdWJsaWNhdGlvbnMgKGUuZy4gQVNQKSB0aGUgdGVybSDigJxIaWdoIFN0YW5kYXJk4oCdIGlzIHVzZWQgZm9yIHN1Y2ggcHVwaWxzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy83MjU2MjlCNy1BMTE4LTQ0MTYtQjRGNC05MUM4NEU2NTQ3NTFcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipJbmRpdmlkdWFsIFN1YmplY3RzKipcXG5cXG5BdHRhaW5tZW50IGF0IHRoZSBleHBlY3RlZCBzdGFuZGFyZCBpbiB0aGUgdGVzdHMgaXMgaGlnaGVzdCBpbiBHUFMgKGdyYW1tYXIsIHB1bmN0dWF0aW9uIGFuZCBzcGVsbGluZykgYXQgNzQlIGNvbXBhcmVkIHRvIHRoZSBuYXRpb25hbCBhdmVyYWdlIG9mIDc4JSAoU291dGggRWFzdCA3NyUpLlxcblxcbkF0dGFpbm1lbnQgaXMgbG93ZXN0IGluIG1hdGhzIGF0IDcxJSBjb21wYXJlZCB0byB0aGUgbmF0aW9uYWwgYXZlcmFnZSBvZiA3NSUgKFNvdXRoIEVhc3QgYWxzbyA3NSUpLlxcblxcbkF0dGFpbm1lbnQgaW4gcmVhZGluZyBpcyBhdCA3MSUgY29tcGFyZWQgdG8gdGhlIG5hdGlvbmFsIGF2ZXJhZ2Ugb2YgNzIlIChTb3V0aCBFYXN0IDc0JSkuXFxuXFxuSW4gd3JpdGluZyA2OSUgb2YgcHVwaWxzIHdlcmUgYXNzZXNzZWQgYnkgdGVhY2hlcnMgYXMgd29ya2luZyBhdCB0aGUgZXhwZWN0ZWQgc3RhbmRhcmQsIHRoaXMgd2FzIGxvd2VyIHRoYW4gaW4gYW55IG9mIHRoZSB0ZXN0IHN1YmplY3RzIGFuZCBjb21wYXJlcyB0byB0aGUgbmF0aW9uYWwgYXZlcmFnZSBvZiA3NyUgKFNvdXRoIEVhc3QgYWxzbyA3NyUpLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9CNkQ0QzQzNC1FRjQzLTRCQTEtODZEOS1GQjkzNTc3QjU0QTVcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvNTQ3MThCNDctODVBNy00MjFFLTkxOTItMkEwMjM4OTQwMEZCXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkFsdGhvdWdoIHNvbWUgZ2FpbnMgaGF2ZSBiZWVuIG1hZGUgYWdhaW5zdCBTdGF0aXN0aWNhbCBuZWlnaGJvdXJzLCBXZXN0IFN1c3NleCByZW1haW5zIGF0IHRoZSBsb3dlc3QgcmFuayBmb3IgNyBvZiB0aGUgMTEgaW5kaWNhdG9ycyBmb3IgQWxsIFB1cGlscy4gQm95cyBzaG93IHRoZSBtb3N0IGltcHJvdmVtZW50IGFnYWluc3QgU3RhdGlzdGljYWwgTmVpZ2hib3VycywgYWx0aG91Z2ggV2VzdCBTdXNzZXggcmVtYWlucyByYW5rZWQgMTAgb3IgMTEgb3V0IG9mIDExIGluIG1vcmUgdGhhbiBoYWxmIHRoZSAzMyBpbmRpY2F0b3JzIGFjcm9zcyBhbGwgZ2VuZGVycy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipDb21wYXJpc29uIHdpdGggb3RoZXIgTG9jYWwgQXV0aG9yaXRpZXMgKHJhbmtpbmdzKToqKlxcblxcbk5hdGlvbmFsL3N0YXRpc3RpY2FsIG5laWdoYm91cnM6IFdlc3QgU3Vzc2V4J3MgQWxsIFB1cGlscyBuYXRpb25hbCByYW5raW5ncyBmb3IgRXhwZWN0ZWQgU3RhbmRhcmQgaW4gTWF0aHMsIFJXTSwgR1BTIGFuZCBTY2llbmNlIGFsbCBzaG93IGltcHJvdmVtZW50LiBUaGVyZSBpcyBpbXByb3ZlbWVudCBmb3IgQWxsIFB1cGlscyBpbiBSV00gYXQgR3JlYXRlciBUaGFuIEV4cGVjdGVkIFN0YW5kYXJkIHRvbywgdGhvdWdoIGFsbCBvdGhlciBzdWJqZWN0cyBhcmUgZG93bi5cXG5cXG5HaXJscyBzaG93IGltcHJvdmVtZW50IGluIE1hdGhzIGF0IHRoZSBFeHBlY3RlZCBTdGFuZGFyZCBhbmQgZ3JlYXRlciB0aGFuIEV4cGVjdGVkIGFuZCBhdCB0aGUgZXhwZWN0ZWQgU3RhbmRhcmQgZm9yIEdQUyBhbmQgU2NpZW5jZS4gVGhlIEJveXMgc2hvdyB0aGUgbW9zdCBpbXByb3ZlbWVudCBpbiByYW5raW5ncyB3aXRoIDcgb2YgdGhlIDExIGluZGljYXRvcnMgdXAgb24gbGFzdCB5ZWFyLCB3aXRoIFNjaWVuY2Ugc2hvd2luZyBhbiBpbmNyZWFzZSBvZiAzNyBwbGFjZXMuIFdpdGggdGhlIGV4Y2VwdGlvbiBvZiBHcmVhdGVyIFRoYW4gRXhwZWN0ZWQgUmVhZGluZywgV2VzdCBTdXNzZXggcmVtYWlucyBpbiB0aGUgbG93ZXIgaGFsZiBvZiByYW5raW5ncyBuYXRpb25hbGx5LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8zNUZFNzE5My1EM0M3LTQyOUQtODQyMS0yNjdCRDNFNUJGNERcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiU291dGggRWFzdDogV2VzdCBTdXNzZXjigJlzIHJhbmtpbmdzLCBhZ2FpbnN0IHRoZSAxOSBTb3V0aCBFYXN0IGdyb3VwIG9mIExvY2FsIEF1dGhvcml0aWVzLCBhcmU6XFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiBSV00gRVhTKyAoPTE4dGggb2YgMTkpXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzFFNkE4NDE1LUQ0NTktNDY3QS1BQzI4LUJBMkRDMkY1NUQ2NFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIgUmVhZGluZyBFWFMrID0gMTN0aCBvZiAxOVxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgMjAxNiBrZXkgc3RhZ2UgMiBhc3Nlc3NtZW50cyB3ZXJlIHRoZSBmaXJzdCB3aGljaCBhc3Nlc3MgdGhlIG5ldywgbW9yZSBjaGFsbGVuZ2luZyBuYXRpb25hbCBjdXJyaWN1bHVtIHdoaWNoIHdhcyBpbnRyb2R1Y2VkIGluIDIwMTQuIE5ldyB0ZXN0cyBhbmQgaW50ZXJpbSBmcmFtZXdvcmtzIGZvciB0ZWFjaGVyIGFzc2Vzc21lbnQgaGF2ZSBiZWVuIGludHJvZHVjZWQgdG8gcmVmbGVjdCB0aGUgcmV2aXNlZCBjdXJyaWN1bHVtLiBSZXN1bHRzIGFyZSBubyBsb25nZXIgcmVwb3J0ZWQgYXMgbGV2ZWxzLCBhbmQgZWFjaCBwdXBpbCB3aWxsIG5vdyByZWNlaXZlIHRoZWlyIHRlc3QgcmVzdWx0cyBhcyBhIHNjYWxlZCBzY29yZSBhbmQgdGVhY2hlciBhc3Nlc3NtZW50cyBiYXNlZCBvbiB0aGUgc3RhbmRhcmRzIGluIHRoZSBpbnRlcmltIGZyYW1ld29yay4gVGhlIGV4cGVjdGVkIHN0YW5kYXJkIGhhcyBiZWVuIHJhaXNlZCBhbmQgdGhlIGFjY291bnRhYmlsaXR5IGZyYW1ld29yayBmb3Igc2Nob29scyBoYXMgYWxzbyBjaGFuZ2VkLiBUaGVzZSBjaGFuZ2VzIG1lYW4gdGhhdCB0aGUgZXhwZWN0ZWQgc3RhbmRhcmQgaXMgaGlnaGVyIGFuZCBub3QgY29tcGFyYWJsZSB3aXRoIHRoZSBleHBlY3RlZCBzdGFuZGFyZCB1c2VkIGluIHByZXZpb3VzIHllYXLigJlzIHN0YXRpc3RpY3MuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzM5RjE5M0UzLUY4RDAtNDM4OS1BQTE3LUQ2ODQzQkE2MDI2RlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJXcml0aW5nIFRBIEVYUyA9ICgxOXRoIG9mIDE5KVwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy85QkM4QkQzNC0xMjY4LTQwOTItODY3QS1FQTM1RDE4NUE5NEZcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiTWF0aHMgRVhTKyAoPTE0dGggb2YgMTkpXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0NBNjYxOTRGLTE2QjEtNENDQS05MTc4LTcwMkY5MkNFNUM1MFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJhYSBcXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSB0byB0aGUgZW5kIG9mIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcbioqS2V5IFN0YWdlIDEqKiBwcm92aXNpb25hbCBvdXRjb21lcyBhcmUgbm93IGF2YWlsYWJsZSBhbmQgdGhlIGRhdGEgYmVsb3cgaGFzIGJlZW4gdXBkYXRlZC4gV2VzdCBTdXNzZXggcmVzdWx0cyBhcmUgc3RpbGwgYmVsb3cgdGhlIG5hdGlvbmFsIGF2ZXJhZ2UgYnV0IGltcHJvdmVkIGF0IGEgZmFzdGVyIHJhdGUgdGhhbiB0aGUgbmF0aW9uYWwgYXZlcmFnZSBhbmQsIHRoZXJlZm9yZSwgY2xvc2luZyB0aGUgZ2FwIHRvIHRoZSBuYXRpb25hbCBmaWd1cmUuXFxuXFxuKipLZXkgU3RhZ2UgMioqIHByb3Zpc2lvbmFsIG91dGNvbWVzIGNvbmZpcm0gdGhvc2UgcmVwb3J0ZWQgaW4gSnVseSAyMDE3LiBXZXN0IFN1c3NleCByZXN1bHRzIGFyZSBzdGlsbCBiZWxvdyB0aGUgbmF0aW9uYWwgYXZlcmFnZSBidXQgYXBhcnQgZnJvbSBpbiByZWFkaW5nICh3aGljaCBpcyBjbG9zZSB0byBuYXRpb25hbCBhdmVyYWdlKSBpbXByb3ZlZCBhdCBhIGZhc3RlciByYXRlIHRoYW4gdGhlIG5hdGlvbmFsIGF2ZXJhZ2UgYW5kLCB0aGVyZWZvcmUsIGNsb3NpbmcgdGhlIGdhcC5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSB0byB0aGUgZW5kIG9mIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG4qKktleSBTdGFnZSAxKiogaXMgYW4gaW5kaWNhdG9yIG9mIHRoZSBjdXJyZW50IHBpY3R1cmUuIERhdGEgc2hvd24gaXMgcHJvdmlzaW9uYWwgaW50ZXJpbSBkYXRhLCBhcyBhIHZlcnkgc21hbGwgbnVtYmVyIG9mIHNjaG9vbHMgYXJlIHN0aWxsIHRvIHVwbG9hZCBkYXRhIHNldHMuIEl0IGlzIHVubGlrZWx5IGludGVyaW0gZGF0YSB3aWxsIHJhZGljYWxseSBjaGFuZ2Ugd2hlbiByZW1haW5pbmcgdXBsb2FkcyBoYXZlIGJlZW4gY29tcGxldGVkLlxcblxcbioqS2V5IFN0YWdlIDIqKiBkYXRhIHdhcyBhdmFpbGFibGUgZm9yIG5hdGlvbmFsIGRvd25sb2FkIGZyb20gdGhlIDR0aCBKdWx5IDIwMTcuIFRoZSBkYXRhIHNob3duIHJlcHJlc2VudHMgdGhlIHByb3BvcnRpb24gb2YgcHVwaWxzIGFjaGlldmluZyB0aGUg4oCYZXhwZWN0ZWQgc3RhbmRhcmTigJkgYW5kIOKAmGdyZWF0ZXIgZGVwdGjigJkuIFRoZSBwcm9wb3J0aW9uIG9mIHB1cGlscyBhY2hpZXZpbmcg4oCYZ3JlYXRlciBkZXB0aOKAmSBhcyBhIHNlcGFyYXRlIG1lYXN1cmUgaXMgbm90IHlldCBhdmFpbGFibGUuIEFsbCBzY2hvb2xzIGFyZSBjdXJyZW50bHkgcmV2aWV3aW5nIHRoZWlyIGRhdGEgaW4gdGVybXMgb2YgdGhlIG51bWJlciBvZiBwdXBpbHMgZm9yIHdob20gdGhleSB3aWxsIGFwcGVhbCBhbmQgc2VlayBhIHJlY291bnQgLyByZW1hcmsuIFB1cGlscyB0eXBpY2FsbHkgcHV0IGZvcndhcmQgZm9yIHJlY291bnQgLyByZW1hcmsgYXJlIG5vIG1vcmUgdGhhbiAzIHBvaW50cyBiZWxvdyB0aHJlc2hvbGQgZm9yIGFjaGlldmluZyB0aGUg4oCYZXhwZWN0ZWQgc3RhbmRhcmTigJkuIEluIDIwMTYsIHRoaXMgcHJvY2VzcyBoYWQgYSsyJSBkaWZmZXJlbmNlIHRvIHRoZSBlYXJseSB1bnZhbGlkYXRlZCBkYXRhLiBOYXRpb25hbCBkYXRhIGhhcyBiZWVuIHRha2VuIGZyb20gdGhlIFN0YXRpc3RpY2FsIEZpcnN0IFJlbGVhc2UgKFNGUikgYXZhaWxhYmxlIG9uIHRoZSBEZkUgd2Vic2l0ZS5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMEIxMDFDNjgtMTU5Mi00M0I1LTgyQzQtMTQ1RjZDQTI0NDhGXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzQ3Qzk4MTZGLUZERTktNDgxNC05NTc3LTU2MzA0RjJCNDIwM1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE2KipcXG5cXG4tIC0gLVxcblxcblRoZSByZXZpc2VkIEtleSBTdGFnZSAyIHJlc3VsdHMgaGF2ZSBiZWVuIHJlbGVhc2VkLCBhbmQgZm9yIFdlc3QgU3Vzc2V4IDQ1JSBvZiBwdXBpbHMgYWNoaWV2aW5nIHRoZSBleHBlY3RlZCBzdGFuZGFyZCBpbiByZWFkaW5nLCB3cml0aW5nIGFuZCBtYXRoZW1hdGljcyAoY29tYmluZWQpIHdoaWNoIGlzIHJhbmsgMzMgYWdhaW5zdCAzNCBTaGlyZSBQbHVzIGNvdW50aWVzLiBUaGVzZSByZXN1bHRzIGFyZSBmcm9tIG5ldyB0ZXN0cyBhbmQgdGVhY2hlciBhc3Nlc3NtZW50IG9mIHRoZSBuZXcgbmF0aW9uYWwgQ3VycmljdWx1bSBhbmQgYXJlIG5vdCBkaXJlY3RseSBjb21wYXJhYmxlIHdpdGggcHJldmlvdXMgbWVhc3VyZXMuIFRoZXNlIHJlc3VsdHMgYXJlIGRpc2FwcG9pbnRpbmcuXFxuXFxuU2Nob29sIGltcHJvdmVtZW50LCB3b3JraW5nIHdpdGggc2Nob29scywgaGF2ZSBwcm9kdWNlZCBhIHByb2dyYW1tZSBvZiBzdXBwb3J0IGFuZCB0cmFpbmluZyB0byBpbXByb3ZlIG91dGNvbWVzIGF0IEtleSBTdGFnZSAxIGFzIHdlbGwgYXMgS2V5IFN0YWdlIDIuIFdlc3QgU3Vzc2V4IG9mZmljZXJzIGFyZSB3b3JraW5nIHdpdGggc2Nob29scyBvbiB0aGlzIGFjdGlvbiBwbGFuIHRvIGltcHJvdmUgS2V5IFN0YWdlIDIgb3V0Y29tZXMgaW4gMjAxNy5cXG5cXG5cIn1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIlB1cGlscyBhY2hpZXZpbmcgdGhlIGV4cGVjdGVkIHN0YW5kYXJkIG9mIGRldmVsb3BtZW50IGF0IHRoZSBlbmQgb2YgS2V5IFN0YWdlIDJcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUaGlzIGdvYWwgaXMgbWVhc3VyZWQgYnkgdHJhY2tpbmcgcHVwaWwgYWNoaWV2ZW1lbnQgYXQgS2V5IFN0YWdlIDIuICBJdCBpcyBvdXIgYW1iaXRpb24gdG8gYmUgYXMgZ29vZCBhcyB0aGUgdG9wIDI1JSBvZiBoaWdoZXN0IHBlcmZvcm1pbmcgY291bnRpZXMgaW4gdGhlIGNvdW50cnkgYnkgMjAxOS5cIixcImljb25cIjpcInRleHRcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxNi0wOS0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiIlIiwidGFyZ2V0Ijo2MywidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6ODQsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoic2RjNy15NnRmIn0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6Ij4ifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjo4LFwieWVhclwiOjIwMTZ9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwiaW5jcmVhc2VcIixcIm1haW50YWluX3R5cGVcIjpcIj5cIixcInRhcmdldF90eXBlXCI6XCJhYnNvbHV0ZVwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX0sXCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCIsXCJkYXRhc2V0XCI6XCJpZGs2LWRhaWVcIn0sXCJ0eXBlXCI6XCJzY3JhdGNoXCJ9LFwibmFtZVwiOlwiUGVyY2VudGFnZSBvZiBhdXRob3JpdHkgZm9yIHB1cGlsIGF0dGFpbm1lbnQgYXQgS2V5IFN0YWdlIDJcIixcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOnRydWUsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwiYmFkXCJ9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjQ1OjQzLjQ5MFoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMDo0NTo0My40OTBaIiwidGFyZ2V0X3RvbGVyYW5jZSI6NiwiaWQiOiI3ZDJ0LWlmaGgifSwicmVsYXRlZF9tZWFzdXJlcyI6W3sibWV0YWRhdGEiOiIiLCJpZCI6InR1c3EtenZzeSJ9LHsibWV0YWRhdGEiOiIiLCJpZCI6IndiZ3MteTVobiJ9XSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDo0NzozNC40MTBaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6NDU6NDMuNTg3WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjQ3OjM0LjQxMFoiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn1dfSx7ImlkIjoidmJ0bi1zOGJ3IiwibmFtZSI6IkZ1dHVyZSBXZXN0IFN1c3NleCBQbGFuIDIwMTUgLSAyMDE5IiwiZ29hbHMiOlt7ImlkIjoiOTJ6ei14Y2t1IiwibmFtZSI6IllvdW5nIFBlb3BsZSdzIE1lbnRhbCBIZWFsdGgiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcInRleHRcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgQ0FNSFMgKENoaWxkcmVuIGFuZCBBZG9sZXNjZW50IE1lbnRhbCBIZWFsdGggU2VydmljZSkgYW5kIGVtb3Rpb25hbCB3ZWxsYmVpbmcgc2VydmljZXMgYXJlIGNvbW1pc3Npb25lZCBieSBib3RoIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIGFuZCBsb2NhbCBDbGluaWNhbCBDb21taXNzaW9uaW5nIEdyb3VwcyB0byBwcm92aWRlIHNlcnZpY2VzIGZvciB5b3VuZyBwZW9wbGUgaW4gZW1vdGlvbmFsIGRpc3RyZXNzIHdobyByZXF1aXJlIHN1cHBvcnQgZm9yIHRoZWlyIGVtb3Rpb25hbCB3ZWxsYmVpbmcuIENoaWxkcmVuIGFuZCBZb3VuZyBwZW9wbGUgYXJlIHJlZmVycmVkIGJ5IGEgcmFuZ2Ugb2YgY2hpbGRyZW4ncyBwcm9mZXNzaW9uYWwgKGluY2x1ZGluZyBHUHMpIGZvciBhIG51bWJlciBvZiBkaWZmZXJlbnQgcmVhc29ucyBhbmQgaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhleSBhcmUgc2VlbiBieSBhcHByb3ByaWF0ZSBzZXJ2aWNlcyBpbiBhIHRpbWVseSBmYXNoaW9uLlxcblxcbldlIGN1cnJlbnRseSBoYXZlIGEgcGVyZm9ybWFuY2UgdGFyZ2V0IG9mIGVuc3VyaW5nIHRoYXQgOTUlIG9mIHlvdW5nIHBlb3BsZSByZWZlcnJlZCB0byB0aGUgc3BlY2lhbGlzdCBDQU1IUyBzZXJ2aWNlIChwcm92aWRlZCBieSBTUEZUIChTdXNzZXggUGFydG5lcnNoaXAgRm91bmRhdGlvbiBUcnVzdCkgYXJlIHNlZW4gd2l0aGluIGZvdXIgd2Vla3MuIFRoaXMgdGFyZ2V0IGlzIGltcGFjdGVkIG9uIGJ5IG51bWJlcnMgb2YgcmVmZXJyYWxzIGFuZCBzdGFmZmluZyBhbmQgcmVjcnVpdG1lbnQgaXNzdWVzIHdoaWNoIGNhbiBmbHVjdHVhdGUgbW9udGggYnkgbW9udGguIENvbW1pc3Npb25lcnMgd29yayB3aXRoIHRoZSBwcm92aWRlciB0byB1bmRlcnN0YW5kIGFueSB2YXJpYXRpb25zIGluIG51bWJlcnMgc2VlbiB3aXRoaW4gNCB3ZWVrcyBhbmQgdG8gc3VwcG9ydCB0aGVtIGluIG1hbmFnaW5nIHRoaXMuXFxuXFxuRm9yIGZ1cnRoZXIgZGV0YWlscyBvZiAyMDE2LzE3IHByb2dyZXNzLCBwbGVhc2Ugc2VlIHRoZSBsaW5rIGJlbG93LlxcblxcbltodHRwczovL3d3dy53ZXN0c3Vzc2V4Lmdvdi51ay9tZWRpYS8xMDA4Ni9tYWtpbmctcHJvZ3Jlc3MtcmVwb3J0LTIwMTYtMTcucGRmXVswXVxcblxcblswXTogaHR0cHM6Ly93d3cud2VzdHN1c3NleC5nb3YudWsvbWVkaWEvMTAwODYvbWFraW5nLXByb2dyZXNzLXJlcG9ydC0yMDE2LTE3LnBkZlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkphbnVhcnkgMjAxOCBVcGRhdGUqKlxcblxcbi0gLSAtXFxuXFxuRHVyaW5nIEphbnVhcnkgdGhlIHBlcmNlbnRhZ2Ugb2YgcmVmZXJyYWxzIHJlY2VpdmluZyBhbiBhc3Nlc3NtZW50IHdpdGhpbiA0IHdlZWtzIHJvc2UgdG8gODclLCBkZXNwaXRlIHRoZSBudW1iZXIgb2YgcmVmZXJyYWxzIGluY3JlYXNpbmcgdGhpcyBtb250aC5cXG5cXG5TZXJ2aWNlcyBhY3Jvc3MgU3Vzc2V4IGNvbnRpbnVlIHRvIGV4cGVyaWVuY2UgY2hhbGxlbmdlcyBpbiBtZWV0aW5nIHRoZSA0IHdlZWsgdGFyZ2V0LCBhcyBhIHJlc3VsdCBvZiBpbmNyZWFzZWQgY2xpbmljYWwgYW5kIHNlcnZpY2UgcmUtZGVzaWduIGRlbWFuZHMgYXMgd2VsbCBhcyBjb21wbGV4aXR5IG9mIHJlZmVycmFscy4gV29ya2ZvcmNlIHJlY3J1aXRtZW50IGFuZCB2YWNhbmNpZXMgcmVtYWlucyBhbiBvbmdvaW5nIGlzc3VlLlxcblxcblRoZSBzZXJ2aWNlIGNvbnRpbnVlcyB0byB3b3JrIHdpdGggdGhlIFN1c3NleCBQYXJ0bmVyc2hpcCBGb3VuZGF0aW9uIFRydXN0IHRvIGRpc2N1c3Mgb25nb2luZyBwZXJmb3JtYW5jZSBvbiBhIGNhc2UgYnkgY2FzZSBiYXNpcywgbG9va2luZyBhdCB0aGVpciByZWFzb25zIGZvciBkZWxheXMsIGFjdGlvbnMgYW5kIGxlc3NvbnMgbGVhcm50LiBJbiB0ZXJtcyBvZiBtaXRpZ2F0aW9uIHRoZSBmb2xsb3dpbmcgaXMgaW4gcGxhY2U6LVxcblxcbiogd29ya2ZvcmNlIHN0cmF0ZWd5IGlzIGJlaW5nIGRldmVsb3BlZCB0byBzdXBwb3J0IHRoZSBhdmFpbGFiaWxpdHkgb2YgY2xpbmljYWwgc3RhZmZcXG5cXG4qIE1vbnRobHkgbWVldGluZ3Mgd2l0aCBTUEZUIHRvIHNlZWsgYXNzdXJhbmNlIGFuZCB1bmRlcnN0YW5kIGlzc3VlcyBmYWNlcyBieSB0aGUgc2VydmljZVxcblxcbiogSm9pbnQgdHJpYWdlIHdpdGggVGllciAyIHNlcnZpY2UgdG8gZW5zdXJlIHRoZSByaWdodCBjaGlsZHJlbiBhcmUgcmVmZXJyZWQgdG8gY2xpbmljYWwgQ0FNSFMgc2VydmljZS5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGVyZSB3ZXJlIDI1OSBuZXcgcmVmZXJyYWxzIGZvciBBdWd1c3QgYW5kIDEwMCUgbWV0IHRoZSA0IHdlZWsgdGFyZ2V0LiBUaGVyZSBoYXMgYmVlbiBhIGRyb3AgaW4gcmVmZXJyYWxzIGluIEF1Z3VzdCwgd2hpY2ggaXMgY29uc2lzdGVudCB3aXRoIHByZXZpb3VzIHllYXJzIGFuZCBjb25zaXN0ZW50IHdpdGggc2Nob29sIGhvbGlkYXlzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGlzIHF1YXJ0ZXIgc2F3IGEgMjAlIGluY3JlYXNlIGluIHJlZmVycmFscyBjb21wYXJlZCB0byBsYXN0IHllYXIsIGFuIGF2ZXJhZ2Ugb2YgMzYwIHJlZmVycmFscyBwZXIgbW9udGggYW5kIHBlYWtpbmcgYXQgNDA5IGluIE1heS5cXG5cXG5TUEZUIGNhcmVzIGZvciBvdXIgbG9jYWwgQ2hpbGRyZW4gYW5kIHlvdW5nIHBlb3BsZSB3aXRoIHRoZSBtb3N0IGNvbXBsZXggbmVlZHMgYW5kIHdlIHdvcmsgY2xvc2VseSB3aXRoIHRoZW0gb24gdGhlIGRldmVsb3BtZW50IG9mIGEgcmFuZ2Ugb2Ygc3BlY2lhbGlzdCBzZXJ2aWNlcyBhbmQgaW5pdGlhdGl2ZXMuIFRoZXNlIGluY2x1ZGUgb3VyIGZhbWlseSBlYXRpbmcgZGlzb3JkZXIgc2VydmljZSwgQSZFIGxpYWlzb24gc2VydmljZSwgYW5kIGNhcmUgZm9yIGxvb2tlZCBhZnRlciBhbmQgYWRvcHRlZCBjaGlsZHJlbiwgdW5hY2NvbXBhbmllZCBhc3lsdW0gc2Vla2VycywgY2hpbGRyZW4gd2l0aCBjb21wbGV4IGJlaGF2aW91cnMgYW5kIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUgaW4gY3Jpc2lzLiBXZSBhcmUgYWxzbyBjdXJyZW50bHkgd29ya2luZyB3aXRoIFNQRlQgdG8gZGV2ZWxvcCBlbmhhbmNlZCBwYXRod2F5cyBmb3IgY2hpbGRyZW4gd2l0aCBuZXVyb2RldmVsb3BtZW50YWwgZGlzb3JkZXJzLiBTUEZUIGFsc28gcHJvdmlkZSBvdXIgY29tbXVuaXR5IG1lbnRhbCBoZWFsdGggbGlhaXNvbiBzZXJ2aWNlLCBvZmZlcmluZyBhZHZpY2UgYW5kIHRyYWluaW5nIGZvciBwcm9mZXNzaW9uYWxzLlxcblxcbk9uZSBvZiB0aGUgc2VydmljZXMgYXZhaWxhYmxlIC0gWUVTIChZb3V0aCBFbW90aW9uYWwgU3VwcG9ydCkgb2ZmZXJzIGVtb3Rpb25hbCBzdXBwb3J0IHRvIG92ZXIgMiwyNTAgeW91bmcgcGVvcGxlIGV2ZXJ5IHllYXIsIHByb3ZpZGluZyBhIHdpZGUgcmFuZ2Ugb2YgZW1vdGlvbmFsIHdlbGxiZWluZyBpc3N1ZXMuIEl0IGhlbHBzIHlvdW5nIHBlb3BsZSB0byBtYWtlIHBvc2l0aXZlIGNob2ljZXMgYW5kIGJ1aWxkIHJlc2lsaWVuY2UuIENsb3NlIHdvcmtpbmcgYW5kIGZvcm1hbCBsaW5rcyB3aXRoIENBSE1TLCBjb3Vuc2VsbGluZyBhbmQgb3RoZXIgc2VydmljZXMgbWVhbnMgdGhhdCBZRVMgY2FuIHByb3ZpZGUgdGFpbG9yZWQsIHNlYW1sZXNzIHN1cHBvcnQsIG9mdGVuIGFkZHJlc3NpbmcgaXNzdWVzIHN1Y2ggYXMgZWR1Y2F0aW9uIGFuZCBlbXBsb3ltZW50IGFsb25nc2lkZSBlbW90aW9uYWwgd2VsbGJlaW5nLiBPcGVyYXRpbmcgZnJvbSA4IEZpbmRJdE91dCBjZW50cmVzIGFjcm9zcyB0aGUgY291bnR5LCBZRVMgYWNjZXB0cyBzZWxmLXJlZmVycmFscyBhbmQgcmVmZXJyYWxzIGZyb20gR1BzIGFuZCBwdWJsaWMgaGVhbHRoIG51cnNlcy4gSXQgY3VycmVudGx5IHNlZXMgYXJvdW5kIDIwMCBuZXcgeW91bmcgcGVvcGxlIGV2ZXJ5IG1vbnRoIGFuZCBpdHMgc3VjY2VzcyBtZWFucyB0aGF0IG9uIGF2ZXJhZ2UgbGVzcyB0aGFuIDMlIHJlcXVpcmUgYSByZWZlcnJhbCB0byBDQU1IUy5cXG5cXG5XZSBjb250aW51ZSB0byBtZWV0IGFuZCB3b3JrIHdpdGggU1BGVCByZWd1bGFybHkgdG8gZW5zdXJlIG9uZ29pbmcgaW1wcm92ZWQgcGVyZm9ybWFuY2UuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG4qKlllYXItZW5kIENvbW1lbnRhcnkqKlxcblxcblRoZSBudW1iZXJzIG9mIHJlZmVycmFscyBoYXMgcmVtYWluZWQgY29uc2lzdGVudCwgYXZlcmFnaW5nIGF0IDMzNCBwZXIgbW9udGguIFNQRlQgaGF2ZSBtZXQgdGhlaXIgb3ZlcmFsbCB0YXJnZXQgZm9yIHNlZWluZyA5NSUgb2YgY2hpbGRyZW4gYW5kIHlvdW5nIHBlb3BsZSB3aXRoaW4gNCB3ZWVrcy5cXG5cXG4qKkhpZ2hsaWdodHMgZm9yIHRoZSB5ZWFyIGluY2x1ZGU6KipcXG5cXG4qIEEgU3Vzc2V4LXdpZGUgZWF0aW5nIGRpc29yZGVyIHNlcnZpY2UgaGFzIGJlZW4gY29tbWlzc2lvbmVkLCBmdW5kZWQgYnkgaGVhbHRoIHRocm91Z2ggdGhlIExUUCAoTG9jYWwgVHJhbnNmb3JtYXRpb24gUGxhbikuIEEgaGlnaCBudW1iZXIgb2YgcmVmZXJyYWxzIChvdmVyIDE1MCBpbiA2IG1vbnRocykgaGF2ZSBiZWVuIHJlY2VpdmVkIHNpbmNlIHRoZSBzZXJ2aWNlIHdhcyBsYXVuY2hlZCBpbiBPY3RvYmVyIDIwMTYsIGluIHBhcnRpY3VsYXIgZnJvbSBXZXN0IFN1c3NleC4gVGhpcyBzZXJ2aWNlIGlzIG5vdGVkIGFzIGV4ZW1wbGFyeSBieSBOSFMgRW5nbGFuZC5cXG5cXG4qIEFkZGl0aW9uYWwgaGVhbHRoIGZ1bmRpbmcgdGhyb3VnaCB0aGUgTFRQIGhhcyBsZWQgdG8gaW52ZXN0bWVudCBpbiBhIHdpZGUgcmFuZ2Ugb2YgYWRkaXRpb25hbCBlbW90aW9uYWwgd2VsbGJlaW5nIGFuZCBtZW50YWwgaGVhbHRoIHNlcnZpY2VzIGluIFdlc3QgU3Vzc2V4LCBpbmNsdWRpbmcgdGhlcmFweSBmb3IgdW5hY2NvbXBhbmllZCBhc3lsdW0gc2Vla2luZyBjaGlsZHJlbiwgd2hvbGUgc2Nob29scyBhbmQgY29sbGVnZXMgYXBwcm9hY2ggdG8gZW1vdGlvbmFsIHdlbGxiZWluZyBhbmQgc2Nob29scywgYWR2b2NhY3kgc2VydmljZSAoMTMwIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUgaGF2ZSByZWNlaXZlZCBzdXBwb3J0IG92ZXIgdGhlIHBhc3QgeWVhciksIGNvdW5zZWxsaW5nIGZvciBjaGlsZHJlbiwgeW91bmcgcGVvcGxlIGFuZCB0aGVpciBmYW1pbGllcyB3aG8gaGF2ZSB3aXRuZXNzZWQgc2V4dWFsIGFidXNlIGFuZCBleHBsb2l0YXRpb24uIFNpbmNlIEp1bHkgMjAxNiBMaWZlY2VudHJlIGhhdmUgc3VwcG9ydGVkIG92ZXIgMTAwIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUuXFxuXFxuKiBUaGUgWUVTIFNlcnZpY2UgZGVsaXZlcmVkIGJ5IElQRUggKEludGVncmF0ZWQgUHJldmVudGlvbiBhbmQgRWFybGllc3QgSGVscCBTZXJ2aWNlKSBoYXZlIHJlY2VpdmVkIG92ZXIgMiwyMDAgcmVmZXJyYWxzIGJldHdlZW4gMjAxNi0xNy4gRHVlIHRvIGRlbWFuZCB0aGUgc2VydmljZSBoYXMgYmVlbiBleHRlbmRlZCB0byBvZmZlciBhIHNlcnZpY2UgZnJvbSAxMy0xOCB5ZWFyIG9sZHMgdG8gMTEtMTggeWVhciBvbGRzLiBUaGlzIHllYXIgdGhlIHNlcnZpY2UgaGFzIHJlcG9ydGVkIHRoYXQgMTElIG9mIGNsaWVudHMgYXJlIGFnZWQgMTEgeWVhcnMuIE9ubHkgMi44JSBvZiBjYXNlcyB3ZXJlIGVzY2FsYXRlZCB0byBDQU1IUy5cXG5cXG4qIEludmVzdG1lbnQgaW4gY291bnNlbGxpbmcgc2VydmljZXMgZm9yIHVuZGVyIDE4IOKAkyBEaWFsb2d1ZSBZTUNBIGhhdmUgcmVjZWl2ZWQgb3ZlciA3NTAgcmVmZXJyYWxzIGZvciBmYWNlIHRvIGZhY2UgY291bnNlbGxpbmcgb3ZlciB0aGUgeWVhciBhbmQgMiwwMDAgeW91bmcgcGVvcGxlIGhhdmUgcmVnaXN0ZXJlZCB0byB1c2UgS29vdGggW2h0dHA6Ly93d3cubmhzLnVrL2NvbmRpdGlvbnMvb25saW5lLW1lbnRhbC1oZWFsdGgtc2VydmljZXMvUGFnZXMva29vdGguYXNweF1bMF0gLiBUaGUgc2VydmljZSByZWNlaXZlcyBhcm91bmQgMSwyNTAgbG9naW5zIGV2ZXJ5IG1vbnRoIGFuZCB0aHJlZSBxdWFydGVycyBvZiB0aGVzZSBhcmUgb3V0c2lkZSBvZiBzY2hvb2wgaG91cnMuXFxuXFxuKiBPdmVyIDc1MCBtZW1iZXJzIG9mIHRoZSBjaGlsZHJlbiBhbmQgeW91bmcgcGVvcGxlIHdvcmtmb3JjZSBoYXZlIHRha2VuIHBhcnQgaW4gdHJhaW5pbmcgb24gZW1vdGlvbmFsIHdlbGxiZWluZyBhbmQgdGhlIG1lbnRhbCBoZWFsdGggcHJvZ3JhbW1lIG92ZXIgdGhlIHBhc3QgeWVhci5cXG5cXG4qIFRoZXJlIGhhdmUgYmVlbiBvY2Nhc2lvbnMgd2hlbiBTUEZUIGhhdmUgbm90IG1ldCB0aGUgdGFyZ2V0IG9mIDk1JSBvZiBjaGlsZHJlbiBhbmQgeW91bmcgcGVvcGxlIHJlY2VpdmluZyBhcyBzZXJ2aWNlIHdpdGhpbiA0IHdlZWtzLiBUaGVzZSBoYXZlIGJlZW4gZGlzY3Vzc2VkIGFuZCBhZGRyZXNzZWQgd2l0aCBjb21taXNzaW9uZXJzIGFuZCBoYXZlIGJlZW4gb2Z0ZW4gYXNzb2NpYXRlZCB0byBkZW1hbmQgYW5kIGNhcGFjaXR5IGlzc3Vlcy5cXG5cXG5bMF06IGh0dHA6Ly93d3cubmhzLnVrL2NvbmRpdGlvbnMvb25saW5lLW1lbnRhbC1oZWFsdGgtc2VydmljZXMvUGFnZXMva29vdGguYXNweFwifV0sXCJ1c2VfY3VzdG9tX3RpdGxlXCI6dHJ1ZSxcImN1c3RvbV90aXRsZVwiOlwiSW5jcmVhc2UgdGhlIG51bWJlciBvZiBjaGlsZHJlbiB3aXRoIGEgbWVudGFsIGhlYWx0aCByZWZlcnJhbCByZWNlaXZpbmcgYW4gYXNzZXNzbWVudCB3aXRoaW4gZm91ciB3ZWVrcyBvZiByZWZlcnJhbFwiLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOnRydWUsXCJjdXN0b21fc3VidGl0bGVcIjpcIlRoaXMgZ29hbCBpcyBtZWFzdXJlZCBieSB0cmFja2luZyB0aGUgcGVyY2VudGFnZSBvZiBjaGlsZHJlbiB3aXRoIGEgbWVudGFsIGhlYWx0aCByZWZlcnJhbCByZWNlaXZpbmcgYW4gYXNzZXNzbWVudCB3aXRoaW4gZm91ciB3ZWVrcyBvZiByZWZlcnJhbCBcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxMy0wMy0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiIlIiwidGFyZ2V0X3R5cGUiOiJyZWxhdGl2ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6OTUsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoiYzdyaS05dThrIn0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6Ij4ifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTN9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwibWFpbnRhaW5cIixcIm1haW50YWluX3R5cGVcIjpcIj5cIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH19LFwic3RhcnRcIjpcIjIwMTQtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTQtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJ0aGUgcGVyY2VudGFnZSBvZiBwZW9wbGUgd2l0aCBhIG1lbnRhbCBoZWFsdGggcmVmZXJyYWwgcmVjZWl2aW5nIGFuIGFzc2Vzc21lbnQgd2l0aGluIGZvdXIgd2Vla3NcIixcImlzX2J1cm5kb3duX2Rpc2FibGVkXCI6ZmFsc2UsXCJpc190cmVuZGxpbmVfZGlzYWJsZWRcIjp0cnVlfSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDoxODoyOS40NjBaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6MTg6MjkuNDYwWiIsInRhcmdldF90b2xlcmFuY2UiOjEwLCJpZCI6ImtmZzYtM2h1MiJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbXSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDoxODozNS44NjBaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MTg6MjkuNTk0WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjE4OjM1Ljg2MFoiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6InV6YmgtZmJibSIsIm5hbWUiOiJDaGlsZHJlbidzIEhlYWx0aHkgV2VpZ2h0IiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhyb3VnaCBpdHMgUHVibGljIEhlYWx0aCByb2xlLCBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCBwcm92aWRlcyBsZWFkZXJzaGlwIHRvIGEgY291bnR5IHdpZGUgaGVhbHRoeSB3ZWlnaHQgbmV0d29yayB3aXRoIHJlcHJlc2VudGF0aXZlcyBmcm9tIG1hbnkgb3JnYW5pc2F0aW9ucyByZWd1bGFybHkgYXR0ZW5kaW5nLiBUaGUgbmV0d29yayBhY3RzIGFzIGEgc3VwcG9ydCBmb3Iga2V5IGxvY2FsIHBhcnRuZXIgb3JnYW5pc2F0aW9ucyBkZWxpdmVyaW5nIHRoZSBhY3Rpb25zIGluIHRoZSBXZXN0IFN1c3NleCBIZWFsdGh5IHdlaWdodCBvcGVyYXRpb25hbCBwbGFuIDIwMTQtMTcgKHRoZSByZWZyZXNoIG9mIHRoZSBlYXJsaWVyIHJlcG9ydCDigJhDcml0aWNhbCBNYXNz4oCZKS4gQm90aCBwcmV2ZW50aW9uIGFuZCBtYW5hZ2VtZW50IG9mIG92ZXJ3ZWlnaHQgYW5kIG9iZXNlIGZvciBhbGwgYWdlIGdyb3VwcyBmYWxsIHdpdGhpbiBzY29wZSBmb3IgdGhlIG5ldHdvcmsuIFRoZSBuZXR3b3JrIG92ZXJzZWVzIGFuZCBtYWludGFpbnMgcGF0aHdheXMgKGFjcm9zcyBhIG51bWJlciBvZiBzZXBhcmF0ZSBjb21taXNzaW9uaW5nIGFuZCBwcm92aWRlciBvcmdhbmlzYXRpb25zKSB0byBpbXByb3ZlIGhvdyBlZmZlY3RpdmVseSB0aGV5IG1lZXQgdGhlIG5lZWRzIG9mIGZhbWlsaWVzLCBjaGlsZHJlbiBhbmQgeW91bmcgcGVvcGxlLiBUaGlzIGluY2x1ZGVzIHRyYWluaW5nIGZyb250bGluZSBzdGFmZiB0byBpZGVudGlmeSBpbmRpdmlkdWFscyBpbiBuZWVkIG9mIGFkZGl0aW9uYWwgc3VwcG9ydCBhbmQgcmVmZXJyYWwuXFxuXFxuTmF0aW9uYWwgQ2hpbGQgTWVhc3VyZW1lbnQgUHJvZ3JhbW1lIGRhdGEgcHJvdmlkZSBhIHByb3h5IGZvciBwb3B1bGF0aW9uIHByZXZhbGVuY2Ugb2YgaGVhbHRoeSB3ZWlnaHQsIG92ZXJ3ZWlnaHQgYW5kIG9iZXNlIGluIHR3byBzY2hvb2wgeWVhciBncm91cHMgYW5kIGFyZSByZWZyZXNoZWQgYW5udWFsbHkuXFxuXFxuIFxcblxcblRoZSBuYXRpb25hbCBDaGlsZCBvYmVzaXR5IGFjdGlvbiBwbGFuIHdhcyBwdWJsaXNoZWQgaW4gQXVndXN0IDIwMTYuIEl0IGlkZW50aWZpZXMgMTQgYWN0aW9ucyBmb3IgbmF0aW9uYWwgb3IgbG9jYWwgcHJvZ3Jlc3Npb24uIFtodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9wdWJsaWNhdGlvbnMvY2hpbGRob29kLW9iZXNpdHktYS1wbGFuLWZvci1hY3Rpb25dWzBdLiBJdCBwbGFjZXMgYSBsb3Qgb2YgZW1waGFzaXMgb24gdGhlIHJvbGUgb2Ygc2Nob29scyB0byBwcm9tb3RlIHBoeXNpY2FsIGFjdGl2aXR5IGFuZCBoZWFsdGh5IGVhdGluZy5cXG5cXG5cXG5cXG5bMF06IGh0dHBzOi8vd3d3Lmdvdi51ay9nb3Zlcm5tZW50L3B1YmxpY2F0aW9ucy9jaGlsZGhvb2Qtb2Jlc2l0eS1hLXBsYW4tZm9yLWFjdGlvblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyDigJMgRGVjZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG4qKk5DTVAgRmlndXJlcyBQdWJsaXNoZWQqKlxcblxcbk5IUyBEaWdpdGFsIHB1Ymxpc2hlZCB0aGUgbW9zdCByZWNlbnQgTmF0aW9uYWwgQ2hpbGRob29kIE1lYXN1cmVtZW50IFByb2dyYW1tZSAoTkNNUCkgZmlndXJlcyBpbiBPY3RvYmVyOyB0aGVzZSBhcmUgdGhlIHJlc3VsdHMgZm9yIHRoZSAyMDE2LzE3IGFjYWRlbWljIHllYXIuIEluIFdlc3QgU3Vzc2V4LCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHdobyBhcmUgY2xhc3NpZmllZCBhcyBvYmVzZSBpbiBZZWFyIDYgaGFzIGJlZW4gY29uc2lzdGVudGx5IGxvd2VyIHRoYW4gdGhlIGZpZ3VyZXMgZm9yIEVuZ2xhbmQgc2luY2UgMjAwNi8wNywgYW5kIHRoaXMgcmVtYWlucyB0aGUgY2FzZSBmb3IgMjAxNi8xNy5JbiBZZWFyIDYsIDI4LjYlIG9mIGNoaWxkcmVuIGluIFdlc3QgU3Vzc2V4IHdlcmUgY2xhc3NpZmllZCBhcyBvdmVyd2VpZ2h0IG9yIG9iZXNlLCBhIGRlY3JlYXNlIGZyb20gMjAxNS8xNi4gNzAuMyUgb2YgWWVhciA2IGNoaWxkcmVuIHdlcmUgY2xhc3NpZmllZCBhcyBoZWFsdGh5IHdlaWdodCwgaGlnaGVyIHRoYW4gdGhlIHByZXZhbGVuY2UgZm9yIGJvdGggdGhlIFNvdXRoIEVhc3QgYW5kIEVuZ2xhbmQuIFRoaXMgcGVyY2VudGFnZSBpcyBoaWdoZXIgdGhhbiB0aGUgcHJldmlvdXMgdGhyZWUgeWVhcnMsIGFuZCB0aGUgcGVyY2VudGFnZSBvZiBjaGlsZHJlbiBjbGFzc2lmaWVkIGFzIGhlYWx0aHkgd2VpZ2h0IGZvciBZZWFyIDYgaGFzIGJlZW4gY29uc2lzdGVudGx5IGhpZ2hlciB0aGFuIEVuZ2xhbmQgc2luY2UgMjAwNi8wNy5cXG5cXG4gXFxuXFxuNzAuMyUgcGxhY2VzIFdlc3QgU3Vzc2V4IGF0IGdyZWVuIGNvbXBhcmVkIHRvIHRhcmdldC5cXG5cXG4gXFxuXFxuVGhlIHByZXZhbGVuY2Ugb2Ygb2Jlc2l0eSB3YXMgbG93ZXN0IGluIEhvcnNoYW0gKDEwLjIlKSBhbmQgTWlkIFN1c3NleCAoMTIuMiUpIGJ1dCBoaWdoZXN0IGluIEFydW4gKDE5LjglKS5cXG5cXG4gXFxuXFxuVGhlIHByZXZhbGVuY2Ugb2YgY2hpbGRyZW4gaW4gWWVhciA2IChkZXJpdmVkIGZyb20gdGhlIHBvc3Rjb2RlIG9mIHRoZSBzY2hvb2wpIGNsYXNzaWZpZWQgYXMgb3ZlcndlaWdodCBhbmQgb2Jlc2UgY29tYmluZWQsIGFzIGEgcGVyY2VudGFnZS5cXG5cXG4qKlRoZSBXZXN0IFN1c3NleCBBcHByb2FjaCoqXFxuXFxuIFxcblxcbldpdGhpbiBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCwgdGhlIEludGVncmF0ZWQgUHJldmVudGlvbiBhbmQgRWFybGllc3QgSGVscCAoSVBFSCkgc2VydmljZSAoQ291bmNpbCBhbmQgSGVhbHRoeSBDaGlsZCBQcm9ncmFtbWUgc2VydmljZSAtIEhDUCkgYWltcyB0byBwcmV2ZW50IGFuZCByZWR1Y2UgZXhjZXNzIHdlaWdodCB0aHJvdWdoIGJvdGggdW5pdmVyc2FsIGFuZCB0YXJnZXRlZCBhcHByb2FjaGVzIGF0IGNvbW11bml0eSBhbmQgaW5kaXZpZHVhbCBsZXZlbC5cXG5cXG5UaGUgd29yayBieSBJUEVIIHRvIHJlZHVjZSBjaGlsZGhvb2Qgb2Jlc2l0eSBpcyBiZWluZyBkZXZlbG9wZWQgYXMgcGFydCBvZiBhIHdpZGVyIDAtMTkvMjUgaW50ZWdyYXRlZCBzZXJ2aWNlIG9mZmVyLiBFdmlkZW5jZSBzdWdnZXN0cyB0aGF0IHdlIG5lZWQgdG8gdHJ5IGFuZCBmb2N1cyBlZmZvcnRzIG9uIHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gYW5kIHlvdW5nIHBlb3BsZSBiZWNvbWluZyBvdmVyd2VpZ2h0IChTdGVmYXRlciBldCBhbCwgMjAxMykuIEEgTWFraW5nIEV2ZXJ5IENvbnRhY3QgQ291bnQgKE1FQ0MpIGFwcHJvYWNoIHdpbGwgYmUgdXNlZCB0byBwcm9tb3RlIGhlYWx0aHkgZWF0aW5nIGFuZCBsaWZlc3R5bGVzIGNvbnNpc3RlbnRseSBpbiBib3RoIHVuaXZlcnNhbCBhbmQgdGFyZ2V0ZWQgd29yayB3aXRoIGNoaWxkcmVuIGFuZCBmYW1pbGllcy5UaGUgbW9kZWwgYmVsb3cgcHJlc2VudHMgdGhlIG9mZmVyIGZyb20gSVBFSCB0byBjaGlsZHJlbiwgeW91bmcgcGVvcGxlIGFuZCBmYW1pbGllcyBhdCBlYWNoIGxldmVsIG9mIHNlcnZpY2UgYWNyb3NzIHRoZSBXZXN0IFN1c3NleCBjb250aW51dW0gb2YgbmVlZC4gT3RoZXIgc3VwcG9ydGl2ZSBjb21tdW5pdHkgc2VydmljZXMgLyBvcmdhbmlzYXRpb25zIGFyZSBhbHNvIHJlZmxlY3RlZC5cXG5cXG5DaGFuZ2U0TGlmZVxcblxcbkEgbmV3IENoYW5nZTQgTGlmZSBjYW1wYWlnbiBsYXVuY2hpbmcgaW4gSmFudWFyeSAyMDE4IGFpbXMgdG8gaGVscCBmYW1pbGllcyBjaG9vc2UgaGVhbHRoaWVyIHNuYWNrcy4gSXQgd2lsbCBpbnRyb2R1Y2UgdGhlIG5ldyBzaW1wbGUgdGlwIG9mIOKAnExvb2sgZm9yIDEwMCBjYWxvcmllIHNuYWNrcywgdHdvIGEgZGF5IG1heOKAnVRoZSBjYW1wYWlnbiB3aWxsIGJlIHN1cHBvcnRlZCBieSB0aGUgQ2hhbmdlNExpZmUg4oCcIEZvb2Qgc2Nhbm5lciBBcHDigJ0gd2hpY2ggd2lsbCBzaG93IGhvdyBtdWNoIHN1Z2FyLCBzYWx0IGFuZCBzYXR1cmF0ZWQgZmF0IGlzIGluc2lkZSBzbmFjayBmb29kcyBhbmQgZHJpbmtzIFRoaXMgYXBwIHdpbGwgcmVwbGFjZSB0aGUgcHJldmlvdXMgQmUgRm9vZCBTbWFydCBhcHAgYW5kIHdpbGwgcHJvdmlkZSBjYWxvcmllIGluZm9ybWF0aW9uLCB3aWxsIGhhdmUgYW4gaW1wcm92ZWQgcmVzdWx0cyBsYXlvdXQgYW5kIGNvbnN0YW50bHkgaW1wcm92aW5nIHByb2R1Y3QgZGF0YS5cXG5cXG5QdWJsaWMgSGVhbHRoIGlzIHdvcmtpbmcgd2l0aCBpdHMgY29sbGVhZ3VlcyBpbiBXZXN0IFN1c3NleCBMaWJyYXJpZXMgYW5kIGxlaXN1cmUgY2VudHJlcyBmcm9tIHRoZSBlbmQgb2YgSmFudWFyeSB0byBwcm9tb3RlIHRoZSBGYW1pbHkgU25hY2sgY2hhbGxlbmdlLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcbkVhdCBSaWdodCBTdGF5IEJyaWdodCAoIEVSU0IpIGlzIGRlbGl2ZXJlZCB0byBzY2hvb2xzIGluIFdlc3QgU3Vzc2V4IGFzIHBhcnQgb2YgdGhlIHNjaG9vbCBtZWFsIGNvbnRyYWN0IHdpdGggQ2hhcnR3ZWxscy4gSXQgYWltcyB0byBpbmNyZWFzZSB1cHRha2Ugb2YgdGhlIHNjaG9vbCBtZWFscyBhbmQgaW1wYWN0IHVwb24gb2Jlc2l0eSByYXRlcyBhbmQgdGhlIGF0dGFpbm1lbnQgZ2FwIGJldHdlZW4gdGhlIG1vc3QgYWR2YW50YWdlZCBhbmQgZGlzYWR2YW50YWdlZC4gSXQgaXMgYSBGdW4gaW4gdG8gRm9vZCBwcm9ncmFtbWUgdGFja2xpbmcgbnV0cml0aW9uIGVkdWNhdGlvbiB3aXRoIGEgd2hvbGUgc2Nob29sIGFwcHJvYWNoLlxcblxcblRoZSBmaXJzdCB5ZWFyIG9mIHRoZSBwcm9ncmFtbWUgaW4gV2VzdCBTdXNzZXggaGFzIHNlZW4gMzIgc2Nob29scyBlbmdhZ2Ugd2l0aCBFUlNCIHdpdGggNjggZGlmZmVyZW50IHdvcmtzaG9wIHNlc3Npb25zIHJ1bi4gVHdlbHZlIHNjaG9vbHMgaGF2ZSBoYWQgcmVwZWF0IHZpc2l0cy4gQXBwcm94IDEsOTA0IGNoaWxkcmVuIGhhdmUgdGFrZW4gcGFydCBpbiB0aGUgd29ya3Nob3BzIGFuZCBwYXJlbnQgZXZlbnRzIGhhdmUgYWxzbyBiZWVuIGhlbGQgNTcgdGltZXMuXFxuXFxuRmVlZGJhY2sgZnJvbSB0aGUgd29ya3Nob3BzIGluIG9uZSBzY2hvb2wgaXMgYmVsb3cuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUmVjZXB0aW9uIFRlYWNoZXIqKiDigJMg4oCYV2UgaW4gcGFydGljdWxhciBoYWQgYSB2ZXJ5IHBvc2l0aXZlIGV4cGVyaWVuY2UgZm9yIG9uZSBib3kgd2hvIGhhcyBhbiBpc3N1ZSB3aXRoIGVhdGluZyB0aGF0IGNvbWVzIHdpdGggYXNzb2NpYXRlZCBoZWFsdGggaXNzdWVzLiBIZSB3YXMgaGFwcHkgdG8gdHJ5IHNvbWUgb2YgdGhlIGZydWl0IGFuZCBzYWxhZCB0aGF0IGhlIHByZXZpb3VzbHkgaGFzIG5vdCB3YW50ZWQgdG8gdHJ5LiBBcyBhIHdob2xlIGNsYXNzIHdlIHdlcmUgdmVyeSBwcm91ZCBvZiB0aGlzIGFjaGlldmVtZW50IGFuZCBoZSByZWNlaXZlZCBhICd3b3cnIG1vbWVudCBjZXJ0aWZpY2F0ZSB0byB0YWtlIGhvbWUgdG8gaGlzIG11bSB3aXRoIHBob3RvcyBvZiB3aGF0IGhlIGhhZCBkb25lIHRoYXQgZGF5LiBXZSBmZWVsIGhlIHdhcyBoYXBweSB0byB0cnkgdGhlc2UgZm9vZHMgYXMgaXQgd2FzIGRvbmUgaW4gYSByZWxheGVkIGFuZCBmdW4gbWFubmVyLiBIZSBoYXMgbm93IGJlZW4gYSBsaXR0bGUgbW9yZSB3aWxsaW5nIHRvIHRyeSBtb3JlIG5ldyBmb29kcyBpbiBjbGFzcyBhdCBzbmFjayB0aW1lLuKAmVxcblxcbiBcXG5cXG4qKlJlY2VwdGlvbiBUZWFjaGVyKiog4oCTIOKAmFRoZSBjaGlsZHJlbiBoYWQgYSBsb3ZlbHkgdGltZSB3aXRoIHlvdXJzZWxmIGFuZCB5b3VyIGNvbGxlYWd1ZSBsZWFybmluZyBhYm91dCBoZWFsdGh5IGVhdGluZyBhbmQgdGhlIG9wcG9ydHVuaXR5IGZvciBzb21lIGZvb2QgdGFzdGluZy4gVGhpcyB3YXMgYSBsb3ZlbHkgZXhwZXJpZW5jZSBmb3IgdGhlIGNoaWxkcmVuIHRvIHRyeSBhIHZhcmlldHkgb2YgZnJ1aXQgb3Igc2FsYWQgdGhhdCB0aGV5IG1heSBub3QgaGF2ZSB0cmllZCBiZWZvcmUu4oCZIC1cXG5cXG4gXFxuXFxuKipZZWFyIDIgVGVhY2hlcioqIOKAkyDigJhJdOKAmWQgYmUgd29uZGVyZnVsIHRvIGhhdmUgeW91IGluIGFnYWluIGZvciBhIGRpZmZlcmVudCB0b3BpYyB3aXRoIHRoZSBjaGlsZHJlbi4gSSBrbm93IHRoYXQgbWFueSBpbiBteSBjbGFzcyBkbyBzdHJ1Z2dsZSB0byBlYXQgdGhlIHZlZ2V0YWJsZXMgYnV0IHRoZXkgYWxzbyBvbmx5IGtub3cgYWJvdXQgdGhlIHR5cGljYWwgdmVnZXRhYmxlcy4gVGhleSB3b3VsZG7igJl0IGtub3cgd2hhdCBhIHJodWJhcmIgaXMgZm9yIGV4YW1wbGUgYW5kIGl0IHNlZW1zIHN1Y2ggYSBzaGFtZS7igJlcXG5cXG4qKlBhcmVudCoqIOKAkyDigJhJ4oCZbSBhY3R1YWxseSByZWFsbHkgc3VycHJpc2VkIHRoYXQgdGhlc2UgY29udGFpbiB0aGF0IG11Y2ggc3VnYXIuIFdoeSBpcyBpdCBhbGxvd2VkPyBNeSBodXNiYW5kIHdpbGwgYmUgaG9ycmlmaWZlZC5cXG5cXG5cIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy81Q0FCQ0ZBMS04N0ZFLTQyMjMtQjJBQi02NzE3Njk3NkVEREJcIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8zOTlERENCRi00NjA3LTRCQUMtOTcxNy1GOTg2Mjg0QjJDNEFcIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIEVhdCBSaWdodCBTdGF5IFJpZ2h0IHdvcmtzaG9wcyBpbiBXZXN0IFN1c3NleCBzdXBwb3J0IHRoZSBjb3VudHnigJlzIHN1Z2FyIHJlZHVjdGlvbiBwcm9ncmFtbWUuXFxuXFxuKipZZWFyIDUgUHVwaWwqKuKAkyDigJhJIHRoaW5rIEkgZWF0IHRvbyBtdWNoIGNob2NvbGF0ZSBhZnRlciBFYXN0ZXIgSSB3YW50IHRvIHRyeSBzdG9wcGluZyBlYXRpbmcgaXQgYnV0IEkgd2lsbCBoYXZlIGFsbCBteSBlYXN0ZXIgZWdnc+KAmS4gQWZ0ZXIgZGlzY3Vzc2lvbiB3aXRoIHRoZSBFUlNCIGNvb3JkaW5hdG9yIGFuZCBjbGFzc21hdGVzIHRoZSBjaGlsZCBvcHRlZCB0byB0cnkgZ2l2aW5nIHVwIGNob2NvbGF0ZSBmb3IgbGVudC5cXG5cXG4qKlllYXIgNSBUZWFjaGVyKirigJPigJhJdOKAmXMgZ3JlYXQgdG8gdGVhY2ggdGhlbSBhbGwgYWJvdXQgd2hhdCBjYW4gaGFwcGVuIGxhdGVyIG9uIGluIGxpZmUgd2l0aCBoZWFydCBkaXNlYXNlIGFuZCBkaWFiZXRlcy4gVGhleSBvZnRlbiBqdXN0IHRoaW5rIGFib3V0IHRoZSBlZmZlY3Qgb24gdGhlaXIgdGVldGggYmVjYXVzZSBpdOKAmXMgc29tZXRoaW5nIHRoZXkgY2FuIHBoeXNpY2FsbHkgc2VlIGFuZCBwcm9iYWJseSBoYXZlIHNlZW4gb24gY2hpbGRyZW4gdGhlaXIgYWdlLuKAmVxcblxcbioqWWVhciA2IFB1cGlsKirigJMg4oCYTXkgZGFkIGRyaW5rcyB0aGlzIHF1aXRlIGEgbG90IChNb25zdGVyIEVuZXJneSBEcmluaykgYW5kIGl04oCZcyB0d2ljZSB0aGUgYW1vdW50IG9mIHN1Z2FyIGhl4oCZcyBhbGxvd2VkLiBJ4oCZbSBnb2luZyB0byB0ZWxsIGhpbeKAmS5cXG5cXG4qKlllYXIgNSBQdXBpbCoq4oCTIOKAmFlvdSBzYWlkIHRvbWF0byBrZXRjaHVwIHdhcyByZWFsbHkgc3VnYXJ5OyBpcyBpdCB3b3JzZSB0aGFuIHRoZXNlIGRyaW5rcz/igJkgRVJTQiBjb29yZGluYXRvciBlbmNvdXJhZ2VkIHRoZSBwdXBpbCB0byBsb29rIGF0IHRoZSBsYWJlbHMgb2YgaGlzIGJvdHRsZSBhdCBob21lLi4g74K3XFxuXFxuKipUZWFjaGluZyBBc3Npc3RhbnQqKuKAkyDigJhJIGhhdmUgb25lIG9mIHRob3NlIG1pbGtzaGFrZXMgaW4gbXkgZnJpZGdlLiBJIG1pZ2h0IHRocm93IGl0IG91dCBub3figJkuIEZ1dHVyZSBjb252ZXJzYXRpb25zIHdpdGggVEEgcmV2ZWFsZWQgdGhlIGNoaWxkcmVuIHJlbWluZGVkIHRoZSBUQSB0byB0aHJvdyBvdXQgdGhlIGRyaW5rLlxcblxcbkxpdmluZyBTdHJlZXRzIGRlbGl2ZXIgV2FsayBPbmNlIGEgV2VlayBwcm9ncmFtbWVzIGluIHNjaG9vbHMgaW4gV2VzdCBTdXNzZXguIFRoZXkgaGF2ZSBhIGxpc3Qgb2Ygc2Nob29scyB0byB0YXJnZXQsIHRoYXQgZml0IHdpdGggdGhlIFdlc3QgU3Vzc2V4IFN0cmF0ZWdpYyBkZXZlbG9wbWVudCBzaXRlcywgcGx1cyBwdWJsaWMgaGVhbHRoIHByaW9yaXR5IGFyZWFzLiA1IG91dCBvZiAxMCBuZXcgcHJpbWFyeSBzY2hvb2xzIGFyZSBlbnJvbGxlZCB0byBXT1csIHRoZSB5ZWFyLXJvdW5kIHdhbGsgdG8gc2Nob29sIGNoYWxsZW5nZS5cXG5cXG5UaGVzZSBhcmU6XFxuXFxuQ2hpZGhhbSBQYXJvY2hpYWwgUHJpbWFyeVxcblxcbkFzaHVyc3QgV29vZCBQcmltYXJ5LCBFYXN0IEdyaW5zdGVhZFxcblxcbkR1cnJpbmd0b24gSnVuaW9yIFNjaG9vbFxcblxcblNoZWRkaW5nZGVhbiBQcmltYXJ5LCBCdXJnZXNzIEhpbGxcXG5cXG5IZWVuZSBQcmltYXJ5IFNjaG9vbCwgV29ydGhpbmdcXG5cXG7igKZhbGwgaWYgd2hpY2ggYXJlIG9uIHRoZSB0YXJnZXRlZCBsaXN0IG9mIGV4cGFuZGluZyBzY2hvb2xzLCBvciBoYXZlIHdvcmtzIHNjaGVkdWxlZC4gRm91ciBvZiB0aGVzZSBzY2hvb2xzIGhhdmUgbGF1bmNoZWQgYW5kIGFyZSB1c2luZyBUcmF2ZWwgVHJhY2tlciB0byBsb2cgdGhlaXIgZGFpbHkgam91cm5leXMgdG8gc2Nob29sLlxcblxcbjMgc3RyZWV0IGF1ZGl0cyBhcmUgcGxhbm5lZCwgMiBvZiB0aGVtIHdpdGggUGFya2xhbmRzIFJlc2lkZW50cyBBc3NvY2lhdGlvbiBpbiBDaGljaGVzdGVyLCBhIGxhcmdlIGhvdXNpbmcgZXN0YXRlIHdpdGggYXJvdW5kIDEsNTAwIHJlc2lkZW5jZXMsIG9uIHRoZSBlZGdlIG9mIHRoZSBjaXR5IGNlbnRyZSB3aXRoIDIgcHJpbWFyeSBzY2hvb2xzLCBhIHNlY29uZGFyeSBzY2hvb2wsIGFuIE5IUyBkb2N0b3JzIHN1cmdlcnkgYW5kIGEgcGFyYWRlIG9mIHNob3BzIHdpdGhpbiBpdHMgYm91bmRhcnkuIFdlIHdpbGwgcnVuIDIgYXVkaXRzLCBhdCBkaWZmZXJlbnQgdGltZXMgb2YgeWVhciwgYW5kIGFyZSB0YWxraW5nIHRvIEJpc2hvcCBMdWZmYSBTY2hvb2wsIFBhcmtsYW5kcyBDb21tdW5pdHkgUHJpbWFyeSBhbmQgQ2VudHJhbCBTY2hvb2wgYWJvdXQgdGhlaXIgcG90ZW50aWFsIGludm9sdmVtZW50IGluIHRoZSBhdWRpdCBwcm9jZXNzLiBXZSBob3BlIHRvIHNpbXVsdGFuZW91c2x5IGludm9sdmUgcmVzaWRlbnRzIGFyb3VuZCB0aGUgZXN0YXRlIHdobyB3aWxsIHVuZGVydGFrZSB0aGVpciBvd24g4oCYc3RyZWV0IHNjYWxlIHN1cnZleXPigJkgdG8gZW5zdXJlIHRoYXQgdGhlIGF1ZGl0IHByb2Nlc3MgaXMgYXMgaW5jbHVzaXZlIGFuZCBob2xpc3RpYyBhcyBwb3NzaWJsZS4gVGhlIFJlc2lkZW50cyBBc3NvY2lhdGlvbiB3aWxsIHRoZW4gYmUgYWJsZSB0byBtYXAgdGhlIHJlc3VsdHMgdG8gaW5mb3JtIHByaW9yaXRpZXMgZm9yIHRoZSBlc3RhdGUuIFRoaXMgd2lsbCBiZSBhIHRyaWFsIGFwcHJvYWNoIGZvciBMaXZpbmcgU3RyZWV0cyBhbmQgd2lsbCBiZSB2ZXJ5IGludGVyZXN0aW5nIHRvIHNlZSB0aGUgb3V0Y29tZXMgYW5kIGhvdyBpdCBjYW4gZXZvbHZlLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5TdWdhciByZWR1Y3Rpb24gcHJvZ3JhbW1lIC0gRnVydGhlciBzdWdhciByZWR1Y3Rpb24gaGFzIG9jY3VycmVkIGluIHRoZSBzY2hvb2wgbWVhbHMgcHJvdmlkZWQgdGhyb3VnaCB0aGUgQ2hhcnR3ZWxsIGNvbnRyYWN0IGFuZCB0aGV5IG5vdyBjb250YWluIDY1JSBsZXNzIHN1Z2FyIHRoYW4gdGhleSBkaWQgdHdvIGFuZCBhIGhhbGYgeWVhcnMgYWdvLiBJbiB0b3RhbCAzMCwwMDAgV2VzdCBTdXNzZXggY2hpbGRyZW4gcGVyIGRheSBhcmUgYmVuZWZpdGluZy4gVGhlIGRhaWx5IHN1Z2FyIGNvbnN1bXB0aW9uIGhhcyByZWR1Y2VkIGZyb20gdGhlIDE4LjVnIHRvIDYuNmcgcGVyIGNoaWxkLlxcblxcblRoZSBFeGVjdXRpdmUgQ2hpbGQgT2Jlc2l0eSBUYXNrIGFuZCBGaW5pc2ggR3JvdXAgKFRGRykgd2hpY2ggY29tcGxldGVkIGluIE1hcmNoIDIwMTcgbWFkZSBhIG51bWJlciBvZiByZXNvbHV0aW9ucyBpbmNsdWRpbmc6LVxcblxcbjEuIERldmVsb3AgYSBDb3VudHkgQ291bmNpbCBjaGFydGVyIHN1cHBvcnRpbmcgc2lnbnVwIHRvIHRoZSBuYXRpb25hbCBoZWFsdGh5IHJhdGluZyBvZiBzY2hvb2xzIHNjaGVtZSwgaW5jbHVkaW5nIGEgbG9jYWwgYXdhcmQgc2NoZW1lIHRvIGVuY29tcGFzcyBhbGwgV2VzdCBTdXNzZXggbnVyc2VyaWVzLCBzY2hvb2xzICggaW5jbHVkaW5nIHNwZWNpYWwgc2Nob29scyksIGxvb2tlZCBhZnRlciBjaGlsZHJlbixjaGlsZHJlbiBhbmQgZmFtaWx5IGNlbnRyZXMgYW5kIGluY2x1ZGluZyBsZWlzdXJlIGNlbnRyZXMgd2hlcmUgYXBwcm9wcmlhdGUuXFxuXFxuMS4gVGhhdCB3aGVuIHRoZXkgYmVjb21lIGF2YWlsYWJsZSwgdGhlIG5hdGlvbmFsIGd1aWRlbGluZXMgZm9yIGltcGxlbWVudGF0aW9uIG9mIGhlYWx0aGllciBmb29kIGluIGxlaXN1cmUgY2VudHJlcyBhcmUgcHJvdmlkZWQgdG8gdGhlIENhYmluZXQgTWVtYmVyIGFuZCBndWlkYW5jZSBhbmQgc3VwcG9ydCBpcyBvZmZlcmVkIHRvIHRoZSBEaXN0cmljdCBhbmQgQm9yb3VnaHMsIGFzIGNvbW1pc3Npb25lcnMgb2YgbGVpc3VyZSwgdG8gaGVscCB0aGlzIHNlY3RvciBhY2hpZXZlIHRoZXNlIHN0YW5kYXJkcy5cXG5cXG4xLiBUbyBtYWludGFpbiBhIGxvbmcgdGVybSBjb21taXRtZW50IHRvIHRoZSBDb3VudHkgQ291bmNpbCBDaGFydGVyIGluY2x1ZGluZyBhIOKAnGhlYWx0aCBpbXBhY3QgYXNzZXNzbWVudOKAnXRvIGVuc3VyZSB0aGF0IGFueSBjaGFuZ2VzIHRvIHBsYW5uaW5nIGFuZCBwb2xpY3kgd2l0aGluIGVhY2ggZXN0YWJsaXNobWVudCwgY29uc2lkZXJzIHRoZSB3aWRlciBpbXBhY3Qgb24gdGhlIGhlYWx0aCBhbmQgd2VsbGJlaW5nIG9mIHlvdW5nIHBlb3BsZS5cXG5cXG4xLiBUaGUgUHVibGljIEhlYWx0aCBUZWFtIGFycmFuZ2UgZm9yIGEgZ3JvdXAgb2YgeW91bmcgcGVvcGxlIHRvIHRlc3QgYW5kIGNvbW1lbnQgb24gdGhlIFBIRS9TQVBITkEgYXBwIG9uY2UgaXQgaXMgbGF1bmNoZWQsIGFsb25nc2lkZSBvdGhlciBhcHBzIHdoaWNoIGFkZHJlc3MgaGVhbHRoeSBlYXRpbmcgaGFiaXRzIGFuZCBwaHlzaWNhbCBhY3Rpdml0eSwgdG8gZXZhbHVhdGUgd2hldGhlciBvbmUgc2hvdWxkIGJlIHJlY29tbWVuZGVkIGJ5IHRoZSBUZWFtIHRvIFdlc3QgU3Vzc2V4IFNjaG9vbHMuXFxuXFxuMS4gVGhlIFB1YmxpYyBIZWFsdGggVGVhbSBjb29yZGluYXRlIGNvbW11bmljYXRpb24gYW5kIGNsb3NlciB3b3JraW5nIHdpdGggc2Nob29scyB0byBoZWxwIGluY3JlYXNlIGRlbWFuZCBmb3IgdGhlIGF2YWlsYWJsZSBCaWtlIGFiaWxpdHkgQ291cnNlcyBhbmQgbGlhaXNlIHdpdGggb3RoZXIgQ291bnR5IENvdW5jaWwgRGVwYXJ0bWVudHMgb24gYSBtZXRob2QgZm9yIGV2YWx1YXRpbmcgdGhlIGludGVydmVudGlvbiwgc2hvdWxkIHRoZSByZXNvdXJjZXMgYmVjb21lIGF2YWlsYWJsZS5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDQgLSBNYXJjaCAyMDE3KipcXG5cXG4tIC0gLVxcblxcbk5IUyBEaWdpdGFsIHB1Ymxpc2hlZCB0aGUgbW9zdCByZWNlbnQgcmVsZWFzZSBvZiB0aGUgTkNNUCBpbiBOb3ZlbWJlciAyMDE2LiBUaGVzZSByZXN1bHRzIGFyZSBmb3IgdGhlIDIwMTUvMTYgYWNhZGVtaWMgeWVhci5cXG5cXG5JbiBXZXN0IFN1c3NleCAzMC40JSBvZiB5ZWFyIDYgY2hpbGRyZW4gYXJlIG1lYXN1cmVkIGFzIG92ZXJ3ZWlnaHQgb3Igb2Jlc2UuIDEuMSUgb2YgdGhpcyBhZ2UgZ3JvdXAgaXMgdW5kZXJ3ZWlnaHQsIHJlc3VsdGluZyBpbiA2OC41JSBvZiBjaGlsZHJlbiBiZWluZyBhIGhlYWx0aHkgd2VpZ2h0LiBUaGUgcGVyY2VudGFnZSBvZiBjaGlsZHJlbiB3aXRoIGEgaGVhbHRoeSB3ZWlnaHQgaXMgaGlnaGVyIGluIFdlc3QgU3Vzc2V4IHRoYW4gRW5nbGFuZC4gVGhlcmUgaXMgbm8gc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZXNlIGZpZ3VyZXMgYW5kIHRob3NlIG9mIDIwMTQvMTUuXFxuXFxuVGhpcyBwbGFjZXMgdXMgYXQgYW1iZXIgY29tcGFyZWQgdG8gdGFyZ2V0LCBhdCB5ZWFyIGVuZCwgYXMgcHJlZGljdGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgeWVhci5cXG5cXG4qKkZpbmFsIGZpZ3VyZXMgZnJvbSB0aGUgc3BlY2lhbGlzdCBzZXJ2aWNlIChXZWlnaHQgTWFuYWdlbWVudCBDZW50cmUpIGZvciAyMDE2LzIwMTcgYXJlIGFzIGZvbGxvd3MqKlxcblxcbiogVHdvIGh1bmRyZWQgYW5kIGZpZnRlZW4gZmFtaWxpZXMgZW5yb2xsZWQgb24gdGhlIEFsaXZlIE4gS2lja2luZyBwcm9ncmFtbWUgZm9yIGNoaWxkcmVuLlxcblxcbiogSnVzdCBvdmVyIDgwJSBjb21wbGV0ZWQgdGhlIHByb2dyYW1tZSBhbmQgNDglIG1haW50YWluZWQgb3IgcmVkdWNlZCB0aGVpciBCTUkuXFxuXCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipDaGFuZ2U0TGlmZSBCZSBGb29kIFNtYXJ0IENhbXBhaWduKipcXG5cXG5XZXN0IFN1c3NleCBQdWJsaWMgSGVhbHRoIERpcmVjdG9yYXRlIHN1cHBvcnRzIHRoZSBuYXRpb25hbCBDaGFuZ2U0TGlmZSBjYW1wYWlnbiwgd2hpY2ggbGF1bmNoZWQgQmUgRm9vZCBTbWFydCBpbiBKYW51YXJ5LiBUaGlzIGNhbXBhaWduIGhpZ2hsaWdodHMgdGhlIHN1cnByaXNpbmcgYW1vdW50IG9mIHN1Z2FyLCBzYXR1cmF0ZWQgZmF0IGFuZCBzYWx0IGZvdW5kIGluIGV2ZXJ5ZGF5IGZvb2QgYW5kIGRyaW5rLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkJlIEZvb2QgU21hcnQgVGVhbSB2aXNpdGVkIENyYXdsZXkhKipcXG5cXG5UaGUgUHVibGljIEhlYWx0aCBFbmdsYW5kIChQSEUpIEJlIEZvb2QgU21hcnQgVGVhbSB2aXNpdGVkIFRlc2NvIEV4dHJhIGluIEhhemVsd2ljaywgQ3Jhd2xleSBvbiBGcmlkYXksIDE3dGggTWFyY2ggMjAxNyB0byByYWlzZSBhd2FyZW5lc3Mgb2YgdGhlIEJlIEZvb2QgU21hcnQgY2FtcGFpZ24gYW5kIHRvIGVuY291cmFnZSBzaG9wcGVycyB0byBkb3dubG9hZCB0aGUgZnJlZSBCZSBGb29kIFNtYXJ0IGFwcCwgd2hpY2ggaXMgYXZhaWxhYmxlIGZyb20gdGhlIGlUdW5lcyBzdG9yZSBvciBHb29nbGUgUGxheS4gVGhlIHRlYW0gcHJvdmlkZWQgYWR2aWNlIHRvIHNob3BwZXJzIGFib3V0IHRoZSBhbW91bnQgb2Ygc3VnYXIsIHNhdHVyYXRlZCBmYXQgYW5kIHNhbHQgZm91bmQgaW4gcG9wdWxhciBmYW1pbHkgZm9vZHMsIGFuZCBpbiBzb21lIGluc3RhbmNlcywgc2hvcHBlcnMgZGVjaWRlZCB0byBleGNoYW5nZSB0aGVpciBwdXJjaGFzZXMgZm9yIGhlYWx0aGllciBvcHRpb25zLiBUaGUgc3RhbmQgd2FzIGluIGFuIGFyZWEgb2YgaGlnaCBmb290ZmFsbCBpbiB0aGUgc3RvcmUgYW5kIHRoZSB0ZWFtIGhhZCBnaXZlbiBvdXQgb3ZlciA4MDAgcGFja3MgYnkgbHVuY2ggdGltZS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipIb3JzaGFtIEp1bmlvciBDaXRpemVucyBFdmVudCoqXFxuXFxuTWVtYmVycyBvZiB0aGUgUHVibGljIEhlYWx0aCBUZWFtIGFuZCBIb3JzaGFtIFdlbGxiZWluZyBsZWQg4oCYQmUgRm9vZCBTbWFydOKAmSBDaGFsbGVuZ2UsIGF0IHRoaXMgZXZlbnQgd2hpY2ggdG9vayBwbGFjZSBpbiBlYXJseSBBcHJpbC4gVGhlIGFubnVhbCBldmVudCBhaW1zIHRvIHRlYWNoIGVzc2VudGlhbCBsaWZlIHNraWxscyB0byBvdmVyIDEyMDAgcHJpbWFyeSBzY2hvb2wgY2hpbGRyZW4gYWdlZCBuaW5lIHRvIGVsZXZlbiB5ZWFycyBvbGQgd2hvIGF0dGVuZCBzY2hvb2xzIHdpdGhpbiB0aGUgSG9yc2hhbSBkaXN0cmljdCwgdGhyb3VnaCBhIG51bWJlciBvZiBmdW4gYW5kIHRob3VnaHQtcHJvdm9raW5nIHNjZW5hcmlvcy5cXG5cXG5cIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9CQjQwMTc1Ri0zOTQyLTRFNTAtODYyQi0wOTE4ODM1RkM5N0NcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMUI1QTlDQzMtMjVDNS00MzNGLUJDMkQtN0VDOEQ5NzczM0E1XCJ9XV19LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvODI1ODBDN0UtMTI1Qi00Q0QzLUI4M0EtMjY5MkQyRERFMDdEXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQTcyQTI3MEEtMEVCNC00MzBCLUFBQjYtODdBQUZBQzc5NDQ3XCJ9XV19LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIC0gRGVjZW1iZXIgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5OSFMgRGlnaXRhbCBwdWJsaXNoZWQgdGhlIG1vc3QgcmVjZW50IHJlbGVhc2Ugb2YgdGhlIE5DTVAgaW4gTm92ZW1iZXIgMjAxNi4gVGhlc2UgcmVzdWx0cyBhcmUgZm9yIHRoZSAyMDE1LzE2IGFjYWRlbWljIHllYXIuIEluIFdlc3QgU3Vzc2V4IDMwLjQlIG9mIHllYXIgNiBjaGlsZHJlbiBhcmUgbWVhc3VyZWQgYXMgb3ZlcndlaWdodCBvciBvYmVzZS4gMS4xJSBvZiB0aGlzIGFnZSBncm91cCBpcyB1bmRlcndlaWdodCwgcmVzdWx0aW5nIGluIDY4LjUlIG9mIGNoaWxkcmVuIGJlaW5nIGEgaGVhbHRoeSB3ZWlnaHQuIFRoZSBwZXJjZW50YWdlIG9mIGNoaWxkcmVuIHdpdGggYSBoZWFsdGh5IHdlaWdodCBpcyBoaWdoZXIgaW4gV2VzdCBTdXNzZXggdGhhbiBFbmdsYW5kLiBUaGVyZSBpcyBubyBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UgZmlndXJlcyBhbmQgdGhvc2Ugb2YgMjAxNC8xNS5UaGlzIHBsYWNlcyB1cyBhdCBhbWJlciBjb21wYXJlZCB0byB0YXJnZXQsIGF0IHllYXIgZW5kLCBhcyBwcmVkaWN0ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB5ZWFyLiBUaGUgcHJldmFsZW5jZSBvZiBvYmVzaXR5IHdhcyBzaWduaWZpY2FudGx5IGxvd2VyIGluIEhvcnNoYW0gKDExLjclKSBhbmQgTWlkIFN1c3NleCAoMTEuOSUpIHRoYW4gYWxsIG90aGVyIGxvY2FsIGF1dGhvcml0aWVzIGluIFdlc3QgU3Vzc2V4LiBDcmF3bGV5IGlzIHRoZSBhcmVhIHdpdGggZ3JlYXRlc3Qgb2Jlc2l0eSBwcmV2YWxlbmNlIGluIFdlc3QgU3Vzc2V4ICgyMS43JSkuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0FGQ0Q4RDMxLTY5NDgtNDFBQi05MkYxLUM3NzYxRjM5QzdEQlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkZ1cnRoZXIgSW5mb3JtYXRpb24qKlxcblxcbiMgQWxpdmUgTiBLaWNraW5nXFxuXFxuVGhlIFdlaWdodCBNYW5hZ2VtZW50IENlbnRyZSBoYXMgY29udGludWVkIHRvIGRlbGl2ZXIgQWxpdmUgTiBLaWNraW5nIHdlaWdodCBtYW5hZ2VtZW50IHByb2dyYW1tZSB0byBjaGlsZHJlbiBhbmQgeW91bmcgcGVvcGxlIHRocm91Z2hvdXQgdGhlIHllYXIuIFRvIGRhdGUgMTQwIGZhbWlsaWVzIGhhdmUgZW5nYWdlZCB3aXRoIHRoZSBwcm9ncmFtbWUsIHdpdGggaGFsZiBvZiB0aGVtIHJlZHVjaW5nIG9yIG1haW50YWluaW5nIHRoZWlyIHdlaWdodC4gVGhlIG1ham9yaXR5IG9mIHJlZmVycmFscyBpbnRvIEFsaXZlIE4gS2lja2luZyBjb250aW51ZSB0byBjb21lIGZyb20gdGhlIHNjaG9vbCBwcm9ncmFtbWUgU1RPUCwgYW5kIHNjaG9vbCBudXJzZXMuXFxuXFxuVGVzdGltb25pYWwgZnJvbSBhIG1vdGhlciBvZiBhIHlvdW5nIHBlcnNvbiB3aG8gYXR0ZW5kZWQgQWxpdmUgTiBLaWNraW5nXFxuXFxuX1xcXCJTaW5jZSBhdHRlbmRpbmcgdGhlIEFsaXZlIG4gS2lja2luZyBwcm9ncmFtbWUgSSBoYXZlIGZvdW5kIHRoYXQgYXMgYSBwYXJlbnQgSSBoYXZlIG5vdGljZWQgYSBodWdlIGRpZmZlcmVuY2UgaW4gbXkgZGF1Z2h0ZXJzIHBlcnNvbmFsaXR5LiBCZWZvcmUgdGhlIGNvdXJzZSBzaGUgaGF0ZWQgc2Nob29sIGFuZCB3YXMgYnVsbGllZCBkdWUgdG8gd2VpZ2h0IHJlbGF0ZWQgaXNzdWVzLiBTaGUgc2VlbWVkIHNvIHVuaGFwcHkgSSB0b29rIGhlciB0byB0aGUgRG9jdG9ycyBiZWNhdXNlIEkgdGhvdWdodCBzaGUgbWF5IGJlIGRlcHJlc3NlZC4gU2luY2UgcmVndWxhciBleGVyY2lzZSBhbmQgbG9zaW5nIHNvbWUgV2VpZ2h0IHRoZXJlIGhhcyBiZWVuIGEgbWFzc2l2ZSBkaWZmZXJlbmNlIGluIGhlciBiZWhhdmlvdXIgYXQgc2Nob29sIGFuZCBhdCBob21lLiBJdCBzZWVtcyBsaWtlIGEgd2VpZ2h0IGhhcyBiZWVuIGxpZnRlZCwgc2hlIGhhcyBtb3JlIGVudGh1c2lhc20gdG93YXJkcyBleGVyY2lzZSwgZWF0aW5nIGFuZCBldmVuIGdvaW5nIHRvIHNjaG9vbC4gU2hlIHVzZWQgdG8gbGF5IGFyb3VuZCBhbmQgZGlkbid0IHdhbnQgdG8gbGVhdmUgdGhlIGhvdXNlIG5vdyBpdCdzIGhhcmQgdG8ga2VlcCBoZXIgaW5kb29ycyEgVGhpcyBoYXMgYWxzbyBoYWQgYSBrbm9jayBhZmZlY3QgaW50byBteSBsaWZlIGFzIGEgbXVtLCBJIGFtIG11Y2ggaGFwcGllci4gTXkgZGF1Z2h0ZXIgaXMgaGFwcHkgYWZ0ZXIgd2hhdCBzZWVtcyBsaWtlIGEgbGlmZXRpbWUhIEFsb25nc2lkZSBzaWRlIGhlbHBpbmcgaGVyIEkgaGF2ZSBhbHNvIGRvbmUgZXh0cmVtZWx5IHdlbGwgYW5kIGxvc2luZyA2a2dzIGluIDggd2Vla3MgYW5kIEkgd291bGQgaGlnaGx5IHJlY29tbWVuZCB0aGlzIHByb2dyYW1tZSB0byBhbnkga2lkcyBzdWZmZXJpbmcgZnJvbSBiZWluZyBvdmVyd2VpZ2h0LCBzaGUgaGFzIGxvc3QgMmtnLlxcXCJfXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiMgQmUgRm9vZCBTbWFydFxcblxcblRoZSBQdWJsaWMgSGVhbHRoIEVuZ2xhbmQgKFBIRSkgQkUgRm9vZCBTbWFydCBjYW1wYWlnbiBsYXVuY2hlZCBuYXRpb25hbGx5IG9uIDNyZCBKYW51YXJ5IDIwMTcsIHdpdGggdGhlIG5ld3Mgc3RvcmllcyB0aGF0IGNoaWxkcmVuIGFyZSBlYXRpbmcgbW9yZSB0aGFuIGhhbGYgb2YgdGhlaXIgZGFpbHkgc3VnYXIgaW50YWtlIGluIHRoZWlyIGJyZWFrZmFzdC5cXG5cXG5baHR0cDovL3d3dy5iYmMuY28udWsvbmV3cy9oZWFsdGgtMzg0Njc4NjFdWzBdXFxuXFxuVGhlIGNhbXBhaWduIGZlZWRiYWNrIGZyb20gUEhFIHNob3dlZCB0aGF0IDExNSBuZXcgcmVnaXN0cmF0aW9ucyBmcm9tIFdlc3QgU3Vzc2V4IHdlcmUgbG9nZ2VkIG9udG8gdGhlIENoYW5nZTRMaWZlIHdlYnNpdGUgZHVyaW5nIHRoZSBjYW1wYWlnbiBwZXJpb2QuIDI0LDA1MSBlbWFpbHMgd2VyZSBzZW50IGZyb20gQ2hhbmdlNExpZmUgdG8gV2VzdCBTdXNzZXggcmVzaWRlbnRzIHdpdGggYW4gYXZlcmFnZSAxMi44JSBvcGVuIHJhdGUuIEZ1cnRoZXIgY2hhbmdlcyB0byBwcmltYXJ5IHNjaG9vbCBtZWFscyBwcm92aWRlZCBieSBDaGFydHdlbGxzIGhhdmUgcmVzdWx0ZWQgaW4gbW9yZSBzdWdhciBiZWluZyByZW1vdmVkLlxcblxcblswXTogaHR0cDovL3d3dy5iYmMuY28udWsvbmV3cy9oZWFsdGgtMzg0Njc4NjFcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQkU2RkE0MzYtRkEwMC00MEM0LUI1RUQtMTJBOTc4OEU5NDE1XCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiUHJvbW90aW9uIG9mIHRoZSBQdWJsaWMgSGVhbHRoIEVuZ2xhbmQgU3VnYXIgU21hcnQgY2FtcGFpZ24gaGFzIGluY3JlYXNlZCB0aGUgYXdhcmVuZXNzIG9mIHRoZSBtZXNzYWdlcyBhcm91bmQgc3VnYXIgcmVkdWN0aW9uLCBhbmQgYWR2aWNlIG9uIGxvd2VyIHN1Z2FyIHN3YXBzLiBBZGRpdGlvbmFsIHNjaG9vbCBiYXNlZCBzdWdhciByZWR1Y3Rpb24gZGViYXRlcyBoYXZlIG9jY3VycmVkIGluIHRoZSBDaGljaGVzdGVyIERpc3RyaWN0LlxcblxcbkEgcGlsb3QgNiB3ZWVrIHdlaWdodCBtYW5hZ2VtZW50IHByb2dyYW1tZSBmb3IgY2hpbGRyZW4gd2l0aCBzcGVjaWFsIGVkdWNhdGlvbmFsIG5lZWRzIGFuZCBkaXNhYmlsaXRpZXMgaGFzIHJ1biBpbiBNaWQgU3Vzc2V4LiBBdCB0aGUgZW5kIG9mIHRoZSBwcm9ncmFtbWUgdGhlIGZpdG5lc3MgbGV2ZWwgb2YgdGhlIHlvdW5nIHBlb3BsZSBoYWQgaW5jcmVhc2VkLiB3ZWlnaHQgaGFkIGJlZW4gbWFpbnRhaW5lZCwgYW5kIHRoZXkgd2VyZSByZXBvcnRpbmcgY2hhbmdlcyB0aGF0IHRoZXkgaGFkIG1hZGUgdG8gdGhlaXIgZm9vZCBpbnRha2UuXFxuXFxuXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvNzUxRjNBRTMtRjlBMC00QThDLTg4RTctQzYxN0RDRjA2RkE4XCJ9XV19LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvOTQ0QzJGRDEtN0M1Ny00RjM5LThDNjUtQTU0RThFMkVBMDFCXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkVkdWNhdGlvbmFsIHNlc3Npb25zIHRvIHByaW1hcnkgY2FyZSBzdGFmZiBmcm9tIENvYXN0YWwgV2VzdCBTdXNzZXggQ0NHIGhhdmUgYmVlbiBkZWxpdmVyZWQgYnkgdGhlIHB1YmxpYyBoZWFsdGggdGVhbSBvbiBpZGVudGlmaWNhdGlvbiBvZiBvdmVyd2VpZ2h0IGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUuIFRoZSB0ZWFtIGFsc28gZGVsaXZlcmVkIGEgc3VnYXIgcmVkdWN0aW9uIGRpc3BsYXkgaW4gdGhlIG1hcmtldCBwbGFjZSBhdCB0aGUgc2FtZSBldmVudCBhdHRlbmRlZCBieSBvdmVyIGEgaHVuZHJlZCBwcm9mZXNzaW9uYWxzLlxcblxcblwifV0sW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkEgc2Nob29sIGJhc2VkIGNvbXBldGl0aW9uIHRvIGRlc2lnbiBhIFdlc3QgU3Vzc2V4IHN1Z2FyIHJlZHVjdGlvbiBsb2dvIHdhcyB3b24gYnkgYSBwdXBpbCBmcm9tIFN0b3JyaW5ndG9uIEZpcnN0IFNjaG9vbCwgVGhlIHdpbm5pbmcgZGVzaWduIGlzIHNob3duIG9uIHRoZSBsZWZ0LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8xMkIwQkE3QS0xNzkwLTRCQzctQTE0My0zMTkzRTg0Njg0NDBcIn1dXX0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIjIEF3YXJkc1xcblxcbldlc3QgU3Vzc2V4IFB1YmxpYyBIZWFsdGggYW5kIENvdW50eSBDYXRlcmluZyB3b24gYW4gYXdhcmQgZm9yIHRoZWlyIHBvc3RlciBwcmVzZW50ZWQgdGhlIG5hdGlvbmFsIFB1YmxpYyBIZWFsdGggRW5nbGFuZCBDb25mZXJlbmNlIGluIFdhcndpY2sgZWFybHkgU2VwdGVtYmVyIGZvciB0aGVpciB3b3JrIG9uIHJlZHVjaW5nIHN1Z2FyIGluIHNjaG9vbCBtZWFscy4gVG8gZGF0ZSB0aGUgZXF1aXZhbGVudCB3ZWlnaHQgb2YgdGhyZWUgTG9uZG9uIGRvdWJsZSBkZWNrZXIgYnVzZXMgb2Ygc3VnYXIgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlc3QgU3Vzc2V4IHByaW1hcnkgc2Nob29sIG1lYWxzIGluIHRoZSBsYXN0IDIwIG1vbnRocy4gVGhpcyB3b3JrIGlzIGNvbnRpbnVpbmcgd2l0aCBDaGFydHdlbGxzLSB0aGUgc2Nob29sIG1lYWwgcHJvdmlkZXIuXFxuXFxuXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRERBNzExQUItQUJBQy00MkRCLThCNjYtREM2N0U2MjYwM0JGXCJ9XV19LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0JFMEQ1M0M2LUEwRjItNDAyNi1BNEMzLTREQUI0MDFFRDVDRFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIjIFdoeSBXZWlnaHRcXG5cXG5CZWluZyBvdmVyd2VpZ2h0IGFzIGEgY2hpbGQgaW5jcmVhc2VzIHRoZSByaXNrIG9mIGJlaW5nIG92ZXJ3ZWlnaHQgYXMgYW4gYWR1bHQuIEl0IGFsc28gY2FuIGFmZmVjdCBhIGNoaWxk4oCZcyBoZWFsdGgsIGFiaWxpdHkgdG8gdGFrZSBwYXJ0IGluIGFuIGxpdmVseSBsaWZlIGFuZCBzY2hvb2wgcGVyZm9ybWFuY2UuIFRvIGhlbHAgY2hpbGRyZW4gYW5kIGZhbWlsaWVzIHRoaW5rIGFib3V0IHRoZWlyIGRpZXQgYW5kIGJlaW5nIGFjdGl2ZSB0aGVyZSBpcyBoZWxwIGFuZCBzdXBwb3J0IGF2YWlsYWJsZSBpbiBXZXN0IFN1c3NleC4gVHJpZWQgYW5kIHRlc3RlZCBwcm9ncmFtbWVzIHdoaWNoIHByb3ZpZGUgYW4gZWZmZWN0aXZlIHdheSB0byBtYW5hZ2Ugd2VpZ2h0IGFuZCBlbmNvdXJhZ2UgYWRvcHRpbmcgaGVhbHRoaWVyIGhhYml0cyBmb3IgbGlmZSBhcmUgZnVuZGVkIGJ5IFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsLlxcblxcbiBcXG5cXG5Gb3IgZnVydGhlciBpbmZvcm1hdGlvbiBjYWxsIHRoZSBXaHlXZWlnaHQgaGVscGxpbmUgb24gMDMwMCAxMjMgMDg5Mi5cXG5cXG5bd3d3LndoeXdlaWdodHdlc3RzdXNzZXguY28udWtdWzBdXFxuXFxuWzBdOiBodHRwOi8vd3d3LndoeXdlaWdodHdlc3RzdXNzZXguY28udWtcIn1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIkluY3JlYXNlIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gd2l0aCBoZWFsdGh5IHdlaWdodCBpbiB0aGVpciBsYXN0IHllYXIgb2YgcHJpbWFyeSBzY2hvb2xcIixcImljb25cIjpcImNyb3NzaGFpclwiLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOnRydWUsXCJjdXN0b21fc3VidGl0bGVcIjpcIlRoaXMgZ29hbCBpcyBtZWFzdXJlZCBieSB0cmFja2luZyBDaGlsZHJlbidzIEhlYWx0aHkgV2VpZ2h0IGluIHBlcmNlbnRhZ2UuXCJ9In0sInByZXZhaWxpbmdfbWVhc3VyZSI6eyJzdGFydCI6IjIwMTMtMDQtMDFUMDA6MDA6MDAuMDAwIiwiZW5kIjoiMjAxOC0wMy0zMVQyMzo1OTo1OS4wMDAiLCJ1bml0IjoiJSIsInRhcmdldCI6NzAuNCwidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6NzAuNCwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiJmZ2d6LWt3ZXEifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjMsXCJ5ZWFyXCI6MjAxM30sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fSxcImFjdGlvbl90eXBlXCI6XCJpbmNyZWFzZVwiLFwibWFpbnRhaW5fdHlwZVwiOlwiPlwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MyxcInllYXJcIjoyMDE1fSxcImVuZFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxNn19LFwic3RhcnRcIjpcIjIwMTUtMDQtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTYtMDMtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV0sXFxcInZhbHVlVHlwZVxcXCI6XFxcIm9uZVxcXCJ9fVwiLFwiZGF0YXNldFwiOlwicXFuei1mMjloXCIsXCJjb21wdXRlXCI6e1wiYWdncmVnYXRpb25fZnVuY3Rpb25cIjpcImF2ZXJhZ2VcIn0sXCJjb2x1bW4xXCI6XCJhY3R1YWxcIixcImRhdGVfY29sdW1uXCI6XCJkYXRlXCIsXCJkYXRhc2V0X2RvbWFpblwiOlwicGVyZm9ybWFuY2Uud2VzdHN1c3NleC5nb3YudWtcIn0sXCJ0eXBlXCI6XCJzY3JhdGNoXCJ9LFwibmFtZVwiOlwiQ2hpbGRyZW4ncyBIZWFsdGh5IFdlaWdodFwiLFwidXNlX3Byb2dyZXNzX292ZXJyaWRlXCI6dHJ1ZSxcInByb2dyZXNzX292ZXJyaWRlXCI6XCJnb29kXCIsXCJ5U2NhbGVcIjp7XCJ1c2VfZGVmYXVsdFwiOmZhbHNlLFwibWluXCI6NjUsXCJtYXhcIjo3NX19In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjE5OjM4LjM0MloiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMDoxOTozOC4zNDJaIiwidGFyZ2V0X3RvbGVyYW5jZSI6MSwiaWQiOiI1Z2k3LTRtY3cifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MTk6NTcuNTc4WiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjE5OjM4LjM5NloiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMDoxOTo1Ny41NzhaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiJhbmFnLWIzdWciLCJuYW1lIjoiRmFtaWxpZXMgdHVybmVkIGFyb3VuZCIsImlzX3B1YmxpYyI6dHJ1ZSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJyZXRpcmVtZW50X25hcnJhdGl2ZVwiOltdLFwibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoaXMgbWVhc3VyZSByZXBvcnRzIG9uIFdTQ0PigJlzIGFiaWxpdHkgdG8gZGVsaXZlciB0YXJnZXRzIGxhaWQgZG93biBieSB0aGUgRENMRyAoRGVwYXJ0bWVudCBmb3IgQ29tbXVuaXRpZXMgYW5kIExvY2FsIEdvdmVybm1lbnQpIGFzIHBhcnQgb2YgdGhlIG5hdGlvbmFsIFRyb3VibGVkIEZhbWlsaWVzIHByb2dyYW1tZSB0byAyMDIwLiBUaGVzZSByZWxhdGUgdG8g4oCYdHVybmluZyBhcm91bmTigJkgZmFtaWxpZXMgYWdhaW5zdCBuYXRpb25hbCB2dWxuZXJhYmlsaXR5IGNyaXRlcmlhLCB3aGVyZSB0aGV5IGhhdmUgYXQgbGVhc3QgdHdvIG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyaXN0aWNzOlxcblxcbiogQ2hpbGRyZW4gd2hvIGhhdmUgbm90IGJlZW4gYXR0ZW5kaW5nIHNjaG9vbCByZWd1bGFybHk7XFxuKiBQYXJlbnRzIGFuZCBjaGlsZHJlbiBpbnZvbHZlZCBpbiBjcmltZSBhbmQgYW50aS1zb2NpYWwgYmVoYXZpb3VyO1xcbiogRG9tZXN0aWMgdmlvbGVuY2UgYW5kIGFidXNlO1xcbiogQ2hpbGRyZW4gd2hvIG5lZWQgaGVscDtcXG4qIFBhcmVudHMgYW5kIGNoaWxkcmVuIHdpdGggYSByYW5nZSBvZiBoZWFsdGggcHJvYmxlbXM7XFxuKiBBZHVsdHMgb3V0IG9mIHdvcmsgb3IgYXQgcmlzayBvZiBmaW5hbmNpYWwgZXhjbHVzaW9uO1xcbiogWW91bmcgcGVvcGxlIGF0IHJpc2sgb2Ygd29ya2xlc3NuZXNzXFxuXFxuU3VjaCBmYW1pbGllcyBvZnRlbiBoYXZlIHZlcnkgbG9uZy1zdGFuZGluZyBpc3N1ZXMsIGFuZCByZXByZXNlbnQgYSBoaWdoIGNvc3QgdG8gYSByYW5nZSBvZiBwdWJsaWMgc2VydmljZXMuIEludGVydmVudGlvbiBpcyB0aHJvdWdoIGFuIGludGVuc2l2ZSBrZXl3b3JrZXIgc2VydmljZSwgb3IgYWx0ZXJuYXRpdmVseSB0aHJvdWdoIGEgcmFuZ2Ugb2YgcGFydG5lcnMgb2ZmZXJpbmcgZWFybHkgaGVscCBpbnRlcnZlbnRpb25zLiBJdCB3aWxsIG9mdGVuIHRha2UgYXJvdW5kIDEyIG1vbnRocyBiZWZvcmUg4oCYc3VjY2Vzc+KAmSBjYW4gYmUgcmVwb3J0ZWQ6IHRoZSBpbnRlbnRpb24gaXMgdG8gcHJvdmlkZSBzaWduaWZpY2FudCBvdXRjb21lcyB3aGljaCBhIGZhbWlseSBjYW4gc3VzdGFpbiBpbnRvIHRoZSBmdXR1cmUuIFRoZXJlIGlzIGFuIGFjY29tcGFueWluZyBtZXRob2RvbG9neSB3aGljaCBtZWFzdXJlcyBob3cgZmFyIHRoZSBmYW1pbHkgaGFzIHRyYXZlbGxlZCB0b3dhcmRzIHN1c3RhaW5hYmlsaXR5LCB0byBhbGxvdyBhdWRpdCBhbmQgZXZhbHVhdGlvbiBvZiB0aGUgcmVzdWx0cy4gV29yayB3aXRoIGZhbWlsaWVzIGlzIHBhcnQtZnVuZGVkIGJ5IHRoZSBEQ0xHLCBhbmQgc3VwcG9ydGVkIGJ5IHRoZSBEV1AgKERlcGFydG1lbnQgb2YgV29yayBhbmQgUGVuc2lvbnMpLiBBIHJhbmdlIG9mIFdTQ0MgYW5kIGNvbW1pc3Npb25lZCBwcml2YXRlIGFuZCB0aGlyZCBzZWN0b3Igc2VydmljZXMgam9pbnRseSBjb250cmlidXRlIHRvIHRoZXNlIG91dGNvbWVzLCBmYWNpbGl0YXRlZCBieSB0aGUgQ291bnR5IENvdW5jaWwuIFRoZSBUaGluayBGYW1pbHkgUGFydG5lcnNoaXAgaW5jbHVkZXMgRGlzdHJpY3QgQ291bmNpbHMsIFN1c3NleCBQb2xpY2UsIEhlYWx0aCwgSG91c2luZywgU2Nob29scywgQ2hpbGRyZW7igJlzIFNvY2lhbCBDYXJlIGFuZCBhIHdpZGUgcmFuZ2Ugb2YgY2hhcml0aWVzLlxcblxcbioqUXVhcnRlciAzIC0gRGVjZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5VcCB0byAzMXN0IERlY2VtYmVyIDIwMTcgdGhlIGF1dGhvcml0eSBoYXMgY2xhaW1lZCBhIHRvdGFsIG9mIDEsNzQxIHN1Y2Nlc3Nlcy4gQSBmdXJ0aGVyIDg4IGNhc2VzIHdpbGwgYmUgY2xhaW1lZCBpbiBKYW51YXJ5IDIwMTgsIGdpdmluZyBhIHRvdGFsIG9mIDEsODI5LiBBIHN0cm9uZyBwbGFuIGlzIGluIHBsYWNlIHRvIGFjaGlldmUgb3VyIG92ZXJhbGwgTWFyY2ggMjAyMCB0YXJnZXQgb2YgMyw5NDAgZmFtaWxpZXMgdHVybmVkIGFyb3VuZCBhZ2FpbnN0IG5hdGlvbmFsIGNyaXRlcmlhLCBhbHRob3VnaCBzb21lIHZhcmlhYmlsaXR5IGluIGluZGl2aWR1YWwgcXVhcnRlcnMgaXMgdG8gYmUgZXhwZWN0ZWQgYWNyb3NzIGEgZml2ZS15ZWFyIHByb2dyYW1tZS4gSW4gdGhlIG1lYW50aW1lLCB3ZSBoYXZlIG1hZGUgNiwzOTQgYXR0YWNobWVudHMgb2YgcXVhbGlmeWluZyBmYW1pbGllcyDigJMgaS5lLiB0aG9zZSB3ZSBoYXZlIGFjdGl2ZWx5IHdvcmtlZCB3aXRoIG9yIGFyZSBjdXJyZW50bHkgd29ya2luZyB3aXRoIHNpbmNlIFNlcHRlbWJlciAyMDE0LiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhlIG5lZWQgZm9yIHByZXZlbnRhdGl2ZSwgZWFybHkgaW50ZXJ2ZW50aW9uIHNlcnZpY2VzIHJlbWFpbnMgaGlnaC4gV2VzdCBTdXNzZXggaXMgcmVnYXJkZWQgYXMgYSBsZWFkaW5nIGF1dGhvcml0eSBpbiB0aGUgbG9jYWwgZGVsaXZlcnkgb2YgdGhlIGdvdmVybm1lbnTigJlzIGFtYml0aW9ucyBmb3IgZmFtaWxpZXMgdGhyb3VnaCB0aGUgbmF0aW9uYWwgcHJvZ3JhbW1lLCBhbmQgdGhlc2UgZmlndXJlcyBhcmUgaW4gbGluZSB3aXRoIGN1cnJlbnQgYW5kIHByb2plY3RlZCBzdWNjZXNzIHRhcmdldHMuXFxuXFxuKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5VcCB0byAzMHRoIFNlcHRlbWJlciAyMDE3IHRoZSBhdXRob3JpdHkgaGFzIGNsYWltZWQgYSB0b3RhbCBvZiAxLDUxMSBzdWNjZXNzZXMuIEEgZnVydGhlciAyMzAgY2FzZXMgaGF2ZSBiZWVuIHByZXNlbnRlZCB0byB0aGUgRENMRyBhdCB0aGUgYmVnaW5uaW5nIG9mIE9jdG9iZXIgMjAxNyBhbmQgYXJlIHVuZGVyZ29pbmcgdGhlIGF1ZGl0IHByb2Nlc3Mgd2l0aGluIERDTEcuIFRoZXNlIGZpZ3VyZXMgYXJlIGluIGxpbmUgd2l0aCBjdXJyZW50IHN1Y2Nlc3MgdGFyZ2V0cy5cXG5cXG5JbiB0aGUgbWVhbnRpbWUsIHdlIGhhdmUgbWFkZSA1LDgwOSBhdHRhY2htZW50cyBvZiBxdWFsaWZ5aW5nIGZhbWlsaWVzIOKAkyBpLmUuIHRob3NlIHdlIGhhdmUgYWN0aXZlbHkgd29ya2VkIHdpdGggb3IgYXJlIGN1cnJlbnRseSB3b3JraW5nIHdpdGggaW4gUGhhc2UgMiBzaW5jZSBTZXB0ZW1iZXIgMjAxNC4gVGhlIG51bWJlciBvZiBhY3RpdmUgYXR0YWNoZWQgY2FzZXMgY3VycmVudGx5IGJlaW5nIHdvcmtlZCBvbiBieSBXZXN0IFN1c3NleCBpcyAyLDI3MC5cXG5cXG4qKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5VcCB0byAzMHRoIEp1bmUgMjAxNyB0aGUgYXV0aG9yaXR5IGhhcyBjbGFpbWVkIGEgdG90YWwgb2YgMSwyODEgc3VjY2Vzc2VzLiBBIGZ1cnRoZXIgY2xhaW0gaXMgY3VycmVudGx5IGJlaW5nIHByZXBhcmVkIGZvciBhbiBhZGRpdGlvbmFsIDIzMCBjYXNlcyB3aGljaCB3aWxsIGJlIHByZXNlbnRlZCB0byB0aGUgRENMRyBhdCB0aGUgZW5kIG9mIEp1bHkgMjAxNy4gVGhlc2UgZmlndXJlcyBhcmUgaW4gbGluZSB3aXRoIGN1cnJlbnQgc3VjY2VzcyB0YXJnZXRzLiBJbiB0aGUgbWVhbnRpbWUsIHdlIGhhdmUgbWFkZSA1LDM0MCBhdHRhY2htZW50cyBvZiBxdWFsaWZ5aW5nIGZhbWlsaWVzIOKAkyBpLmUuIHRob3NlIHdlIGhhdmUgYWN0aXZlbHkgd29ya2VkIHdpdGggb3IgYXJlIGN1cnJlbnRseSB3b3JraW5nIHdpdGggaW4gUGhhc2UgMiBzaW5jZSBTZXB0ZW1iZXIgMjAxNC4gVGhlIG51bWJlciBvZiBhY3RpdmUgY2FzZXMgY3VycmVudGx5IGJlaW5nIHdvcmtlZCBvbiBieSBXZXN0IFN1c3NleCBpcyAyLDE5My5cXG5cXG4qKlF1YXJ0ZXIgNCAtIE1hcmNoIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIFRoaW5rIEZhbWlseSBwcm9ncmFtbWUgaGFzIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2Vjb25kIGZ1bGwgeWVhciBvZiBQaGFzZSAyLCB3aGljaCBsYXN0cyB1bnRpbCBNYXJjaCAyMDIwLiBVcCB0byAzMXN0IE1hcmNoIDIwMTcgdGhlIGF1dGhvcml0eSBoYXMgY2xhaW1lZCBhIHRvdGFsIG9mIDEsMjgxIHdoaWNoIGlzIGluIGxpbmUgd2l0aCB0aGUgdGFyZ2V0LiBJbiB0aGUgbWVhbnRpbWUsIHdlIGhhdmUgbWFkZSA0LDc2MCBhdHRhY2htZW50cyBvZiBxdWFsaWZ5aW5nIGZhbWlsaWVzIOKAkyBpLmUuIHRob3NlIHdlIGhhdmUgYWN0aXZlbHkgd29ya2VkIHdpdGggb3IgYXJlIGN1cnJlbnRseSB3b3JraW5nIHdpdGggaW4gUGhhc2UgMiBzaW5jZSBTZXB0ZW1iZXIgMjAxNCB3aGljaCBpcyB3ZWxsIGFib3ZlIHRhcmdldC4gVGhlIG51bWJlciBvZiBhY3RpdmUgY2FzZXMgY3VycmVudGx5IGJlaW5nIHdvcmtlZCBvbiBieSBXZXN0IFN1c3NleCBpcyAyLDExMy4gSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdGhlIERDTEcgcGhhc2UgMiAoU2VwIDIwMTQg4oCTTWFyIDIwMjApIHRhcmdldCBoYXMgcmVkdWNlZCBmcm9tIDQsMDYwIHRvIDMsOTQwLlxcblxcblwifV0sXCJ1c2VfY3VzdG9tX3RpdGxlXCI6dHJ1ZSxcImN1c3RvbV90aXRsZVwiOlwiSW5jcmVhc2UgdGhlIG51bWJlciBvZiBmYW1pbGllcyB3ZSBoYXZlIGhlbHBlZCB0byBjaGFuZ2UsIGltcHJvdmUgYW5kIHR1cm4gdGhlaXIgbGl2ZXMgYXJvdW5kXCIsXCJpY29uXCI6XCJ0ZXh0XCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiVGhpcyBnb2FsIGlzIG1lYXN1cmVkIGJ5IHRoZSBudW1iZXIgb2YgdHJvdWJsZWQgZmFtaWxpZXMgdHVybmVkIGFyb3VuZC5cIixcInRpdGxlX2ltYWdlXCI6XCIvYXBpL2Fzc2V0cy9GNjY4RjQwMC00MkQyLTRGMzAtQkQ1RS0yQjUwNDk0RTFCN0VcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxNS0wMy0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiJmYW1pbGllcyIsInRhcmdldCI6Mzk0MCwidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiJ5YnRpLWhiN3cifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxNX0sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fX0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTV9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNX19LFwic3RhcnRcIjpcIjIwMTUtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTUtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJ0aGUgbnVtYmVyIG9mIGZhbWlsaWVzIHR1cm5lZCBhcm91bmRcIixcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOnRydWUsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwiZ29vZFwiLFwieVNjYWxlXCI6e1widXNlX2RlZmF1bHRcIjpmYWxzZX0sXCJpc190cmVuZGxpbmVfZGlzYWJsZWRcIjpmYWxzZX0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MjY6MTguMzA4WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjI2OjE4LjMwOFoiLCJ0YXJnZXRfdG9sZXJhbmNlIjoyMDAsImlkIjoiZTVwei1lYTkyIn0sInJlbGF0ZWRfbWVhc3VyZXMiOltdLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjI2OjQ4Ljk4MFoiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDoyNjoxOC4zNDhaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6MjY6NDguOTgwWiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoiMzJ2aC14d3NpIiwibmFtZSI6IkNoaWxkcmVuIExvb2tlZCBBZnRlciBQb3B1bGF0aW9uIiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJpY29uXCI6XCJ0ZXh0XCIsXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiV2VzdCBTdXNzZXggQWRvcHRpb24gaXMgd29ya2luZyBpbiBwYXJ0bmVyc2hpcCB3aXRoIEJyaWdodG9uIGFuZCBIb3ZlLCBFYXN0IFN1c3NleCBhbmQgU3VycmV5IExvY2FsIEF1dGhvcml0eSBBZG9wdGlvbiBBZ2VuY2llcyB0byBkZXZlbG9wIEFkb3B0aW9uIFNvdXRoIEVhc3QuIFRoZSBhaW0gb2YgdGhpcyByZWdpb25hbCBwYXJ0bmVyc2hpcCBpcyB0byBzaGFyZSByZXNvdXJjZXMgYW5kIGV4cGVydGlzZSBzbyB0aGF0IDgwJSBvZiBBZG9wdGlvbiBTb3V0aCBFYXN0IGNoaWxkcmVuIGFyZSBwbGFjZWQgd2l0aGluIHRoZSByZWdpb24sIHdpdGggaW5jcmVhc2VkIGNob2ljZSBvZiBhZG9wdGVycywgcmVkdWNlZCB3YWl0aW5nIHRpbWVzIGFuZCBtb3JlIHN1Y2Nlc3NmdWwgYWRvcHRpb25zLlxcblxcbiBcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipGZWJydWFyeSAyMDE4KipcXG5cXG4tIC0gLVxcblxcblRoaXMgaW5kaWNhdG9yIGhhcyBpbmNyZWFzZWQgYnkgNiBkYXlzIG92ZXIgdGhlIHBhc3QgbW9udGggZHVlIHRvIGEgc21hbGwgbnVtYmVyIG9mIGNoaWxkcmVuIHdpdGggc2lnbmlmaWNhbnQgbmVlZHMgd2hvIGhhZCBzcGVudCBhIGNvbnNpZGVyYWJsZSB0aW1lIGluIGZvc3RlciBjYXJlIGFuZCB0aGVuIHdpdGggdGhlaXIgYWRvcHRlcnMgcHJpb3IgdG8gYWRvcHRpb24gb3JkZXJzIGJlaW5nIGdyYW50ZWQuIEZ1cnRoZXIgZGV0YWlsIHdpbGwgZm9sbG93IGluIHRoZSBxdWFydGVybHkgdXBkYXRlLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIGF2ZXJhZ2UgdGltZSBiZXR3ZWVuIGEgY2hpbGQgZW50ZXJpbmcgY2FyZSBhbmQgbW92aW5nIGluIHdpdGggdGhlaXIgYWRvcHRpdmUgZmFtaWx5IGhhcyBpbmNyZWFzZWQgaW4gdGhlIGxhc3QgcXVhcnRlciB0byA0ODMuMyBkYXlzLiBUaGlzIGluY3JlYXNlZCB0aW1lc2NhbGUgY2FuIGJlIGF0dHJpYnV0ZWQgdG8gdHdvIGNoaWxkcmVuIHdpdGggYWRvcHRpb24gY2FyZSBwbGFucyB3aG8gd2VyZSBhZG9wdGVkIGluIFF1YXJ0ZXIgMzogQ2hpbGQgMSBpcyBhIGNoaWxkIHdpdGggc3BlY2lhbCBuZWVkcyB3aG8gd2FzIHBsYWNlZCBmb3IgYWRvcHRpb24gb3V0IG9mIGNvdW50eSBhZnRlciBhIGxvbmcgc2VhcmNoOyBoZXIgcHJvc3BlY3RpdmUgYWRvcHRlcnMgdGhlbiBzZXBhcmF0ZWQgd2hpY2ggbGVkIHRvIGRlbGlua2luZywgdGhlbiBhcmUgYXNzZXNzbWVudCBvZiBhZG9wdGl2ZSBtb3RoZXIgYXMgYSBzaW5nbGUgYWRvcHRlciB0b29rIHBsYWNlIHByaW9yIHRvIGFuIEFkb3B0aW9uIE9yZGVyIGJlaW5nIGdyYW50ZWQuIENoaWxkIDIgZXhwZXJpZW5jZWQgZGVsYXlzIGluIGJlaW5nIHBsYWNlZCBmb3IgYWRvcHRpb24gZHVlIHRvIGhpcyBhZGRpdGlvbmFsIG5lZWRzLiBIZSBoYWQgYmVlbiBsb29rZWQgYWZ0ZXIgZm9yIDIgeWVhcnMgYmVmb3JlIGEgUGxhY2VtZW50IE9yZGVyIHdhcyBncmFudGVkLiBIZSB3YXMgb2xkZXIgd2hlbiBoZSB3YXMgcGxhY2VkIGZvciBhZG9wdGlvbjsgdGhlcmUgd2VyZSBjb25jZXJucyBhcm91bmQgcHJlc2VudGluZyBiZWhhdmlvdXJzIGluZGljYXRpbmcgZWFybHkgdHJhdW1hIGFuZCBhIDQgeWVhciBnYXAgYmV0d2VlbiBwbGFjZW1lbnQgYW5kIGFkb3B0aW9uIGJlY2F1c2Ugb2YgdGhlc2UgbmVlZHMuXFxuXFxuIFxcblxcblRoZXJlIGFyZSBjdXJyZW50bHkgMzUgY2hpbGRyZW4gaW4gYWRvcHRpdmUgcGxhY2VtZW50cyBwcmUgQWRvcHRpb24gT3JkZXIuIEJhc2VkIG9uIHRoZSBsaWtlbGlob29kIG9mIEFkb3B0aW9uIE9yZGVycyBmb3IgMTUgb2YgdGhlc2UgY2hpbGRyZW4gYmVpbmcgZ3JhbnRlZCB3aXRoaW4gdGhlIG5leHQgcXVhcnRlciwgdGhlIHByZWRpY3Rpb24gaXMgdGhhdCB0aGlzIG1lYXN1cmUgd2lsbCBkZWNyZWFzZSB0byBhcm91bmQgNDY1IGRheXMgYnkgdGhlIGVuZCBvZiB0aGUgeWVhciB3aGljaCB3aWxsIG1ha2UgdGhlIHllYXIgZW5kIHByZWRpY3Rpb24gQW1iZXIuVGhpcyB3aWxsIGltcHJvdmUgcHJvZ3Jlc3MgdG93YXJkcyB0aGUgdGFyZ2V0IG9mIDQyNiBkYXlzIGJ5IHRoZSBlbmQgb2YgTWFyY2ggMjAxOS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGVyZSBpcyBhICoqNDYxLjczKiogZGF5cyBhdmVyYWdlIGZvciB0aGUgY2hpbGRyZW4gb24gUGxhY2VtZW50IE9yZGVycyBmcm9tIGVudGVyaW5nIGNhcmUgdG8gYmVpbmcgcGxhY2VkIGZvciBhZG9wdGlvbjsgdGhpcyBldmlkZW5jZXMgdGhhdCBXZXN0IFN1c3NleCBpcyBwbGFjaW5nIGNoaWxkcmVuIGluIGEgdGltZWx5IG1hbm5lcjsgdGhlIHBlcmZvcm1hbmNlIGFnYWluc3QgdGhpcyBpbmRpY2F0b3IgaW4gdGhlIHByZXZpb3VzIHF1YXJ0ZXIgd2FzIDQ2Ni43IGRheXMsIGFuZCByZW1haW5zIGxvd2VyIHRoYW4gdGhlIG5hdGlvbmFsIGF2ZXJhZ2Ugd2hpY2ggaXMgNTMyIGRheXMuIFRoZSBhZG9wdGlvbiB0ZWFtIGNvbnRpbnVlcyB0byBwcmlvcml0aXNlIGxpbmtpbmcgY2hpbGRyZW4gd2l0aCBhZG9wdGVycyBpbiBhIHRpbWVseSBtYW5uZXIsIGFuZCBoYXZlIHJlc3BvbmRlZCBmbGV4aWJseSB0byB0aGUgaW5jcmVhc2VkIGRlbWFuZCBmb3IgZmFtaWx5IGZpbmRpbmcgZHVlIHRvIHRoZSBjb250aW51ZWQgaW5jcmVhc2UgaW4gUGxhY2VtZW50IG9yZGVycyBmb3IgV2VzdCBTdXNzZXggY2hpbGRyZW4uIFRoZSBMb2NhbCBBdXRob3JpdHkgZmFjZXMgYSBzaWduaWZpY2FudCBhZG9wdGVyIHN1ZmZpY2llbmN5IGNoYWxsZW5nZSwgZHVlIHRvIHRoaXMgaW5jcmVhc2UuIFRoZSBkZW1hbmQgZm9yIGFkb3B0aXZlIHBsYWNlbWVudHMgZm9yIGNoaWxkcmVuIHdobyBhcmUgaW4gc2libGluZyBncm91cHMsIG92ZXIgMiB5ZWFycyBvZiBhZ2UsIGZyb20gZGl2ZXJzZSBldGhuaWMgYmFja2dyb3VuZHMgYW5kIGEgbnVtYmVyIHdpdGggc3BlY2lhbCBuZWVkcywgaXMgdW5hYmxlIHRvIGJlIHNhdGlzZmFjdG9yaWx5IG1ldCBmcm9tIHRoZSBMb2NhbCBBdXRob3JpdHnigJlzIGV4aXN0aW5nIHBvb2wgb2YgYWRvcHRlcnMuXFxuXFxuVGhlIEFkb3B0aW9uIFRlYW0gaGFzIGRldmVsb3BlZCBjbGVhciBwcm9jZXNzZXMgYW5kIHRpbWUgZnJhbWVzIHRvIGVuc3VyZSB0aGF0IHJlY3J1aXRtZW50IGFuZCBhc3Nlc3NtZW50IGlzIHByaW9yaXRpc2VkLiBUaGVyZSBpcyBhIG5ldyBEdXR5IFdvcmtlciBhcyB0aGUgZmlyc3QgcG9pbnQgb2YgY29udGFjdCBmb3IgZW5xdWlyZXJzIGluIG9yZGVyIHRvIHByb3ZpZGUgYSB0aW1lbHkgYW5kIGNvbnNpc3RlbnQgcmVzcG9uc2UuIFRoZSBjb2xsYWJvcmF0aW9uIG9mIHRoZSBBZG9wdGlvbiB0ZWFtIGFzIHBhcnQgb2YgdGhlIGRldmVsb3BpbmcgcmVnaW9uYWwgQWRvcHRpb24gQWdlbmN5LCBBZG9wdGlvbiBTb3V0aCBFYXN0IChBU0UpLCBlbnN1cmVzIHRoYXQgYXBwbGljYW50cyBoYXZlIGFjY2VzcyB0byBpbmZvcm1hdGlvbiBldmVuaW5ncyBhdCBhIHRpbWUgYW5kIGxvY2F0aW9uIGNvbnZlbmllbnQgdG8gdGhlbS4gQVNFIHdvcmtzIHRvZ2V0aGVyIHRvIGlkZW50aWZ5IGxvY2FsIGZhbWlsaWVzIGZvciB0aGVpciBjaGlsZHJlbiB0byBwcmV2ZW50IHBsYWNlbWVudHMgYmVpbmcgdG9vIGZhciBhZmllbGQuIFRoZSBuZXh0IEFTRSBBZG9wdGlvbiBFeGNoYW5nZSBpcyBiZWluZyBoZWxkIG9uIDE2dGggT2N0b2JlciAyMDE3IGF0IHRoZSBzdGFydCBvZiBOYXRpb25hbCBBZG9wdGlvbiBXZWVrLiBUaGUgcHJlc2VuY2Ugb2YgdGhlIExvY2FsIEF1dGhvcml0eeKAmXMgQWRvcHRpb24gU2VydmljZSBhbmQgdGhlIG5lZWQgZm9yIGFkb3B0ZXJzIGlzIGJlaW5nIHByb21vdGVkIHRocm91Z2ggYSB2YXJpZXR5IG9mIG1lZGlhIGFuZCBldmVudHMuIFBsYW5uaW5nIGlzIGFsc28gdW5kZXJ3YXkgdG8gZGV2ZWxvcCBhbiBBZG9wdGlvbiBTb3V0aCBFYXN0IHdlYnNpdGUsIGFzIHJlc2VhcmNoIHBhcGVyIGV2aWRlbmNlZCB0aGF0IHRoZSBtYWpvcml0eSBvZiBwZW9wbGUgaW50ZXJlc3RlZCBpbiBhZG9wdGlvbiBtYWRlIHRoZWlyIGZpcnN0IHN0ZXBzIHRocm91Z2ggb25saW5lIGFjdGl2aXR5LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGVyZSBpcyBhIDQwOSBkYXlzIGF2ZXJhZ2UgZm9yIHRoZSA3IGNoaWxkcmVuIGFkb3B0ZWQgaW4gdGhlIGZpcnN0IHF1YXJ0ZXIgb2YgMjAxNyBmcm9tIGVudGVyaW5nIGNhcmUgdG8gYmVpbmcgcGxhY2VkIGZvciBhZG9wdGlvbiwgZXZpZGVuY2luZyB0aGF0IHdlIGFyZSBwbGFjaW5nIGNoaWxkcmVuIGluIGEgdGltZWx5IG1hbm5lci4gVGhlcmUgYXJlIGhpc3RvcmljIGNoaWxkcmVuIGZyb20gdGhlIHBhc3QgdGhyZWUgeWVhcnMgd2hvc2UgdGltZXNjYWxlcyBmcm9tIGVudGVyaW5nIGNhcmUgdG8gYmVpbmcgcGxhY2VkIGZvciBhZG9wdGlvbiBoYXZlIGJlZW4gc2lnbmlmaWNhbnRseSBsb25nZXIgdGhhbiB3ZSB3b3VsZCBsaWtlLCBidXQgZ2l2ZW4gdGhlaXIgc3BlY2lmaWMgbmVlZHMsdGhlc2UgcGxhbnMgaGF2ZSBiZWVuIGluIHRoZWlyIGJlc3QgaW50ZXJlc3RzLlxcblxcblRoZSBtYWluIHByaW9yaXR5IGZvciB0aGUgQWRvcHRpb24gU2VydmljZSBjdXJyZW50bHkgaXMgaW4gcmVjcnVpdGluZyBhIGxhcmdlciBwb29sIG9mIGFkb3B0ZXJzIHRvIG1lZXQgdGhlIG5lZWRzIG9mIHRoZSBpbmNyZWFzZWQgbnVtYmVyIG9mIGNoaWxkcmVuIHdpdGggYWRvcHRpb24gY2FyZSBwbGFucy4gVGhlcmUgaGFzIGJlZW4gaW5jcmVhc2VkIG1hcmtldGluZyBhY3Rpdml0eSBhbmQgdGhlcmUgaXMgbW9yZSBjYXBhY2l0eSBpbiBTdGFnZSAxIEFkb3B0aW9uIHRvIHJlc3BvbmQgdG8gZW5xdWlyZXJzIGluIGEgdGltZWx5IG1hbm5lci4gQWxvbmdzaWRlIHRoaXMsIGNhcGFjaXR5IHdpdGhpbiB0aGUgQWRvcHRpb24gdGVhbSBpcyBiZWluZyByZXZpZXdlZCB0byBlbnN1cmUgdGhhdCB3ZSBhcmUgYWJsZSB0byBwcm9ncmVzcyBhcHBsaWNhdGlvbnMgZXhwZWRpZW50bHkuXFxuXFxuVGhlIEFkb3B0aW9uIFBhcnRuZXJzaGlwIGlzIGFscmVhZHkgc2hhcmluZyBpbmZvcm1hdGlvbiBldmVudHMgYW5kIHByZXBhcmF0aW9uIGdyb3VwcywgYW5kIHRoZSBmaXJzdCBBZG9wdGlvbiBFeGNoYW5nZSBldmVudCBoYXMgdGFrZW4gcGxhY2UsIHdpdGggdGhlIHBsYW4gdG8gaG9sZCB0aGVzZSBldmVudHMgMyB0aW1lcyBhIHllYXIuXFxuXFxuICBcXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDQgLSBNYXJjaCAyMDE3KipcXG5cXG4tIC0gLVxcblxcbkluIHRoZSB5ZWFyIDIwMTYtMjAxNyAsIFdlc3QgU3Vzc2V4IGhhcyBhY2hpZXZlZCBhZG9wdGlvbiBmb3IgNDggY2hpbGRyZW4gYWdhaW5zdCBpdHMgdGFyZ2V0IG9mIDQwIGNoaWxkcmVuLCB3aGljaCBpcyBhIHNpZ25pZmljYW50IGluY3JlYXNlIG9uIHRoZSBwcmV2aW91cyB5ZWFy4oCZcyB0b3RhbCBvZiAzMyBhZG9wdGVkIGNoaWxkcmVuLiAxMyBvZiB0aGUgY2hpbGRyZW4gYWRvcHRlZCBvdmVyIHRoZSBwYXN0IHllYXIgaGFkIGJlZW4gcGxhY2VkIGZvciBhZG9wdGlvbiBmb3IgdXAgdG8gMTggbW9udGhzIHByaW9yIHRvIEFkb3B0aW9uIE9yZGVycyBiZWluZyBncmFudGVkLCByZWFzb25zIGZvciB3aGljaCBpbmNsdWRlZCBjaGlsZHJlbiB3aXRoIGNvbXBsZXggbmVlZHMsIG9sZGVyIGNoaWxkcmVuIGFuZCBjaGlsZHJlbiB3aXRoIGRpc2FiaWxpdGllcyBiZWluZyBhZG9wdGVkIGJ5IHRoZWlyIGZvc3RlciBjYXJlcnMgYWZ0ZXIgYmVpbmcgaW4gcGxhY2VtZW50IGZvciBzb21lIHRpbWUuIFNvY2lhbCB3b3JrZXJzIHdpdGhpbiBBZG9wdGlvbiBoYXZlIHNob3duIGEgaGlnaCBsZXZlbCBvZiBjb21taXRtZW50IHRvIHdvcmtpbmcgaW4gcGFydG5lcnNoaXAgd2l0aCB0aGVpciBDaGlsZHJlbiBMb29rZWQgQWZ0ZXIgY29sbGVhZ3VlcywgaW4gdHJhY2tpbmcgY2hpbGRyZW4gd2l0aCBwbGFucyBmb3IgcGVybWFuZW5jeSB0aHJvdWdoIG1vbnRobHkgbWVldGluZ3MgYW5kIHdpdGggdGhlIHN1cHBvcnQgb2YgdGhlIFBlcm1hbmVuY3kgUGxhbm5pbmcgQ28tb3JkaW5hdG9yLiBUaGVzZSBzeXN0ZW1zIGhhdmUgZW5hYmxlZCB3b3JrZXJzIHRvIGlkZW50aWZ5IGFkb3B0ZXJzIGF0IGFuIGVhcmx5IHN0YWdlIHdoZXJldmVyIHBvc3NpYmxlIGFuZCB0byBsb29rIGZ1cnRoZXIgYWZpZWxkIGFzIHNvb24gYXMgcG9zc2libGUgZm9yIGZhbWlseSBmaW5kaW5nIGZvciBjaGlsZHJlbiB3aG9zZSBuZWVkcyBjYW5ub3QgYmUgbWV0IHdpdGhpbiBXZXN0IFN1c3NleCByZXNvdXJjZXMuXFxuXFxuVGhlcmUgaGFzIGJlZW4gYSA2MCUgaW5jcmVhc2UgaW4gQ2FyZSBQcm9jZWVkaW5ncyB3aXRoaW4gV2VzdCBTdXNzZXggb3ZlciB0aGUgcGFzdCB0d28geWVhcnMsIHdoaWNoIGluIHR1cm4gaGFzIGluY3JlYXNlZCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHdpdGggYWRvcHRpb24gY2FyZSBwbGFucy4gVGhlcmUgaGFzIGJlZW4gaW5jcmVhc2VkIHB1YmxpY2l0eSBhcm91bmQgYWRvcHRpb24gdG8gYWR2aXNlIHRoZSBwdWJsaWMgdGhhdCBXZXN0IFN1c3NleCB3b3VsZCBsaWtlIHRvIGhlYXIgZnJvbSBmYW1pbGllcyBpbnRlcmVzdGVkIGluIGFkb3B0aW9uLCBhbmQgdGhhdCB0aGVyZSBpcyBpbiB0aGUgcmVnaW9uIG9mIDUwIGNoaWxkcmVuIGZyb20gYmFiaWVzIHVwd2FyZHMgd2l0aCBhIHBsYW4gZm9yIGFkb3B0aW9uLiBUaGUgUmVjcnVpdG1lbnQgU3RyYXRlZ3kgaXMgdW5kZXIgcmV2aWV3LCB3aXRoIGluY3JlYXNlZCBzb2NpYWwgbWVkaWEgcHJlc2VuY2UgaW4gcGxhY2UgYW5kIG1vbnRobHkgcmV2aWV3IG1lZXRpbmdzIHRvIGFzY2VydGFpbiB0aGUgaW1wYWN0IG9mIG1hcmtldGluZyB1cG9uIHJlY3J1aXRtZW50LlxcblxcblwifV0sXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiVGhlIGdvYWwgaXMgdG8gYWNoaWV2ZSBzdWNjZXNzZnVsIG91dGNvbWVzIGZvciBDaGlsZHJlbiBMb29rZWQgQWZ0ZXIuIFN1Y2Nlc3MgaW4gdGhpcyBnb2FsIGlzIG1lYXN1cmVkIHVzaW5nIHRoZSBhdmVyYWdlIHRpbWUgYmV0d2VlbiBhIGNoaWxkIGVudGVyaW5nIGNhcmUgYW5kIG1vdmluZyBpbiB3aXRoIHRoZWlyIGFkb3B0aXZlIGZhbWlseSAoaW4gZGF5cylcIixcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJSZWR1Y2luZyB0aGUgYXZlcmFnZSBudW1iZXIgb2YgZGF5cywgYmV0d2VlbiBhIGNoaWxkIGVudGVyaW5nIGNhcmUgYW5kIG1vdmluZyBpbiB3aXRoIHRoZWlyIGFkb3B0aXZlIGZhbWlseSBcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxNS0xMC0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiJkYXlzIiwidGFyZ2V0Ijo0MjYsInRhcmdldF90eXBlIjoiYWJzb2x1dGUiLCJ0YXJnZXRfZGVsdGEiOjQyNiwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6NDg2LCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6ImN2eXEtNHFlaSJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI8In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6OSxcInllYXJcIjoyMDE1fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcInJlZHVjZVwiLFwidGFyZ2V0X3R5cGVcIjpcImFic29sdXRlXCJ9LFwiYmFzZWxpbmVcIjp7XCJzcXVpc2h5XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE2fSxcImVuZFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTZ9fSxcInN0YXJ0XCI6XCIyMDE2LTAxLTAxVDAwOjAwOjAwLjAwMFwiLFwiZW5kXCI6XCIyMDE2LTAxLTAxVDIzOjU5OjU5LjAwMFwiLFwibWV0cmljXCI6e1wibWV0YWRhdGFcIjpcIntcXFwid2l6YXJkXFxcIjp7XFxcImZpbHRlcl9hc3RcXFwiOlt7XFxcInZhbHVlc1xcXCI6W3t9XX1dfX1cIn19LFwibmFtZVwiOlwidGhlIGF2ZXJhZ2UgbnVtYmVyIG9mIGRheXMsIGJldHdlZW4gYSBjaGlsZCBlbnRlcmluZyBjYXJlIGFuZCBtb3ZpbmcgaW4gd2l0aCB0aGVpciBhZG9wdGl2ZSBmYW1pbHlcIn0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6Mjg6MTAuMTg0WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjI4OjEwLjE4NFoiLCJ0YXJnZXRfdG9sZXJhbmNlIjo1MCwiaWQiOiJ2a3htLWpucTIifSwicmVsYXRlZF9tZWFzdXJlcyI6W3sibWV0YWRhdGEiOiIiLCJpZCI6ImFiNHktZnA1aSJ9XSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDoyODo1Mi4zNzJaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6Mjg6MTAuMjMzWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjI4OjUyLjM3MloiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6ImRtYTUtNXN4NyIsIm5hbWUiOiJRdWFsaXR5IG9mIENoaWxkcmVuJ3MgU2VydmljZXMiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcImNyb3NzaGFpclwiLFwibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUmF0aW5ncyoqXFxuXFxuKDEpIE91dHN0YW5kaW5nLCAoMikgR29vZCwgKDMpIFJlcXVpcmVzIEltcHJvdmVtZW50IGFuZCAoNCkgSW5hZGVxdWF0ZVxcblxcblRoZSBvdXRjb21lIG9mIHRoZSBtb3N0IHJlY2VudCBPZnN0ZWQgSW5zcGVjdGlvbiB0byBiZSBjb25kdWN0ZWQgZm9yIHRoZXNlIHNlcnZpY2VzIHdpdGhpbiBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCByYXRlZCB0aGUgYXV0aG9yaXR5IGFzICdSZXF1aXJlcyBJbXByb3ZlbWVudCcuIFRoaXMgaXMgYXMgcGVyIHRoZSBpbnNwZWN0aW9uIHJlcG9ydCBpc3N1ZWQgaW4gSmFudWFyeSAyMDE2LlxcblxcblByaW9yIHRvIHRoYXQsIG91ciBsYXN0IE9mc3RlZCBpbnNwZWN0aW9uIG9mIG91ciBjaGlsZCBwcm90ZWN0aW9uIGFycmFuZ2VtZW50cyBpbiBGZWJydWFyeSAyMDEzLCBPZnN0ZWQganVkZ2VkIHRoZSBzZXJ2aWNlIHRoYXQgd2UgcHJvdmlkZSB0byBrZWVwIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUgc2FmZSB0byBiZSBcXFwiYWRlcXVhdGVcXFwiLiBUaGlzIGZvbGxvd2VkIGEgcHJldmlvdXMgaW5zcGVjdGlvbiBpbiBOb3ZlbWJlciAyMDEwIHdoaWNoIGNvbnNpZGVyZWQgb3VyIHNlcnZpY2UgdG8gYmUgXFxcImluYWRlcXVhdGVcXFwiLiBEdWUgdG8gdGhlIHdheSBpbiB3aGljaCBPZnN0ZWQgY29uZHVjdHMgaW5zcGVjdGlvbnMgaXQgd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgZm9yIHRoZSBDb3VudHkgQ291bmNpbCB0byBhY2hpZXZlIGEgcmF0aW5nIGJldHRlciB0aGFuIFxcXCJhZGVxdWF0ZVxcXCIgZm9sbG93aW5nIGFuIFxcXCJpbmFkZXF1YXRlXFxcIiByYXRpbmcgaW4gMjAxMC5cXG5cXG5JbXByb3ZlbWVudHMgaGF2ZSB0aGVyZWZvcmUgYmVlbiBtYWRlIHRvIHRoZSBzZXJ2aWNlIHdlIHByb3ZpZGUgdG8ga2VlcCBjaGlsZHJlbiBhbmQgeW91bmcgcGVvcGxlIHNhZmUgYnV0IHdlIGFyZSBub3QgY29tcGxhY2VudC4gSXQgaXMgb3VyIGFtYml0aW9uIHRvIHJlY2VpdmUgYSBcXFwiZ29vZFxcXCIgb3IgYmV0dGVyIHJhdGluZyBhdCBvdXIgbmV4dCBPZnN0ZWQgaW5zcGVjdGlvbi4gUGxhbnMgYXJlIGluIHBsYWNlIHRvIGltcHJvdmUgb3VyIHNlcnZpY2VzIGZvciB2dWxuZXJhYmxlIGNoaWxkcmVuIGFuZCB5b3VuZyBwZW9wbGUgYW5kIHdlIGJlbGlldmUgdGhhdCB0aGUgZWZmb3J0cyB3ZSBhcmUgbWFraW5nIHdpbGwgcmVzdWx0IGluIGZ1cnRoZXIgaW1wcm92ZW1lbnRzIHRvIG91ciBPZnN0ZWQgcmF0aW5nIGF0IG91ciBuZXh0IGluc3BlY3Rpb24uXFxuXFxuV2hpbGUgb3VyIHNhZmVndWFyZGluZyBzZXJ2aWNlcyBoYXZlIGJlZW4gdGhlIHN1YmplY3Qgb2YgR292ZXJubWVudCBpbnRlcnZlbnRpb24gYW5kIGFyZSBub3cgYWRlcXVhdGUsIG91ciBGb3N0ZXJpbmcgYW5kIEFkb3B0aW9uIHNlcnZpY2VzIGhhdmUgYm90aCBiZWVuIGluc3BlY3RlZCBpbiB0aGUgbGFzdCB0d28geWVhcnMgYW5kIGJvdGggc2VydmljZXMgd2VyZSBqdWRnZWQgdG8gYmUgR29vZCB3aXRoIE91dHN0YW5kaW5nIGZlYXR1cmVzLlxcblxcbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyBPZnN0ZWQgcmVndWxhdGVzIGFuZCBpbnNwZWN0cyBjaGlsZHJlbuKAmXMgc29jaWFsIGNhcmUsIHBsZWFzZSBnbyB0byB0aGUgT2ZzdGVkIHdlYnNpdGU6XFxuXFxuIFxcblxcbltodHRwOi8vd3d3Lm9mc3RlZC5nb3YudWsvY2hpbGRyZW4tYW5kLWZhbWlsaWVzLXNlcnZpY2VzXVswXVxcblxcblswXTogaHR0cDovL3d3dy5vZnN0ZWQuZ292LnVrL2NoaWxkcmVuLWFuZC1mYW1pbGllcy1zZXJ2aWNlc1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuUmVzcG9uZGluZyB0byBjb25jZXJucyBoYXMgYmVlbiBhIHByaW9yaXR5IGFyZWEgZm9yIHVzIGFuZCB3ZSBjYW4gbm93IGRlbW9uc3RyYXRlIHRoYXQgOTklIG9mIHJlZmVycmFscyBhcmUgZGVhbHQgd2l0aCB3aXRoaW4gMjRocnMuXFxuXFxuV29yayBoYXMgYWxzbyBmb2N1c2VkIG9uIGltcHJvdmluZyB0aGUgdGltZWxpbmVzcyBvZiBjaGlsZCBwcm90ZWN0aW9uIGNvbmZlcmVuY2VzIHRvIGVuc3VyZSB0aGF0IGNoaWxkcmVuIGFyZSBzYWZlIGFuZCByZWd1bGFybHkgcmV2aWV3ZWQuIEN1cnJlbnQgZGF0YSBzaG93cyB0aGF0IDkyJSBvZiBjb25mZXJlbmNlcyBhcmUgaGVsZCBvbiB0aW1lLiBUaGlzIGNvbXBhcmVzIHRvIGEgbmF0aW9uYWwgZmlndXJlIG9mIDc3JS5cXG5cXG4qIEFkZGl0aW9uYWxseSB3ZSBhcmUgdW5kZXJ0YWtpbmcgcmVndWxhciBhdWRpdHMgb2YgY2hpbGQgcHJvdGVjdGlvbiBwbGFucyB0byBlbnN1cmUgdGhhdCB3ZSBoYXZlIHN0cmVuZ3RoZW5lZCBkZWNpc2lvbiBtYWtpbmcgYW5kIHRoYXQgcHVycG9zZWZ1bCB3b3JrIGlzIHRha2luZyBwbGFjZSB3aXRoIGNoaWxkcmVuIGF0IHJpc2sgb2YgaGFybS5cXG5cXG5PdmVyYWxsIHBlcmZvcm1hbmNlIGhhcyBjb250aW51ZWQgdG8gaW1wcm92ZSBpbiBRdWFydGVyIDMgYW5kIHdlIGhhdmUgcm9idXN0IHBsYW5zIGluIHBsYWNlIHRvIGVuc3VyZSB0aGF0IHdlIGZvY3VzIG9uIHF1YWxpdHkgb2YgcHJhY3RpY2Ugc28gdGhhdCBvdXIgY2hpbGRyZW4gYW5kIHRoZWlyIGZhbWlsaWVzIGdldCB0aGUgYmVzdCBzZXJ2aWNlcyBhbmQgc3VwcG9ydCB0byBtZWV0IHRoZWlyIG5lZWRzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcbkluIHRoaXMgcXVhcnRlciB3ZSBoYXZlIGJlZW4gYWJsZSB0byBpbXByb3ZlIGhvdyBxdWlja2x5IHdlIGNhbiBtYWtlIGRlY2lzaW9ucyB3aGVuIHdlIGFyZSBhc2tlZCBpZiB3ZSBjYW4gcHJvdmlkZSBzdXBwb3J0IHRvIGEgY2hpbGQuIE5vdyA3MCUgb2YgcmVmZXJyYWxzIGhhdmUgYSBkZWNpc2lvbiB3aXRoaW4gMjQgaG91cnMuIE91ciB0YXJnZXQgZm9yIHRoaXMgeWVhciBpcyB0byBiZSBhYmxlIHRvIGFjaGlldmUgdGhpcyBpbiA4NSUgb2YgY2FzZXMuIExhdGVyIHRoaXMgeWVhciBpbiBTZXB0ZW1iZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IHJlY29yZGluZyB0b29sIHdpbGwgc3VwcG9ydCBpbXByb3ZlZCB0aW1lbGluZXNzLlxcblxcbldlIHdhbnQgdG8gZW5zdXJlIHRoZSBiZXN0IG91dGNvbWVzIGZvciBjaGlsZHJlbiB3ZSBsb29rIGFmdGVyLiBXZSB3YW50IHRvIGVuc3VyZSBjaGlsZHJlbiB3aG8gbmVlZCBzcGVjaWFsaXN0IGVtb3Rpb25hbCBvciBwc3ljaG9sb2dpY2FsIHN1cHBvcnQgYXMgYSByZXN1bHQgb2YgdHJhdW1hIHRoZXkgaGF2ZSBzdWZmZXJlZCBhcmUgaWRlbnRpZmllZCBhbmQgcHJvdmlkZWQgd2l0aCBzZXJ2aWNlcyB3aXRob3V0IGRlbGF5LiBJbiBRdWFydGVyLCAxLCA5NCUgb2YgY2hpbGRyZW4gbG9va2VkIGFmdGVyIGhhZCBhbiBhc3Nlc3NtZW50IG9mIG5lZWQgY2FsbGVkIGEgc3RyZW5ndGhzIGFuZCBkaWZmaWN1bHRpZXMgcXVlc3Rpb25uYWlyZS4gV2UgaGF2ZSBleGNlZWRlZCBvdXIgdGFyZ2V0IGZvciB0aGlzIHllYXIuIFdlIGhhdmUgYWxzbyBiZWVuIGFibGUgdG8gZW5zdXJlIGNoaWxkcmVuIGRvIG5vdCB3YWl0IGZvciBwc3ljaG9sb2dpY2FsIGFzc2Vzc21lbnQgb3IgdGhlcmFweSB3aXRoIDk1JSBvZiBjaGlsZHJlbiByZWNlaXZpbmcgaGVscCB3aXRoaW4gdGltZSBzY2FsZXMuXFxuXFxuIFxcblxcbldlIHdhbnQgdG8gbmFycm93IHRoZSBhY2hpZXZlbWVudCBnYXAgYmV0d2VlbiBjaGlsZHJlbiBsb29rZWQgYWZ0ZXIgYW5kIG90aGVyIGNoaWxkcmVuLCBhbmQgc3VwcG9ydCB0aGVtIHRvIGJlIHJlYWR5IGZvciB3b3JrIGFzIHRoZXkgZ2V0IG9sZGVyLiBJbiBRdWFydGVyIDEsIDY2JSBvZiBjYXJlIGxlYXZlcnMgd2VyZSBpbnZvbHZlZCBpbiBlZHVjYXRpb24sIHRyYWluaW5nIG9yIGVtcGxveW1lbnQuIFRoaXMgaXMgYW4gaW1wcm92ZW1lbnQgb24gbGFzdCB5ZWFyIGFuZCBpcyBiZXR0ZXIgdGhhbiBzaW1pbGFyIGF1dGhvcml0aWVzIG1hdGNoZWQgZm9yIG5lZWQuIE91ciBhbWJpdGlvbiBpcyB0byBjb250aW51ZSB0byBhY2hpZXZlIGltcHJvdmVtZW50IGluIHRoaXMgcmVzcGVjdCBzbyB0aGF0IHlvdW5nIHBlb3BsZSBtYWtlIGEgZ29vZCB0cmFuc2l0aW9uIHRvIGFkdWx0IGxpZmUgYWx0aG91Z2ggd2UgaGF2ZSBtZXQgdGhlIHRhcmdldCBbNjUlXSBzZXQgZm9yIHRoaXMgeWVhci5cXG5cXG5XZSB3YW50IHRvIG1ha2Ugc3VyZSB5b3VuZyBjaGlsZHJlbiB3aG8gY2Fubm90IGxpdmUgc2FmZWx5IHdpdGggdGhlaXIgcGFyZW50cyBkbyBub3Qgd2FpdCBiZWZvcmUgdGhleSBjYW4gam9pbiBhIHNhZmUgcGVybWFuZW50IGZhbWlseSB0aHJvdWdoIGFkb3B0aW9uLiBGcm9tIENvdXJ0IHBlcm1pc3Npb24gdG8gbWF0Y2ggd2l0aCBhZG9wdGVycyBoYXMgYmVlbiAxODcgZGF5cyBpbiBRdWFydGVyIDEuIFdlIGhhdmUgaW5jcmVhc2VkIHJlY3J1aXRtZW50IGFuZCB3aWxsIGNvbnRpbnVlIHRvIHdvcmsgb24gaW5jcmVhc2luZyBvdXIgcG9vbCBvZiBhZG9wdGVycy4gT3VyIHBlcmZvcm1hbmNlIGluIHRpbWVsaW5lc3Mgb2Ygc2VjdXJpbmcgYSBwZXJtYW5lbnQgcGxhY2VtZW50IGZvciBhIGNoaWxkIHJlbWFpbnMgZ29vZCB3aGVuIGNvbXBhcmVkIHRvIHNpbWlsYXIgYXV0aG9yaXRpZXMuXFxuXFxuT3ZlcmFsbCBwZXJmb3JtYW5jZSBoYXMgY29udGludWVkIHRvIGltcHJvdmUgaW4gUXVhcnRlciAxIFdlIHdpbGwgYWxzbyBjb250aW51ZSB0byBmb2N1cyBvbiBxdWFsaXR5IG9mIHByYWN0aWNlIHRvIGVuc3VyZSBvdXIgY2hpbGRyZW4gYW5kIGZhbWlsaWVzIGdldCB0aGUgYmVzdCBzZXJ2aWNlcy4gVGhpcyB3aWxsIHBvc2l0aW9uIHRoZSBzZXJ2aWNlIHdlbGwgdG8gYWNoaWV2ZSBhIOKAnEdvb2TigJ0ganVkZ2VtZW50IGF0IGZ1dHVyZSBpbnNwZWN0aW9uIGlmIHdlIGNvbnRpbnVlIHRvIGRyaXZlIGNvbnNpc3RlbnQgZ29vZCBwcmFjdGljZS4gVGhpcyBpcyBjaGFsbGVuZ2VkIGJ5IGluY3JlYXNlZCBjYXNlLXdvcmsgZGVtYW5kIGluIFF1YXJ0ZXIgMSBjcmVhdGluZyBzb21lIHdvcmtsb2FkIHByZXNzdXJlcyBhY3Jvc3MgdGhlIHNlcnZpY2UuXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbXByb3ZlIG91ciBDaGlsZHJlbidzIFNlcnZpY2VzJyBPZnN0ZWQgcmF0aW5nIHRvIGdvb2RcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUaGlzIGdvYWwgaXMgbWVhc3VyZWQgdXNpbmcgdGhlIE9mc3RlZCBmcmFtZXdvcmsgZm9yIHRoZSBpbnNwZWN0aW9uIG9mIHNlcnZpY2VzIGZvciBjaGlsZHJlbiBpbiBuZWVkIG9mIGhlbHAgYW5kIHByb3RlY3Rpb24sIGNoaWxkcmVuIGxvb2tlZCBhZnRlciBhbmQgY2FyZSBsZWF2ZXJzXCJ9In0sInByZXZhaWxpbmdfbWVhc3VyZSI6eyJzdGFydCI6IjIwMTItMDYtMDFUMDA6MDA6MDAuMDAwIiwiZW5kIjoiMjAxOC0wMy0zMVQyMzo1OTo1OS4wMDAiLCJ1bml0IjoicmF0aW5nIiwidGFyZ2V0IjoyLCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhIjowLCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjoyLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6Im04dnMtMmlpMyJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6NSxcInllYXJcIjoyMDEyfSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcImluY3JlYXNlXCIsXCJtYWludGFpbl90eXBlXCI6XCI+XCJ9LFwiYmFzZWxpbmVcIjp7XCJzcXVpc2h5XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fSxcImVuZFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9fSxcInN0YXJ0XCI6XCIyMDE0LTAxLTAxVDAwOjAwOjAwLjAwMFwiLFwiZW5kXCI6XCIyMDE0LTAxLTAxVDIzOjU5OjU5LjAwMFwiLFwibWV0cmljXCI6e1wibWV0YWRhdGFcIjpcIntcXFwid2l6YXJkXFxcIjp7XFxcImZpbHRlcl9hc3RcXFwiOlt7XFxcInZhbHVlc1xcXCI6W3t9XX1dfX1cIn19LFwibmFtZVwiOlwib3VyIENoaWxkcmVuJ3MnIFNlcnZpY2VzIE9mc3RlZCByYXRpbmcgXCIsXCJ1c2VfcHJvZ3Jlc3Nfb3ZlcnJpZGVcIjp0cnVlLFwicHJvZ3Jlc3Nfb3ZlcnJpZGVcIjpcIndpdGhpbl90b2xlcmFuY2VcIn0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MzU6MTUuMzgyWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjM1OjE1LjM4MloiLCJpZCI6ImM3ZngtNTR4ZSJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbXSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDozNzozMi4yNDZaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6MzU6MTUuNDI1WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjM3OjMyLjI0NloiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6ImhoZzUtZXl2aCIsIm5hbWUiOiJQcm9ncmVzcyBjaGVjayBvZiBjaGlsZCBkZXZlbG9wbWVudCIsImlzX3B1YmxpYyI6dHJ1ZSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJyZXRpcmVtZW50X25hcnJhdGl2ZVwiOltdLFwiaWNvblwiOlwiY3Jvc3NoYWlyXCIsXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipUaGlzIG1lYXN1cmUgcmVsYXRlcyB0byBjaGlsZHJlbiBpbiBOYXRpb25hbCBDdXJyaWN1bHVtIHllYXIgZ3JvdXAgUmVjZXB0aW9uIChjaGlsZHJlbiBhZ2VkIDQtNSB5ZWFycykqKlxcblxcblRoZSBzdGF0dXRvcnkgRWFybHkgWWVhcnMgRm91bmRhdGlvbiBTdGFnZSAoRVlGUykgZnJhbWV3b3JrIHJlcXVpcmVzIGEgcHJvZmlsZSBhc3Nlc3NtZW50IHRvIGJlIGNhcnJpZWQgb3V0IGluIHRoZSBmaW5hbCB0ZXJtIG9mIHRoZSB5ZWFyIGluIHdoaWNoIGEgY2hpbGQgcmVhY2hlcyBhZ2UgNS4gVGhlIG1haW4gcHVycG9zZSBvZiB0aGUgcHJvZmlsZSBpcyB0byBwcm92aWRlIGEgcmVsaWFibGUsIHZhbGlkIGFuZCBhY2N1cmF0ZSBhc3Nlc3NtZW50IG9mIGluZGl2aWR1YWwgY2hpbGRyZW4uXFxuXFxuIENoaWxkcmVuIGFyZSBkZWZpbmVkIGFzIGhhdmluZyByZWFjaGVkIGEgZ29vZCBsZXZlbCBvZiBkZXZlbG9wbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBFWUZTIGlmIHRoZXkgaGF2ZSBhY2hpZXZlZCBhdCBsZWFzdCB0aGUgZXhwZWN0ZWQgbGV2ZWwgaW4gIDMgcHJpbWUgYXJlYXMgb2YgbGVhcm5pbmc6LVxcblxcbiogcGVyc29uYWwsIHNvY2lhbCBhbmQgZW1vdGlvbmFsIGRldmVsb3BtZW50XFxuXFxuKiBwaHlzaWNhbCBkZXZlbG9wbWVudFxcblxcbiogY29tbXVuaWNhdGlvbiBhbmQgbGFuZ3VhZ2VcXG5cXG5hbmQgc3BlY2lmaWMgYXJlYXMgaW46LVxcblxcbiogbWF0aGVtYXRpY3NcXG5cXG4qIGxpdGVyYWN5XFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqTm92ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5HTEQgZm9yIGFsbCBjaGlsZHJlbiBpbiAyMDE3IGlzIDcwLjYlIGFuIGltcHJvdmVtZW50IG9mIDIuMyUgY29tcGFyZWQgdG8gMjAxNjsgY29udGludWluZyB0aGUgdHJlbmQgb2YgeWVhciBvbiB5ZWFyIGltcHJvdmVtZW50Llxcblxcbldlc3QgU3Vzc2V4IGFsc28gY29udGludWVzIHRvIHJpc2UgaW4gdGhlIG5hdGlvbmFsIHJhbmtpbmdzIGZvciBHTEQsYmVpbmcgcGxhY2VkIDc4dGggdGhpcyB5ZWFyLCBhbiBpbXByb3ZlbWVudCBvZiAxOSBwbGFjZXMgbmF0aW9uYWxseS5Db21wYXJlZCB0byBzdGF0aXN0aWNhbCBuZWlnaGJvdXJzLCBXZXN0IFN1c3NleCBpcyByYW5rZWQgN3RoIG9mIDExIExvY2FsIEF1dGhvcml0aWVzLCBhbiBpbXByb3ZlbWVudCBvZiAyIHBsYWNlcyBzaW5jZSAyMDE2LlxcblxcblRoZSBhdHRhaW5tZW50IGdhcCBiZXR3ZWVuIHRoZSBsb3dlc3QgYWNoaWV2aW5nIDIwJSBvZiBjaGlsZHJlbiBhbmQgdGhlIHJlc3QgaGFzIHdpZGVuZWQgaW4gMjAxNyBhdCB0aGUgc2FtZSByYXRlIGFzIHRoZSBuYXRpb25hbCBhdHRhaW5tZW50IGdhcC4gVGhlIGF0dGFpbm1lbnQgZ2FwIGZvciBFbmdsYW5kIHdpZGVuZWQgZnJvbSAzMS40JSB0byAzMS43JTsgd2hpbHN0IHRoZSBnYXAgaW4gV2VzdCBTdXNzZXggaGFzIHdpZGVuZWQgZnJvbSAyNy4xJSB0byAyNy40JVxcblxcbkdpcmxz4oCZIGF0dGFpbm1lbnQgaW4gV2VzdCBTdXNzZXggY29udGludWVzIHRvIGJlIGhpZ2hlciB0aGFuIGJveXPigJksIHdpdGggdGhlIGdyZWF0ZXN0IGRpZmZlcmVuY2VzIGluIExpdGVyYWN5IGFuZCBFeHByZXNzaXZlIEFydHMgYW5kIGRlc2lnbi5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSBKdW5lIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuV29yayB0byByYWlzZSBHb29kIExldmVsIG9mIERldmVsb3BtZW50ICggR0xEKSBhY3Jvc3MgdGhlIGNvdW50eSBoYXMgY29udGludWVkIHdpdGggc3VwcG9ydCBiZWluZyBwcm92aWRlZCBmb3IgYWxsIHNjaG9vbHMgd2hlcmUgR0xEIHdhcyBiZWxvdyBuYXRpb25hbCBhdmVyYWdlLiBUaGUgbGV2ZWwgb2YgR0xEIGlzIHJlY29yZGVkIGVhY2ggc3VtbWVyIGJ1dCB0aGUgZnVsbCByZXN1bHRzIGFyZSBub3QgeWV0IGF2YWlsYWJsZSBmb3IgMjAxNy4gRWFybHkgaW5kaWNhdGlvbnMgYXJlIHRoYXQgc3RhbmRhcmRzIGhhdmUgcmlzZW4gYm90aCBpbiBXZXN0IFN1c3NleCBhbmQgbmF0aW9uYWxseSB3aXRoIFdlc3QgU3Vzc2V4IGJlaW5nIGJyb2FkbHkgaW4gbGluZSB3aXRoIG5hdGlvbmFsIGF2ZXJhZ2VzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKk5vdmVtYmVyIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuR29vZCBsZXZlbCBvZiBkZXZlbG9wbWVudCAoR0xEKSBmb3IgYWxsIGNoaWxkcmVuIGluIDIwMTYgd2FzIDY4LjMlLCBhbiBpbXByb3ZlbWVudCBvZiA0LjMlIGNvbXBhcmVkIHRvIDIwMTUgYW5kIGNvbnRpbnVpbmcgdGhlIHRyZW5kIG9mIDQgb3IgNSUgcG9pbnQgaW5jcmVhc2VzIHNpbmNlIDIwMTMsIHdoZXJlYXMgdGhlIGF2ZXJhZ2UgaW5jcmVhc2UgaW4gR0xEIGFjcm9zcyB0aGUgU291dGggRWFzdCB3YXMgb25seSAyLjklLlxcblxcbkFzIGluIEVuZ2xhbmQgYW5kIHRoZSBTb3V0aCBFYXN0LCB0aGVyZSBpcyBhIGRpc3RpbmN0IGdlbmRlciBnYXAgaW4gR0xEIGF0dGFpbm1lbnQgaW4gV2VzdCBTdXNzZXguIEFsdGhvdWdoIHRoZSBnYXAgaGFzIHJlZHVjZWQgdG8gMTUuMiUgdGhpcyB5ZWFyIGZyb20gMTguNCUgaW4gMjAxMywgaXQgcmVtYWlucyBncmVhdGVyIHRoYW4gdGhlIFNvdXRoIGVhc3QgYXQgMTQuNCUgYW5kIEVuZ2xhbmQgYXQgMTQuNyUuXFxuXFxuQ2hpbGRyZW7igJlzIGJpcnRoIGRhdGUsIGFuZCB0aGVyZWZvcmUgdGhlIGFnZSBhdCB3aGljaCB0aGV5IGFyZSBhc3Nlc3NlZCwgY29udGludWVzIHRvIGJlIGEgc2lnbmlmaWNhbnQgZmFjdG9yLiBUaGlzIHllYXIgNzglIG9mIGF1dHVtbiBib3JuIGNoaWxkcmVuIGF0dGFpbmVkIEdMRCwgd2hpbHN0IG9ubHkgNTYlIG9mIHN1bW1lciBib3JuIGNoaWxkcmVuIGF0dGFpbmVkIEdMRC5cXG5cXG5UaGVyZSBpcyBhbHNvIGEgc2lnbmlmaWNhbnQgYXR0YWlubWVudCBnYXAgYmV0d2VlbiBjaGlsZHJlbiB3aXRoIGFuIEVkdWNhdGlvbiBIZWFsdGggYW5kIENhcmUgUGxhbiwgYSBzdGF0ZW1lbnQgb2YgU0VOIG9yIHdobyByZWNlaXZlIFNFTiBzY2hvb2wgc3VwcG9ydC4gMjElIG9mIHRoZXNlIGNoaWxkcmVuIGFjaGlldmVkIEdMRCBjb21wYXJlZCB0byA2OC4zJSBvZiB0aGUgcG9wdWxhdGlvbi4gVGhlcmUgd2VyZSA3NDQgY2hpbGRyZW4gaW4gdGhpcyBncm91cC5cXG5cXG5SZXN1bHRzIGZvciBjaGlsZHJlbiB3aG8gd2VyZSBlbGlnaWJsZSBmb3IgMiB5ZWFyIG9sZCBmdW5kZWQgcGxhY2VzIHNob3cgdGhhdCA1MyUgb2YgdGhlIGNvaG9ydCB3ZW50IG9uIHRvIGFjaGlldmUgR0xEIGNvbXBhcmVkIHRvIDY4LjMlIG9mIHRoZSBwb3B1bGF0aW9uLlxcblxcbioqSW1wcm92ZW1lbnRzIHBsYW5uZWQqKlxcblxcblNjaG9vbCBJbXByb3ZlbWVudCBBZHZpc2VycyBoYXZlIGJlZW4gbWFraW5nIHRlcm1seSB2aXNpdHMgdG8gYWxsIHNjaG9vbHMgc2luY2UgdGhlIHN1bW1lciB0ZXJtOyB0aGVzZSBpbmNsdWRlIHNwZWNpZmljIHF1ZXN0aW9ucyBmb3IgYWxsIEhlYWRzIGFuZCBFWUZTIGxlYWRlcnMgb24gcHVwaWwgcHJvZ3Jlc3MsIHRhcmdldCBzZXR0aW5nIGFuZCBtb25pdG9yaW5nIGF0dGFpbm1lbnQuIFRoZSBlYXJseSB5ZWFycyBhZHZpc29yeSB0ZWFtIG9mZmVyIHRhcmdldGVkIHN1cHBvcnQgdG8gc2Nob29scyBqdWRnZWQgYnkgT2ZzdGVkIHRvIGJlIEluYWRlcXVhdGUgb3IgUmVxdWlyZXMgSW1wcm92ZW1lbnQgYW5kIHRvIHNjaG9vbHMgYXR0YWluaW5nIGxvdyBHTEQuIFRoaXMgaW52b2x2ZXMgcXVhbGl0eSBhc3N1cmluZyBwcmFjdGljZSBhbmQgdGFyZ2V0IHNldHRpbmcgZm9yIGdyb3VwcyBvZiBjaGlsZHJlbi4gVGhpcyBhcHByb2FjaCB3aXRoIHNjaG9vbHMgaXMgb24tZ29pbmcuXFxuXFxuUG9vciB0cmFuc2l0aW9uIGlzIGEgY29udHJpYnV0b3J5IGZhY3RvciB0byBsb3cgR0xEIGFzIGNoaWxkcmVuIG1ha2Ugb3B0aW1hbCBwcm9ncmVzcyB3aGVuIGluZm9ybWF0aW9uIGFib3V0IHRoZWlyIGF0dGFpbm1lbnQgYW5kIHByb2dyZXNzIGZyb20gc3RhcnRpbmcgcG9pbnRzIGlzIHNoYXJlZCBlZmZlY3RpdmVseSBhbmQgaW4gZ29vZCB0aW1lLiBUbyBhc3Npc3QgcHJlLXNjaG9vbCBwcmFjdGl0aW9uZXJzIGFuZCBzY2hvb2wgdGVhY2hlcnMgaW4gbWFuYWdpbmcgZWZmZWN0aXZlIHRyYW5zaXRpb25zIHdlIGFyZSB0YWtpbmcgYSBudW1iZXIgb2YgYWN0aW9uczpcXG5cXG4qIEVtYmVkZGluZyBDb3VudHktd2lkZSBzY2hvb2wgYW5kIHNldHRpbmcgdHJhbnNpdGlvbiBldmVudHMgYWxyZWFkeSBpbiBwbGFjZVxcbiogUHJvZHVjaW5nIHVuaXZlcnNhbCBhbmQgc3VwcG9ydGVkIHRyYW5zaXRpb24gZ3VpZGFuY2UgaW5jbHVkaW5nIGNhc2Ugc3R1ZGllcyBvZiBiZXN0IHByYWN0aWNlXFxuKiBSZS1kcmFmdGluZyB0cmFuc2l0aW9uIGd1aWRhbmNlIGZvciBwYXJlbnRzIGFuZCBjYXJlcnNcXG4qIFByb2R1Y2luZyBndWlkYW5jZSBvbiBob21lIHZpc2l0aW5nIGZvciBzZXR0aW5ncyBhbmQgc2Nob29scyBhbmQgcHJvbW90aW5nIGl0IGFzIGdvb2QgcHJhY3RpY2VcXG4qIFByb2R1Y2luZyBhIDEtcGFnZSBwcm9maWxlLCB0YWtlbiBmcm9tIHRoZSBleGlzdGluZyBMZWFybmluZyBKb3VybmV5IGRvY3VtZW50LCB0byBiZSBwYXNzZWQgZnJvbSBzZXR0aW5nIHRvIHNjaG9vbCBmb3IgZWFjaCBjaGlsZFxcbiogV29ya2luZyB3aXRoIEhlYWQgVGVhY2hlcnMgYW5kIEVhcmx5IFllYXJzIGxlYWRlcnMgdG8gc2V0IG91dCBhZ3JlZWQgcHJpbmNpcGxlcyBhbmQgZXhwZWN0YXRpb25zIG9mIGNoaWxkcmVu4oCZcyByZWFkaW5lc3MgZm9yIHNjaG9vbCwgYW5kIHNjaG9vbHPigJkgcmVhZGluZXNzIGZvciBjaGlsZHJlbiwgYW5kIHVzaW5nIHRoZXNlIHRvIHVuZGVycGluIG9uLWdvaW5nIGd1aWRhbmNlIGFuZCB0cmFpbmluZy5cXG5cXG5UaGUgdnVsbmVyYWJsZSBsZWFybmVycyBhdWRpdCB3aWxsIGNvbnRpbnVlIHRvIGJlIGNhcnJpZWQgb3V0IHRlcm1seSBieSBhZHZpc2VycyBpbiB0aGUgRWFybHkgQ2hpbGRob29kIFNlcnZpY2UuIFByZS1zY2hvb2wgc2V0dGluZ3MgaWRlbnRpZmllZCBpbiB0aGUgc3VtbWVyIHRlcm0gYXMgbGVzcyBhYmxlIHRvIHN1cHBvcnQgdnVsbmVyYWJsZSBsZWFybmVycyB3aWxsIGJlIHByaW9yaXRpc2VkIGZvciB2aXNpdHMgYnkgZWFybHkgeWVhcnMgYW5kIGNoaWxkY2FyZSBhZHZpc2Vycy4gU2V0dGluZ3Mgd2hlcmUgdnVsbmVyYWJsZSBsZWFybmVycyBhcmUgd2VsbCBzdXBwb3J0ZWQgd2lsbCByZWNlaXZlIHRlbGVwaG9uZSBzdXBwb3J0LiBQcmFjdGljZSBpbiBzZXR0aW5ncyBvZmZlcmluZyBmcmVlIDIgeWVhciBvbGQgcGxhY2VzIHdpbGwgYmUgc2NydXRpbmlzZWQgdGhyb3VnaCB0aGUgdnVsbmVyYWJsZSBsZWFybmVycyBhdWRpdCBwcm9jZXNzLiBXZSB3aWxsIHJldmlzaXQgYSBwcm9qZWN0IGRldmVsb3BlZCB3aXRoIENhbnRlcmJ1cnkgQ2hyaXN0Y2h1cmNoIFVuaXZlcnNpdHkgaW4gMjAxNCB0byBpbXByb3ZlIHRoZSBxdWFsaXR5IG9mIGVhcmx5IHllYXJzIHByYWN0aWNlIGluIHdvcmtpbmcgd2l0aCAyIHllYXIgb2xkcyB0aHJvdWdoIG91ciBlc3RhYmxpc2hlZCBsb2NhbGl0eSBiYXNlZCBuZXR3b3JrcyBhbmQgdHJhaW5pbmcgcHJvZ3JhbW1lLlxcblxcbkEgcHJvZ3JhbW1lIG9mIG1vZGVyYXRpb24gYWN0aXZpdHkgdGhyb3VnaCBsb2NhbGl0eSBiYXNlZCBuZXR3b3JrcyBoYXMgYmVlbiBlbWJlZGRlZCBhbmQgd2UgYmVsaWV2ZSB0aGF0IHRoaXMgaGFzIGhhZCBhIHBvc2l0aXZlIGltcGFjdCBvbiBHTEQgaW4gMjAxNS0xNi4gVGhlcmUgd2FzIGEgc3VzdGFpbmVkIGZvY3VzIG9uIGJveXMgd3JpdGluZyB3aGljaCByZXN1bHRlZCBpbiB0ZWFjaGVycyBiZWluZyBhYmxlIHRvIG1ha2UganVkZ21lbnRzIGJhc2VkIG9uIHNvdW5kIGV2aWRlbmNlLiBUaGlzIGFwcHJvYWNoIHdpbGwgY29udGludWUsIGFuZCB0cmFpbmluZyBldmVudHMgZHVyaW5nIDIwMTYtMTcgd2lsbCBzdXBwb3J0IGRpc3NlbWluYXRpb24gb2YgYmVzdCBwcmFjdGljZSwgcGVlciBjb2FjaGluZyBhbmQgZW5zdXJlIHRoZSBSZWNlcHRpb24gdGVhY2hlcnMgYXJlIGNvbmZpZGVudCBpbiBtYWtpbmcgYWNjdXJhdGUgYW5kIGNvbnNpc3RlbnQgYXNzZXNzbWVudHMgb2YgY2hpbGRyZW7igJlzIGxlYXJuaW5nIGFuZCBkZXZlbG9wbWVudC5cXG5cXG5UaGUgU2Nob29sIEltcHJvdmVtZW50IFNlcnZpY2Ugb2ZmZXIgdHJhaW5pbmcgZm9jdXNpbmcgb24gYXJlYXMgb2YgdGhlIGN1cnJpY3VsdW0gd2hlcmUgZmV3ZXIgY2hpbGRyZW4gYWNoaWV2ZSBHTEQuIFRyYWluaW5nIGlzIGN1cnJlbnRseSBiZWluZyBkZWxpdmVyZWQgYW5kIGEgc2VyaWVzIG9mIHRyYWluaW5nIGV2ZW50cyBoYXMgYmVlbiBwbGFubmVkIHRvIGltcHJvdmUgdGVhY2hlcnPigJkga25vd2xlZGdlIGFuZCBza2lsbHMsIGZvciBleGFtcGxlLCBhZGRyZXNzaW5nIGdlbmRlciBpc3N1ZXMgaW4gbGVhcm5pbmcgZ2VuZXJhbGx5IGFuZCBwYXJ0aWN1bGFybHkgaW4gd3JpdGluZywgbGVhZGVyc2hpcCBpbiBzY2hvb2xzLCBhbmQgdXNpbmcgZGF0YSB0byBpbmZvcm0gcGxhbm5pbmcuIFRyYWluaW5nIGNvbnRpbnVlcyB0byBiZSBhdmFpbGFibGUgdGhyb3VnaCBhIHN1YnNjcmlwdGlvbiBwcm9ncmFtbWUgZm9yIHByZS1zY2hvb2xzIHRocm91Z2ggdGhlIEVhcmx5IENoaWxkaG9vZCBTZXJ2aWNlLCBhbmQgdGhpcyBjb250aW51ZXMgdG8gdGFyZ2V0IGFzcGVjdHMgb2YgbGVhcm5pbmcgd2hlcmUgR0xEIHJlc3VsdHMgYXJlIHBvb3IsIGFuZCB0byBhZGRyZXNzIHRoZW1lcyBlbWVyZ2luZyBmcm9tIE9mc3RlZCBpbnNwZWN0aW9ucy4gV2UgaGF2ZSBhbmFseXNlZCBHTEQgYnkgQ2hpbGRyZW4gYW5kIEZhbWlseSBDZW50cmUgcmVhY2ggYXJlYXMgbG9va2luZyBhdCBhdHRhaW5tZW50IGluIHNwZWNpZmljIGFzcGVjdHMgb2YgbGVhcm5pbmcgYW5kIHRoaXMgd2lsbCBkcml2ZSB0YXJnZXRlZCBpbnRlcnZlbnRpb25zIGFuZCB0cmFpbmluZyBsZWQgYnkgQ2hpbGRyZW4gYW5kIEZhbWlseSBDZW50cmVzLCBhbmQgdGhyb3VnaCBsb2NhbGl0eSBiYXNlZCBuZXR3b3JrcyBkdXJpbmcgMjAxNi0xNy5cXG5cXG5UaGUgRWFybHkgQ2hpbGRob29kIFNlcnZpY2Ugd2lsbCBjb250aW51ZSB0byBzdXBwb3J0IGFuZCBjaGFsbGVuZ2UgcHJlLXNjaG9vbCBwcm92aWRlcnMgdG8gaW5jbHVkZSBhbGwgY2hpbGRyZW4gYW5kIHRvIHJlZmluZSBvdXIgcmVmZXJyYWwgcHJvY2Vzc2VzIGZvciBjaGlsZHJlbiB3aXRoIFNFTkQuIFdlIGNvbnRpbnVlIHRvIG1vbml0b3IgdGhlIG91dGNvbWVzIG9mIGNoaWxkcmVuIHdobyByZWNlaXZlIGZ1bmRpbmcgZm9yIHN1cHBvcnQgaW4gcHJlLXNjaG9vbHMsIGluY2x1ZGluZyB0aG9zZSBjaGlsZHJlbiB3aG8gZ28gb24gdG8gcmVjZWl2ZSBhbiBFZHVjYXRpb24gSGVhbHRoIGFuZCBDYXJlIG5lZWRzIGFzc2Vzc21lbnQuXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbmNyZWFzaW5nIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gYXNzZXNzZWQgYXQgYSBnb29kIGxldmVsIG9mIGRldmVsb3BtZW50XCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiVGFyZ2V0OiBpbmNyZWFzZSBwZXJmb3JtYW5jZSB0byBhdCBsZWFzdCB0aGUgbGV2ZWwgb2YgdXBwZXIgcXVhcnRpbGUgcGVyZm9ybWFuY2UgZm9yIHRoZSBTb3V0aCBFYXN0IGJ5IDIwMTlcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxMy0wMS0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiIlIiwidGFyZ2V0Ijo3NSwidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiIyNnZnLXAyYnkifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTN9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwiaW5jcmVhc2VcIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH19LFwic3RhcnRcIjpcIjIwMTQtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTQtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJwcm9ncmVzcyBjaGVjayBvZiBjaGlsZCBkZXZlbG9wbWVudFwiLFwieVNjYWxlXCI6e1widXNlX2RlZmF1bHRcIjpmYWxzZX0sXCJ1c2VfcHJvZ3Jlc3Nfb3ZlcnJpZGVcIjp0cnVlLFwicHJvZ3Jlc3Nfb3ZlcnJpZGVcIjpcIndpdGhpbl90b2xlcmFuY2VcIn0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTE6MDM6MDAuNzk4WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDExOjAzOjAwLjc5OFoiLCJ0YXJnZXRfdG9sZXJhbmNlIjoxMCwiaWQiOiJtaWQ0LXFpZXUifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMTE6MDM6MTIuMzY0WiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDExOjAzOjAwLjg1M1oiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMTowMzoxMi4zNjRaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiJpNnJoLXFyN3MiLCJuYW1lIjoiUHJpbWFyeSBQdXBpbCBBdHRhaW5tZW50IiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipLZXkgU3RhZ2UgMioqXFxuXFxuUHVwaWxzIGFnZWQgZnJvbSA3IHRvIDExIHllYXJzIG9sZCB3b3JrIGF0IEtleSBTdGFnZSAyLiBUaGUgbmV3IG1vcmUgY2hhbGxlbmdpbmcgbmF0aW9uYWwgY3VycmljdWx1bSwgd2hpY2ggd2FzIGludHJvZHVjZWQgaW4gMjAxNCwgd2FzIGFzc2Vzc2VkIGJ5IG5ldyB0ZXN0cyBhbmQgaW50ZXJpbSBmcmFtZXdvcmtzIGZvciB0ZWFjaGVyIGFzc2Vzc21lbnQuIFJlc3VsdHMgZm9yIDIwMTYgYW5kIHN1YnNlcXVlbnQgeWVhcnMgYXJlIG5vIGxvbmdlciByZXBvcnRlZCBhcyBsZXZlbHMsIGVhY2ggcHVwaWwgcmVjZWl2ZXMgdGhlaXIgdGVzdCByZXN1bHRzIGFzIGEgc2NhbGVkIHNjb3JlIGFuZCB0ZWFjaGVyIGFzc2Vzc21lbnRzIGJhc2VkIG9uIHRoZSBzdGFuZGFyZHMgaW4gdGhlIGludGVyaW0gZnJhbWV3b3JrLiBUaGUgaW50ZXJpbSBhc3Nlc3NtZW50IGNyaXRlcmlhIHByb3ZpZGVkIGJ5IHRoZSBTdGFuZGFyZHMgYW5kIFRlc3RpbmcgQWdlbmN5IGluZGljYXRlZCB0aGF0IGFzc2Vzc21lbnQgc2hvdWxkIGJlIGJhc2VkIG9uIDEwMCUgYWNoaWV2ZW1lbnQgYW5kIG5vdCBhIOKAmGJlc3QgZml04oCZIG1vZGVsLiBXZXN0IFN1c3NleCBhcHBsaWVkIHRoaXMgYWR2aWNlIHJpZ29yb3VzbHkuIEJlY2F1c2Ugb2YgdGhlIGNoYW5nZXMgZGV0YWlsZWQgYWJvdmUsIGZpZ3VyZXMgZm9yIDIwMTYgYW5kIDIwMTcgYXJlIG5vdCBjb21wYXJhYmxlIHRvIHRob3NlIGZvciBlYXJsaWVyIHllYXJzLiBMZXZlbHMgYXJlIG5vdCBjb21wYXJhYmxlIHdpdGggc2NhbGVkIHNjb3JlcyBvciB0ZWFjaGVyIGFzc2Vzc21lbnQgb3V0Y29tZXMuIFRoZSBleHBlY3RhdGlvbnMgZm9yIHB1cGlscyBhdCB0aGUgZW5kIG9mIGtleSBzdGFnZSAyIGhhdmUgYmVlbiByYWlzZWQuXFxuXFxuKipEZWNlbWJlciAyMDE3IFVwZGF0ZToqKlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkRlY2VtYmVyIDIwMTcgVXBkYXRlOioqXFxuXFxuLSAtIC1cXG5cXG4qKjIwMTYtMjAxNyBSZWFkaW5nLCBXcml0aW5nIGFuZCBNYXRocyAoUldNKSoqXFxuXFxuVGhlIG1haW4gcHVibGlzaGVkIGluZGljYXRvciByZW1haW5zIFJlYWRpbmcsIFdyaXRpbmcgYW5kIE1hdGhzIChSV00pLCB0aG9zZSBwdXBpbHMgd2hvIHJlYWNoIG9yIGV4Y2VlZCB0aGUgZXhwZWN0ZWQgc3RhbmRhcmQgaW4gYWxsIG9mIHJlYWRpbmcgdGVzdCwgd3JpdGluZyB0ZWFjaGVyIGFzc2Vzc21lbnQgYW5kIG1hdGhzIHRlc3QuIEluIFdlc3QgU3Vzc2V4IDU1JSBvZiBhbGwgcHVwaWxzIHJlYWNoZWQgdGhhdCBzdGFuZGFyZCBjb21wYXJlZCB0byB0aGUgbmF0aW9uYWwgYXZlcmFnZSBvZiA2MiUuIFRoZSBXZXN0IFN1c3NleCBhdmVyYWdlIGhhcyBpbmNyZWFzZWQgbW9yZSByYXBpZGx5IHRoYW4gdGhlIG5hdGlvbmFsIGFuZCB0aGUgZ2FwIGhhcyBub3cgcmVkdWNlZCBieSAyJSB0byBqdXN0IDclLiBUaGUgc2FtZSBwaWN0dXJlIGlzIHJlZmxlY3RlZCBhZ2FpbnN0IHRoZSBTb3V0aCBFYXN0LCB3aGVyZSB0aGUgaW5jcmVhc2UgaXMgb25seSA4JSwgdGhlIGdhcCBoYXMgbm93IHJlZHVjZWQgYnkgMiUgdG8ganVzdCA4JS5cXG5cXG5XaGlsc3QgdGhlcmUgd2FzIGEgMTAlIHBvaW50IGluY3JlYXNlIGZyb20gMjAxNiwgdGhlIHJhdGUgb2YgaW1wcm92ZW1lbnQgbmVlZHMgdG8gYWNjZWxlYXJhdGUgc28gdGhhdCB0aGUgMjAyMiB0YXJnZXQgaXMgcmVhY2hlZC4gV3JpdGluZyBhbmQgbWF0aGVtYXRpY3MgcmVtYWluIHRoZSBhcmVhcyBvZiBjb25jZXJuLlxcblxcbkdyZWF0ZXIgRGVwdGhcXG5cXG5Vc2luZyB0aGUgU3RhbmRhcmQgYW5kIFRlc3RpbmcgQWdlbmN54oCZcyBhc3Nlc3NtZW50IGNyaXRlcmlhLCB0aGUgZXhwZWN0ZWQgc3RhbmRhcmQgaW4gdGhlIHRlc3RzIGlzIGEgc2NhbGVkIHNjb3JlIG9mIDEwMCBvciBhYm92ZS4gU29tZSBwdXBpbHMgd2hvIGF0dGFpbiB0aGUgZXhwZWN0ZWQgc3RhbmRhcmQgYXJlIGp1ZGdlZCB0byBiZSDigJx3b3JraW5nIGF0IGdyZWF0ZXIgZGVwdGggd2l0aGluIHRoZSBleHBlY3RlZCBzdGFuZGFyZOKAnSAoR0RTKS4gR0RTIGlzIHVzZWQgaW4gdGhlIGNoYXJ0cyBiZWxvdywgYnV0IGluIHNvbWUgcHVibGljYXRpb25zIChlLmcuIEFTUCkgdGhlIHRlcm0g4oCcSGlnaCBTdGFuZGFyZOKAnSBpcyB1c2VkIGZvciBzdWNoIHB1cGlscy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvNzI1NjI5QjctQTExOC00NDE2LUI0RjQtOTFDODRFNjU0NzUxXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqSW5kaXZpZHVhbCBTdWJqZWN0cyoqXFxuXFxuQXR0YWlubWVudCBhdCB0aGUgZXhwZWN0ZWQgc3RhbmRhcmQgaW4gdGhlIHRlc3RzIGlzIGhpZ2hlc3QgaW4gR1BTIChncmFtbWFyLCBwdW5jdHVhdGlvbiBhbmQgc3BlbGxpbmcpIGF0IDc0JSBjb21wYXJlZCB0byB0aGUgbmF0aW9uYWwgYXZlcmFnZSBvZiA3OCUgKFNvdXRoIEVhc3QgNzclKS5cXG5cXG5BdHRhaW5tZW50IGlzIGxvd2VzdCBpbiBtYXRocyBhdCA3MSUgY29tcGFyZWQgdG8gdGhlIG5hdGlvbmFsIGF2ZXJhZ2Ugb2YgNzUlIChTb3V0aCBFYXN0IGFsc28gNzUlKS5cXG5cXG5BdHRhaW5tZW50IGluIHJlYWRpbmcgaXMgYXQgNzElIGNvbXBhcmVkIHRvIHRoZSBuYXRpb25hbCBhdmVyYWdlIG9mIDcyJSAoU291dGggRWFzdCA3NCUpLlxcblxcbkluIHdyaXRpbmcgNjklIG9mIHB1cGlscyB3ZXJlIGFzc2Vzc2VkIGJ5IHRlYWNoZXJzIGFzIHdvcmtpbmcgYXQgdGhlIGV4cGVjdGVkIHN0YW5kYXJkLCB0aGlzIHdhcyBsb3dlciB0aGFuIGluIGFueSBvZiB0aGUgdGVzdCBzdWJqZWN0cyBhbmQgY29tcGFyZXMgdG8gdGhlIG5hdGlvbmFsIGF2ZXJhZ2Ugb2YgNzclIChTb3V0aCBFYXN0IGFsc28gNzclKS5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQjZENEM0MzQtRUY0My00QkExLTg2RDktRkI5MzU3N0I1NEE1XCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzU0NzE4QjQ3LTg1QTctNDIxRS05MTkyLTJBMDIzODk0MDBGQlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJBbHRob3VnaCBzb21lIGdhaW5zIGhhdmUgYmVlbiBtYWRlIGFnYWluc3QgU3RhdGlzdGljYWwgbmVpZ2hib3VycywgV2VzdCBTdXNzZXggcmVtYWlucyBhdCB0aGUgbG93ZXN0IHJhbmsgZm9yIDcgb2YgdGhlIDExIGluZGljYXRvcnMgZm9yIEFsbCBQdXBpbHMuIEJveXMgc2hvdyB0aGUgbW9zdCBpbXByb3ZlbWVudCBhZ2FpbnN0IFN0YXRpc3RpY2FsIE5laWdoYm91cnMsIGFsdGhvdWdoIFdlc3QgU3Vzc2V4IHJlbWFpbnMgcmFua2VkIDEwIG9yIDExIG91dCBvZiAxMSBpbiBtb3JlIHRoYW4gaGFsZiB0aGUgMzMgaW5kaWNhdG9ycyBhY3Jvc3MgYWxsIGdlbmRlcnMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqQ29tcGFyaXNvbiB3aXRoIG90aGVyIExvY2FsIEF1dGhvcml0aWVzIChyYW5raW5ncyk6KipcXG5cXG5OYXRpb25hbC9zdGF0aXN0aWNhbCBuZWlnaGJvdXJzOiBXZXN0IFN1c3NleCdzIEFsbCBQdXBpbHMgbmF0aW9uYWwgcmFua2luZ3MgZm9yIEV4cGVjdGVkIFN0YW5kYXJkIGluIE1hdGhzLCBSV00sIEdQUyBhbmQgU2NpZW5jZSBhbGwgc2hvdyBpbXByb3ZlbWVudC4gVGhlcmUgaXMgaW1wcm92ZW1lbnQgZm9yIEFsbCBQdXBpbHMgaW4gUldNIGF0IEdyZWF0ZXIgVGhhbiBFeHBlY3RlZCBTdGFuZGFyZCB0b28sIHRob3VnaCBhbGwgb3RoZXIgc3ViamVjdHMgYXJlIGRvd24uXFxuXFxuR2lybHMgc2hvdyBpbXByb3ZlbWVudCBpbiBNYXRocyBhdCB0aGUgRXhwZWN0ZWQgU3RhbmRhcmQgYW5kIGdyZWF0ZXIgdGhhbiBFeHBlY3RlZCBhbmQgYXQgdGhlIGV4cGVjdGVkIFN0YW5kYXJkIGZvciBHUFMgYW5kIFNjaWVuY2UuIFRoZSBCb3lzIHNob3cgdGhlIG1vc3QgaW1wcm92ZW1lbnQgaW4gcmFua2luZ3Mgd2l0aCA3IG9mIHRoZSAxMSBpbmRpY2F0b3JzIHVwIG9uIGxhc3QgeWVhciwgd2l0aCBTY2llbmNlIHNob3dpbmcgYW4gaW5jcmVhc2Ugb2YgMzcgcGxhY2VzLiBXaXRoIHRoZSBleGNlcHRpb24gb2YgR3JlYXRlciBUaGFuIEV4cGVjdGVkIFJlYWRpbmcsIFdlc3QgU3Vzc2V4IHJlbWFpbnMgaW4gdGhlIGxvd2VyIGhhbGYgb2YgcmFua2luZ3MgbmF0aW9uYWxseS5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMzVGRTcxOTMtRDNDNy00MjlELTg0MjEtMjY3QkQzRTVCRjREXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlNvdXRoIEVhc3Q6IFdlc3QgU3Vzc2V44oCZcyByYW5raW5ncywgYWdhaW5zdCB0aGUgMTkgU291dGggRWFzdCBncm91cCBvZiBMb2NhbCBBdXRob3JpdGllcywgYXJlOlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIgUldNIEVYUysgKD0xOHRoIG9mIDE5KVxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8xRTZBODQxNS1ENDU5LTQ2N0EtQUMyOC1CQTJEQzJGNTVENjRcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIFJlYWRpbmcgRVhTKyA9IDEzdGggb2YgMTlcXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIDIwMTYga2V5IHN0YWdlIDIgYXNzZXNzbWVudHMgd2VyZSB0aGUgZmlyc3Qgd2hpY2ggYXNzZXNzIHRoZSBuZXcsIG1vcmUgY2hhbGxlbmdpbmcgbmF0aW9uYWwgY3VycmljdWx1bSB3aGljaCB3YXMgaW50cm9kdWNlZCBpbiAyMDE0LiBOZXcgdGVzdHMgYW5kIGludGVyaW0gZnJhbWV3b3JrcyBmb3IgdGVhY2hlciBhc3Nlc3NtZW50IGhhdmUgYmVlbiBpbnRyb2R1Y2VkIHRvIHJlZmxlY3QgdGhlIHJldmlzZWQgY3VycmljdWx1bS4gUmVzdWx0cyBhcmUgbm8gbG9uZ2VyIHJlcG9ydGVkIGFzIGxldmVscywgYW5kIGVhY2ggcHVwaWwgd2lsbCBub3cgcmVjZWl2ZSB0aGVpciB0ZXN0IHJlc3VsdHMgYXMgYSBzY2FsZWQgc2NvcmUgYW5kIHRlYWNoZXIgYXNzZXNzbWVudHMgYmFzZWQgb24gdGhlIHN0YW5kYXJkcyBpbiB0aGUgaW50ZXJpbSBmcmFtZXdvcmsuIFRoZSBleHBlY3RlZCBzdGFuZGFyZCBoYXMgYmVlbiByYWlzZWQgYW5kIHRoZSBhY2NvdW50YWJpbGl0eSBmcmFtZXdvcmsgZm9yIHNjaG9vbHMgaGFzIGFsc28gY2hhbmdlZC4gVGhlc2UgY2hhbmdlcyBtZWFuIHRoYXQgdGhlIGV4cGVjdGVkIHN0YW5kYXJkIGlzIGhpZ2hlciBhbmQgbm90IGNvbXBhcmFibGUgd2l0aCB0aGUgZXhwZWN0ZWQgc3RhbmRhcmQgdXNlZCBpbiBwcmV2aW91cyB5ZWFy4oCZcyBzdGF0aXN0aWNzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8zOUYxOTNFMy1GOEQwLTQzODktQUExNy1ENjg0M0JBNjAyNkZcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiV3JpdGluZyBUQSBFWFMgPSAoMTl0aCBvZiAxOSlcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvOUJDOEJEMzQtMTI2OC00MDkyLTg2N0EtRUEzNUQxODVBOTRGXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIk1hdGhzIEVYUysgKD0xNHRoIG9mIDE5KVwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9DQTY2MTk0Ri0xNkIxLTRDQ0EtOTE3OC03MDJGOTJDRTVDNTBcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiYWEgXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gdG8gdGhlIGVuZCBvZiBTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG4qKktleSBTdGFnZSAxKiogcHJvdmlzaW9uYWwgb3V0Y29tZXMgYXJlIG5vdyBhdmFpbGFibGUgYW5kIHRoZSBkYXRhIGJlbG93IGhhcyBiZWVuIHVwZGF0ZWQuIFdlc3QgU3Vzc2V4IHJlc3VsdHMgYXJlIHN0aWxsIGJlbG93IHRoZSBuYXRpb25hbCBhdmVyYWdlIGJ1dCBpbXByb3ZlZCBhdCBhIGZhc3RlciByYXRlIHRoYW4gdGhlIG5hdGlvbmFsIGF2ZXJhZ2UgYW5kLCB0aGVyZWZvcmUsIGNsb3NpbmcgdGhlIGdhcCB0byB0aGUgbmF0aW9uYWwgZmlndXJlLlxcblxcbioqS2V5IFN0YWdlIDIqKiBwcm92aXNpb25hbCBvdXRjb21lcyBjb25maXJtIHRob3NlIHJlcG9ydGVkIGluIEp1bHkgMjAxNy4gV2VzdCBTdXNzZXggcmVzdWx0cyBhcmUgc3RpbGwgYmVsb3cgdGhlIG5hdGlvbmFsIGF2ZXJhZ2UgYnV0IGFwYXJ0IGZyb20gaW4gcmVhZGluZyAod2hpY2ggaXMgY2xvc2UgdG8gbmF0aW9uYWwgYXZlcmFnZSkgaW1wcm92ZWQgYXQgYSBmYXN0ZXIgcmF0ZSB0aGFuIHRoZSBuYXRpb25hbCBhdmVyYWdlIGFuZCwgdGhlcmVmb3JlLCBjbG9zaW5nIHRoZSBnYXAuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gdG8gdGhlIGVuZCBvZiBKdW5lIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuKipLZXkgU3RhZ2UgMSoqIGlzIGFuIGluZGljYXRvciBvZiB0aGUgY3VycmVudCBwaWN0dXJlLiBEYXRhIHNob3duIGlzIHByb3Zpc2lvbmFsIGludGVyaW0gZGF0YSwgYXMgYSB2ZXJ5IHNtYWxsIG51bWJlciBvZiBzY2hvb2xzIGFyZSBzdGlsbCB0byB1cGxvYWQgZGF0YSBzZXRzLiBJdCBpcyB1bmxpa2VseSBpbnRlcmltIGRhdGEgd2lsbCByYWRpY2FsbHkgY2hhbmdlIHdoZW4gcmVtYWluaW5nIHVwbG9hZHMgaGF2ZSBiZWVuIGNvbXBsZXRlZC5cXG5cXG4qKktleSBTdGFnZSAyKiogZGF0YSB3YXMgYXZhaWxhYmxlIGZvciBuYXRpb25hbCBkb3dubG9hZCBmcm9tIHRoZSA0dGggSnVseSAyMDE3LiBUaGUgZGF0YSBzaG93biByZXByZXNlbnRzIHRoZSBwcm9wb3J0aW9uIG9mIHB1cGlscyBhY2hpZXZpbmcgdGhlIOKAmGV4cGVjdGVkIHN0YW5kYXJk4oCZIGFuZCDigJhncmVhdGVyIGRlcHRo4oCZLiBUaGUgcHJvcG9ydGlvbiBvZiBwdXBpbHMgYWNoaWV2aW5nIOKAmGdyZWF0ZXIgZGVwdGjigJkgYXMgYSBzZXBhcmF0ZSBtZWFzdXJlIGlzIG5vdCB5ZXQgYXZhaWxhYmxlLiBBbGwgc2Nob29scyBhcmUgY3VycmVudGx5IHJldmlld2luZyB0aGVpciBkYXRhIGluIHRlcm1zIG9mIHRoZSBudW1iZXIgb2YgcHVwaWxzIGZvciB3aG9tIHRoZXkgd2lsbCBhcHBlYWwgYW5kIHNlZWsgYSByZWNvdW50IC8gcmVtYXJrLiBQdXBpbHMgdHlwaWNhbGx5IHB1dCBmb3J3YXJkIGZvciByZWNvdW50IC8gcmVtYXJrIGFyZSBubyBtb3JlIHRoYW4gMyBwb2ludHMgYmVsb3cgdGhyZXNob2xkIGZvciBhY2hpZXZpbmcgdGhlIOKAmGV4cGVjdGVkIHN0YW5kYXJk4oCZLiBJbiAyMDE2LCB0aGlzIHByb2Nlc3MgaGFkIGErMiUgZGlmZmVyZW5jZSB0byB0aGUgZWFybHkgdW52YWxpZGF0ZWQgZGF0YS4gTmF0aW9uYWwgZGF0YSBoYXMgYmVlbiB0YWtlbiBmcm9tIHRoZSBTdGF0aXN0aWNhbCBGaXJzdCBSZWxlYXNlIChTRlIpIGF2YWlsYWJsZSBvbiB0aGUgRGZFIHdlYnNpdGUuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzBCMTAxQzY4LTE1OTItNDNCNS04MkM0LTE0NUY2Q0EyNDQ4RlwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy80N0M5ODE2Ri1GREU5LTQ4MTQtOTU3Ny01NjMwNEYyQjQyMDNcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5UaGUgcmV2aXNlZCBLZXkgU3RhZ2UgMiByZXN1bHRzIGhhdmUgYmVlbiByZWxlYXNlZCwgYW5kIGZvciBXZXN0IFN1c3NleCA0NSUgb2YgcHVwaWxzIGFjaGlldmluZyB0aGUgZXhwZWN0ZWQgc3RhbmRhcmQgaW4gcmVhZGluZywgd3JpdGluZyBhbmQgbWF0aGVtYXRpY3MgKGNvbWJpbmVkKSB3aGljaCBpcyByYW5rIDMzIGFnYWluc3QgMzQgU2hpcmUgUGx1cyBjb3VudGllcy4gVGhlc2UgcmVzdWx0cyBhcmUgZnJvbSBuZXcgdGVzdHMgYW5kIHRlYWNoZXIgYXNzZXNzbWVudCBvZiB0aGUgbmV3IG5hdGlvbmFsIEN1cnJpY3VsdW0gYW5kIGFyZSBub3QgZGlyZWN0bHkgY29tcGFyYWJsZSB3aXRoIHByZXZpb3VzIG1lYXN1cmVzLiBUaGVzZSByZXN1bHRzIGFyZSBkaXNhcHBvaW50aW5nLlxcblxcblNjaG9vbCBpbXByb3ZlbWVudCwgd29ya2luZyB3aXRoIHNjaG9vbHMsIGhhdmUgcHJvZHVjZWQgYSBwcm9ncmFtbWUgb2Ygc3VwcG9ydCBhbmQgdHJhaW5pbmcgdG8gaW1wcm92ZSBvdXRjb21lcyBhdCBLZXkgU3RhZ2UgMSBhcyB3ZWxsIGFzIEtleSBTdGFnZSAyLiBXZXN0IFN1c3NleCBvZmZpY2VycyBhcmUgd29ya2luZyB3aXRoIHNjaG9vbHMgb24gdGhpcyBhY3Rpb24gcGxhbiB0byBpbXByb3ZlIEtleSBTdGFnZSAyIG91dGNvbWVzIGluIDIwMTcuXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJQdXBpbHMgYWNoaWV2aW5nIHRoZSBleHBlY3RlZCBzdGFuZGFyZCBvZiBkZXZlbG9wbWVudCBhdCB0aGUgZW5kIG9mIEtleSBTdGFnZSAyXCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiVGhpcyBnb2FsIGlzIG1lYXN1cmVkIGJ5IHRyYWNraW5nIHB1cGlsIGFjaGlldmVtZW50IGF0IEtleSBTdGFnZSAyLiAgSXQgaXMgb3VyIGFtYml0aW9uIHRvIGJlIGFzIGdvb2QgYXMgdGhlIHRvcCAyNSUgb2YgaGlnaGVzdCBwZXJmb3JtaW5nIGNvdW50aWVzIGluIHRoZSBjb3VudHJ5IGJ5IDIwMTkuXCIsXCJpY29uXCI6XCJ0ZXh0XCJ9In0sInByZXZhaWxpbmdfbWVhc3VyZSI6eyJzdGFydCI6IjIwMTYtMDktMDFUMDA6MDA6MDAuMDAwIiwiZW5kIjoiMjAxOC0wMy0zMVQyMzo1OTo1OS4wMDAiLCJ1bml0IjoiJSIsInRhcmdldCI6NjMsInRhcmdldF90eXBlIjoiYWJzb2x1dGUiLCJ0YXJnZXRfZGVsdGEiOjAsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwiYmFzZWxpbmUiOjg0LCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6InZuZmEtcnJxMyJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6OCxcInllYXJcIjoyMDE2fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcImluY3JlYXNlXCIsXCJtYWludGFpbl90eXBlXCI6XCI+XCIsXCJ0YXJnZXRfdHlwZVwiOlwiYWJzb2x1dGVcIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH19LFwic3RhcnRcIjpcIjIwMTQtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTQtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwiLFwiZGF0YXNldFwiOlwiaWRrNi1kYWllXCJ9LFwidHlwZVwiOlwic2NyYXRjaFwifSxcIm5hbWVcIjpcIlBlcmNlbnRhZ2Ugb2YgYXV0aG9yaXR5IGZvciBwdXBpbCBhdHRhaW5tZW50IGF0IEtleSBTdGFnZSAyXCIsXCJ1c2VfcHJvZ3Jlc3Nfb3ZlcnJpZGVcIjp0cnVlLFwicHJvZ3Jlc3Nfb3ZlcnJpZGVcIjpcImJhZFwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDo0Nzo1Ni43MzJaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6NDc6NTYuNzMyWiIsInRhcmdldF90b2xlcmFuY2UiOjYsImlkIjoicGNyOS1oZXhhIn0sInJlbGF0ZWRfbWVhc3VyZXMiOlt7Im1ldGFkYXRhIjoiIiwiaWQiOiJqM2J6LXE4eHMifSx7Im1ldGFkYXRhIjoiIiwiaWQiOiJkZzQ1LTZ0ZTgifV0sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6NDk6MDguMTgyWiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjQ3OjU2LjgwM1oiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QxMDo0OTowOC4xODJaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiI5aTJrLXU5N2oiLCJuYW1lIjoiS2V5IFN0YWdlIDQgUHJvZ3Jlc3MgOCBzY29yZSAwLjAzIiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJpY29uXCI6XCJjb21wb3NlXCIsXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgLSB0byB0aGUgZW5kIG9mIERlY2VtYmVyIDIwMTcqKlxcblxcbkluIDIwMTYgdGhlIGhlYWRsaW5lIG1lYXN1cmUgZm9yIEtleSBTdGFnZSA0IHJlc3VsdHMgKEdDU0UpIGhhcyBjaGFuZ2VkIHRvIFByb2dyZXNzIDgsIGEgbWVhc3VyZSBvZiB0aGUgcHJvZ3Jlc3MgcHVwaWxzIG1ha2UgZnJvbSBLZXkgU3RhZ2UgMiAocHJpbWFyeSBzY2hvb2wgWWVhciA2KSB0byBLZXkgU3RhZ2UgNCAoc2Vjb25kYXJ5IHNjaG9vbCBZZWFyIDExKSBpbiBhIHJhbmdlIG9mIHN1YmplY3RzIGluY2x1ZGluZyBFbmdsaXNoLCBNYXRoZW1hdGljcywgYXQgbGVhc3QgMyBFbmdsaXNoIEJhY2NhbGF1cmVhdGUgc3ViamVjdHMgYW5kIHVwIHRvIHRocmVlIG90aGVyIGdvb2QgR0NTRSBzdWJqZWN0cy4gRnVydGhlciBpbmZvcm1hdGlvbiBpcyBoZWxkIHVuZGVyOltodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9wdWJsaWNhdGlvbnMvcHJvZ3Jlc3MtOC1zY2hvb2wtcGVyZm9ybWFuY2UtbWVhc3VyZV1bMF1cXG5cXG5Gb3IgMjAxNi8xNywgV2VzdCBTdXNzZXgncyBhdmVyYWdlIFByb2dyZXNzIDggc2NvcmUgaXMgMC4wMywgd2hpY2ggaXMgYmV0dGVyIHRoYW4gYm90aCB0aGUgd2hvbGUgb2YgRW5nbGFuZCAoLTAuMDMpIGFuZCB0aGUgU291dGggRWFzdCAoLTAuMDIpLiBXZXN0IFN1c3NleCBpcyBjdXJyZW50bHkgcmFua2VkPTUwdGgsIGFuZCBpcyBpbiB0aGUgc2Vjb25kIHF1YXJ0aWxlLCBpbiByZWxhdGlvbiB0byBhbGwgbG9jYWwgYXV0aG9yaXRpZXMuXFxuXFxuQkFTSUNTOiBBcyBhcGVyY2VudGFnZSBvZiBhbGwgcHVwaWxzIGF0IHRoZSBlbmQgb2Yga2V5IHN0YWdlIDQuIEluIDIwMTQvMTUgYW5kIGVhcmxpZXIsIHdoZXJlIHRoZSBFbmdsaXNoIGxhbmd1YWdlIGFuZCBFbmdsaXNoIGxpdGVyYXR1cmUgb3B0aW9uIHdhcyBjaG9zZW4gaW4gRW5nbGlzaCwgZXhhbXMgaW4gYm90aCBtdXN0IGJlIHRha2VuIGFuZCBhIEMgZ3JhZGUgb3IgYWJvdmUgYWNoaWV2ZWQgaW4gRW5nbGlzaCBsYW5ndWFnZS4gRnJvbSAyMDE1LzE2LCB0byBtZWV0IHRoZSBFbmdsaXNoIHJlcXVpcmVtZW50IG9mIHRoZSBBKi1DIGluIEVuZ2xpc2ggYW5kIG1hdGhzIGF0dGFpbm1lbnQgbWVhc3VyZSwgYSBDIGluIGVpdGhlciBFbmdsaXNoIGxhbmd1YWdlIG9yIEVuZ2xpc2ggbGl0ZXJhdHVyZSBjb3VudHMgYW5kIHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50IHRvIHRha2UgYm90aC5cXG5cXG5JbiAyMDE2LzE3LCBmb2xsb3dpbmcgdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgcmVmb3JtZWQgOSB0byAxIEdDU0VzIGluIEVuZ2xpc2gsIGEgZ3JhZGUgNW9yIGFib3ZlIGluIGVpdGhlciBFbmdsaXNoIGxhbmd1YWdlIG9yIEVuZ2xpc2ggbGl0ZXJhdHVyZSBjb3VudHMgYW5kIHRoZXJlIHJlbWFpbnMgbm8gcmVxdWlyZW1lbnQgdG8gdGFrZSBib3RoIGluIG9yZGVyIHRvIGFjaGlldmUgYSBwYXNzLiBGb3IgMjAxNi8xNyBXZXN0IFN1c3NleCdzIHBlcmNlbnRhZ2Ugd2FzIDQ0LjglLCBjb21wYXJlZCB0byA0Mi40JSBmb3IgRW5nbGFuZCBhbmQgNDUuNCUgZm9yIHRoZSBTb3V0aCBFYXN0LlxcblxcbkVOR0xJU0ggQkFDQ0FMQVVSRUFURTogQXMgYSBwZXJjZW50YWdlIG9mIHB1cGlscyBhdCB0aGUgZW5kIG9mIGtleSBzdGFnZSA0LiBJbiAyMDE0LzE1IGFuZCBlYXJsaWVyLCB3aGVyZSB0aGUgRW5nbGlzaCBsYW5ndWFnZSBhbmQgRW5nbGlzaCBsaXRlcmF0dXJlIG9wdGlvbiB3YXMgY2hvc2VuIGluIEVCYWNjIEVuZ2xpc2gsIGV4YW1zIGluIGJvdGggaGFkIHRvIGJlIHRha2VuIGFuZCBhIEMgZ3JhZGUgb3IgYWJvdmUgYWNoaWV2ZWQgaW4gRW5nbGlzaCBsYW5ndWFnZS4gSW4gMjAxNS8xNiwgdG8gbWVldCB0aGUgRW5nbGlzaCByZXF1aXJlbWVudCBvZiB0aGUgRUJhY2MsIGV4YW1zIGluIGJvdGggaGFkIHRvIGJlIHRha2VuIGFuZCBhIEMgZ3JhZGUgb3IgYWJvdmUgYWNoaWV2ZWQgaW4gZWl0aGVyIEVuZ2xpc2ggbGFuZ3VhZ2Ugb3IgRW5nbGlzaCBsaXRlcmF0dXJlLiBGcm9tIDIwMTcsIHRoZSBkZWZpbml0aW9uIG9mICdwZXJjZW50YWdlIGFjaGlldmluZyB0aGUgRW5nbGlzaCBCYWNjYWxhdXJlYXRlJyBoYXMgY2hhbmdlZCB0byAndGhlIHByb3BvcnRpb24gb2YgcHVwaWxzIGFjaGlldmluZyB0aGUgRUJhY2Mgd2hpY2ggaW5jbHVkZXMgYSBncmFkZSA1IG9yIGFib3ZlIGluIEVuZ2xpc2ggYW5kbWF0aGVtYXRpY3MsIGFuZCBncmFkZSBDIG9yIGFib3ZlIGluIHVucmVmb3JtZWQgc3ViamVjdHMnIGZvbGxvd2luZyB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSByZWZvcm1lZCA5IHRvIDEgR0NTRXMgaW4gRW5nbGlzaCBhbmQgbWF0aGVtYXRpY3MuXFxuXFxuRXhhbXMgaW4gYm90aCBFbmdsaXNoIGxpdGVyYXR1cmUgYW5kIEVuZ2xpc2ggbGFuZ3VhZ2Ugc3RpbGwgaGF2ZSB0byBiZSB0YWtlbiBhbmQgYSBncmFkZSA1IG9yIGFib3ZlIGFjaGlldmVkIGluIG9uZSB0byBhY2hpZXZlIGEgcGFzcyBpbiB0aGUgRW5nbGlzaCByZXF1aXJlbWVudCBvZiB0aGUgRUJhY2MuIFRoZSA5LTQgcGFzcyBzaG93cyBwdXBpbHMgd2hvIGFjaGlldmVkIGEgZ3JhZGUgNCBvciBhYm92ZSBpbiBFbmdsaXNoIGFuZG1hdGhlbWF0aWNzLCBhbmQgYSBncmFkZSBDIGluIHVucmVmb3JtZWQgc3ViamVjdHMgYW5kIGlzIHNob3duIGFsb25nc2lkZSB0aGUgaGVhZGxpbmUgbWVhc3VyZSBmb3IgdHJhbnNwYXJlbmN5IGFuZCBjb21wYXJhYmlsaXR5LkZvciAyMDE2LzE3IFdlc3QgU3Vzc2V4J3MgcGVyY2VudGFnZSB3YXMgMjEuMCUsIGNvbXBhcmVkIHRvIDIxLjIlIGZvciBFbmdsYW5kIGFuZCAyMy42JSBmb3IgdGhlU291dGggRWFzdC5cXG5cXG5SZXZpc2VkIGRhdGEgaXNyZWxlYXNlZCBhdCB0aGUgZW5kIG9mIEphbnVhcnkgMjAxOC5cXG5cXG5bMF06IGh0dHBzOi8vd3d3Lmdvdi51ay9nb3Zlcm5tZW50L3B1YmxpY2F0aW9ucy9wcm9ncmVzcy04LXNjaG9vbC1wZXJmb3JtYW5jZS1tZWFzdXJlXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIOKAkyB0byB0aGUgZW5kIG9mIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5BcyB0aGUgY3VycmVudCByZXN1bHRzIGFyZSBiYXNlZCBvbiBhbm51YWwgZXhhbWluYXRpb25zIHNhdCBpbiBKdW5lIDIwMTYgdGhlIG91dGNvbWVzIG9ubHkgY2hhbmdlIG1hcmdpbmFsbHkgdGhyb3VnaG91dCB0aGUgeWVhci4gVmFsaWRhdGVkIHJlc3VsdHMgd2VyZSBwdWJsaXNoZWQgaW4gSmFudWFyeSAyMDE3LiBUaGUgcmVzdWx0cyBmb3IgdGhlIGV4YW1pbmF0aW9ucyBzYXQgaW4gSnVuZSAyMDE3IHdpbGwgYmUgcmVwb3J0ZWQgd2hlbiB0aGV5IGJlY29tZSBhdmFpbGFibGUgaW4gdGhlIGF1dHVtbi5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDQg4oCTIHRvIHRoZSBlbmQgb2YgTWFyY2ggMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5PbiB0aGUgbmV3IG1lYXN1cmUsIFByb2dyZXNzIDgsIFdlc3QgU3Vzc2V44oCZcyBvdXRjb21lIGlzIHdlbGwgYWJvdmUgdGhlIG5hdGlvbmFsIGF2ZXJhZ2UgYXQgKzAuMSAobmF0aW9uYWwgYXZlcmFnZSDigJMwLjAzKSBpcyByYW5rZWQgM3JkIG9mIHRoZSAzNCBTaGlyZSBwbHVzIGNvdW50aWVzIGFuZCBpbiB0aGUgdG9wIDIwJSBvZiBhbGwgbG9jYWwgYXV0aG9yaXRpZXMuIFdlc3QgU3Vzc2V4IGlzIGFsc28gYWJvdmUgdGhlIG5hdGlvbmFsIGF2ZXJhZ2UgZm9yIG90aGVyIHJlcG9ydGVkIG91dGNvbWVzOiBBdHRhaW5tZW50IDgsIEVuZ2xpc2ggQmFjY2FsYXVyZWF0ZSBhbmQgQmFzaWNzIChBKi1DIGluIGJvdGggRW5nbGlzaCBhbmQgbWF0aGVtYXRpY3MpLlxcblxcblwifV0sXCJ0aXRsZV9pbWFnZVwiOlwiL2FwaS9hc3NldHMvMEI1MTJDMDQtN0Y0Ni00MTc5LUI4REEtQkUxNTM3RThEQTA1XCIsXCJ1c2VfY3VzdG9tX3RpdGxlXCI6dHJ1ZSxcImN1c3RvbV90aXRsZVwiOlwiSW5jcmVhc2UgS2V5IFN0YWdlIDQgUHJvZ3Jlc3MgOCBzY29yZSB0byBiZSBpbiB0aGUgdG9wIHF1YXJ0aWxlIG9mIGFsbCBMb2NhbCBBdXRob3JpdGllcyBieSAyMDIyXCJ9In0sInByZXZhaWxpbmdfbWVhc3VyZSI6eyJzdGFydCI6IjIwMTYtMDktMDFUMDA6MDA6MDAuMDAwIiwiZW5kIjoiMjAxOC0wMy0zMVQyMzo1OTo1OS4wMDAiLCJ1bml0IjoiIHNjb3JlICIsInRhcmdldCI6MC4wNywidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiIydWp4LTg0M2kifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjgsXCJ5ZWFyXCI6MjAxNn0sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fX0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTd9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxN319LFwic3RhcnRcIjpcIjIwMTctMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTctMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJLZXkgU3RhZ2UgNCBQcm9ncmVzcyA4IHNjb3JlXCIsXCJ1c2VfcHJvZ3Jlc3Nfb3ZlcnJpZGVcIjp0cnVlLFwicHJvZ3Jlc3Nfb3ZlcnJpZGVcIjpcIndpdGhpbl90b2xlcmFuY2VcIn0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6NDk6NTMuNTc4WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjQ5OjUzLjU3OFoiLCJ0YXJnZXRfdG9sZXJhbmNlIjowLjA0LCJpZCI6InllcnAtNjZ1NCJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbeyJtZXRhZGF0YSI6IiIsImlkIjoiNndhbS0zeWdqIn1dLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDEwOjUwOjA2LjQ2NVoiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDo0OTo1My42NDVaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6NTA6MDYuNDY1WiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoibWE2aC1hbm1zIiwibmFtZSI6IlB1cGlscyBhdCBzY2hvb2xzIEdvb2Qgb3IgT3V0c3RhbmRpbmcgaW4gVy4gU3Vzc2V4IGFzIGp1ZGdlZCBieSBPZnN0ZWQiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcInRleHRcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKk92ZXJ2aWV3KipcXG5cXG5VbmRlcnN0YW5kaW5nIE9mc3RlZCByZXBvcnRzXFxuXFxuT2ZzdGVkIChPZmZpY2UgZm9yIFN0YW5kYXJkcyBpbiBFZHVjYXRpb24sIENoaWxkcmVu4oCZcyBTZXJ2aWNlcyBhbmQgU2tpbGxzKSBpcyBhIGdvdmVybm1lbnQgZGVwYXJ0bWVudCB0aGF0IGluc3BlY3RzIGFuZCByZWd1bGF0ZXMgZWR1Y2F0aW9uYWwgaW5zdGl0dXRpb25zLiBBbGwgc2Nob29scyBhcmUgaW5zcGVjdGVkIGFzIHBhcnQgb2YgYSBjeWNsZSBvZiBpbnNwZWN0aW9uIHdpdGggaW5hZGVxdWF0ZSBhbmQgUkkgKFJlcXVpcmVzIEltcHJvdmVtZW50KSBzY2hvb2xzIGJlaW5nIGluc3BlY3RlZCB3aXRoaW4gdHdvIHllYXJzIGFuZCBnb29kIHNjaG9vbHMgZXZlcnkgdGhyZWUgeWVhcnMuIE91dHN0YW5kaW5nIHNjaG9vbHMgYXJlIG5vdCByb3V0aW5lbHkgaW5zcGVjdGVkLlxcblxcbkFmdGVyIHRoZSBpbnNwZWN0aW9uLCBPZnN0ZWQgcHVibGlzaGVzIGEgcHVibGljIHJlcG9ydCB0aGF0IGNvbnRhaW5zIGluZm9ybWF0aW9uIG9uIHRoZSBzY2hvb2zigJlzIHBlcmZvcm1hbmNlLkluc3BlY3RvcnMgbWFrZSBrZXkganVkZ2VtZW50cyBvbiB0aGUgZm9sbG93aW5nIGFyZWFzOlxcblxcbiogb3ZlcmFsbCBlZmZlY3RpdmVuZXNzXFxuKiBlZmZlY3RpdmVuZXNzIG9mIGxlYWRlcnNoaXAgYW5kIG1hbmFnZW1lbnRcXG4qIHF1YWxpdHkgb2YgdGVhY2hpbmcsIGxlYXJuaW5nIGFuZCBhc3Nlc3NtZW50XFxuKiBwZXJzb25hbCBkZXZlbG9wbWVudCwgYmVoYXZpb3VyIGFuZCB3ZWxmYXJlXFxuKiBvdXRjb21lcyBmb3IgcHVwaWxzXFxuXFxuSnVkZ2VtZW50cyBhcmUgbWFkZSB1c2luZyBhIGZvdXItcG9pbnQgc2NhbGU6XFxuXFxuKiBncmFkZSAxIC0gT3V0c3RhbmRpbmdcXG4qIGdyYWRlIDIgLSBHb29kXFxuKiBncmFkZSAzIC0gUmVxdWlyZXMgSW1wcm92ZW1lbnRcXG4qIGdyYWRlIDQg4oCTIEluYWRlcXVhdGVcXG5cXG5JbiBqdWRnaW5nIG92ZXJhbGwgZWZmZWN0aXZlbmVzcywgaW5zcGVjdG9ycyB3aWxsIHRha2UgYWNjb3VudCBvZiB0aGUgZm91ciBrZXkganVkZ2VtZW50cy4gSW5zcGVjdG9ycyBzaG91bGQgZmlyc3QgbWFrZSB0aGUga2V5IGp1ZGdlbWVudHMgb246XFxuXFxuKiB0aGUgcXVhbGl0eSBvZiB0ZWFjaGluZywgbGVhcm5pbmcgYW5kIGFzc2Vzc21lbnRcXG4qIHBlcnNvbmFsIGRldmVsb3BtZW50LCBiZWhhdmlvdXIgYW5kIHdlbGZhcmVcXG4qIG91dGNvbWVzIGZvciBwdXBpbHNcXG5cXG5UaGUgTG9jYWwgQXV0aG9yaXR5IGlzIGNvbW1pdHRlZCB0byBlbnN1cmluZyB0aGF0IGFsbCBwdXBpbHMgaW4gdGhlIGNvdW50eSBhdHRlbmQgYSBzY2hvb2wganVkZ2VkIHRvIGJlIGF0IGxlYXN0IGdvb2Qgb3Igb3V0c3RhbmRpbmcuIFRoZSBEaXJlY3RvcmF0ZSBvZiBFZHVjYXRpb24gYW5kIFNraWxscyB3b3JrcyBpbiBwYXJ0bmVyc2hpcCB3aXRoIGFsbCBzY2hvb2xzIGFuZCBzdGFrZWhvbGRlcnMgdG8gZW5zdXJlIHRoaXMgaXMgYWNoaWV2ZWQuIEl0IGNvbnRpbnVlcyB0byB0YXJnZXQgdW5kZXIgcGVyZm9ybWluZyBzY2hvb2xzIGJ5IHByb3ZpZGluZyBjaGFsbGVuZ2UgYW5kIHN1cHBvcnQgdG8gc2VjdXJlIHJhcGlkIGFuZCBzdXN0YWluYWJsZSBpbXByb3ZlbWVudHMgYW5kIHJhaXNlIHN0YW5kYXJkcy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIExvY2FsIEF1dGhvcml0eSBpcyBjb21taXR0ZWQgdG8gZW5zdXJpbmcgdGhhdCBhbGwgcHVwaWxzIGluIHRoZSBjb3VudHkgYXR0ZW5kIGEgZ29vZCBvciBvdXRzdGFuZGluZyBzY2hvb2wgYW5kIHRoZSBFZHVjYXRpb24gYW5kIFNraWxscyBzZXJ2aWNlIGlzIHdvcmtpbmcgd2l0aCBzY2hvb2xzIGFuZCBwYXJ0bmVycyB0b3dhcmRzIHRoaXMgb3V0Y29tZS4gV2hlcmUgaXQgaXMgY29uc2lkZXJlZCB0aGF0IGEgc2Nob29sIGlzIHVuZGVycGVyZm9ybWluZywgb3IgYXQgcmlzayBvZiB1bmRlcnBlcmZvcm1pbmcsIGl0IGNvbnRpbnVlcyB0byB0YXJnZXQgdGhlc2Ugc2Nob29scywgYW5kIHdpbGwgd29yayBhbG9uZ3NpZGUgdGhlIHNjaG9vbCB0byBlaXRoZXIgaW1wcm92ZSB0aGVpciByYXRpbmcgYXQgdGhlIG5leHQgaW5zcGVjdGlvbiwgb3IgdG8gaGVscCB0aGVtIHRvIGVuc3VyZSB0aGF0IHRoZXkgcmVtYWluIGdvb2QuIFRoZSBFZHVjYXRpb24gYW5kIFNraWxscyBzZXJ2aWNlIGhhcyBhIHBvc2l0aXZlIHRyYWNrIHJlY29yZCBvZiBzdXBwb3J0aW5nIHRoZXNlIHNjaG9vbHMuXFxuXFxuU2Nob29sIHBlcmZvcm1hbmNlIGlzIHRyYWNrZWQgYnkgbWVhc3VyaW5nIHRoZSBwcm9wb3J0aW9uIG9mIHB1cGlscyB3aG8gYXR0ZW5kIGdvb2Qgb3Igb3V0c3RhbmRpbmcgc2Nob29scyBhdCB0aGUgc2Nob29sc+KAmSBsYXN0IGluc3BlY3Rpb24uXFxuXFxuQWxsIHNjaG9vbHMgYXJlIGluc3BlY3RlZCBhcyBwYXJ0IG9mIGEgY3ljbGUgb2YgaW5zcGVjdGlvbiB3aXRoIGluYWRlcXVhdGUgYW5kIFJJIChSZXF1aXJlcyBJbXByb3ZlbWVudCkgc2Nob29scyBiZWluZyBpbnNwZWN0ZWQgd2l0aGluIHR3byB5ZWFycyBhbmQgZ29vZCBzY2hvb2xzIGV2ZXJ5IHRocmVlIHllYXJzLiBPdXRzdGFuZGluZyBzY2hvb2xzIGFyZSBub3Qgcm91dGluZWx5IGluc3BlY3RlZC5cXG5cXG4gIFxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlBlcmZvcm1hbmNlIG9mIFdlc3QgU3Vzc2V4IFNjaG9vbHMgLSBEZWNlbWJlciAyMDE3KipcXG5cXG5UaGUgdG90YWwgZm9yIHB1cGlscyBhdHRlbmRpbmcgV2VzdCBTdXNzZXggc2Nob29scyB0aGF0IGFyZSBqdWRnZWQgZ29vZCBvciBvdXRzdGFuZGluZyBoYXMgaW5jcmVhc2VkIHRvIGEgMTYtbW9udGggaGlnaCBvZiA4NC4yJS4gVGhlIGluY3JlYXNlIGZyb20gU2VwdGVtYmVyIDIwMTYgdG8gRGVjZW1iZXIgMjAxNyBpcyAzLjIlLlxcblxcbkZvciBEZWNlbWJlciwgdGhlIHBlcmNlbnRhZ2UgZm9yIGVhY2ggc2Nob29sIHBoYXNlIGlzIGFzIGZvbGxvd3M6XFxuXFxuKiDCtyBQcmltYXJ5IFNjaG9vbCBwdXBpbHMgPSA4MyVcXG4qIMK3IFNlY29uZGFyeSBTY2hvb2wgcHVwaWxzID0gODUlXFxuKiDCtyBTcGVjaWFsIFNjaG9vbCBwdXBpbHMgPSA5NiVcXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipQZXJmb3JtYW5jZSBvZiBXZXN0IFN1c3NleCBTY2hvb2xzIC0gTm92ZW1iZXIgMjAxNyoqXFxuXFxuVGhlIHRvdGFsIGZvciBwdXBpbHMgYXR0ZW5kaW5nIFdlc3QgU3Vzc2V4IHNjaG9vbHMgdGhhdCBhcmUganVkZ2VkIGdvb2Qgb3Igb3V0c3RhbmRpbmcgaGFzIHJlbWFpbmVkIHN0ZWFkeSB0aGlzIG1vbnRoIGF0IGFyb3VuZCA4NCUuIEZvciBOb3ZlbWJlciwgdGhlIHBlcmNlbnRhZ2UgZm9yIGVhY2ggc2Nob29sIHBoYXNlIGlzIGFzIGZvbGxvd3M6XFxuXFxuKiDCtyBQcmltYXJ5IFNjaG9vbCBwdXBpbHMgPSA4MiVcXG4qIMK3IFNlY29uZGFyeSBTY2hvb2wgcHVwaWxzID0gODUlXFxuKiDCtyBTcGVjaWFsIFNjaG9vbCBwdXBpbHMgPSAxMDAlXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUGVyZm9ybWFuY2Ugb2YgV2VzdCBTdXNzZXggU2Nob29scyAtIE9jdG9iZXIgMjAxNyoqXFxuXFxuUGVyZm9ybWFuY2UgaXMgbWVhc3VyZWQgbW9udGhseSBiYXNlZCBvbiB0aGUgcHVibGlzaGVkIG91dGNvbWVzIG9mIE9mc3RlZCBpbnNwZWN0aW9ucyBvZiBXZXN0IFN1c3NleCBzY2hvb2xzIGluY2x1ZGluZyBhY2FkZW1pZXMgYW5kIGZyZWUgc2Nob29scy5cXG5cXG5PdXIgYW1iaXRpb24gaXMgdG8gYmUgaW4gdGhlIHRvcCAyNSUgb2YgY291bnRpZXMgbmF0aW9uYWxseS5cXG5cXG5TaW5jZSBBcHJpbCAyMDE1IHRoZSBwZXJjZW50YWdlIG9mIHNjaG9vbHMganVkZ2VkIHRvIGJlIGdvb2Qgb3Igb3V0c3RhbmRpbmcgaGFzIGdlbmVyYWxseSBpbXByb3ZlZCBtb250aC1vbi1tb250aCBmcm9tIDc1JSB0byA4NCUgaW4gT2N0b2JlciAyMDE3LlxcblxcblRoZSBXZXN0IFN1c3NleCBTdHJhdGVneSBmb3IgU2Nob29sIEltcHJvdmVtZW50LCBpbnRyb2R1Y2VkIGluIEFwcmlsIDIwMTYsIGhhcyBjb250cmlidXRlZCB0byBpbmNyZWFzaW5nIHRoZSBwcm9wb3J0aW9uIG9mIHB1cGlscyB0YXVnaHQgaW4gV2VzdCBTdXNzZXggc2Nob29scyB0aGF0IGFyZSBqdWRnZWQgYXMgZ29vZCBvciBvdXRzdGFuZGluZy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQzdDMzM1RDktMEREOC00MTAzLTk5RUEtRDQzMUM4MzFDMzBFXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gU2VwdGVtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuQmV0d2VlbiBKdW5lIGFuZCBTZXB0ZW1iZXIgMjAxNyB0aGUgcHJvcG9ydGlvbiBvZiBwdXBpbHMgaW4gZ29vZCBhbmQgb3V0c3RhbmRpbmcgc2Nob29scyBpbXByb3ZlZCBieSAxJS4gVGhlIGluY3JlYXNlIGlzIGxhcmdlbHkgdGhlIHJlc3VsdCBvZiBpbnNwZWN0aW9uIHRoYXQgdG9vayBwbGFjZSBpbiBKdWx5IGFzIG5vIGluc3BlY3Rpb25zIHRvb2sgcGxhY2UgZHVyaW5nIEF1Z3VzdCBhbmQgdGhlIHJlcG9ydHMgb24gdGhvc2UgdGhhdCBoYXZlIHRha2VuIHBsYWNlIGluIFNlcHRlbWJlciBoYXZlIHlldCB0byBiZSBwdWJsaXNoZWQuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcbkNoYW5nZXMgaW4gdGhlIHByb3BvcnRpb24gb2YgcHVwaWxzIGF0dGVuZGluZyBnb29kIGFuZCBvdXRzdGFuZGluZyBzY2hvb2xzIGFyZSBkZXBlbmRlbnQgdGhlIG51bWJlciBvZiBwdXBpbHMgaW4gc2Nob29scyB0aGF0IGFyZSBpbnNwZWN0ZWQgYW5kIG1vdmUgaW50byBnb29kIG9yIG91dHN0YW5kaW5nIGNhdGVnb3JpZXMgZnJvbSBSZXF1aXJlcyBJbXByb3ZlbWVudCBvciBJbmFkZXF1YXRlLiBJbiBKdW5lIDIwMTcgdGhlIGluY3JlYXNlIGluIHRoZSBwcm9wb3J0aW9uIG9mIHB1cGlscyBhdHRlbmRpbmcgZ29vZCBvciBiZXR0ZXIgc2Nob29scyB3YXMgMSUuIEluIFdlc3QgU3Vzc2V4IG91ciB0b3RhbCBwdXBpbCBwb3B1bGF0aW9uIGlzIGNpcmNhIDExMiwwMDAuIFRoaXMgbWVhbnMgdGhhdCBzY2hvb2xzIGluc3BlY3RlZCBieSBPZnN0ZWQsIHdpdGggc21hbGwgbnVtYmVycyBvZiBwdXBpbHMsIHdobyBtb3ZlIGludG8gdGhlIGdvb2Qgb3Igb3V0c3RhbmRpbmcgY2F0ZWdvcmllcyBtYWtlIGxpdHRsZSBkaWZmZXJlbmNlIHRvIHRoZSBvdmVyYWxsIHByb3BvcnRpb24gb2YgcHVwaWxzIHRhdWdodCBpbiBnb29kIG9yIGJldHRlciBzY2hvb2xzLiBBcHByb3guIDEsMTIwIHB1cGlscyBhcmUgcmVxdWlyZWQgdG8gYmUgdGF1Z2h0IGluIHNjaG9vbHMgdGhhdCBSZXF1aXJlcyBJbXByb3ZlbWVudCBvciBJbmFkZXF1YXRlIHRvIGJlIGluc3BlY3RlZCBhcyBnb29kIG9yIG91dHN0YW5kaW5nIHRvIG1ha2UgYSAxJSBkaWZmZXJlbmNlIHRoaXMgcmVwcmVzZW50cyB0aGUgcHVwaWxzIHBvcHVsYXRpb24gaW4gYXBwcm94LiAxIG1lZGl1bSBzaXplZCBzZWNvbmRhcnkgc2Nob29sIGFuZCAyIHByaW1hcnkgc2Nob29scy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDQgLSBNYXJjaCAyMDE3KipcXG5cXG5QZXJmb3JtYW5jZSBpcyBtZWFzdXJlZCBtb250aGx5IGJhc2VkIG9uIHRoZSBwdWJsaXNoZWQgb3V0Y29tZXMgb2YgT2ZzdGVkIGluc3BlY3Rpb25zIG9mIFdlc3QgU3Vzc2V4IHNjaG9vbHMgaW5jbHVkaW5nIGFjYWRlbWllcyBhbmQgZnJlZSBzY2hvb2xzLiBUaGUgZ29hbCBpcyBtZWFzdXJlZCBieSB0cmFja2luZyB0aGUgcGVyY2VudGFnZSBvZiBwdXBpbHMgYXR0ZW5kaW5nIGdvb2QgYW5kIG91dHN0YW5kaW5nIHNjaG9vbHMuIE91ciBhbWJpdGlvbiBpcyB0byBiZSBvbmUgb2YgdGhlIHRvcCAyNSUgb2YgaGlnaGVzdCBwZXJmb3JtaW5nIGNvdW50aWVzLlxcblxcblNpbmNlIE1hcmNoIDIwMTYgdGhlIHBlcmNlbnRhZ2UgaGFzIGltcHJvdmVkIGZyb20gNzklIGFuZCBmb3IgYSBwZXJpb2QgZHVyaW5nIHRoZSB5ZWFyIHdhcyBhcyBoaWdoIGFzIDgzJS4gVGhlIHZhcmlhdGlvbiBmcm9tIG1vbnRoIHRvIG1vbnRoIGlzIHRvIGFuIGV4dGVudCBkZXBlbmRlbnQgb24gd2hpY2ggc2Nob29scyBhcmUgaW5zcGVjdGVkIGFzIGEgbGFyZ2Ugc2Vjb25kYXJ5IHNjaG9vbCBoYXMgYSBiaWdnZXIgaW1wYWN0IG9uIHRoZSBvdmVyYWxsIGZpZ3VyZSB0aGFuIGEgc21hbGwgcHJpbWFyeSBzY2hvb2wuIFRoZXJlIGNhbiBhbHNvIGJlIGNvbnNpZGVyYWJsZSB2YXJpYXRpb25zIGluIHRoZSBsZW5ndGggb2YgdGltZSB0YWtlbiBmb3IgcmVwb3J0cyB0byBiZSBwdWJsaXNoZWQgYWZ0ZXIgYW4gaW5zcGVjdGlvbi5cXG5cXG5UaGUgV2VzdCBTdXNzZXggU3RyYXRlZ3kgZm9yIFNjaG9vbCBJbXByb3ZlbWVudCwgaW50cm9kdWNlZCBkdXJpbmcgMjAxNiwgYW5kIGluY2x1ZGluZyBtb3JlIHJlZ3VsYXIgdmlzaXRzIGJ5IGFkdmlzZXJzIHRvIGFsbCBzY2hvb2xzLCBoYXMgY29udHJpYnV0ZWQgdG8gaW5jcmVhc2luZyB0aGUgbnVtYmVyIGFuZCBwcm9wb3J0aW9uIG9mIFdlc3QgU3Vzc2V4IHNjaG9vbHMgdGhhdCBhcmUgZ29vZCBvciBvdXRzdGFuZGluZy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipSYW5raW5ncyBhcyBvZiBEZWNlbWJlciAyMDE2OioqXFxuXFxuRnJvbSB0aGUgbGF0ZXN0IEFubnVhbCByZXBvcnQgKGxpbmsgYmVsb3cpLCBwdWJsaXNoZWQgRGVjZW1iZXIgMjAxNjpcXG5cXG4qIE5hdGlvbmFsbHksIFdlc3QgU3Vzc2V4IGlzIHJhbmtlZCAxNDFzdCBvZiAxNTAgZm9yIFByaW1hcnkgU2Nob29scyBhbmQgNjl0aCBvZiAxNTAgZm9yIFNlY29uZGFyeSBTY2hvb2xzXFxuKiBXaXRoaW4gdGhlIFNvdXRoIEVhc3QgUmVnaW9uLCBXZXN0IFN1c3NleCBpcyByYW5rZWQgMTd0aCBvZiAxOSBmb3IgUHJpbWFyeSBTY2hvb2xzIGFuZCA5dGggb2YgMTkgZm9yIFNlY29uZGFyeSBTY2hvb2xzLiAoQWxzbywgMzR0aCBvZiAzNCBTaGlyZSBQbHVzIENvdW50aWVzIGFuZCBTZWNvbmRhcnkgU2Nob29scyBhcmUgcmFua2VkIDEzdGggb2YgMzQpXFxuXFxuRnVydGhlciByZWdpb25hbCBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgYXQgdGhlIOKAnEFubnVhbCBSZXBvcnQgMjAxNS8xNiByZWdpb25hbCBpbmZvcm1hdGlvbiBwYWNrOiBTb3V0aCBFYXN04oCdc2VjdGlvbiBvZiB0aGUgZm9sbG93aW5nIGxpbms6IFtodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9wdWJsaWNhdGlvbnMvb2ZzdGVkLWFubnVhbC1yZXBvcnQtMjAxNTE2LWVkdWNhdGlvbi1lYXJseS15ZWFycy1hbmQtc2tpbGxzXVswXVxcblxcbioqUmFua2luZ3MgYXMgb2YgRGVjZW1iZXIgMjAxNzoqKlxcblxcblRoZSBkYXRlIG9mIG5leHQgdXBkYXRlOiBGZWJydWFyeSAyMDE4IChyZWxlYXNlZCAtIERlY2VtYmVyIDIwMTcpXFxuXFxuWzBdOiBodHRwczovL3d3dy5nb3YudWsvZ292ZXJubWVudC9wdWJsaWNhdGlvbnMvb2ZzdGVkLWFubnVhbC1yZXBvcnQtMjAxNTE2LWVkdWNhdGlvbi1lYXJseS15ZWFycy1hbmQtc2tpbGxzXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJQdXBpbHMgaW4gV2VzdCBTdXNzZXggc2Nob29scyBqdWRnZWQgZ29vZCBvciBvdXRzdGFuZGluZyAtIHRvIGJlIGluIHRoZSB0b3AgcXVhcnRpbGUgb2YgYWxsIExvY2FsIEF1dGhvcml0aWVzXCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6dHJ1ZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiVGhpcyBnb2FsIGlzIG1lYXN1cmVkIGJ5IHRyYWNraW5nIHRoZSBwZXJjZW50YWdlIG9mIHB1cGlscyBpbiBXZXN0IFN1c3NleCBhdHRlbmRpbmcgZ29vZCBvciBvdXRzdGFuZGluZyBzY2hvb2xzLiBcIixcInRpdGxlX2ltYWdlXCI6XCIvYXBpL2Fzc2V0cy83M0Y2QzYyNy05NUI4LTQ5QUEtOUI0Qi1DRjNFQ0Q5QkNDRDJcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxNS0wNC0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiIlIiwidGFyZ2V0Ijo4NiwidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6OTEsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoieHlqdy1xeTQ5In0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6Ij4ifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjozLFwieWVhclwiOjIwMTV9LFwiZW5kXCI6e1wiZGF0ZVwiOlwiZW5kXCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxOH0sXCJhY3Rpb25fdHlwZVwiOlwiaW5jcmVhc2VcIixcIm1haW50YWluX3R5cGVcIjpcIj5cIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH19LFwic3RhcnRcIjpcIjIwMTQtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTQtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJ0aGUgcHJvcG9ydGlvbiBvZiBwdXBpbHMgd2hvIGF0dGVuZCBzY2hvb2xzIGluIFdlc3QgU3Vzc2V4IHRoYXQgYXJlIGp1ZGdlZCBnb29kIG9yIG91dHN0YW5kaW5nIGJ5IE9mc3RlZCBcIixcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOnRydWUsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwid2l0aGluX3RvbGVyYW5jZVwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDo1MTo0Mi4zMDZaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMTA6NTE6NDIuMzA2WiIsInRhcmdldF90b2xlcmFuY2UiOjcuNywiaWQiOiJ1NmV1LTJ3d2gifSwicmVsYXRlZF9tZWFzdXJlcyI6W3sibWV0YWRhdGEiOiIiLCJpZCI6InQ5MmctYnRzZyJ9LHsibWV0YWRhdGEiOiIiLCJpZCI6Ink0NGotejY4NSJ9XSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QxMDo1MTo1MS4yNThaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMTA6NTE6NDIuMzgwWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDEwOjUxOjUxLjI1OFoiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6Ijg2a2otNG5hdyIsIm5hbWUiOiJFY29ub21pYyBncm93dGgiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcImljb25cIjpcInVwd2FyZHNsaW5lY2hhcnRcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkVjb25vbWljIEdyb3d0aDogLSBHcm9zcyBWYWx1ZSBBZGRlZCBwZXIgSGVhZCoqXFxuXFxuIFxcblxcbkdyb3NzIFZhbHVlIEFkZGVkIChHVkEpIGluZGljYXRlcyB0aGUgbGV2ZWwgb2YgZWNvbm9taWMgYWN0aXZpdHkgd2l0aGluIGFuIGFyZWEgYnkgbWVhc3VyaW5nIGl0cyBwcm9kdWN0aW9uIG9mIGdvb2RzIGFuZCBzZXJ2aWNlcy4gSXQgaXMgYSBtZWFzdXJlIHRoYXQgYWxsb3dzIGNvbXBhcmlzb24gb2YgYXJlYXMsIGFuZCBoaWdobGlnaHRzIHZhcmlhdGlvbnMgaW4gcGVyZm9ybWFuY2Ugd2l0aCBhIHJlZ2lvbiwgYW5kIHRyZW5kcyBvdmVyIHRpbWUuIFRoZSBHVkEgZmlndXJlICh3b3JrcGxhY2UgYmFzZWQpIGRpdmlkZWQgYnkgdGhlIHRvdGFsIHJlc2lkZW50aWFsIHBvcHVsYXRpb24gKHJlc2lkZW50IGJhc2VkKSBnaXZlcyBhbiBlc3RpbWF0ZSBmb3IgR1ZBIHBlciBIZWFkLCB3aGlsc3Qgbm90IGEgbWVhc3VyZSBvZiBwcm9kdWN0aXZpdHkgaXQgaXMsIG5ldmVydGhlbGVzcyBhIHdpZGVseSB1c2VkIG1lYXN1cmUgdG8gaW5kaWNhdGUgdGhlIGVjb25vbWljIHdlbGwtYmVpbmcgb2YgYW4gYXJlYSBhbmQgYWdhaW4sIHByb3ZpZGVzIGNvbXBhcmlzb24vYmVuY2htYXJraW5nIHdpdGggb3RoZXIgYXJlYXMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIk9OUyByZWxlYXNlIGFubnVhbCBzdWItcmVnaW9uYWwgZXN0aW1hdGVzIG9mIEdWQSBhbmQgR1ZBIHBlciBoZWFkLiBUaGUgbW9zdCByZWNlbnQgdXBkYXRlIHdhcyByZWxlYXNlZCBpbiBEZWNlbWJlciAyMDE3IGFuZCBjb3ZlcnMgdGhlIHBlcmlvZCB1cCB0byAyMDE2LiBBcyBpbiB0aGUgcHJldmlvdXMgeWVhciB0aGUgZGF0YSBpcyByZWxlYXNlZCBieSB0aGUgMjAxNSBOVVRTMyBhcmVhcyDigJMgd2hpY2ggc3BsaXQgV2VzdCBTdXNzZXggaW50byB0d28gYXJlYXM6IFdlc3QgU3Vzc2V4IFNvdXRoIFdlc3QgKFdTU1cpIGluY2x1ZGluZyBBZHVyLCBBcnVuLCBDaGljaGVzdGVyIGFuZCBXb3J0aGluZywgYW5kIFdlc3QgU3Vzc2V4IE5vcnRoIEVhc3QgKFdTTkUpIGluY2x1ZGluZyBDcmF3bGV5LCBIb3JzaGFtIGFuZCBNaWQgU3Vzc2V4LiBOT01JUyBoYWQgcHJldmlvdXNseSByZXdvcmtlZCB0aGUgTlVUUzMgZGF0YSB0byBwcm92aWRlIGVzdGltYXRlcyBmb3IgY291bnR5IGxldmVsIGdlb2dyYXBoaWVzLCB3aGlsc3QgdGhlIG5ldyBkYXRhIGhhcyBiZWVuIHJlbGVhc2VkIE5PTUlTIGhhdmUgbm90IHlldCB1bmRlcnRha2VuIHRoaXMgZXhlcmNpc2UsIHRob3VnaCB3ZSBjYW4gbWFrZSBzb21lIGVzdGltYXRlIG9mIHRoZSBXZXN0IFN1c3NleCBmaWd1cmUgaW4gdGhlIG1lYW50aW1lLlxcblxcbiBcXG5cXG5OVVRTMyA6IFtodHRwOi8vTm9tZW5jbGF0dXJlXVswXSBvZiBUZXJyaXRvcmlhbCBVbml0cyBmb3IgU3RhdGlzdGljcyAtIEdlb2dyYXBoaWVzIHVzZWQgYWNyb3NzIEVVIGZvciBzdGF0aXN0aWNhbCBwdXJwb3Nlc1xcblxcblswXTogaHR0cDovL05vbWVuY2xhdHVyZVwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9DNzM3REUzOS0yNTY5LTQ0ODQtOTY1Ni1GNkZBNjlBQzE1QkJcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIGxldmVscyBvZiBHVkEgcGVyIGhlYWQgaW4gV1NTVyBjb250aW51ZSB0byBiZSBzaWduaWZpY2FudGx5IGxvd2VyIHRoYW4gdGhlIE5vcnRoIEVhc3Qgb2YgdGhlIGNvdW50eSB3aGVyZSBHVkEgcGVyIGhlYWQgaXMgaGlnaGVyIHRoYW4gdGhlIHJlZ2lvbmFsIGFuZCBuYXRpb25hbCByYXRlIOKAk2R1ZSB0byB0aGUgcHJlc2VuY2Ugb2YgR2F0d2ljayBBaXJwb3J0IGJlaW5nIHRoZSBrZXkgZWNvbm9taWMgZHJpdmVyIGZvciB0aGF0IHN1YiByZWdpb24uIFRoZSBlc3RpbWF0ZSBmb3IgV2VzdCBTdXNzZXggc3VnZ2VzdCB0aGF0IGl0IGlzIGp1c3QgdW5kZXIgOSUgbG93ZXIgdGhlIGZpZ3VyZSBmb3IgdGhlIFNvdXRoIEVhc3QgcmVnaW9uIOKAkyBhcyBsaWdodCByZWR1Y3Rpb24gaW4gdGhlIGdhcCBiZXR3ZWVuIHRoZSByZWdpb25hbCBhbmQgY291bnR5IGZpZ3VyZSBjb21wYXJlZCB3aXRoIHRoZSBwcmV2aW91cyB5ZWFyLlxcblxcbk92ZXIgdGhlIGxhc3QgeWVhciAoMjAxNS0yMDE2KSBHVkEgcGVyIGhlYWQgZ3JldyBpbiBXU05FIGJ5IDEuNjQlIG5lYXJseSA3IHRpbWVzIG1vcmUgdGhhbiB0aGF0IHNlZW4gaW4gV1NTVyB3aGljaCBncmV3IGJ5IDAuMjQlLiBSZWdpb25hbCBncm93dGggd2FzIDEuNjYlIGFuZCB0aGF0IGZvciBFbmdsYW5kIGF0IDIuNyUuIExvb2tpbmcgYXQgdGhlIGFyZWFzIHdpdGhpbiB0aGUgU291dGggRWFzdCByZWdpb24gTWlsdG9uIEtleW5lcyBzYXcgdGhlIGhpZ2hlc3QgZ3Jvd3RoIG92ZXIgdGhlIHllYXIgYXQgNi44OSUgYW5kIGluIHNvbWUgYXJlYSBHVkEgcGVyIGhlYWQgZmVsbCDigJMgdGhlIGdyZWF0ZXN0IGZhbGwgYmVpbmcgc2VlbiBpbiBOb3J0aCBIYW50cyBhdCAtMS4xMSUuIE9mIGFsbCB0aGVzZSAyMSBhcmVhcyBXU05FIHdhcyByYW5rZWQgOXRoIGhpZ2hlc3QsIGFuZCBXU1NXIGF0IDE2dGhcXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQTQxREMxOEUtNjEzMy00Q0Y1LTk3QzktRjE5MDZGRDdGNUE4XCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiRXN0aW1hdGVzIGZvciBXZXN0IFN1c3NleCBzdWdnZXN0IHRoYXQgaW4gMTk5NyAodGhlIHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBjdXJyZW50IHRpbWUgc2VyaWVzKSwgR1ZBIHBlciBoZWFkIHdhcyDCozE0LDAwNiBmb3IgV2VzdCBTdXNzZXg7IHNsaWdodGx5IGhpZ2hlciB0aGFuIGZvciBFbmdsYW5kIGF0IMKjMTMsNjc2LCBhbmQgNSBsb3dlciB0aGFuIHRoZSBTb3V0aCBFYXN0IGF0IMKjMTQsNjk2LiBPdmVyIHRpbWUgaG93ZXZlciwgR1ZBIGZpZ3VyZXMgaGF2ZSByaXNlbiBpbiBFbmdsYW5kIGFuZCB0aGUgU291dGggRWFzdCBhdCBhIGhpZ2hlciByYXRlIHRoYW4gaW4gV2VzdCBTdXNzZXgsIHRoZSBnYXAgaW4gR1ZBIHBlciBoZWFkIGJldHdlZW4gV2VzdCBTdXNzZXggYW5kIHRoZSBTb3V0aCBFYXN0IGhhcyBub3cgcmlzZW4gdG8gOS4xJSBpbiAyMDE0Llxcblxcbkxvb2tpbmcgYXQgdGhlIGNvdW50eSBlc3RpbWF0ZXMgZnJvbSBOb21pcyBpdCBpcyBldmlkZW50IHRoYXQgV2VzdCBTdXNzZXggZG9lcyBub3QgY29tcGFyZSBmYXZvdXJhYmx5IHdpdGggb3RoZXIgY291bnR5IGFyZWFzIGluIHRoZSBTb3V0aCBFYXN0IHJlZ2lvbiwgaXQgbGllcyBpbiB0aGUgYm90dG9tIDUwJSBvZiBhdXRob3JpdGllcyB3aGVyZSB0aGUgcmFuZ2UgaW4gR0RQIHBlciBoZWFkIGlzIGZyb20gwqMxNywzMzkgaW4gTWVkd2F5IHRvIHRoZSBoaWdoZXN0IGluIFdlc3QgQmVya3NoaXJlIG9mIMKjNDUsNzM4IOKAkyB3aGljaCBpcyBtb3JlIHRoYW4gZG91YmxlIHRoZSBsZXZlbCBvZiB0aGF0IHNlZW4gaW4gV2VzdCBTdXNzZXggU291dGggV2VzdCBhcmVhLlxcblxcbldlc3QgU3Vzc2V4IGRvZXMgY29tcGFyZSBiZXR0ZXIgd2l0aCB0aG9zZSBHVkEgcGVyIEhlYWQgbGV2ZWxzIG9mIG91ciBTdGF0aXN0aWNhbCBOZWlnaGJvdXJzIOKAk2FzIHNob3duIGJlbG93IGFuZCBsaWVzIGluIHRoZSBoaWdoZXN0IHF1YXJ0aWxlLiBUaGUgYW1iaXRpb24gaXMgdG8gYnJpbmcgdGhlIEdWQSBwZXIgaGVhZCBmaWd1cmUgZm9yIFdlc3QgU3Vzc2V4IHRvIHRoZSByZWdpb25hbCAoU291dGggRWFzdCkgYXZlcmFnZS5cXG5cXG5cIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy82NTFDMTk3OC1BMkMwLTRDOTUtQkU1Qi03Mzc3MEZDRTg2REJcIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgbGF0ZXN0IGRhdGEgZm9yIEdyb3NzIFZhbHVlIEFkZGVkIChHVkEpIHdhcyByZWxlYXNlZCBpbiBEZWNlbWJlciAyMDE2IGFuZCBjb3ZlcnMgdGhlIHBlcmlvZCB1cCB0byAyMDE1LiBUaGUgbmV4dCByZWxlYXNlIG9mIHRoaXMgZGF0YSBmcm9tIE9OUyBpcyBleHBlY3RlZCBpbiBpcyBhIHJlY29nbmlzZWQgbWVhc3VyZSBvZiBlY29ub21pYyBhY3Rpdml0eSBicm9hZGx5IGRlZmluZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdmFsdWUgb2YgdGhlIGdvb2RzIGFuZCBzZXJ2aWNlcyBwcm9kdWNlZCBhbmQgdGhlIGNvc3Qgb2YgcmF3IG1hdGVyaWFscyBhbmQgb3RoZXIgaW5wdXRzIHVzZWQgaW4gcHJvZHVjdGlvbi4gVGhlIGRhdGEgaXMgcmVsZWFzZWQgYW5udWFsbHkgZnJvbSBPTlMsIGFuZCBpbmNsdWRlcyB0aGUgc3ViLXJlZ2lvbmFsIGVzdGltYXRlcyBmb3IgR1ZBIGZvciB0aGUgdHdvIFdlc3QgU3Vzc2V4IFN1YiBBcmVhczpcXG5cXG4xLiBXZXN0IFN1c3NleOKAk1NvdXRoIFdlc3QgKFdTU1cpIOKAkyBjb21wcmlzZXMgQ2hpY2hlc3RlciwgQXJ1biwgQWR1ciBhbmQgV29ydGhpbmdcXG4xLiBXZXN0IFN1c3NleOKAk05vcnRoIEVhc3QgKFdTTkUpIOKAkyBjb21wcmlzZXMgQ3Jhd2xleSwgSG9yc2hhbSBhbmQgTWlkIFN1c3NleFxcblxcblRoZSBsYXRlc3QgZGF0YSxhbHJlYWR5IHJlcG9ydGVkLCB3YXMgcmVsZWFzZWQgaW4gRGVjZW1iZXIgMjAxNiwgYW5kIGNvdmVycyB0aGUgcGVyaW9kIHVwIHRvMjAxNSwgdGhlIGZpZ3VyZXMgYW5kIHRyZW5kcyBmb3IgdGhlIHR3byBXZXN0IFN1c3NleCBhcmVhcyB3ZXJlIHJlcG9ydGVkIGF0IHRoZWVuZCBvZiB0aGUgcHJldmlvdXMgcXVhcnRlciBhbmQgdGhlcmUgaXMgbm8gdXBkYXRlIGluIHRlcm1zIG9mIHRoZSBsb2NhbHBpY3R1cmUuIFRoZSBuZXh0IHJlbGVhc2Ugb2YgZGF0YSBpcyBleHBlY3RlZCBpbiBEZWNlbWJlciAyMDE3LiBIb3dldmVyLCBpbiBNYXJjaCAyMDE3IHRhYmxlcyBzaG93aW5nIEdWQSBhbGxvY2F0ZWQgdG9sb2NhbCBhdXRob3JpdGllcyBpbiB0aGUgVUsgd2VyZSByZWxlYXNlZCwgdGhlIGRhdGEgd2FzIHByb2R1Y2VkIGluIHJlc3BvbnNlIHRvdXNlciBuZWVkIGJ1dCB3aGlsZSBub3QgTmF0aW9uYWwgU3RhdGlzdGljcywgbmV2ZXJ0aGVsZXNzIGdpdmUgc29tZSBpbmRpY2F0aW9uYXMgdG8gdGhlIHNjYWxlIG9mIEdWQSBhdCBsb2NhbCBhdXRob3JpdHkgbGV2ZWwsIGFuZCB0aGUgY29udHJpYnV0aW9uIHRoYXQgZWFjaG9mIHRoZSBicm9hZCBsZXZlbCBzZWN0b3JzIG1ha2UgdG8gdGhlIGxvY2FsIGVjb25vbXkuXFxuXFxuW2h0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZWNvbm9teS9ncm9zc3ZhbHVlYWRkZWRndmEvZGF0YXNldHMvcmVnaW9uYWxndmFpYnlsb2NhbGF1dGhvcml0eWludGhldWtdWzBdXFxuXFxuWzBdOiBodHRwczovL3d3dy5vbnMuZ292LnVrL2Vjb25vbXkvZ3Jvc3N2YWx1ZWFkZGVkZ3ZhL2RhdGFzZXRzL3JlZ2lvbmFsZ3ZhaWJ5bG9jYWxhdXRob3JpdHlpbnRoZXVrXCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMkYyNDk4MDEtNDVFQy00RkM3LUI4M0YtNzgwM0ZBQTRDNDlDXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQzRGMTk5NDctRDM2MS00RTEyLUFGRjQtQzgyOUNFRUVCMkQyXCJ9XV19LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZSBtYWluIHBvaW50cyBmcm9tIHRoZSAoT05TKSBzdW1tYXJ5IG9mIHRoZSAoR0IpIFNob3J0LXRlcm0gZWNvbm9taWMgaW5kaWNhdG9ycyBwdWJsaXNoZWQgaW4gZWFybHkgU2VwdGVtYmVyIDIwMTcgYXJlOlxcblxcbiogVG90YWwgcHJvZHVjdGlvbiBvdXRwdXQgc2F3IGEgc2xpZ2h0IGluY3JlYXNlIGluIHRoZSAzIG1vbnRocyB0byBKdWx5IDIwMTcgYW5kIGluY3JlYXNlZCBieSAwLjMlO1xcbiogTWFudWZhY3R1cmluZyByZW1haW5zIHJlbGF0aXZlbHkgc3ViZHVlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSB5ZWFyLCB0aG91Z2ggc29tZSBncm93dGggc2VlbiBmcm9tIEp1bHkgYXR0cmlidXRlZCB0byBzdHJvbmdlciBncm93dGggaW4gY2FyIHByb2R1Y3Rpb247XFxuKiBDb25zdHJ1Y3Rpb24gb3V0cHV0IGZlbGwgZm9yIHRoZSBmb3VydGggbW9udGggaW4gYSByb3csIHdpdGggcHJpdmF0ZSBob3VzaW5nIGJ1aWxkaW5nIGNvbnRyYWN0aW5nIGluIEp1bHkgMjAxNyBhZnRlciBzZWVpbmcgZ3Jvd3RoIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHllYXIuXFxuXFxuW2h0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZWNvbm9teS9lY29ub21pY291dHB1dGFuZHByb2R1Y3Rpdml0eS9vdXRwdXQvYXJ0aWNsZXMvc2hvcnR0ZXJtaW5kaWNhdG9yc2Vjb25vbWljY29tbWVudGFyeS9zZXB0MjAxN11bMF1cXG5cXG5bMF06IGh0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZWNvbm9teS9lY29ub21pY291dHB1dGFuZHByb2R1Y3Rpdml0eS9vdXRwdXQvYXJ0aWNsZXMvc2hvcnR0ZXJtaW5kaWNhdG9yc2Vjb25vbWljY29tbWVudGFyeS9zZXB0MjAxN1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgNCAtIE1hcmNoIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuR3Jvc3MgVmFsdWUgQWRkZWQgKEdWQSkgaXMgYSByZWNvZ25pc2VkIG1lYXN1cmUgb2YgZWNvbm9taWMgYWN0aXZpdHkgYnJvYWRseSBkZWZpbmVkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHZhbHVlIG9mIHRoZSBnb29kcyBhbmQgc2VydmljZXMgcHJvZHVjZWQgYW5kIHRoZSBjb3N0IG9mIHJhdyBtYXRlcmlhbHMgYW5kIG90aGVyIGlucHV0cyB1c2VkIGluIHByb2R1Y3Rpb24uIFRoZSBkYXRhIGlzIHJlbGVhc2VkIGFubnVhbGx5IGZyb20gT05TLCBhbmQgaW5jbHVkZXMgdGhlIHN1Yi1yZWdpb25hbCBlc3RpbWF0ZXMgZm9yIEdWQSBmb3IgdGhlIHR3byBXZXN0IFN1c3NleCBTdWIgQXJlYXM6XFxuXFxuMS4gV2VzdCBTdXNzZXgg4oCTU291dGggV2VzdCAoV1NTVykg4oCTIGNvbXByaXNlcyBDaGljaGVzdGVyLCBBcnVuLCBBZHVyIGFuZCBXb3J0aGluZ1xcbjEuIFdlc3QgU3Vzc2V4IOKAk05vcnRoIEVhc3QgKFdTTkUpIOKAkyBjb21wcmlzZXMgQ3Jhd2xleSwgSG9yc2hhbSBhbmQgTWlkIFN1c3NleFxcblxcblRoZSBsYXRlc3QgZGF0YSB3YXMgcmVsZWFzZWQgaW4gRGVjZW1iZXIgMjAxNiwgYW5kIGNvdmVycyB0aGUgcGVyaW9kIHVwIHRvIDIwMTUsIHRoZSBmaWd1cmVzIGFuZCB0cmVuZHMgZm9yIHRoZSB0d28gV2VzdCBTdXNzZXggYXJlYXMgd2VyZSByZXBvcnRlZCBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBxdWFydGVyIGFuZCB0aGVyZSBpcyBubyB1cGRhdGUgaW4gdGVybXMgb2YgdGhlIGxvY2FsIHBpY3R1cmUuIFRoZSBuZXh0IHJlbGVhc2Ugb2YgZGF0YSBpcyBleHBlY3RlZCBpbiBEZWNlbWJlciAyMDE3Llxcblxcbkhvd2V2ZXIsIGluIHRlcm1zIG9mIHRoZSBuYXRpb25hbCBwaWN0dXJlLCB0aGVyZSBpcyBzb21lIGNvbW1lbnRhcnkgZnJvbSB2YXJpb3VzIHNvdXJjZXMgaW5jbHVkaW5nIE9OUyBpdHNlbGYgYW5kIHRoZSBCYW5rIG9mIEVuZ2xhbmQuXFxuXFxuT05TIE1vbnRobHkgRWNvbm9taWMgY29tbWVudGFyeSAoTWFyY2ggMjAxNykgc3VnZ2VzdHMgdGhhdCB0aGUgVUsgZWNvbm9teSBncmV3IGJ5IDAuNyUgaW4gUXVhcnRlciA0IChPY3QgdG8gRGVjKSAyMDE2LCBhbmQgYnkgMS44JSBmb3IgdGhlIHdob2xlIG9mIDIwMTYuIFdob2xlIGVjb25vbXkgaW5kaWNhdG9ycyBvZiBlY29ub21pYyB3ZWxsLWJlaW5nIGFyZSByZXBvcnRlZCBhcyBiZWluZyBnZW5lcmFsbHkgcG9zaXRpdmUsd2l0aCBncm93dGggaW4gR0RQIHBlciBoZWFkLCBzcGVuZGluZyBwZXIgaGVhZCBhbmQgbmV0IG5hdGlvbmFsIGRpc3Bvc2FibGUgaW5jb21lLCB0aG91Z2ggaG91c2Vob2xkIGluY29tZSBzYXcgYSBkZWNsaW5lLiBUaGUgZ3Jvd3RoIGluIHByb2R1Y3Rpb24gYW5kIGNvbnN0cnVjdGlvbiBvdXRwdXQgc2VlbiB0b3dhcmRzIHRoZSBlbmQgb2YgMjAxNiBoYWQgZmxhdHRlbmVkIG91dCBpbiBKYW51YXJ5IDIwMTcgYW5kIHdoaWxzdCBzZXJ2aWNlIHNlY3RvcnMgZHJvcHBlZCBzbGlnaHRseSBpbiBKYW51YXJ5IHRoZSBsb25nIHRlcm0gcGljdHVyZSBpcyBzdGlsbCBvbmUgb2YgZXhwZWN0ZWQgZ3Jvd3RoLiBPdmVyYWxsLCBtb3N0IG9mIHRoZSBicm9hZGVyIG1lYXN1cmVzIG9mIHRoZSBVSyBlY29ub215IGFyZSBjb250aW51aW5nIHRoZSB0cmVuZHMgc2VlbiBkdXJpbmcgMjAxNi4gRm9yIGV4YW1wbGUsY29uc3VtZXIgc3BlbmRpbmcgcmVtYWlucyByZWxhdGl2ZWx5IHN0cm9uZywgc2VydmljZXMgb3V0cHV0IGlzIGluY3JlYXNpbmcsbWFudWZhY3R1cmluZyBvdXRwdXQgaXMgcmlzaW5nLCBwYXJ0aWN1bGFybHkgaW4gdGhlIHByb2R1Y3Rpb24gb2YgbW90b3IgdmVoaWNsZXMgYW5kIHVuZW1wbG95bWVudCBpcyBsb3cuIEhvdXNlaG9sZHMgYXJlIGhvd2V2ZXIgc2VlaW5nIHJpc2luZyBwcmljZXMgZm9yIGdvb2RzIGFuZCBzZXJ2aWNlcyBpbiBzb21lIGtleSBhcmVhcyBzdWNoIGFzIGZvb2QgYW5kIGZ1ZWwsIHdoaWNoIGlzIHB1dHRpbmcgZG93bndhcmQgcHJlc3N1cmUgb24gcmVhbCB3YWdlcyBhbmQgaW5jb21lcy5cXG5cXG7CoCBbaHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L25hdGlvbmFsYWNjb3VudHMvdWtzZWN0b3JhY2NvdW50cy9hcnRpY2xlcy9tb250aGx5ZWNvbm9taWNjb21tZW50YXJ5L21hcjIwMTddWzBdXFxuXFxuTW9yZSBuYXRpb25hbCBsZXZlbCBkYXRhIHdpbGwgYmVjb21lIGF2YWlsYWJsZSBvdmVyIHRoZSBjb21pbmcgbW9udGhzLCB0aG91Z2ggaXQgd2lsbCBiZSBtdWNoIGxvbmdlciBiZWZvcmUgZGF0YSBmb3IgV2VzdCBTdXNzZXggd2lsbCBiZSByZWxlYXNlZCBhbmQgd2UgY2FuIHNlZSB3aGF0IHRoZSBlbWVyZ2luZyBwaWN0dXJlIGlzIGZvciB0aGUgbG9jYWwgZWNvbm9teSBwYXJ0aWN1bGFybHkgaW4gbGlnaHQgb2YgdGhlIHBvc3QgRVUgdm90ZSwgdHJpZ2dlcmluZyBvZiBBcnRpY2xlIDUwIGFuZCBzdWJzZXF1ZW50IG5lZ290aWF0aW9ucy5cXG5cXG5bMF06IGh0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZWNvbm9teS9uYXRpb25hbGFjY291bnRzL3Vrc2VjdG9yYWNjb3VudHMvYXJ0aWNsZXMvbW9udGhseWVjb25vbWljY29tbWVudGFyeS9tYXIyMDE3XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIC0gRGVjZW1iZXIgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5Hcm9zcyBWYWx1ZSBBZGRlZCAoR1ZBKSBpcyBhIHJlY29nbmlzZWQgbWVhc3VyZSBvZiBlY29ub21pYyBhY3Rpdml0eSBicm9hZGx5IGRlZmluZWQgYXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdmFsdWUgb2YgdGhlIGdvb2RzIGFuZCBzZXJ2aWNlcyBwcm9kdWNlZCBhbmQgdGhlIGNvc3Qgb2YgcmF3IG1hdGVyaWFscyBhbmQgb3RoZXIgaW5wdXRzIHVzZWQgaW4gcHJvZHVjdGlvbi4gVGhlIGRhdGEgaXMgcmVsZWFzZWQgYW5udWFsbHkgZnJvbSBPTlMsIHRoZSBsYXRlc3Qgc3ViLXJlZ2lvbmFsIGVzdGltYXRlcyBmb3IgR1ZBIHdhcyByZWxlYXNlZCBpbiBEZWNlbWJlciAyMDE2LCBhbmQgdGhlIG5leHQgcmVsZWFzZSBpcyBleHBlY3RlZCBpbiBEZWNlbWJlciAyMDE3LlxcblxcblRoZSBkYXRhIGlzIGF2YWlsYWJsZSBhdDogW2h0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZWNvbm9teS9ncm9zc3ZhbHVlYWRkZWRndmEvZGF0YXNldHMvcmVnaW9uYWxncm9zc3ZhbHVlYWRkZWRpbmNvbWVhcHByb2FjaF1bMF1cXG5cXG5QcmV2aW91cyB0byAyMDE1IHRoZSBHVkEgZGF0YSB3YXMgcmVsZWFzZWQgYXQgY291bnR5IGxldmVsIGFuZCB0aGVyZWZvcmUgYXZhaWxhYmxlIGZvciBXZXN0IFN1c3NleC4gU2luY2UgdGhlbiwgdGhlIGZpZ3VyZXMgaGF2ZSBiZWVuIHJlbGVhc2VkIGF0IHJldmlzZWQgZ2VvZ3JhcGhpY2FsIGxldmVscyB3aGljaCBzcGxpdCB0aGUgY291bnR5IGludG8gdHdvIGFyZWFzIHRvIGluY2x1ZGU6XFxuXFxuMS4gV2VzdCBTdXNzZXgg4oCTIFNvdXRoIFdlc3QgKFdTU1cpIOKAkyBjb21wcmlzZXMgQ2hpY2hlc3RlciwgQXJ1biwgQWR1ciBhbmQgV29ydGhpbmdcXG4xLiBXZXN0IFN1c3NleCDigJMgTm9ydGggRWFzdCAoV1NORSkg4oCTIGNvbXByaXNlcyBDcmF3bGV5LCBIb3JzaGFtIGFuZCBNaWQgU3Vzc2V4XFxuXFxuVGhpcyBzcGxpdCBpcyBoZWxwZnVsIGFzIFdlc3QgU3Vzc2V44oCTU291dGggV2VzdCAoV1NTVykgbWF0Y2hlcyB3aXRoIENvYXN0YWwgV2VzdCBTdXNzZXggYW5kIFdlc3QgU3Vzc2V4LU5vcnRoIEVhc3QgKFdTTkUpIHdpdGggdGhhdCBhcmVhIG9mIFdlc3QgU3Vzc2V4IHRoYXQgbGllcyB3aXRoaW4gR2F0d2ljayBEaWFtb25kIHNvIHRoZXJlIGlzIG1vcmUgZGV0YWlsIGZvciB0aGVzZSB0d28gdmVyeSBkaWZmZXJlbnQgZWNvbm9taWMgYXJlYXMgb2YgdGhlIGNvdW50eS4gV2hpbHN0IHRoZSBmaWd1cmUgc2FyZSBub3QgcmVsZWFzZWQgYnkgT05TIGZvciBXZXN0IFN1c3NleCBDb3VudHkgYXJlYSB0aGV5IGNhbiBiZSBlc3RpbWF0ZWQgYnkgY29tYmluaW5nIHRoZSB0d28gbmV3IGFyZWFzLiBUaGUgbGF0ZXN0IGZpZ3VyZXMgc3VnZ2VzdCB0aGF0IGF0IDIwMTU6XFxuXFxuKiBXaXRoaW4gdGhlIFNvdXRoIEVhc3QgcmVnaW9uIEJlcmtzaGlyZSBoYWQgdGhlIGhpZ2hlc3QgR1ZBIGF0IMKjMzUsODQ1bSBhbmQgSXNsZSBvZiBXaWdodCB0aGUgbG93ZXN0IGF0IMKjMiw0NzNtLlxcbiogV2l0aCB0aGUgZXhjZXB0aW9uIG9mIFBvcnRzbW91dGggYWxsIGFyZWFzIHdpdGhpbiB0aGUgU291dGggRWFzdCBleHBlcmllbmNlZCBncm93dGggaW4gR1ZBIG92ZXIgdGhlIHllYXIgMjAxNC0yMDE1LiBUaGUgaGlnaGVzdCBwZXJjZW50YWdlIGdyb3d0aCB3YXMgc2VlbiBpbiBLZW50IFRoYW1lcyBHYXRld2F5IGF0IDYuMSUsIFBvcnRzbW91dGggc2F3IGEgZmFsbCBpbiBHVkEgb2YgMC40JSBvdmVyIHRoZSB5ZWFyLiBPdXQgb2YgdGhlIDIxIHN1YiBhcmVhcyBpbiB0aGUgU291dGggRWFzdCByZWdpb24g4oCYV2VzdCBTdXNzZXggLSBTb3V0aCBXZXN0JyBzYXcgdGhlIHNlY29uZCBsb3dlc3QgZ3Jvd3RoIG9mIDAuMSUgY29tcGFyZWQgd2l0aCBncm93dGggaW4gV2VzdCBTdXNzZXggTm9ydGggRWFzdCBvZiAzJS4gVGhpcyBjb21wYXJlcyB3aXRoIHRoZSBncm93dGggb3ZlciB0aGUgeWVhciBmb3IgRW5nbGFuZCBhdCAzLjAlIGFuZCBmb3IgdGhlIFNvdXRoIEVhc3QgcmVnaW9uIGEgZ3Jvd3RoIG9mIDMuMiUuXFxuKiBXZXN0IFN1c3NleCBOb3J0aCBFYXN0IGlzIHJhbmtlZCA3dGggKG91dCBvZiAyMSBhcmVhcyBpbiB0aGUgcmVnaW9uKSBhdCDCozExLDc5OW0sIGFuZCBXZXN0IFN1c3NleCBTb3V0aCBXZXN0IGhhcyBmYWxsZW4gZnJvbSAxMXRoIHRvIDEzdGggcG9zaXRpb24gb3ZlciB0aGUgbGFzdCB5ZWFyIGF0IMKjOSwyOTJtLiBUaGUgV2VzdCBTdXNzZXggZWNvbm9teSBhcyBhIHdob2xlIGlzIHRoZXJlZm9yZSBlc3RpbWF0ZWQgdG8gYmUgwqMyMSwwOTFtLlxcblxcblswXTogaHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L2dyb3NzdmFsdWVhZGRlZGd2YS9kYXRhc2V0cy9yZWdpb25hbGdyb3NzdmFsdWVhZGRlZGluY29tZWFwcHJvYWNoXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0Q2RUQ4RDgwLUZBRTUtNEUzNi04QTBCLTAyNTQ3RDQyMkY3RFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJHcm9zcyBWYWx1ZSBBZGRlZCBwZXIgaGVhZFxcblxcbkdyb3NzIFZhbHVlIEFkZGVkIHBlciBoZWFkIHVzZXMgYSB3b3JrcGxhY2UtYmFzZWQgbnVtZXJhdG9yIGkuZS4gdGhhdCBHVkEgcHJvZHVjZWQgaW4gdGhhdCBhcmVhIGRpdmlkZWQgYnkgdGhlIHJlc2lkZW5jZSBiYXNlZCBkZW5vbWluYXRvciAodG90YWwgcmVzaWRlbnRpYWwgcG9wdWxhdGlvbikuIEl0IGFsbG93cyBjb21wYXJpc29uIG9mIHRoZSB3ZWFsdGggZ2VuZXJhdGlvbiBjYXBhYmlsaXR5IGF0IHZhcmlvdXMgZ2VvZ3JhcGhpY2FsIGFyZWFzIGJ1dCBjYW4gcHJvdmlkZSBzbGlnaHRseSBtaXNsZWFkaW5nIHJlc3VsdHMgYXMgdGhlIG1lYXN1cmVzIGFyZSBtaXhlZCBiZXR3ZWVuIHdvcmtwbGFjZSBiYXNlZCBHVkEgZ2VuZXJhdGVkIGluIHRoYXQgYXJlYSBhbmQgdGhlIHJlc2lkZW50IGJhc2VkIHBvcHVsYXRpb24uIFRoZSB3ZWFsdGggY3JlYXRpb24gb2YgdGhvc2Ugd2hvIGNvbW11dGUgaXMgY291bnRlZCBhdCB0aGUgd29ya3BsYWNlIHNvIHRoYXQgYXJlYXMgb2Ygc2lnbmlmaWNhbnQgb3V0LWNvbW11dGluZyBtYXkgaGF2ZSB0aGUgZWZmZWN0IG9mIHVuZGVyc3RhdGluZyBHVkEgbGV2ZWxzIGFzIHdvdWxkIHRob3NlIGFyZWFzIHdpdGggYSBoaWdoIHJldGlyZW1lbnQgcG9wdWxhdGlvbi5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMkQ4NUVCRDgtMUM3Qy00Mjc1LUI3NTktRDc1OThFNzVDRTdBXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkVzdGltYXRlcyBvZiBHVkEgcGVyIGhlYWQgaW5kaWNhdGUgdGhhdCBXZXN0IFN1c3NleCBTb3V0aCBXZXN0IGxldmVscyBhcmUgbG93ZXIgdGhhbiB0aGUgcmVnaW9uYWwgYW5kIG5hdGlvbmFsIGxldmVscywgd2hlcmVhcyBXZXN0IFN1c3NleCBOb3J0aCBFYXN0IGxldmVscyBhcmUgaGlnaGVyLiBHVkEgcGVyIGhlYWQgZm9yIFdlc3QgU3Vzc2V4IGF0IDIwMTUgaXMgZXN0aW1hdGVkIHRvIGJlIMKjMjUsMjIwLCBhZ2FpbiBsb3dlciB0aGFuIHRoYXQgZm9yIEVuZ2xhbmQgKMKjMjYsMTU5KSBhbmQgZm9yIHRoZSBTb3V0aCBFYXN0IHJlZ2lvbiAowqMyNyw4NDcpLiBTaW5jZSAxOTk3IHRoZSBnYXAgaW4gR1ZBIHBlciBoZWFkIGJldHdlZW4gV2VzdCBTdXNzZXggYW5kIHRoZSBTb3V0aCBFYXN0IGhhcyBub3cgcmlzZW4gZnJvbSA0JSB0byBvdmVyIDEwJSBpbiAyMDE1LiBUaGUgbGF0ZXN0IGZpZ3VyZXMgc2hvdyB0aGF0OlxcblxcbiogSW4gMjAxNCBHcm9zcyBWYWx1ZSBBZGRlZCAoR1ZBKSBwZXIgaGVhZCBvZiBwb3B1bGF0aW9uIGluY3JlYXNlZCBpbiBhbGwgcmVnaW9ucyBpbiB0aGUgVUsuIFRoZSBoaWdoZXN0IGFubnVhbCBncm93dGggd2FzIGluIHRoZSBOb3J0aCBXZXN0IGF0IDMuMCUgYW5kIHRoZSBsb3dlc3QgaW4gdGhlIEVhc3QgTWlkbGFuZHMgYXQgMS4wJS4gVGhlIFNvdXRoIEVhc3QgZXhwZXJpZW5jZWQgYSBncm93dGggb2YgMi4zJSBoaWdoZXIgdGhhbiB0aGF0IGZvciBFbmdsYW5kIGF0IDIuMSUuIFdpdGggdGhlIGV4Y2VwdGlvbiBvZiBZb3Jrc2hpcmUgYW5kIFRoZSBIdW1iZXIgYWxsIHJlZ2lvbnMgaW4gRW5nbGFuZCBleHBlcmllbmNlZCBhIGxvd2VyIGxldmVsIG9mIGdyb3d0aCBpbiBHVkEgcGVyIGhlYWQgb3ZlciB0aGUgeWVhciAyMDE0LTIwMTUgdGhhbiB0aGF0IG92ZXIgdGhlIHByZXZpb3VzIHllYXIuXFxuXFxuKiBXaXRoaW4gdGhlIFNvdXRoIEVhc3QgcmVnaW9uIE1pbHRvbiBLZXluZXMgaGFzIHRoZSBoaWdoZXN0IEdWQSBwZXIgaGVhZCBvZiBhbGwgYXJlYXMgYXQgwqM0MSw1ODEgYW5kIEVhc3QgS2VudCB0aGUgbG93ZXN0IGF0IMKjMTcsMjMyLlxcblxcbiogV2VzdCBTdXNzZXggTm9ydGggRWFzdCBHVkEgcGVyIGhlYWQgYXQgwqMzMCwwNjkgaXMgaGlnaGVyIHRoYW4gdGhlIGF2ZXJhZ2UgZm9yIEVuZ2xhbmQgKMKjMjYsMTUwKSBhbmQgdGhlIFNvdXRoIEVhc3QgcmVnaW9uICjCozI3LDg0NykgYW5kIGlzIHJhbmtlZCA3dGggaGlnaGVzdCBvdXQgb2YgdGhlIDIxIGdlb2dyYXBoaWVzIGluIHRoZSByZWdpb24uIEl0IGNvbXBhcmVzIHdpdGggdGhlIEdWQSBwZXIgaGVhZCBzZWVuIGluIFdlc3QgU3Vzc2V4IFNvdXRoIEVhc3Qgb2YgwqMyMCw5MzMgKHJhbmtlZCAxNi8yMSkuXFxuXFxuKiBPdmVyIHRoZSBsYXN0IHRlbiB5ZWFycyAyMDA1LTIwMTUgR1ZBIHBlciBoZWFkIGluY3JlYXNlZCBpbiB0aGUgU291dGggRWFzdCByZWdpb24gYnkgMjUuMyUuIFdpdGhpbiB0aGUgU291dGggRWFzdCBNaWx0b24gS2V5bmVzIHNhdyB0aGUgaGlnaGVzdCBncm93dGggb2Ygb3ZlciA0MCUgY29tcGFyZWQgd2l0aCB0aGUgbG93ZXN0IGdyb3d0aCBvZiA1LjglIGluIFNvdXRoYW1wdG9uLiBJbiBXZXN0IFN1c3NleCB0aGUgZ3Jvd3RoIGluIHRoZSBOb3J0aCBFYXN0IG9mIHRoZSBjb3VudHkgYXQgMzUuOCUgd2FzIHRoZSBzZWNvbmQgaGlnaGVzdCByYXRlIG9mIGdyb3d0aCBpbiB0aGUgcmVnaW9uLCBhbmQgb3ZlciB0d2ljZSB0aGF0IHNlZW4gaW4gV2VzdCBTdXNzZXggU291dGggV2VzdCBhdCAxNiUgZ3Jvd3RoLiBIb3dldmVyLCBvdmVyIHRoZSBsYXN0IHllYXIgaW4gMTQtMTUgZ3Jvd3RoIGluIEdWQSBwZXIgaGVhZCBoYXMgZ2VuZXJhbGx5IGZhbGxlbiBzaW5jZSB0aGUgcHJldmlvdXMgeWVhci4gSW5kZWVkIFdlc3QgU3Vzc2V4IFNvdXRoIFdlc3QgaXMgb25lIG9mIHR3byBhcmVhcyBpbiB0aGUgcmVnaW9uYWwgdG8gaGF2ZSBzZWVuIGEgZHJvcCBvbiBHVkEgcGVyIGhlYWQgbGV2ZWxzKC0wLjclICkgV2VzdCBTdXNzZXggTm9ydGggRWFzdCBzYXcgYW4gaW5jcmVhc2Ugb2YgMTA5JSBpbiAyMDE0LTE1IGNvbXBhcmVkIHdpdGggNi43JSBncm93dGggaW4gdGhlIHByZXZpb3VzIHllYXIuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0RCNUNFNDBFLUU1NDEtNEUwOS05NzBDLTdBMDdEMUNFODdDQVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE2KipcXG5cXG4tIC0gLVxcblxcbk5vIGZ1cnRoZXIgZXN0aW1hdGVzIG9mIEdWQSBhdCBsb2NhbCBsZXZlbCB3aWxsIGJlIHJlbGVhc2VkIGZyb20gT05TIHVudGlsIG1pZC1EZWNlbWJlciAyMDE2IHdoaWNoIHdpbGwgZ2l2ZSBHVkEgYW5kIEdWQSBwZXIgaGVhZCBlc3RpbWF0ZXMgdXAgdG8gMjAxNS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSBKdW5lIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuV2hhdCB3aWxsIGhhcHBlbiB0byB0aGVzZSBtZWFzdXJlcywgaW4gcmVzcGVjdCBvZiB0aGUgbmF0aW9uYWwvcmVnaW9uYWwvbG9jYWwgZWNvbm9teSwgZ2l2ZW4gdGhlIEVVIHJlZmVyZW5kdW0gcmVzdWx0LCBpcyBzdGlsbCB0byBiZSBkZXRlcm1pbmVkLlxcblxcblRoZSBhdXRob3JpdHkgaXMgdGFraW5nIGZvcndhcmQgYSByYW5nZSBvZiBhY3Rpb25zIHRvIGltcHJvdmUgbWF0dGVycyBoZXJlLiBUaGVzZSBpbmNsdWRlOi1cXG5cXG4qIFByb21vdGluZyBncm93dGggb2YgdGhlIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyBzZWN0b3JcXG4qIENyZWF0aW5nIG5ldyBlY29ub21pYyBhc3NldHMgdG8gdGhlIHNvdXRoIG9mIHRoZSBhaXJwb3J0IGFuZCB0byBlbmNvdXJhZ2UgbW9yZSBoaWdoIHZhbHVlIEdWQSBidXNpbmVzc2VzIHRvIGJhc2UgdGhlbXNlbHZlcyBpbiB0aGUgYXJlYVxcbiogRGV2ZWxvcG1lbnQgb2YgRGlzdHJpY3QgLyBCb3JvdWdoIFBsYWNlIFBsYW5zIGFuZCB0aGUgZXN0YWJsaXNobWVudCBvZiBHcm93dGggQm9hcmRzIHRvIHN1cHBvcnQgdGhlc2UgcGxhbnMuXFxuXFxuVG9nZXRoZXIgdGhlc2UgZm9ybSB0aGUgV2VzdCBTdXNzZXggR3Jvd3RoIFBsYW4uIFRoZSBhbWFsZ2FtYXRlZCBHcm93dGggUGxhbiB3YXMgaW4gcGxhY2UgYnkgRGVjZW1iZXIgMjAxNS5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKioyMDE1IEdWQSBEYXRhIFJlbGVhc2UqKlxcblxcbi0gLSAtXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZSBSZWdpb25hbCBHcm9zcyBWYWx1ZSBBZGRlZCAoSW5jb21lIEFwcHJvYWNoKSBkYXRhIHdoaWNoIGluY2x1ZGVzIGRhdGEgZm9yIFdlc3QgU3Vzc2V4IGlzIHB1Ymxpc2hlZCBhbm51YWxseSwgdGhlIGxhdGVzdCByZWxlYXNlIHdhcyBpbiBEZWNlbWJlciAyMDE1IGFuZCByZWxhdGVzIHRvIHRoZSB5ZWFycyB1cHRvIDIwMTQ7IHRoZSBuZXh0IHJlbGVhc2UgaXMgZXhwZWN0ZWQgaW4gRGVjZW1iZXIgMjAxNi5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQjZGMzg0ODctNDlBMS00RTU1LTg2QTUtNjI5N0E2Qzk0QTQ2XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkdyb3NzIFZhbHVlIEFkZGVkIChHVkEpIGlzIGEgcmVjb2duaXNlZCBtZWFzdXJlIG9mIGVjb25vbWljIGFjdGl2aXR5IGJyb2FkbHkgZGVmaW5lZCBhcyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB2YWx1ZSBvZiB0aGUgZ29vZHMgYW5kIHNlcnZpY2VzIHByb2R1Y2VkIGFuZCB0aGUgY29zdCBvZnJhdyBtYXRlcmlhbHMgYW5kIG90aGVyIGlucHV0cyB1c2VkIGluIHByb2R1Y3Rpb24uIEluIERlY2VtYmVyIDIwMTUgT05TIHJlbGVhc2VkIHRoZSBsYXRlc3Qgc3ViIHJlZ2lvbmFsIGVzdGltYXRlcyBmb3IgR1ZBLiBUaGUgZGF0YSBpcyBhdmFpbGFibGUgYXQ6XFxuXFxuW2h0dHA6Ly93d3cub25zLmdvdi51ay9vbnMvcmVsL3JlZ2lvbmFsLWFjY291bnRzL3JlZ2lvbmFsLWdyb3NzLXZhbHVlLWFkZGVkLS1pbmNvbWUtYXBwcm9hY2gtL2RlY2VtYmVyLTIwMTUvc3RiLXJlZ2lvbmFsLWd2YS1kZWMtMjAxNS5odG1sXVswXVxcblxcblVwIHVudGlsIHRoaXMgcmVsZWFzZSBHVkEgZGF0YSBoYXMgYmVlbiBhdmFpbGFibGUgZm9yIGZvcm1lciBOVVRTMyBnZW9ncmFwaGllcyB3aGljaCBjb3ZlcmVkIHRoZSBXZXN0IFN1c3NleCBDb3VudHkgYXJlYS4gSG93ZXZlcix0aGlzIGxhdGVzdCBkYXRhIGlzIHB1Ymxpc2hlZCwgZm9yIHRoZSBmaXJzdCB0aW1lLCB1c2luZyByZXZpc2VkIE5VVFMzIGdlb2dyYXBoaWVzLCB3aGljaCBzcGxpdHMgdGhlIGNvdW50eSBpbnRvIHR3byB0byBpbmNsdWRlOlxcblxcbiBcXG5cXG4xLiBXZXN0IFN1c3NleCDigJMgU291dGggV2VzdCAoV1NTVykg4oCTIG1hZGUgdXAgb2YgQ2hpY2hlc3RlciwgQXJ1biwgQWR1ciBhbmQgV29ydGhpbmdcXG4xLiBXZXN0IFN1c3NleCDigJMgTm9ydGggRWFzdCAoV1NORSkg4oCTIG1hZGUgdXAgb2YgQ3Jhd2xleSwgSG9yc2hhbSBhbmQgTWlkIFN1c3NleFxcbiBcXG5cXG5UaGlzIHNwbGl0IGlzIGhlbHBmdWwgYXMgV2VzdCBTdXNzZXgg4oCTU291dGggV2VzdCAoV1NTVykgbWF0Y2hlcyB3aXRoIENvYXN0YWwgV2VzdCBTdXNzZXggYW5kIFdlc3QgU3Vzc2V4IE5vcnRoIEVhc3QgKFdTTkUpIHdpdGggdGhhdCBhcmVhIG9mIFdlc3QgU3Vzc2V4IHRoYXQgbGllcyB3aXRoaW4gR2F0d2ljayBEaWFtb25kLiBTbyBmb3IgdGhlIGZpcnN0IHRpbWUgd2UgaGF2ZSDigJhvZmZpY2lhbOKAmSBmaWd1cmVzIGZvciB0aGVzZSB0d28gdmVyeSBkaWZmZXJlbnQgZWNvbm9taWMgYXJlYXMgaW4gV2VzdCBTdXNzZXguIFRha2luZyBpbnRvIGFjY291bnQgdGhlIHNwbGl0IHRoYXQgaGFzIG9jY3VycmVkIGluIFN1cnJleSBzbyB0aGF0IFN1cnJleSBFYXN0IChFcHNvbSBhbmQgRXdlbGwsIFRhbmRyaWRnZSwgTW9sZSBWYWxsZXksIFJlaWdhdGUgYW5kIEJhbnN0ZWQpLCB0b2dldGhlciB3aXRoIFdlc3QgU3Vzc2V4IE5vcnRoIEVhc3QgbWF0Y2hlcyB0aGUgd2hvbGUgR2F0d2ljayBEaWFtb25kIGFyZWEuIFRoZSBsYXRlc3Qgc2V0IG9mIGRhdGEgaW5jbHVkZXMgdHJlbmRzIGZyb20gMTk5Ny0yMDE0LiBOQiDigJMgdGhlIDIwMTQgZXN0aW1hdGVzIGFyZSBwcm92aXNpb25hbCBhbmQgc3ViamVjdCB0byByZXZpZXcgYnkgT05TLlxcblxcbiBcXG5cXG5XaGlsc3QgdGhlIGZpZ3VyZXMgYXJlIG5vdCByZWxlYXNlZCBieSBPTlMgZm9yIFdlc3QgU3Vzc2V4IENvdW50eSBhcmVhIHRoZXkgY2FuIGJlIGVzdGltYXRlZCBieSBjb21iaW5pbmcgdGhlIHR3byBuZXcgYXJlYXMuXFxuXFxuWzBdOiBodHRwOi8vd3d3Lm9ucy5nb3YudWsvb25zL3JlbC9yZWdpb25hbC1hY2NvdW50cy9yZWdpb25hbC1ncm9zcy12YWx1ZS1hZGRlZC0taW5jb21lLWFwcHJvYWNoLS9kZWNlbWJlci0yMDE1L3N0Yi1yZWdpb25hbC1ndmEtZGVjLTIwMTUuaHRtbFwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy8xNTlCRUYzMC03QjcyLTQ2M0QtODc5Ny02MzA2NkU5MzBCMTBcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKiBXaXRoaW4gdGhlIFNvdXRoIEVhc3QgcmVnaW9uIEJlcmtzaGlyZSBoYXMgdGhlIGhpZ2hlc3QgR1ZBIG9mIGFsbCBhcmVhcyBhdCDCozM0LDUwNm0gYW5kIHRoZSBJc2xlIG9mIFdpZ2h0IHRoZSBsb3dlc3QgLSDCozMwNzFtLlxcblxcbiogV2VzdCBTdXNzZXggTm9ydGggRWFzdCBpcyByYW5rZWQgN3RoIChvdXQgb2YgMjEgYXJlYXMgaW4gdGhlIHJlZ2lvbikgYXQgwqMxMSwxNDZtLCBhbmQgV2VzdCBTdXNzZXggU291dGggV2VzdCAxMXRoIGF0IMKjOSwzNjBtLCBtZWFuaW5nIHRoYXQgdGhlIFdlc3QgU3Vzc2V4IGVjb25vbXkgYXMgYSB3aG9sZSBpcyBlc3RpbWF0ZWQgdG8gYmUgwqMyMCw1MDZtXFxuXFxuKiBBbGwgYXJlYXMgd2l0aGluIHRoZSBTb3V0aCBFYXN0IGV4cGVyaWVuY2VkIGdyb3d0aCBpbiBHVkEgb3ZlciB0aGUgeWVhciAyMDEzLTIwMTQuIFdlc3QgS2VudCBleHBlcmllbmNlZCB0aGUgaGlnaGVzdCBncm93dGggYXQgNC45JSBhbmQgTm9ydGggSGFtcHNoaXJlIHRoZSBsb3dlc3QgYXQgMC44JUluIHRoZSBwcmV2aW91cyB5ZWFyLCAyMDEyLTIwMTMgV2VzdCBTdXNzZXggTm9ydGggRWFzdCwgYW5kIFN1cnJleSBFYXN0IHNhdyBzaWduaWZpY2FudCByYXRlcyBvZiBncm93dGgg4oCTIFdTTkUgaGFkIGV4cGVyaWVuY2VkIHRoZSAzcmQgaGlnaGVzdCByYXRlIG9mIGdyb3d0aCBpbiB0aGUgU291dGggRWFzdCByZWdpb24sIGhvd2V2ZXIgaW4gYm90aCBhcmVhcyB0aGlzIGdyb3d0aCBhcyBmYWxsZW4gY29uc2lkZXJhYmx5IGR1cmluZyAyMDEzLTE0IGFmZmVjdGluZyBncm93dGggaW4gR2F0d2ljayBEaWFtb25kIHdoaWNoIGlzIGxlc3MgdGhhbiBoYWxmIHdoYXQgaXQgd2FzIGluIDIwMTIt4oCYMTMuXFxuXFxuKiBXU1NXIGhhcyBjb250aW51YWxseSBzZWVuIGxvd2VyIHJhdGVzIGZvciBncm93dGggaW4gR1ZBIHRoYW4gV1NORSBhbmQgaW5kZWVkIGxvd2VyIHJhdGVzIHRoYW4gdGhlIHJlZ2lvbmFsIGFuZCBuYXRpb25hbCBhdmVyYWdlOyBncm93dGggaW4gV2VzdCBTdXNzZXggQ291bnR5IGlzIHZlcnkgbXVjaCBidW95ZWQgdXAgYnkgdGhlIGdyb3d0aCB0YWtpbmcgcGxhY2UgaW4gdGhlIE5vcnRoIEVhc3Qgb2YgdGhlIGNvdW50eS4gSW4gdGhlIGxhc3QgdGVuIHllYXJzIGdyb3d0aCBpbiB0aGUgbm9ydGggZWFzdCBvZiB0aGUgY291bnR5IGhhcyBiZWVuIGhpZ2hlciB0aGFuIHRoZSBuYXRpb25hbCBhbmQgcmVnaW9uYWwgYXZlcmFnZS5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipHVkEgcGVyIGhlYWQqKlxcblxcbioqR3Jvc3MgVmFsdWUgQWRkZWQgcGVyIGhlYWQqKlxcblxcbkdyb3NzIFZhbHVlIEFkZGVkIHBlciBoZWFkIHVzZXMgYSB3b3JrcGxhY2UtYmFzZWQgbnVtZXJhdG9yIGkuZS4gdGhhdCBHVkEgcHJvZHVjZWQgaW4gdGhhdCBhcmVhIGRpdmlkZWQgYnkgdGhlIHJlc2lkZW5jZSBiYXNlZCBkZW5vbWluYXRvciAodG90YWwgcmVzaWRlbnRpYWwgcG9wdWxhdGlvbikuIEl0IGlzIGEga2V5IG1lYXN1cmUgb2YgdGhlIHdlYWx0aCBnZW5lcmF0aW9uIGNhcGFiaWxpdHkgb2YgYW4gYXJlYeKAmXMgZWNvbm9teS4gSG93ZXZlciBpdCBjYW4gcHJvdmlkZSBzbGlnaHRseSBtaXNsZWFkaW5nIHJlc3VsdHMgYXMgdGhlIG1lYXN1cmVzIGFyZSBtaXhlZCBiZXR3ZWVuIHdvcmtwbGFjZSBiYXNlZCBHVkEgZ2VuZXJhdGVkIGluIHRoYXQgYXJlYSBhbmQgdGhlIHJlc2lkZW50IGJhc2VkIHBvcHVsYXRpb24sIHRoZSB3ZWFsdGggY3JlYXRpb24gb2YgdGhvc2Ugd2hvIGNvbW11dGUgaXMgY291bnRlZCBhdCB0aGUgd29ya3BsYWNlIHNvIHRoYXQgYXJlYXMgb2Ygc2lnbmlmaWNhbnQgb3V0LWNvbW11dGluZyBtYXkgaGF2ZSB0aGUgZWZmZWN0IG9mIHVuZGVyc3RhdGluZyBHVkEgbGV2ZWxzLiBJbiBXZXN0IFN1c3NleCBtYW55IHJlc2lkZW50IHdvcmtlcnMgbWF5IGNvbW11dGUgdG8gZS5nLiBMb25kb24vU3VycmV5LyBCcmlnaHRvbiBhbmQgSG92ZSBldGMuLCBzbyB0aGUgd2VhbHRoIHJlYWN0aW9uIG9mIHRob3NlIHdvcmtlcnMgd2lsbCBiZSBjb3VudGVkIHRoZXJlLiBDb252ZXJzZWx5LCBmb3IgZXhhbXBsZSwgTG9uZG9u4oCZcyBHVkEgcGVyIGhlYWQgZmlndXJlcyB3aWxsIGJlIG92ZXJzdGF0ZWQgYXMgTG9uZG9uIGlzIHN1Y2ggYSBtYWpvciBpbXBvcnRlciBvZiBsYWJvdXIuIFRob3NlIGFyZWFzIHdpdGggYSBoaWdoIHJldGlyZW1lbnQgYWxzbyBwcm9kdWNlIHVuZGVyc3RhdGVkIGVzdGltYXRlcyBvZiBHVkEgcGVyIGhlYWQuIENvYXN0IHRvIENhcGl0YWwgTEVQIGhhdmUgcHJvdmlkZWQgc29tZSBlc3RpbWF0ZXMgb2YgR1ZBIHBlciBqb2Igd2hpY2ggaXMgYSBiZXR0ZXIgbWVhc3VyZSBvZiBwcm9kdWN0aXZpdHkgb2YgYW4gYXJlYSwgdGhvdWdoIEdWQSBwZXIgY2FwaXRhIGlzIGEgdXNlZnVsIGluZGljYXRvciBvZiBlY29ub21pYyBwZXJmb3JtYW5jZSBpbiBhbiBhcmVhLCBhbmQgT05TIGRvIG1ha2UgdGhlIGZpZ3VyZXMgYXZhaWxhYmxlLlxcblxcbkVzdGltYXRlcyBvZiBHVkEgcGVyIGhlYWQgZm9yIFdlc3QgU3Vzc2V4IHN1Z2dlc3RzIHRoYXQgaW4gMTk5NyAodGhlIHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBjdXJyZW50IHRpbWUgc2VyaWVzKSBHVkEgcGVyIGhlYWQgd2FzIMKjMTQsMDA2IGZvciBXZXN0IFN1c3NleDsgc2xpZ2h0bHkgbG93ZXIgdGhhbiBmb3IgRW5nbGFuZCAowqMxMyw2NzYpLCBhbmQgNSUgaGlnaGVyIHRoYW4gdGhhdCBmb3IgdGhlIFNvdXRoIEVhc3QgYXQgwqMxNCw2OTguIE92ZXIgdGltZSBob3dldmVyIEdWQSBmaWd1cmVzIGhhdmUgcmlzZW4gaW4gRW5nbGFuZCBhbmQgdGhlIFNvdXRoIEVhc3QgYXQgYSBoaWdoZXIgcmF0ZSB0aGFuIHNlZW4gaW4gV2VzdCBTdXNzZXguIFRoZSBnYXAgaW4gR1ZBIHBlciBoZWFkIGJldHdlZW4gV2VzdCBTdXNzZXggYW5kIHRoZSBTb3V0aCBFYXN0IGhhcyBub3cgcmlzZW4gdG8gOS4xJSBpbiAyMDE0LlxcblxcblsxXSBHYXR3aWNrIERpYW1vbmQgPSBXZXN0IFN1c3NleCBORSBwbHVzIFN1cnJleSBFYXN0XFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzU1MERGRDk0LTU5QTItNDFEOS05NDAzLTAyQzBDOTJCMTQzM1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqIEluIDIwMTQgR3Jvc3MgVmFsdWUgQWRkZWQgKEdWQSkgcGVyIGhlYWQgb2YgcG9wdWxhdGlvbiBpbmNyZWFzZWQgaW4gYWxscmVnaW9ucyBpbiB0aGUgVUsuIFRoZSBoaWdoZXN0IGFubnVhbCBncm93dGggd2FzIGluIExvbmRvbiBhdCA1LjMlIGFuZCB0aGUgbG93ZXN0IGFubnVhbCBncm93dGggd2FzIGluIE5vcnRoZXJuIElyZWxhbmQgYXQgMS45JS4gVGhlIFNvdXRoIEVhc3QgZXhwZXJpZW5jZWQgYSBncm93dGggb2YgMi44JSBsb3dlciB0aGFuIHRoYXQgZm9yIEVuZ2xhbmQgYXQgMy43JS5cXG5cXG4qIEF0IHRoZSByZWdpb25hbCBsZXZlbCwgaW4gMjAxNCBMb25kb24gaGFkIHRoZSBoaWdoZXN0IEdWQSBwZXIgaGVhZCBhdCDCozQyLDY2Niwgd2hpbGUgV2FsZXMgaGFkIHRoZSBsb3dlc3QgYXQgwqMxNyw1NzMuIFRoZSBTb3V0aCBFYXN0IHJlZ2lvbiBoYWQgdGhlIHNlY29uZCBoaWdoZXN0IEdWQSBwZXIgaGVhZCBhdCDCozI3LDAxMiBhbmQgY29tcGFyZXMgd2l0aCB0aGF0IGZvciBFbmdsYW5kIGF0IMKjMjUsMzY3LlxcblxcbiogV2l0aGluIHRoZSBTb3V0aCBFYXN0IHJlZ2lvbiBNaWx0b24gS2V5bmVzIGhhZCB0aGUgaGlnaGVzdCBHVkEgcGVyIGhlYWRhdCDCozM5LDcwOSBjb21wYXJlZCB3aXRoIE1lZHdheSB3aGljaCBoYWQgdGhlIGxvd2VzdCBsZXZlbCBhdCDCozE3LDAzOC4gQm90aCBOb3J0aCBFYXN0IFdlc3QgU3Vzc2V4LCBhbmQgU291dGggV2VzdCBXZXN0IFN1c3NleCBoYWQgbGV2ZWxzIG9mIEdWQSBwZXIgaGVhZCBsb3dlciB0aGFuIHRoZSByZWdpb25hbCBhdmVyYWdlIGF0IMKjMjYsNjk1ICg2dGggb3V0IG9mIDIxKSBhbmQgwqMyMSwyNzQgKHJhbmtlZCAxN3RoKSByZXNwZWN0aXZlbHkuXFxuXFxuKiBObyBhcmVhcyBvZiB0aGUgU291dGggRWFzdCBoYWQgZXhwZXJpZW5jZWQgYSBmYWxsIGluIEdWQSBwZXIgaGVhZCBpbiB0aGUgbGFzdCB5ZWFyLiBXZXN0IEtlbnQgc2F3IHRoZSBoaWdoZXN0IGluY3JlYXNlIG92ZXIgdGhlIHllYXIgMjAxMyDigJMgMjAxNCBhdCA0LjklLCBXZXN0IFN1c3NleCDigJMgU291dGggV2VzdCBhbmQgV2VzdCBTdXNzZXgg4oCTIE5vcnRoIEVhc3QgaGF2ZSBzZWVuIHNpbWlsYXIgbGV2ZWxzIG9mIGdyb3d0aCBpbiBHVkEgcGVyIGhlYWQgYXQgMS44JSBhbmQgMS43JS4gRm9yIFdlc3QgU3Vzc2V4IE5vcnRoIEVhc3QgdGhpcyB3YXMgY29uc2lkZXJhYmx5IGxvd2VyIHRoYW4gdGhhdCBzZWVuIHNpbmNlIDIwMTEgd2hlbiBhbm51YWwgZ3Jvd3RoIGhhZCBiZWVuIG92ZXIgNiUuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqMjAxNCBHVkEgRGF0YSBSZWxlYXNlKipcXG5cXG4tIC0gLVxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIgXFxuXFxuR3Jvc3MgVmFsdWUgQWRkZWQgKEdWQSkgaXMgYSByZWNvZ25pc2VkIG1lYXN1cmUgb2YgZWNvbm9taWMgYWN0aXZpdHkgYnJvYWRseSBkZWZpbmVkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHZhbHVlIG9mIHRoZSBnb29kcyBhbmQgc2VydmljZXMgcHJvZHVjZWQgYW5kIHRoZSBjb3N0IG9mIHJhdyBtYXRlcmlhbHMgYW5kIG90aGVyIGlucHV0cyB1c2VkIGluIHByb2R1Y3Rpb24uIEluIERlY2VtYmVyIDIwMTQgT05TIHJlbGVhc2VkIHRoZSBsYXRlc3Qgc3ViIHJlZ2lvbmFsIGVzdGltYXRlcyBmb3IgR1ZBLlRoZSBuZXh0IHVwZGF0ZSBvZiB0aGlzIGRhdGEgaXMgZXhwZWN0ZWQgaW4gRGVjZW1iZXIgMjAxNS4gVGhlIGRhdGEgaXMgYXZhaWxhYmxlIGF0OlxcblxcbltodHRwOi8vd3d3Lm9ucy5nb3YudWsvb25zL3B1YmxpY2F0aW9ucy9yZS1yZWZlcmVuY2UtdGFibGVzLmh0bWw/ZWRpdGlvbj10Y20lM0E3Ny0zMzk1OThdWzBdXFxuXFxuVGhlIGxhdGVzdCAocHJvdmlzaW9uYWwpIGZpZ3VyZSBmb3IgR3Jvc3MgVmFsdWUgQWRkZWQgKEdWQSkgc3VnZ2VzdHMgdGhhdCBhdCAyMDEzIEdWQSBmb3IgV2VzdCBTdXNzZXggd2FzIMKjMTksODQ4bW4sIG1ha2luZyB1cCBhcm91bmQgOC41JSBvZiB0aGUgU291dGggRWFzdCBHVkEuIFRoaXMgY29udHJpYnV0aW9uIGhhcyBmYWxsZW4gZnJvbSBvdmVyIDklIGluIDE5OTcuXFxuXFxuVGhlIFNvdXRoIEVhc3QgZWNvbm9teSBleHBhbmRlZCBieSAyLjglIGFjY29yZGluZyB0byB0aGVzZSBwcmVsaW1pbmFyeSBlc3RpbWF0ZXMgZnJvbSBPTlMsIHRoaXMgd2FzIGxvd2VyIHRoYW4gZ3Jvd3RoIGFjcm9zcyB0aGUgVUssIExvbmRvbiwgRWFzdCBvZiBFbmdsYW5kIGFuZCB0aGUgU291dGggV2VzdC4gVGhlIHByb3Zpc2lvbmFsIGVzdGltYXRlcyBvZiBHVkEgZm9yIGNvdW50eSBhbmQgdW5pdGFyeSBhdXRob3JpdGllcyBzaG93IHRoYXQgV2VzdCBTdXNzZXgsIGF0IDQuNCUgZ3Jvd3RoLCBoYWQgdGhlIGZvdXJ0aCBoaWdoZXN0IGdyb3d0aCBpbiB0aGUgU291dGggRWFzdCBiZXR3ZWVuIDIwMTIgYW5kIDIwMTMsIGxhZ2dpbmcgYmVoaW5kIFNvdXRoYW1wdG9uICg5JSksIE1pbHRvbiBLZXluZXMgKDQuOSUpIGFuZCBCcmlnaHRvbiBhbmQgSG92ZSAoNC43JSksIHNvIHdhcyB0aGUgZmFzdGVzdCBncm93aW5nIGNvdW50eSBpbiB0aGUgU291dGggRWFzdC5cXG5cXG5JbiAxOTk3IFdlc3QgU3Vzc2V4IGhhZCBhIGhpZ2hlciBHVkEgcGVyIGhlYWQgdGhhbiBFbmdsYW5kIGFuZCB3YXMgYXQgYSBzaW1pbGFyIGxldmVsIGF0IMKjMTQsMTE0IHRvIHRoZSBTb3V0aCBFYXN0IGF2ZXJhZ2UgKMKjMTQsNzQwKS4gU2luY2UgYXJvdW5kIDIwMDQgaG93ZXZlciBjb3VudHkgR1ZBIHBlciBoZWFkIGhhcyBiZWVuIGdlbmVyYWxseSBsb3dlciB0aGFuIHRoYXQgc2VlbiBuYXRpb25hbGx5IGFuZCBncm93dGggaW4gV2VzdCBTdXNzZXggaGFzIGJlZW4gbG93ZXIgdGhhbiB0aGF0IHNlZW4gcmVnaW9uYWxseSBzbyB0aGUgZ2FwIGJldHdlZW4gdGhlIHJlZ2lvbmFsIGFuZCBjb3VudHkgR1ZBIHBlciBoZWFkIGZpZ3VyZSBoYXMgd2lkZW5lZC4gSW4gMjAxMyB0aGUgR1ZBIHBlciBoZWFkIGZvciBXZXN0IFN1c3NleCB3YXMgZXN0aW1hdGVkIHRvIGJlIMKjMjQsMTY1IChwcm92aXNpb25hbCBmaWd1cmVzKSBjb21wYXJlZCBmb3IgdGhlIFNvdXRoIEVhc3QgYXZlcmFnZSBhdCDCozI1LDg0My4gVGhlIEdWQSBmb3IgV2VzdCBTdXNzZXggaW4gMjAxMyB3YXMgYWJvdXQgMy4zJSBhYm92ZSB0aGUgVUsgYXZlcmFnZSBhbmQgaXQgaGFkIGluY3JlYXNlZCBieSAzLjYlIHNpZ25pZmljYW50bHkgc2xvd2VyIHRoYW4gaW4gMjAxMiAoNi40JSkgYnV0IGZhc3RlciB0aGFuIHRoZSBVSyBhdmVyYWdlIGFuZCBmYXN0ZXIgdGhhbiBpbiBhbnkgb3RoZXIgY291bnR5IGluIHRoZSBTb3V0aCBFYXN0IGluIDIwMTMuIEF0IDMuOCUgQnJpZ2h0b24gYW5kIEhvdmUgaGFkIHRoZSBmYXN0ZXN0IGdyb3d0aCBpbiBHVkEgcGVyIGhlYWQgaW4gdGhlIFNvdXRoIEVhc3QgcmVnaW9uLiBDdW11bGF0aXZlIGdyb3d0aCBpbiBHVkEgcGVyIGhlYWQgaW4gV2VzdCBTdXNzZXggYmV0d2VlbiAyMDA5IGFuZCAyMDEzIHdhcyAxMy4xJSBtYXJnaW5hbGx5IHNsb3dlciB0aGFuIGluIFN1cnJleSwgYnV0IGZhc3RlciB0aGFuIGluIHRoZSBIYW1wc2hpcmUgQ291bnR5IENvdW5jaWwgQXJlYSwgS2VudCBhbmQgRWFzdCBTdXNzZXggYW5kIHRoZSByZWdpb25hbCBhbmQgbmF0aW9uYWwgYXZlcmFnZS5cXG5cXG5bMF06IGh0dHA6Ly93d3cub25zLmdvdi51ay9vbnMvcHVibGljYXRpb25zL3JlLXJlZmVyZW5jZS10YWJsZXMuaHRtbD9lZGl0aW9uPXRjbSUyNTI1M0E3Ny0zMzk1OThcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKiBHVkEgcGVyIGhlYWQgaXMgYSByYXRpbyBvZiB0b3RhbCAod29ya3BsYWNlIGJhc2VkIEdWQSkgYW5kIHRvdGFsIChyZXNpZGVuY2UgYmFzZWQgcG9wdWxhdGlvbikuIFJlbGF0aXZlbHkgbGFyZ2UgZWNvbm9taWNhbGx5IGluYWN0aXZlIHBvcHVsYXRpb24gdGVuZHMgdG8gZGVwcmVzcyBHVkEgcGVyIGhlYWQgYW5kIEdWQSBwZXIgaGVhZCBncm93dGggcmF0ZXMuIEdWQSBwZXIgaGVhZCBpcyBhIHVzZWZ1bCBtZWFzdXJlIGZvciBjb21wYXJpbmcgYXJlYXMgb2YgZGlmZmVyZW5jZSBzaXplc1xcblxcbiogUmVnaW9uYWwgR3Jvc3MgVmFsdWUgQWRkZWQgVGFibGVzIChyZWxlYXNlZCBEZWNlbWJlciAyMDE0IOKAkyBPTlMpXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzVEODZCRjhDLTI4RTMtNENGRS05NzQ1LTNEOUY5N0YwODdGMVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqIFNvdXJjZTogVGFibGUgMy4yIFJlZ2lvbmFsIEdyb3NzIFZhbHVlIEFkZGVkIFRhYmxlcywgT05TXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZXJlIGlzIGEgdHdlbHZlIG1vbnRoIGRhdGEgbGFnIGJldHdlZW4gdGhlIGhlYWRsaW5lIHByZWxpbWluYXJ5IGVzdGltYXRlIG9mIHN1YiByZWdpb25hbCBHVkEgYW5kIHRoZSBlc3RpbWF0ZXMgb2YgR1ZBIGJ5IGJyb2FkIHNlY3RvciBzbyB0aGUgbGF0ZXN0IEdWQSBzcGxpdCBieSBzZWN0b3IgaXMgZm9yIDIwMTIuIFRoZSBmaWd1cmVzIGZvciBXZXN0IFN1c3NleCBzdWdnZXN0IHN0cm9uZyBncm93dGggaW4gZmluYW5jaWFsIGFuZCBpbnN1cmFuY2UsIHJlYWwgZXN0YXRlLCBkaXN0cmlidXRpb24sIHRyYW5zcG9ydCwgYWNjb21tb2RhdGlvbiBhbmQgZm9vZCwgbWFudWZhY3R1cmluZyBhbmQgYnVzaW5lc3Mgc2VydmljZSBzZWN0b3JzLiBGYXN0ZXIgZ3Jvd3RoIG92ZXJhbGwgd2FzIGhlbGQgYmFjayBieSBjb25zdHJ1Y3Rpb24gYW5kIGluZm9ybWF0aW9uIGFuZCBjb21tdW5pY2F0aW9uLlxcblxcbkRpc3RyaWJ1dGlvbiwgdHJhbnNwb3J0LCBhY2NvbW1vZGF0aW9uIGFuZCBmb29kIGlzIHRoZSBsYXJnZXN0IGJyb2FkIHNlY3RvciBpbiBXZXN0IFN1c3NleCBhcyBpdCBhY2NvdW50cyBmb3IgYXJvdW5kIDI0JSBvZiB0b3RhbCBHVkEuIFRoaXMgc2VjdG9yIGV4cGFuZGVkIGJ5IGFyb3VuZCA5LjclIGZyb20gMjAxMS0xMiBjb21wYXJlZCB0byAyLjMlIGluIHRoZSBVSy4gVGhlIHJlYWwgZXN0YXRlIHNlY3RvciBpbiBXZXN0IFN1c3NleCBpcyB0aGUgc2Vjb25kIGxhcmdlc3QgYnJvYWQgc2VjdG9yIG9mIHRoZSBlY29ub215IGFuZCBhY2NvdW50ZWQgZm9yIDEzLjMlIG9mIEdWQS4gRmluYW5jaWFsIGFuZCBpbnN1cmFuY2Ugc2VydmljZXMgYWNjb3VudCBmb3IgYXJvdW5kIDYlIG9mIHRoZSBXZXN0IFN1c3NleCBlY29ub215LiBUaGlzIHNlY3RvciB0aG91Z2ggd2FzIHRoZSBiZXN0IHBlcmZvcm1pbmcgc2VjdG9yIGluIFdlc3QgU3Vzc2V4IGluIDIwMTMsIGFmdGVyIGNvbnRyYWN0aW5nIGluIDIwMTEgdG90YWwgb3V0cHV0IGluIHRoaXMgc2VjdG9yIGluY3JlYXNlZCBieSBhcm91bmQgMjAlIGluIDIwMTIuXFxuXFxuT05TIGRvIG5vdCByZWxlYXNlIGVzdGltYXRlcyBvZiBHVkEgYXQgZGlzdHJpY3QgYXV0aG9yaXR5IGxldmVsLlxcblxcbiBcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQjE3NjI4QTYtNDQ1OC00REFELThCMUItMTU2RTlDMDkwOTdEXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiogU291cmNlOiAtIENvYXN0IHRvIENhcGl0YWwgTEVQIC1maWd1cmVzIGluIGl0YWxpY3MgYXJlIGVzdGltYXRlcywgZmlndXJlcyBmcm9tIENvYXN0IHRvIENhcGl0YWwgYW5kIFdlc3QgU3Vzc2V4IGZyb20gT05TXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkhvd2V2ZXIsIGVzdGltYXRlcyBmb3IgV2VzdCBTdXNzZXggZGlzdHJpY3RzIGFuZCBib3JvdWdocyBoYXZlIGJlZW4gZXN0aW1hdGVkIGJ5IENvYXN0IHRvIENhcGl0YWwgTEVQIHVzaW5nIHRoZSBsYXRlc3Qgd29ya3BsYWNlIGJhc2VkIG1lYW4gZ3Jvc3Mgd2Vla2x5IGVhcm5pbmdzICwgdG90YWwgZW1wbG95ZWVzIGFuZCB0aGUgYmVuY2htYXJrIG9mIHRoZSBDb3VudHkgbGV2ZWwgcmVnaW9uYWwgR1ZBIGVzdGltYXRlcyBmcm9tIE9OUy4gRXN0aW1hdGVzIHN1Z2dlc3QgdGhhdCBBcnVuIGhhcyB0aGUgbG93ZXN0IEdWQSBwZXIgaGVhZCwgYW5kIHVuc3VycHJpc2luZ2x5IENyYXdsZXkgdGhlIGhpZ2hlc3QgYXQgwqM1NywyOTAuIEdWQSBmaWd1cmVzIGFyZSB3b3JrcGxhY2UtYmFzZWQgaS5lLiBiYXNlZCBvbiBvdXRwdXQgcHJvZHVjZWQgYXQgdGhlIHdvcmtwbGFjZTsgR1ZBIHBlciBoZWFkIGlzIHdoZXJlIEdWQSBpcyBleHByZXNzZWQgYXMgYSB2YWx1ZSBwZXIgcmVzaWRlbnQgcG9wdWxhdGlvbixhbmQgdGhlcmVmb3JlIGlzIG1peGluZyB3b3JrcGxhY2UgYW5kIHJlc2lkZW50IGJhc2VkIG1lYXN1cmVzLiBXZSBuZWVkIHRvIGJlIG1pbmRmdWwgdGhhdCBHVkEgcGVyIGhlYWQgY2FuIHByb2R1Y2Ugc2xpZ2h0bHkgbWlzbGVhZGluZyByZXN1bHRzIHNvIHRoYXQgd2hlcmUgdGhlcmUgaXMgYSBoaWdoIGxldmVsIG9mIGNvbW11dGluZyBvdXQgb2YgYW4gYXJlYSB0aGUgR1ZBIHBlciBoZWFkIGZpZ3VyZSBjb3VsZCBiZSB1bmRlcnN0YXRlZCBhcyB0aGUgd2VhbHRoIGNyZWF0aW9uIG9mIHRob3NlIHdobyBjb21tdXRlIGlzIGNvdW50ZWQgYXQgdGhlaXIgd29ya3BsYWNlLiBBcmVhcyB3aGVyZSB0aGVyZSBpcyBhIGhpZ2ggbGV2ZWwgb2YgaW4tY29tbXV0aW5nIGNhbiBwcm9kdWNlIG92ZXIgc3RhdGVkIGxldmVscyBvZiBHVkEgcGVyIGhlYWQuIFRoYXQgc2FpZCBHVkEgcGVyIGhlYWQgbWVhc3VyZXMgYXJlIHdpZGVseSB1c2VkIHRvIGluZGljYXRlIHRoZSBlY29ub21pYyB3ZWxsLWJlaW5nIG9mIGFuIGFyZWEgYW5kIHRvIHByb3ZpZGUgY29tcGFyaXNvbi9iZW5jaG1hcmtpbmcgd2l0aCBvdGhlciBhcmVhcy5cXG5cXG5XU0NDIGlzIGNvbW1pdHRlZCB0byBpbXByb3ZpbmcgR1ZBIHBlciBjYXBpdGEgaW4gV2VzdCBTdXNzZXggd2hpY2ggaXMgY3VycmVudGx5IGJlbG93IHRoYXQgb2Ygb3VyIG5laWdoYm91cnMgYW5kIHRoZSBTb3V0aCBFYXN0IGF2ZXJhZ2UgYW5kIGFzIGEgcmVzcG9uc2UsIGlzIGRldmVsb3BpbmcgYXBwcm9hY2hlcyB0aGF0LCBvdmVyIHRoZSBsb25nZXIgdGVybSAsaXMgaW50ZW5kZWQgdG8gZW5jb3VyYWdlIGVjb25vbWljIGdyb3d0aC4gVGhlIGluaXRpYXRpdmVzIGluY2x1ZGUgdGhlIGRldmVsb3BtZW50IG9mIGEgc2VyaWVzIG9mIEJvbGQgSWRlYXMsIHdoaWNoLCBpZiBzdWNjZXNzZnVsIHNob3VsZCBjcmVhdGUgYSBlbmNvdXJhZ2UgZWNvbm9taWMgYWN0aXZpdHkgdGhhdCB3aWxsIHBvc2l0aXZlbHkgYWZmZWN0IHRoZSBXZXN0IFN1c3NleCBFY29ub215LCB0aGVzZSBpZGVhcyBidWlsZCBvbiB0aGUgY291bnR54oCZcyBleGlzdGluZyBlY29ub21pYyBhc3NldHMgdG8gZHJhdyBtb3JlIGhpZ2ggdmFsdWUgam9icyBpbnRvIHRoZSBhcmVhLCBzZWNvbmRseSB0aGV5IGludGVuZCB0byBsZXZlcmFnZSB0aGUgQ291bnR54oCZcyBsb2NhdGlvbiB0byBMb25kb24sIHRvIGF0dHJhY3QgQ2FwaXRhbC9zIGN1cnJlbnQgYW5kIGZ1dHVyZSB5b3VuZyB3ZWFsdGggY3JlYXRvcnMgaW50byB0aGUgY291bnR5LlxcblxcblRoZSBIZWFsdGggYW5kIExpZmUgU2NpZW5jZXMgc2VjdG9yIGhhcyBiZWVuIGlkZW50aWZpZWQgYXMgYmVpbmcgYSBwcmlvcml0eSBzZWN0b3IgZm9yIGdyb3d0aCBpbiBXZXN0IFN1c3NleCwgYW5kIHRoZSBDb3VuY2lsIGlzIGNvbnNpZGVyaW5nIGhvdyBiZXN0IHRvIGludmVzdCBpbnRvIHRoZSBzZWN0b3IuIEEgSGVhbHRoIGFuZCBMaWZlIFNjaWVuY2VzIGNsdXN0ZXIgZW5nYWdlbWVudCBldmVudCBmb3IgYnVzaW5lc3NlcyBhbmQga2V5IHBhcnRuZXJzIHdhcyBoZWxkIGluIEp1bHkgYnJpbmdpbmcgdG9nZXRoZXIgbG9jYWwgY29tcGFuaWVzIGFsb25nIHdpdGggcGFydG5lcnMsIHN1Y2ggYXMgaG9zcGl0YWxzLCBDQ0dzIGFuZCB1bml2ZXJzaXRpZXMgYW5kIGNyZWF0aW5nIGFuIG9wcG9ydHVuaXR5IGZvciBuZXR3b3JraW5nIGFzIHdlbGwgaW5mb3JtaW5nIHRoZSBkZWJhdGUgb24gaG93IGludmVzdG1lbnRzIHNob3VsZCBiZSBiZXN0IG1hZGUgdG8gaGVscCBncm93dGggYW5kIHdoYXQgcm9sZSBwYXJ0bmVycyBjYW4gcGxheSBpbiBkZXZlbG9waW5nIHRoZSBzZWN0b3IuXFxuXFxuSXQgaXMgdGhlIGNvdW5jaWzigJlzIGFtYml0aW9uIHRvIGNyZWF0ZSBuZXcgZWNvbm9taWMgYXNzZXRzIHRvIHRoZSBzb3V0aCBvZiBHYXR3aWNrIEFpcnBvcnQgYW5kIHRvIGVuY291cmFnZSBtb3JlIGhpZ2ggdmFsdWUgR1ZBIGJ1c2luZXNzZXMgdG8gYmFzZSB0aGVtc2VsdmVzIGluIHRoZSBhcmVhIGFuZCBpcyBleHBsb3JpbmcgdGhlIGlkZWEgb2YgZXN0YWJsaXNoaW5nIGEgbXVsdGktdGVuYW50ZWQgY29sZCBjaGFpbiBzdG9yYWdlIGZhY2lsaXR5IGZvciB1c2UgYnkgcGhhcm1hY2V1dGljYWwgYW5kIGJpbyBlbmdpbmVlcmluZyBjb21wYW5pZXMsIGluIGNsb3NlIHByb3hpbWl0eSB0byBHYXR3aWNrIEFpcnBvcnQuIFRoZSBmYWNpbGl0eSB3b3VsZCBiZSBpbnRlZ3JhbGx5IGxpbmtlZCB0byBDb2FzdCB0byBDYXBpdGFs4oCZcyBTdHJhdGVnaWMgRWNvbm9taWMgUGxhbuKAmXMgYW1iaXRpb25zIHRvIGdyb3cgdHJhZGUgd2l0aCB0aGUgQXNzb2NpYXRpb24gb2YgU291dGhlYXN0IEFzaWEgKEFTRUFOKSBOYXRpb25zLiBHYXR3aWNrIGl0c2VsZiBoYXMgcm91dGUgc3RyYXRlZ2llcyBhcm91bmQgQVNFQU4gTmF0aW9ucywgYW5kIHRoZSBkZW1hbmQgZm9yIGhlYWx0aGNhcmUgcHJvZHVjdHMsIHNlcnZpY2VzIGFuZCBpbm5vdmF0aW9uIGlzIGdyb3dpbmcgaHVnZWx5IGluIHRob3NlIHNlY3RvcnMuXFxuXFxuVGhlIFdlc3QgU3Vzc2V4IFdlZWtlbmRzIGNhbXBhaWduIHdhcyBsYXVuY2hlZCBpbiB0aGUgZWFybHkgc3VtbWVyIGFpbWluZyB0byBhcHBlYWwgdG8geW91bmcgdXJiYW4gcHJvZmVzc2lvbmFscyBsaXZpbmcgaW4gTG9uZG9uLCBieSBwb3NpdGlvbmluZyBXZXN0IFN1c3NleCBhcyBhICdnbyB0bycgcGxhY2UgZm9yIGhlYWx0aHksIGFjdGl2ZSwgb3V0ZG9vciBzaG9ydCBicmVha3MuIFRoZSBjYW1wYWlnbiBhbmQgY29ycmVzcG9uZGluZyB3ZWJzaXRlIFt3d3cud2VzdC1zdXNzZXgtd2Vla2VuZHMuY29tXVswXSB3YXMgbGF1bmNoZWQgb24gMTR0aCBKdW5lIGFuZCBzbyBmYXIgaGF2ZSBzZWVuIGltcHJlc3NpdmUgcHJlbGltaW5hcnkgYW5hbHl0aWNzIHJlc3VsdHMuIENhbXBhaWduIHZpc3VhbHMgYW5kIGZ1bGwtcGFnZSBlZGl0b3JpYWxzIGhhdmUgYmVlbiBmZWF0dXJlZCBpbiBib3RoIHRoZSBNZXRybyBhbmQgRXZlbmluZyBTdGFuZGFyZC4gVGhlcmUgaXMgY3VycmVudGx5IHNvbWUgZm9sbG93LXVwIHdvcmsgdW5kZXJ3YXkgdGhhdCB3aWxsIGFzc2VzcyB0aGUgZWZmZWN0aXZlbmVzcyBvZnRoZSBjYW1wYWlnbiB0byBkYXRlLlxcblxcbkluIGFkZGl0aW9uIERpc3RyaWN0IC8gQm9yb3VnaCBQbGFjZSBQbGFucyBhcmUgYmVpbmcgZGV2ZWxvcGVkIGFuZCBHcm93dGggQm9hcmRzIGhhdmUgYmVlbiBlc3RhYmxpc2hlZCB0byBzdXBwb3J0IHRoZWlyIGRldmVsb3BtZW50LiBUb2dldGhlciB0aGVzZSB3aWxsIGZvcm0gdGhlIFdlc3QgU3Vzc2V4IEdyb3d0aCBQbGFuLCBhIGNsZWFyIEludmVzdG1lbnQgYW5kIERlbGl2ZXJ5IFBsYW4gd2hpY2ggd2lsbCBlbnN1cmUgdGhhdCBjcm9zcyBjb3VudHkgaXNzdWVzIGFyZSBhZGRyZXNzZWQg4oCTIGUuZy4gc3RyYXRlZ2ljIHJvYWQsIHJhaWwsIHRyYW5zcG9ydCwgc2tpbGxzLCB1dGlsaXRpZXMsIE5IUywgU0ROUDsgdGhhdCBjcm9zcyBhdXRob3JpdHkgLyBzdGFrZWhvbGRlciBmdW5kaW5nIG9wcG9ydHVuaXRpZXMsIHByaW9yaXRpZXMgYW5kIHByb3Bvc2FscyBhcmUgYWRkcmVzc2VkIGFuZCB3aWxsIHByb3ZpZGUgYSBjbGVhciBsb2JieWluZyB0b29sIHRoYXQgd2lsbCBzZWN1cmUgZnVuZGluZy4gVGhlIGFtYWxnYW1hdGVkIEdyb3d0aCBQbGFuIHdpbGwgYmUgZHJhZnRlZCBieSBlbmQgRGVjZW1iZXIgMjAxNS5cXG5cXG5bMF06IGh0dHA6Ly93d3cud2VzdC1zdXNzZXgtd2Vla2VuZHMuY29tXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkNvbXBhcmlzb24gb2YgbWVkaWFuIGVhcm5pbmdzIHdpdGhpbiBXZXN0IFN1c3NleCBEaXN0cmljdCBhbmQgQm9yb3VnaHNcXG5cXG5cIn0se1widHlwZVwiOlwidml6XCIsXCJkYXRhc2V0XCI6XCIyY2I4LWo4czJcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiQ29tcGFyaXNvbiBvZiBHVkEgYWdhaW5zdCByZWdpb25hbCBhbmQgbmF0aW9uYWwgcGVyZm9ybWFuY2Ugb3ZlciB0aW1lXCJ9LHtcInR5cGVcIjpcInZpelwiLFwiZGF0YXNldFwiOlwicGkyNC04ZnZiXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbmNyZWFzaW5nIHdvcmtwbGFjZSBiYXNlZCBHcm9zcyBWYWx1ZSBBZGRlZCAoR1ZBKSBwZXIgaGVhZCB0byBiZSBhYm92ZSB0aGUgU291dGggRWFzdCBhdmVyYWdlIGJ5IDIwMjJcIixcInVzZV9jdXN0b21fc3VidGl0bGVcIjpmYWxzZSxcImN1c3RvbV9zdWJ0aXRsZVwiOlwiXCIsXCJ0aXRsZV9pbWFnZVwiOlwiL2FwaS9hc3NldHMvM0Y1MDlCOEMtQjcxNy00RTdFLUI0MUItNDA3RDc1Q0ZEOUY4XCJ9In0sInByZXZhaWxpbmdfbWVhc3VyZSI6eyJzdGFydCI6IjE5OTctMDEtMDFUMDA6MDA6MDAuMDAwIiwiZW5kIjoiMjAxOC0wMy0zMVQyMzo1OTo1OS4wMDAiLCJ1bml0IjoiwqNzIHBlciBoZWFkIiwidGFyZ2V0IjoyMTE4MCwidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6Mjc4NDcsIm1ldHJpYyI6eyJtZXRhZGF0YSI6IiIsImlkIjoiNjljZC1lNWc2In0sImNvbXBhcmlzb24iOnsiY29tcGFyaXNvbl9mdW5jdGlvbiI6Ij4ifSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJlZGl0XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6MSxcIm1vbnRoXCI6MCxcInllYXJcIjoxOTk3fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcImluY3JlYXNlXCIsXCJ0YXJnZXRfdHlwZVwiOlwiYWJzb2x1dGVcIixcIm1haW50YWluX3R5cGVcIjpcIj5cIn0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH19LFwic3RhcnRcIjpcIjIwMTQtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTQtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifSxcInR5cGVcIjpcInN0YXRpY1wifSxcIm5hbWVcIjpcIkdyb3NzIFZhbHVlIEFkZGVkIChHVkEpIHBlciBoZWFkIG9mIHBvcHVsYXRpb25cIixcInlTY2FsZVwiOntcInVzZV9kZWZhdWx0XCI6dHJ1ZSxcIm1heFwiOjI2MDAwfSxcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOmZhbHNlLFwicHJvZ3Jlc3Nfb3ZlcnJpZGVcIjpcImdvb2RcIixcImlzX2J1cm5kb3duX2Rpc2FibGVkXCI6ZmFsc2UsXCJpc190cmVuZGxpbmVfZGlzYWJsZWRcIjp0cnVlfSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOToxNDo1OS4wNzhaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MTQ6NTkuMDc4WiIsInRhcmdldF90b2xlcmFuY2UiOjI2MjYsImlkIjoibjRxaC1jZDV6In0sInJlbGF0ZWRfbWVhc3VyZXMiOltdLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjE1OjI0LjMwNloiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOToxNDo1OS4xMjFaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MTU6MjQuMzA2WiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoiYjg3My1lem04IiwibmFtZSI6IkF2ZXJhZ2UgR3Jvc3MgV2Vla2x5IEVhcm5pbmdzIGZvciByZXNpZGVudHMgaW4gV2VzdCBTdXNzZXgiLCJpc19wdWJsaWMiOnRydWUsIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wicmV0aXJlbWVudF9uYXJyYXRpdmVcIjpbXSxcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkF2ZXJhZ2UgZ3Jvc3Mgd2Vla2x5IGVhcm5pbmdzIGZvciBmdWxsIHRpbWUgd29ya2VycyB3aG8gbGl2ZSBpbiBXZXN0IFN1c3NleCoqXFxuXFxuVGhlIEFubnVhbCBTdXJ2ZXkgb2YgSG91cnMgYW5kIEVhcm5pbmdzIChBU0hFKSBwcm92aWRlcyBkYXRhIG9uIGVhcm5pbmdzIGxldmVscyBkb3duIHRvIGxvY2FsIGF1dGhvcml0eSBnZW9ncmFwaGllcyBmb3IgYm90aCB0aG9zZSBsaXZpbmcgaW4gdGhlIGFyZWEgYW5kIHRob3NlIHdvcmtpbmcgaW4gdGhlIGFyZWEuIFRoaXMgbWVhc3VyZSBpcyBhIHJlc2lkZW50IGJhc2VkIG1lYXN1cmUg4oCTIGkuZS4gaXQgaXMgbWVhc3VyaW5nIHRoZSBlYXJuaW5ncyBsZXZlbHMgZm9yIHJlc2lkZW50cyBpbiBXZXN0IFN1c3NleCB3aGVyZXZlciB0aGV5IG1pZ2h0IGJlIHdvcmtpbmcuIFRoZSBBU0hFIGRhdGEgaXMgcHVibGlzaGVkIGFubnVhbGx5IGJ5IE9OUy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgLSBEZWNlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcbioqQXZlcmFnZSBncm9zcyB3ZWVrbHkgZWFybmluZ3MgZm9yIGZ1bGwgdGltZSB3b3JrZXJzIHdobyBsaXZlIGluIFdlc3QgU3Vzc2V4KipcXG5cXG5UaGUgQW5udWFsIFN1cnZleSBvZiBIb3VycyBhbmQgRWFybmluZ3MgKEFTSEUpIGlzIGEgVUsgd2lkZSBzdXJ2ZXkgdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBvbiBob3VybHksIHdlZWtseSBhbmQgYW5udWFsIGVhcm5pbmdzIGJ5IGdlbmRlciBhbmQgd29yayBwYXR0ZXJucyxhbmQgYXQgbmF0aW9uYWwgYW5kIHJlZ2lvbmFsIGxldmVsIGdlb2dyYXBoaWVzIG9uIGluZHVzdHJ5IGFuZCBvY2N1cGF0aW9uLGluY2x1ZGluZyBwdWJsaWMgdmVyc3VzIHByaXZhdGUgc2VjdG9yIHBheSBjb21wYXJpc29ucy4gVGhlIGFubnVhbCBzZXJpZXMgZGF0ZXMgYmFjayB0byAxOTk3IGFuZCB0aGUgbGF0ZXN0IGRhdGEgaXMgZm9yIDIwMTcgd2l0aCB0aGUgMjAxOCBkYXRhIGV4cGVjdGVkIHRvIGJlIHJlbGVhc2VkIGxhdGVyIGluIE5vdmVtYmVyLiBUaGUgZGF0YSBpcyBnZW5lcmFsbHkgYXZhaWxhYmxlIGF0IGxvY2FsIGF1dGhvcml0eSBsZXZlbCwgdGhvdWdoIGluIHNvbWUgY2FzZXMsIGJlY2F1c2Ugb2Ygc2FtcGxpbmcgaXNzdWVzIHRoZSBkYXRhIGlzIHNvbWV0aW1lcyBzdXBwcmVzc2VkIGZvciBwYXJ0aWN1bGFyIHZhcmlhYmxlcyBhbmQgaXMgbm90IGF2YWlsYWJsZSBhdCBkaXN0cmljdCBsZXZlbCBieSBpbmR1c3RyaWFsIHNlY3RvciBvciBvY2N1cGF0aW9uYWwgdHlwZXMuIFRoaXMgbWVhc3VyZSBpcyBhIHJlc2lkZW50IGJhc2VkIG1lYXN1cmUg4oCTIGkuZS4gaXQgaXMgbWVhc3VyaW5nIHRoZSBlYXJuaW5ncyBsZXZlbHMgZm9yIHJlc2lkZW50cyBpbiBXZXN0IFN1c3NleCB3aGVyZXZlciB0aGV5IG1pZ2h0IGJlIHdvcmtpbmcuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0REOEJCMDc2LUQ4MDQtNDQzQi05REZELUI0RDNCODU5MDM3OVwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0JBMERFMkE3LTgzNzMtNDFDOC05NEI1LTEyRUEzQTNGNDcyMlwifV0sW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIldlc3QgU3Vzc2V4IGdyb3NzIHdlZWtseSBlYXJuaW5ncyBmb3IgZnVsbCB0aW1lIHdvcmtlcnMgbGV2ZWxzIGRvIG5vdCBtZWFzdXJlIGZhdm91cmFibHkgY29tcGFyZWQgd2l0aCB0aGUgbmF0aW9uYWwgYW5kIHJlZ2lvbmFsIGxldmVscywgdGhlIGVhcm5pbmdzIGxldmVscyBmb3IgV2VzdCBTdXNzZXggYXJlIGxvd2VyIHRoYW4gYm90aCB0aGVzZSBhcmVhcy4gSW5kZWVkIG92ZXIgdGhlIHllYXIgMjAxNi0yMDE3IGVhcm5pbmdzIGxldmVscyBmZWxsIGluIFdlc3QgU3Vzc2V4LCBhIHRyZW5kIHNlZW4gaW4gNSBvZiB0aGUgMTkgdXBwZXIgdGllciBhdXRob3JpdGllcyBpbiB0aGUgU291dGggRWFzdCwgUmVhZGluZyBoYWQgc2VlbiBhbiA3LjglIGluY3JlYXNlIGluIGVhcm5pbmdzLFdlc3QgU3Vzc2V4IGEgZmFsbCBvZiAwLjUlIGFuZCBXb2tpbmdoYW0gdGhlIGhpZ2hlc3QgZHJvcCBvZiA5LjUlLiBSZWdpb25hbGx5IGVhcm5pbmdzIGxldmVscyBpbmNyZWFzZSBieSAyLjUlIG92ZXIgdGhlIHllYXIgYW5kIHRoZXJlIHdhcyBhIDIlIGluY3JlYXNlIEVuZ2xhbmQgYXMgYSB3aG9sZS4gQ29tcGFyZWQgd2l0aCB0aGUgMTkgdXBwZXIgdGllciBhdXRob3JpdGllcyBpbiB0aGUgU291dGggRWFzdCByZWdpb24gV2VzdCBTdXNzZXggYXZlcmFnZSBncm9zcyB3ZWVrbHkgZWFybmluZ3MgbGV2ZWxzIHJhbmtzIGFzIHRoZSA1dGggbG93ZXN0IGxldmVsLlxcblxcbiBcXG5cXG5XZXN0IFN1c3NleCBsZXZlbCBvZiBlYXJuaW5ncyBjb21wYXJlcyBtb3JlIGZhdm91cmFibHkgd2l0aCBpdHMgc3RhdGlzdGljYWwgbmVpZ2hib3VycywgaXQgcmVtYWlucyBpbiB0aGUgaGlnaGVzdCBxdWFydGlsZSwgdGhvdWdoIGlzIMKjNDkuNiBwZXIgd2VlayBsb3dlciB0aGFuIHRoZSBsZXZlbHMgc2VlbiBpbiBIYW1wc2hpcmVcXG5cXG5cIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlcmUgaXMgc2lnbmlmaWNhbnQgdmFyaWF0aW9uIGluIHJlc2lkZW50IGVhcm5pbmdzIGxldmVscyB3aXRoaW4gV2VzdCBTdXNzZXggd2l0aCBBZHVyIGhhdmluZyB0aGUgbG93ZXN0IGxldmVscyBvZiBlYXJuaW5ncyDigJMgYXQgYXJvdW5kIMKjNDc4IHBlciB3ZWVrIGNvbXBhcmVkIHdpdGggdGhhdCBpbiBNaWQgU3Vzc2V4IG9mIMKjNjUyLiBBcnVuLCBDaGljaGVzdGVyIGFuZCBNaWQgU3Vzc2V4IHNhdyBzb21lIGluY3JlYXNlIGluIHRoZSB3ZWVrbHkgbGV2ZWwgb2YgZWFybmluZ3Mgb3ZlciB0aGUgbGFzdCB5ZWFyICgyMDE2LTIwMTcpIHRoZSBoaWdoZXN0IGluY3JlYXNlIGJlaW5nIGluIEFydW4gb2YgNy41JSwgYW5kIGZhbGxzIGluIGVhcm5pbmdzIHdlcmUgc2VlbiBpbiB0aGUgcmVtYWluaW5nIGxvY2FsIGF1dGhvcml0eSBhcmVhcyDigJMgdGhlIGxhcmdlc3QgZHJvcCBiZWluZyBzZWVuIGluIENyYXdsZXkgd2hlcmUgZWFybmluZ3Mgb2YgcmVzaWRlbnRzIGZlbGwgYnkgNi43JS5cXG5cXG5Db21wYXJpc29uIGJldHdlZW4gdGhlIGVhcm5pbmdzIGZvciB0aG9zZSB3aG8gbGl2ZSBpbiB0aGUgY291bnR5IGFuZCB0aG9zZSB3aG8gd29yayBpbiB0aGUgY291bnR5IHNob3cgdGhhdCB3aXRoIHRoZSBleGNlcHRpb24gb2YgQ3Jhd2xleSBhbmQgQWR1ciByZXNpZGVudCBlYXJuaW5ncyBhcmUgaGlnaGVyLiBUaGUgYmlnZ2VzdCBkaWZmZXJlbmNlIGlzIGluIE1pZCBTdXNzZXggd2hlcmUgZWFybmluZ3MgZm9yIHRob3NlIGxpdmluZyBpbiBNaWQgU3Vzc2V4IGFyZSwgb24gYXZlcmFnZSwgwqMxMDggaGlnaGVyIHRoYW4gZm9yIHRob3NlIHdvcmtpbmcgaW4gdGhlIGRpc3RyaWN0LiBJbiBBZHVyIGVhcm5pbmdzIGZvciB0aG9zZSB3b3JraW5nIGluIHRoZSBhcmVhIGFyZSDCozEzLjUgdGhhbiB0aGUgZWFybmluZ3MgZm9yIHJlc2lkZW50cyBhbmQgaW4gQ3Jhd2xleSBlYXJuaW5ncyBmb3IgdGhvc2Ugd29ya2luZyBpbiBDcmF3bGV5IGFyZSDCozY2IHBlciB3ZWVrIGhpZ2hlciB0aGFuIGVhcm5pbmdzIG9mIHJlc2lkZW50czsgaW5kZWVkIENyYXdsZXkgaGFzIHRoZSBoaWdoZXN0IGxldmVsIG9mIHdvcmtwbGFjZSBiYXNlZCBlYXJuaW5ncyBpbiBXZXN0IFN1c3NleOKAk2luZGljYXRpbmcgdGhhdCBsb2NhbCByZXNpZGVudHMgYXJlIG5vdCBhY2Nlc3NpbmcgbG9jYWwsIG1vcmUgaGlnaGx5IHBhaWQsIGFuZCBoaWdobHkgc2tpbGxlZCBqb2JzLCB0aG91Z2ggdGhlIHdvcmtwbGFjZSBlYXJuaW5ncyBoYXZlIGRlY3JlYXNlZCBvdmVyIHRoZSB5ZWFyLlxcblxcbiBcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvNjI3NkM3NkUtMDUwMy00QUM3LTgzMEYtMjczQzgwMEI3NjcxXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzU0MDFFODFDLUU4MDUtNEI0My04RjlDLUM0NTg5RDE4NDFEMlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkF2ZXJhZ2UgZ3Jvc3Mgd2Vla2x5IGVhcm5pbmdzIGZvciBmdWxsIHRpbWUgd29ya2VycyB3aG8gbGl2ZSBpbiBXZXN0IFN1c3NleCoqXFxuXFxuVGhlIEFubnVhbCBTdXJ2ZXkgb2YgSG91cnMgYW5kIEVhcm5pbmdzIChBU0hFKSBwcm92aWRlcyBkYXRhIG9uIGVhcm5pbmdzIGxldmVscyBkb3duIHRvIGxvY2FsIGF1dGhvcml0eSBnZW9ncmFwaGllcyBmb3IgYm90aCB0aG9zZSBsaXZpbmcgaW4gdGhlIGFyZWEgYW5kIHRob3NlIHdvcmtpbmcgaW4gdGhlIGFyZWEuIFRoaXMgbWVhc3VyZSBpcyBhIHJlc2lkZW50IGJhc2VkIG1lYXN1cmUg4oCTIGkuZS4gaXQgaXMgbWVhc3VyaW5nIHRoZSBlYXJuaW5ncyBsZXZlbHMgZm9yIHJlc2lkZW50cyBpbiBXZXN0IFN1c3NleCB3aGVyZXZlciB0aGV5IG1pZ2h0IGJlIHdvcmtpbmcuIFRoZSBBU0hFIGRhdGEgaXMgcHVibGlzaGVkIGFubnVhbGx5IGJ5IE9OUy5cXG5cXG5cIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJXZXN0IFN1c3NleCByZXNpZGVudCBiYXNlZCB3ZWVrbHkgZWFybmluZ3MgYXJlIGxvd2VyIHRoYW4gdGhlIHJlZ2lvbmFsIGxldmVsLCBidXQgaGlnaGVyIHRoYW4gZm9yIEVuZ2xhbmQuXFxuXFxuV2VzdCBTdXNzZXggZG9lcyBub3QgY29tcGFyZSBmYXZvdXJhYmx5IGNvbXBhcmVkIHdpdGggdGhlIDE5IHVwcGVyIHRpZXIvdW5pdGFyeSBhdXRob3JpdHkgYXJlYXMgaW4gdGhlIFNvdXRoIEVhc3QgcmVnaW9uIGJlY2F1c2Ugb2YgY291cnNlIHRoZSBlYXJuaW5ncyBsZXZlbHMgYXJlIHNvbWUgb2YgdGhlIGhpZ2hlc3QsIG91dHNpZGUgTG9uZG9uLCBpbiB0aGUgY291bnR5IOKAkyBwYXJ0aWN1bGFybHkgdGhvc2Ugb2YgU3VycmV5LCBCdWNraW5naGFtc2hpcmUsIFdlc3QgQmVya3NoaXJlIHByb2JhYmx5IGJlY2F1c2Ugb2YgdGhlaXIgY2xvc2UgcHJveGltaXR5IHRvIExvbmRvbiBsZW5kaW5nIHRoZW1zZWx2ZXMgdG8gaGlnaCBsZXZlbHMgb2Ygb3V0IGNvbW11dGluZyB0byBMb25kb24uIFRoZSBwaWN0dXJlIGlzIGRpZmZlcmVudCB0aG91Z2ggd2hlbiBjb21wYXJpbmcgcmVzaWRlbnQgZWFybmluZ3MgbGV2ZWxzIHdpdGggU3RhdGlzdGljYWwgTmVpZ2hib3VycyDigJNhcyBzaG93biByaWdodC5cXG5cXG5cIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9EMjQ4MUU5OC1GRTgwLTRCRTItQkQ2NC0xNjYxODdFQTFGMUVcIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiV2VzdCBTdXNzZXggbGllcyBpbiB0aGUgdG9wIHF1YXJ0aWxlIHdoZW4gY29tcGFyZWQgd2l0aCBTdGF0aXN0aWNhbCBOZWlnaGJvdXIgYXV0aG9yaXRpZXMg4oCTIGhvd2V2ZXIgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBnYXAgYmV0d2VlbiB0aGUgaGlnaGVzdCBsZXZlbCBhcyBzZWVuIGluIEVzc2V4IGFuZCB0aGF0IGZvciBXZXN0IFN1c3NleCwgdGhlIGFtYml0aW9uIGlzLCB0aGVyZWZvcmUgdG8gbWF0Y2ggdGhlIG92ZXJhbGwgU291dGggRWFzdCAocmVnaW9uYWwpIGVhcm5pbmdzIGxldmVscy5cXG5cXG5UaGVyZSBpcyBzaWduaWZpY2FudCB2YXJpYXRpb24gaW4gcmVzaWRlbnQgZWFybmluZ3MgbGV2ZWxzIHdpdGhpbiBXZXN0IFN1c3NleCB3aXRoIEFkdXIgYW5kIEFydW4gaGF2aW5nIHRoZSBsb3dlc3QgbGV2ZWxzIG9mIGVhcm5pbmdzIOKAkyBhdCBhcm91bmQgwqM0NzcgcGVyIHdlZWsgY29tcGFyZWQgd2l0aCB0aGF0IGluIEhvcnNoYW0gYW5kIE1pZCBTdXNzZXggb2YgwqM2MjIuXFxuXFxuQ29tcGFyaXNvbiBiZXR3ZWVuIHRoZSBlYXJuaW5ncyBmb3IgdGhvc2Ugd2hvIGxpdmUgaW4gdGhlIGNvdW50eSBhbmQgdGhvc2Ugd2hvIHdvcmsgaW4gdGhlIGNvdW50eSBzaG93IHRoYXQgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIENyYXdsZXkgcmVzaWRlbnQgZWFybmluZ3MgYXJlIGhpZ2hlci4gSW4gQ3Jhd2xleSBob3dldmVyLCBlYXJuaW5ncyBmb3IgdGhvc2Ugd29ya2luZyBpbiBDcmF3bGV5IGFyZSBjb25zaWRlcmFibHkgaGlnaGVyIHRoYW4gZWFybmluZ3Mgb2YgcmVzaWRlbnRzLCBhbmQgaW5kZWVkIENyYXdsZXkgaGFzIHRoZSBoaWdoZXN0IGxldmVsIG9mIHdvcmtwbGFjZSBiYXNlZCBlYXJuaW5ncyBpbiBXZXN0IFN1c3NleCDigJNpbmRpY2F0aW5nIHRoYXQgbG9jYWwgcmVzaWRlbnRzIGFyZSBub3QgYWNjZXNzaW5nIGxvY2FsLCBtb3JlIGhpZ2hseSBwYWlkLCBhbmQgaGlnaGx5IHNraWxsZWQgam9icy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRjg0Q0NCNzAtRkU3NS00QTJCLTg0RDQtRTlERDcyMjI3RTRGXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gU2VwdGVtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIGxhdGVzdCBkYXRhIGZvciBHcm9zcyBWYWx1ZSBBZGRlZCAoR1ZBKSB3YXMgcmVsZWFzZWQgaW4gRGVjZW1iZXIgMjAxNiBhbmQgY292ZXJzIHRoZSBwZXJpb2QgdXAgdG8gMjAxNS4gVGhlIG5leHQgcmVsZWFzZSBvZiB0aGlzIGRhdGEgZnJvbSBPTlMgaXMgZXhwZWN0ZWQgaW4gaXMgYSByZWNvZ25pc2VkIG1lYXN1cmUgb2YgZWNvbm9taWMgYWN0aXZpdHkgYnJvYWRseSBkZWZpbmVkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHZhbHVlIG9mIHRoZSBnb29kcyBhbmQgc2VydmljZXMgcHJvZHVjZWQgYW5kIHRoZSBjb3N0IG9mIHJhdyBtYXRlcmlhbHMgYW5kIG90aGVyIGlucHV0cyB1c2VkIGluIHByb2R1Y3Rpb24uIFRoZSBkYXRhIGlzIHJlbGVhc2VkIGFubnVhbGx5IGZyb20gT05TLCBhbmQgaW5jbHVkZXMgdGhlIHN1Yi1yZWdpb25hbCBlc3RpbWF0ZXMgZm9yIEdWQSBmb3IgdGhlIHR3byBXZXN0IFN1c3NleCBTdWIgQXJlYXM6XFxuXFxuXCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiMS4gKipXZXN0IFN1c3NleOKAk1NvdXRoIFdlc3QgKFdTU1cpIOKAkyBjb21wcmlzZXMgQ2hpY2hlc3RlciwgQXJ1biwgQWR1ciBhbmQgV29ydGhpbmcqKlxcblxcbjEuICoqV2VzdCBTdXNzZXjigJNOb3J0aCBFYXN0IChXU05FKSDigJMgY29tcHJpc2VzIENyYXdsZXksIEhvcnNoYW0gYW5kIE1pZCBTdXNzZXgqKlxcblxcblRoZSBsYXRlc3QgZGF0YSwgYWxyZWFkeSByZXBvcnRlZCwgd2FzIHJlbGVhc2VkIGluIERlY2VtYmVyIDIwMTYsIGFuZCBjb3ZlcnMgdGhlIHBlcmlvZCB1cCB0byAyMDE1LCB0aGUgZmlndXJlcyBhbmQgdHJlbmRzIGZvciB0aGUgdHdvIFdlc3QgU3Vzc2V4IGFyZWFzIHdlcmUgcmVwb3J0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgcXVhcnRlciBhbmQgdGhlcmUgaXMgbm8gdXBkYXRlIGluIHRlcm1zIG9mIHRoZSBsb2NhbCBwaWN0dXJlLiBUaGUgbmV4dCByZWxlYXNlIG9mIGRhdGEgaXMgZXhwZWN0ZWQgaW4gRGVjZW1iZXIgMjAxNy5cXG5cXG5Ib3dldmVyLCBpbiBNYXJjaCAyMDE3IHRhYmxlcyBzaG93aW5nIEdWQSBhbGxvY2F0ZWQgdG8gbG9jYWwgYXV0aG9yaXRpZXMgaW4gdGhlIFVLIHdlcmUgcmVsZWFzZWQsIHRoZSBkYXRhIHdhcyBwcm9kdWNlZCBpbiByZXNwb25zZSB0byB1c2VyIG5lZWQgYnV0IHdoaWxlIG5vdCBOYXRpb25hbCBTdGF0aXN0aWNzLCBuZXZlcnRoZWxlc3MgZ2l2ZSBzb21lIGluZGljYXRpb24gYXMgdG8gdGhlIHNjYWxlIG9mIEdWQSBhdCBsb2NhbCBhdXRob3JpdHkgbGV2ZWwsIGFuZCB0aGUgY29udHJpYnV0aW9uIHRoYXQgZWFjaCBvZiB0aGUgYnJvYWQgbGV2ZWwgc2VjdG9ycyBtYWtlIHRvIHRoZSBsb2NhbCBlY29ub215LiBbaHR0cHM6Ly93d3cub25zLmdvdi51ay9lY29ub215L2dyb3NzdmFsdWVhZGRlZGd2YS9kYXRhc2V0cy9yZWdpb25hbGd2YWlieWxvY2FsYXV0aG9yaXR5aW50aGV1a11bMF1cXG5cXG5bMF06IGh0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZWNvbm9teS9ncm9zc3ZhbHVlYWRkZWRndmEvZGF0YXNldHMvcmVnaW9uYWxndmFpYnlsb2NhbGF1dGhvcml0eWludGhldWtcIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRjFDM0MyNEItRDdBNi00MzYxLTlFRkMtQzU3MUQ0NkU5Q0U4XCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMjdGQ0IxMTktMTg2Ni00RjVBLTgxMEUtNUI3RkZBMDBGQUJGXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZSBtYWluIHBvaW50cyBmcm9tIHRoZSAoT05TKSBzdW1tYXJ5IG9mIHRoZSAoR0IpIFNob3J0LXRlcm0gZWNvbm9taWMgaW5kaWNhdG9ycyBwdWJsaXNoZWQgaW4gZWFybHkgU2VwdGVtYmVyIDIwMTcgYXJlOlxcblxcbiogVG90YWwgcHJvZHVjdGlvbiBvdXRwdXQgc2F3IGEgc2xpZ2h0IGluY3JlYXNlIGluIHRoZSAzIG1vbnRocyB0byBKdWx5IDIwMTcgYW5kIGluY3JlYXNlZCBieSAwLjMlO1xcblxcbiogTWFudWZhY3R1cmluZyByZW1haW5zIHJlbGF0aXZlbHkgc3ViZHVlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSB5ZWFyLCB0aG91Z2ggc29tZSBncm93dGggc2VlbiBmcm9tIEp1bHkgYXR0cmlidXRlZCB0byBzdHJvbmdlciBncm93dGggaW4gY2FyIHByb2R1Y3Rpb247XFxuXFxuKiBDb25zdHJ1Y3Rpb24gb3V0cHV0IGZlbGwgZm9yIHRoZSBmb3VydGggbW9udGggaW4gYSByb3csIHdpdGggcHJpdmF0ZSBob3VzaW5nIGJ1aWxkaW5nIGNvbnRyYWN0aW5nIGluIEp1bHkgMjAxNyBhZnRlciBzZWVpbmcgZ3Jvd3RoIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHllYXIuXFxuXFxuW2h0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZWNvbm9teS9lY29ub21pY291dHB1dGFuZHByb2R1Y3Rpdml0eS9vdXRwdXQvYXJ0aWNsZXMvc2hvcnR0ZXJtaW5kaWNhdG9yc2Vjb25vbWljY29tbWVudGFyeS9zZXB0MjAxN11bMF1cXG5cXG5bMF06IGh0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZWNvbm9teS9lY29ub21pY291dHB1dGFuZHByb2R1Y3Rpdml0eS9vdXRwdXQvYXJ0aWNsZXMvc2hvcnR0ZXJtaW5kaWNhdG9yc2Vjb25vbWljY29tbWVudGFyeS9zZXB0MjAxN1wifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgNCAtIE1hcmNoIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIEFubnVhbCBTdXJ2ZXkgb2YgSG91cnMgYW5kIEVhcm5pbmdzIChBU0hFKSBpcyBhIFVLLXdpZGUgc3VydmV5IHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG91cmx5LCB3ZWVrbHkgYW5kIGFubnVhbCBlYXJuaW5ncyBieSBnZW5kZXIgYW5kIHdvcmsgcGF0dGVybnMsYW5kIGF0IG5hdGlvbmFsIGFuZCByZWdpb25hbCBsZXZlbCBnZW9ncmFwaGllcyBvbiBpbmR1c3RyeSBhbmQgb2NjdXBhdGlvbiwgaW5jbHVkaW5nIHB1YmxpYyB2ZXJzdXMgcHJpdmF0ZSBzZWN0b3IgcGF5IGNvbXBhcmlzb25zLiBUaGUgYW5udWFsIHNlcmllcyBkYXRlcyBiYWNrIHRvIDIwMDIsIHRob3VnaCB0aGVyZSBoYXZlIGJlZW4gc29tZSBtZXRob2RvbG9naWNhbCBjaGFuZ2VzIG92ZXIgdGhpcyB0aW1lLiBUaGUgZGF0YSBpcyBnZW5lcmFsbHkgYXZhaWxhYmxlIGF0IGxvY2FsIGF1dGhvcml0eSBsZXZlbCwgdGhvdWdoIGluIHNvbWUgY2FzZXMgZHVlIHRvIHNhbXBsaW5nIGlzc3VlcyB0aGUgZGF0YSBjYW4gYmUgc3VwcHJlc3NlZCBmb3IgcGFydGljdWxhciB2YXJpYWJsZXMuXFxuXFxuVGhlIGxhdGVzdCBmaWd1cmVzIGFyZSBmb3IgMjAxNiAocmVsZWFzZWQgT2N0b2JlciAyMDE2KSBhbmQgd2VyZSByZXBvcnRlZCBmb3IgV2VzdCBTdXNzZXggYW5kIGl0cyBsb2NhbCBhdXRob3JpdGllcyBhbG9uZyB3aXRoIGNvbXBhcmlzb25zIGF0IHJlZ2lvbmFsIGxhbmQgbmF0aW9uYWwgbGV2ZWwsIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIHF1YXJ0ZXIsIGFuZCB0aGVyZSBpcyBubyBmdXJ0aGVyIHVwZGF0ZSBhdCB0aGlzIGdlb2dyYXBoeS4gVGhlIG5leHQgcmVsZWFzZSBvZiBkYXRhIGlzIGV4cGVjdGVkIGluIE5vdmVtYmVyIDIwMTcuXFxuXFxuSG93ZXZlciwgc2luY2UgdGhlIHJlcG9ydGluZyBvZiB0aGUgbGFzdCBBbm51YWwgU3VydmV5IG9mIEhvdXJzIGFuZCBFYXJuaW5ncyBkYXRhLCBPTlMsIGluIERlY2VtYmVyIDIwMTYsIHJlbGVhc2VkIHNtYWxsIGFyZWEgbW9kZWwgYmFzZWQgaW5jb21lIGVzdGltYXRlcywgZm9yIHRoZSBmaW5hbmNpYWwgeWVhciBlbmRpbmcgMjAxNC4gVGhleSBhcmUgb2ZmaWNpYWwgZXN0aW1hdGVzIG9mIHdlZWtseSBob3VzZWhvbGQgaW5jb21lIGF0IG1pZGRsZSBsYXllciBzdXBlciBvdXRwdXQgYXJlYXMgKE1TT0EpIGNhbGN1bGF0ZWQgdXNpbmcgYSBtb2RlbCBiYXNlZCBtZXRob2QsIHVzaW5nIGEgY29tYmluYXRpb24gb2Ygc3VydmV5IGRhdGEsIHByZXZpb3VzbHkgcHVibGlzaGVkIGRhdGEgZnJvbSB0aGUgMjAxMSBDZW5zdXMgYW5kIGEgbnVtYmVyIG9mIGFkbWluaXN0cmF0aXZlIGRhdGEgc291cmNlcy5cXG5cXG5BIG1pZGRsZSBzdXBlciBvdXRwdXQgYXJlYSBpcyBhIGxvdyBsZXZlbCBnZW9ncmFwaHksIHdpdGggYSBtaW5pbXVtIHNpemUgb2YgNSwwMDAgcmVzaWRlbnRzIGFuZCAyLDAwMCBob3VzZWhvbGRzLiBUaGVyZSBpcyBhbiBhdmVyYWdlIHBvcHVsYXRpb24gb2YgNyw1MDAgd2hpY2ggZml0IGludG8gbG9jYWwgYXV0aG9yaXR5IGJvdW5kYXJpZXMuIFRoZXJlIGFyZSAxMDAgbWlkZGxlIHN1cGVyIG91dHB1dCBhcmVhcyBpbiBXZXN0IFN1c3NleC5cXG5cXG5UaGUgZXN0aW1hdGVzIHNob3cgdGhhdCBNU09BIENyYXdsZXkgMDA4IChpbmNsdWRlcyBhcmVhcyBQb3VuZCBIaWxsLCBXb3J0aCBhbmQgTWFpZGVuYm93ZXIg4oCTIG5lYXJieSB0byBDaHJpc3RzIEhvc3BpdGFsIChqdXN0IG92ZXIgYW4gaG91ciB0byBMb25kb24gVmljdG9yaWEpIGhhcyB0aGUgaGlnaGVzdCBhdmVyYWdlIHNhbGFyeSBpbiBXZXN0IFN1c3NleCBhdCDCozYyLDkyMOKAk0hvcnNoYW0gMDA5IGluY2x1ZGVzIFNvdXRod2F0ZXIgaGFzIHRoZSAybmQgaGlnaGVzdCBhdmVyYWdlIHNhbGFyeSBpbiBXZXN0IFN1c3NleCBhdCDCozYwLDMyMCBhbmQgSG9yc2hhbSAwMDggKHJ1cmFsIGFyZWEgaW5jbHVkaW5nIE1hbm5pbmdzIEhlYXRoLCBOdXRodXJzdCBhbmQgQ29wc2FsZSkgaGFzIHRoZSAzcmQgaGlnaGVzdCBhdmVyYWdlIGluY29tZSBpbiBXZXN0IFN1c3NleCBhdCDCozU5LDgwMC5cXG5cXG5UaGUgdGhyZWUgbG93ZXN0IGluY29tZSBsZXZlbHMgYXJlIHNlZW4gaW4gdGhlIE1TT0FzOlxcblxcbuKAoiBBcnVuIDAxNyDCozMzLDgwMCAtIChCb2dub3Igc2VhZnJvbnQpXFxuXFxu4oCiIEFydW4gMDE5IC8gMDExIMKjMzIsNzYwIC0gKFBhZ2hhbSAvIExpdHRsZWhhbXB0b25cXG5cXG7igKIgQ2hpY2hlc3RlciAwMTQgwqMzMiwyNDAg4oCTKFNlbHNleSlcXG5cXG7CoCAgW2h0dHBzOi8vd3d3Lm9ucy5nb3YudWsvcGVvcGxlcG9wdWxhdGlvbmFuZGNvbW11bml0eS9wZXJzb25hbGFuZGhvdXNlaG9sZGZpbmFuY2VzL2luY29tZWFuZHdlYWx0aC9hcnRpY2xlcy9zbWFsbGFyZWFtb2RlbGJhc2VkaW5jb21lZXN0aW1hdGVzZW5nbGFuZGFuZHdhbGVzL2ZpbmFuY2lhbHllYXJlbmRpbmcyMDE0XVswXVxcblxcblswXTogaHR0cHM6Ly93d3cub25zLmdvdi51ay9wZW9wbGVwb3B1bGF0aW9uYW5kY29tbXVuaXR5L3BlcnNvbmFsYW5kaG91c2Vob2xkZmluYW5jZXMvaW5jb21lYW5kd2VhbHRoL2FydGljbGVzL3NtYWxsYXJlYW1vZGVsYmFzZWRpbmNvbWVlc3RpbWF0ZXNlbmdsYW5kYW5kd2FsZXMvZmluYW5jaWFseWVhcmVuZGluZzIwMTRcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMg4oCTIERlY2VtYmVyIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuVGhlIEFubnVhbCBTdXJ2ZXkgb2YgSG91cnMgYW5kIEVhcm5pbmdzIChBU0hFKSBpcyBhIFVLLXdpZGUgc3VydmV5IHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG91cmx5LCB3ZWVrbHkgYW5kIGFubnVhbCBlYXJuaW5ncyBieSBnZW5kZXIgYW5kIHdvcmsgcGF0dGVybnMsIGFuZCBhdCBuYXRpb25hbCBhbmQgcmVnaW9uYWwgbGV2ZWwgZ2VvZ3JhcGhpZXMgb24gaW5kdXN0cnkgYW5kIG9jY3VwYXRpb24sIGluY2x1ZGluZyBwdWJsaWMgdmVyc3VzIHByaXZhdGUgc2VjdG9yIHBheSBjb21wYXJpc29ucy4gVGhlIGFubnVhbCBzZXJpZXMgZGF0ZXMgYmFjayB0byAyMDAyLCB0aG91Z2ggdGhlcmUgaGF2ZSBiZWVuIHNvbWUgbWV0aG9kb2xvZ2ljYWwgY2hhbmdlcyBvdmVyIHRoaXMgdGltZS4gVGhlIGxhdGVzdCBmaWd1cmVzIGFyZSBmb3IgMjAxNiAocmVsZWFzZWQgT2N0b2JlciAyMDE2KS4gVGhlIGRhdGEgaXMgZ2VuZXJhbGx5IGF2YWlsYWJsZSBhdCBsb2NhbCBhdXRob3JpdHkgbGV2ZWwsIHRob3VnaCBpbiBzb21lIGNhc2VzIGR1ZSB0byBzYW1wbGluZyBpc3N1ZXMgdGhlIGRhdGEgY2FuIGJlIHN1cHByZXNzZWQgZm9yIHBhcnRpY3VsYXIgdmFyaWFibGVzLiBFYXJuaW5ncyBkYXRhIGlzIG5vdCBhdmFpbGFibGUgYXQgYWxsIGF0IGxvY2FsIGF1dGhvcml0eSBsZXZlbCBieSBpbmR1c3RyaWFsIHNlY3RvciBvciBvY2N1cGF0aW9uYWwgdHlwZXMuVGhlIGxhdGVzdCBzZXQgb2YgZmlndXJlcyBzdWdnZXN0IHRoYXQgdGhlIGFubnVhbCBhdmVyYWdlIHdlZWtseSBlYXJuaW5ncyBmb3IgZnVsbCB0aW1lIHdvcmtlcnMgbGl2aW5nIGluIFdlc3QgU3Vzc2V4IGlzIMKjNTU3LjIsIGhpZ2hlciB0aGFuIHRoZSBuYXRpb25hbCBhdmVyYWdlLCBidXQgbG93ZXIgdGhhbiB0aGUgcmVnaW9uYWwgYXZlcmFnZS4gVGhlIGhpZ2hlc3QgZWFybmVycyBsaXZlIGluIEhvcnNoYW0gYW5kIGhhdmUgYXZlcmFnZSB3ZWVrbHkgZnVsbCB0aW1lIGVhcm5pbmdzIG9mIMKjNjIyOyB0aGUgbG93ZXN0IGVhcm5lcnMgbGl2ZSBpbiBBcnVuIHdpdGggY29uc2lkZXJhYmx5IGxvd2VyIGF2ZXJhZ2UgbGV2ZWxzIG9mIHBheSBhdCDCozQ3Ni4xLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIk92ZXIgdGhlIGxhc3QgZml2ZSB5ZWFycyBwYXkgbGV2ZWxzIGZvciBXZXN0IFN1c3NleCBvdmVyYWxsIGhhdmUgaW5jcmVhc2VkIGJ5IDkuMyUgY29tcGFyZWQgd2l0aCB0aGUgaW5jcmVhc2UgaW4gRW5nbGFuZCBhdCA3LjklIGFuZCBmb3IgdGhlIFNvdXRoIEVhc3QgcmVnaW9uIGF0IDQuOSUuIEhvd2V2ZXIgdGhlIHZhcmlhdGlvbiB3aXRoaW4gdGhlIGNvdW50eSBpcyBzaWduaWZpY2FudCDigJMgQWR1ciBoYXMgc2VlbiB0aGUgaGlnaGVzdCBpbmNyZWFzZSBhdCBvdmVyIDE2JSBhbmQgTWlkIFN1c3NleCB0aGUgbG93ZXN0IGluY3JlYXNlIGF0IDQuNiUuIFdoaWxzdCBvdmVyIHRoZSBsYXN0IHllYXIgKDIwMTUtMjAxNikgV2VzdCBTdXNzZXggc2F3IGEgZ3Jvd3RoIGluIHdlZWtseSBlYXJuaW5ncyBvZiAxJSAoY29tcGFyZWQgd2l0aCBFbmdsYW5kIG9mIDIuNCUgYW5kIHRoZSBTb3V0aCBFYXN0IG9mIDEuMiUpIEFkdXIsIEFydW4sIEhvcnNoYW0gYW5kIFdvcnRoaW5nIGhhdmUgc2VlbiBhIGZhbGwgaW4gcmVzaWRlbnQgZWFybmluZ3MgbGV2ZWxzLlxcblxcblwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzJBQUFEQkIwLUQ4OTEtNEZBNC1BREEzLTM2OTcyQUE1QjIzN1wifV1dfSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0Y5ODVEQTM4LTkwRTgtNDE1QS05OUE3LUZBNTdEOTY2ODAzMVwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzM2ODc4MEJBLTcwNDItNDk5RC05RUIyLTM2M0Y4ODQwRkIzMVwifV1dfSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkNoYW5nZSBpbiB3ZWVrbHkgZWFybmluZ3MgZm9yIGZ1bGwgdGltZSB3b3JrZXJzOiBHcm93dGggaW4gdGhlIGVhcm5pbmdzIG9mIHBlb3BsZSB3b3JraW5nIGluIGFuIGFyZWEgKHdvcmtlcnMpIGhhc27igJl0IGJlZW4gc28gaGlnaCBhcyBmb3IgdGhvc2UgcGVvcGxlIGxpdmluZyBpbiB0aG9zZSBhcmVhcyAocmVzaWRlbnRzKS4gSW4gV2VzdCBTdXNzZXggcGVvcGxlIHdvcmtpbmcgaW4gdGhlIGNvdW50eSBvdmVyYWxsIGhhdmUgZW5qb3llZCBhbiBpbmNyZWFzZSBvZiA0JSBpbiBlYXJuaW5ncyBsZXZlbHMgb3ZlciB0aGUgbGFzdCA1IHllYXJzLCBjb21wYXJlZCB3aXRoIGFuIGluY3JlYXNlIGluIG92ZXIgOSUgb2YgdGhvc2Ugd29ya2VycyBsaXZpbmcgaW4gdGhlIGNvdW50eS4gT3ZlciB0aGUgbGFzdCB5ZWFyLCAyMDE1LTE2IFdlc3QgU3Vzc2V4LCBBcnVuLCBIb3JzaGFtIGFuZCBNaWQgU3Vzc2V4IGVhcm5pbmdzIGxldmVscyBvZiB3b3JrZXJzIGluIHRoZXNlIGFyZWFzIGhhdmUgZmFsbGVuIOKAkyBtb3N0IG1hcmtlZCBpbiBXb3J0aGluZy5cXG5cXG5cIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9EQjJFOTM3Qy05RDVBLTQxNTUtOTlDOS1COUJENDAxNjFEQTlcIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIHNvdXJjZSBvZiB0aGUgY29tcGxldGUgZGF0YSBzZXQg4oCTIEFubnVhbCBTdXJ2ZXkgb2YgSG91cnMgYW5kIEVhcm5pbmdzIDIwMTYgaXMgYWNjZXNzZWQ6IFtodHRwczovL3d3dy5vbnMuZ292LnVrL2VtcGxveW1lbnRhbmRsYWJvdXJtYXJrZXQvcGVvcGxlaW53b3JrL2Vhcm5pbmdzYW5kd29ya2luZ2hvdXJzL2J1bGxldGlucy9hbm51YWxzdXJ2ZXlvZmhvdXJzYW5kZWFybmluZ3MvcHJldmlvdXNSZWxlYXNlc11bMF1cXG5cXG5bMF06IGh0dHBzOi8vd3d3Lm9ucy5nb3YudWsvZW1wbG95bWVudGFuZGxhYm91cm1hcmtldC9wZW9wbGVpbndvcmsvZWFybmluZ3NhbmR3b3JraW5naG91cnMvYnVsbGV0aW5zL2FubnVhbHN1cnZleW9maG91cnNhbmRlYXJuaW5ncy9wcmV2aW91c1JlbGVhc2VzXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gKFVwZGF0ZWQgT2N0b2JlciAyMDE2KSoqXFxuXFxuLSAtIC1cXG5cXG5UaGVzZSBmaWd1cmVzIGFyZSByZWxlYXNlZCBhbm51YWxseSBmcm9tIHRoZSBBbm51YWwgU3VydmV5IG9mIEhvdXJzIGFuZCBFYXJuaW5ncy4gVGhlIDIwMTYgcHJvdmlzaW9uYWwgZXN0aW1hdGVzIGZvciBhdmVyYWdlIGVhcm5pbmdzIHJlbGVhc2VkIG9uIHRoZSAyNnRoIE9jdG9iZXIgc2hvdyB0aGF0IHRoZSBmaWd1cmUgZm9yIFdlc3QgU3Vzc2V4IGlzIMKjNTU3LjIwLCBhbiBpbmNyZWFzZSBvZiAxLjElIG9uIHRoZSAyMDE1IGZpbmFsIGZpZ3VyZS5cXG5cXG5Gb3IgQXZlcmFnZSBlYXJuaW5ncyBpbiBFbmdsYW5kLCBtZWRpYW4gZ3Jvc3Mgd2Vla2x5IHBheSBvZiBlbXBsb3llZXMgYnkgcmVzaWRlbmNlIChyZXNpZGVudCBiYXNlKSwgdGhlIDIwMTYgZmlndXJlIGZvciBFbmdsYW5kIHdhcyDCozU0NC43MCwgYSByaXNlIG9mIDIuNCUuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gU2VwdGVtYmVyIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuVGhlc2UgZmlndXJlcyBhcmUgcmVsZWFzZWQgYW5udWFsbHkgZnJvbSB0aGUgQW5udWFsIFN1cnZleSBvZiBIb3VycyBhbmQgRWFybmluZ3MuIFRoZSAyMDE2IHByb3Zpc2lvbmFsIGVzdGltYXRlcyBmb3IgYXZlcmFnZSBlYXJuaW5ncyBhcmUgZXhwZWN0ZWQgdG8gYmUgcmVsZWFzZWQgb24gdGhlIDI2dGggT2N0b2Jlci5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSBKdW5lIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuV2hhdCB3aWxsIGhhcHBlbiB0byB0aGVzZSBtZWFzdXJlcywgaW4gcmVzcGVjdCBvZiB0aGUgbmF0aW9uYWwvcmVnaW9uYWwvbG9jYWwgZWNvbm9teSwgZ2l2ZW4gdGhlIEVVIHJlZmVyZW5kdW0gcmVzdWx0LCBpcyBzdGlsbCB0byBiZSBkZXRlcm1pbmVkLiBUaGlzIGlzIGluY3JlYXNpbmcgeWVhci1vbi15ZWFyLiBUaGlzIGZpZ3VyZSBpcyBhbHNvIGFib3ZlIHRoZSBFbmdsYW5kIHRvdGFsIGJ1dCBpcyBiZWxvdyBTb3V0aC1FYXN0LCBhbHRob3VnaCB0aGUgZ2FwIGlzIGdyYWR1YWxseSBjbG9zaW5nLiBUaGUgbmV4dCB1cGRhdGUgd2lsbCBiZSBpbiBOb3ZlbWJlci9EZWNlbWJlciAyMDE2LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgNCAtIE1hcmNoIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuVGhlIEFubnVhbCBTdXJ2ZXkgb2YgSG91cnMgYW5kIEVhcm5pbmdzIChBU0hFKSBpcyBhIFVLIHdpZGUgc3VydmV5IHRoYXQgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gaG91cmx5LCB3ZWVrbHkgYW5kIGFubnVhbCBlYXJuaW5ncyBieSBnZW5kZXIgYW5kIHdvcmsgcGF0dGVybnMsIGFuZCBhdCBuYXRpb25hbCBhbmQgcmVnaW9uYWwgbGV2ZWwgZ2VvZ3JhcGhpZXMgb24gaW5kdXN0cnkgYW5kIG9jY3VwYXRpb24sIGluY2x1ZGluZyBwdWJsaWMgdmVyc3VzIHByaXZhdGUgc2VjdG9yIHBheSBjb21wYXJpc29ucy4gVGhlIGFubnVhbCBzZXJpZXMgZGF0ZXMgYmFjayB0byAxOTk3IGFuZCB0aGUgbGF0ZXN0IGZpZ3VyZXMgYXJlIGZvciAyMDE1IChyZWxlYXNlZCBOb3ZlbWJlciAyMDE1KS4gVGhlIDIwMTYgZGF0YSBpcyBleHBlY3RlZCB0byBiZSBwdWJsaXNoZWQgaW4gTm92ZW1iZXIgMjAxNi4gVGhlIGRhdGEgaXMgZ2VuZXJhbGx5IGF2YWlsYWJsZSBhdCBsb2NhbCBhdXRob3JpdHkgbGV2ZWwsIHRob3VnaCBpbiBzb21lIGNhc2VzLCBiZWNhdXNlIG9mIHNhbXBsaW5nIGlzc3VlcyB0aGUgZGF0YSBpcyBzb21ldGltZXMgc3VwcHJlc3NlZCBmb3IgcGFydGljdWxhciB2YXJpYWJsZXMgYW5kIGlzIG5vdCBhdmFpbGFibGUgYXQgZGlzdHJpY3QgbGV2ZWwgYnkgaW5kdXN0cmlhbCBzZWN0b3Igb3Igb2NjdXBhdGlvbmFsIHR5cGVzLlxcblxcblRoZSBsYXRlc3Qgc2V0IG9mIGZpZ3VyZXMgc3VnZ2VzdCB0aGF0IHRoZSBhbm51YWwgYXZlcmFnZSB3ZWVrbHkgZWFybmluZ3MgZm9yIGZ1bGwgdGltZSB3b3JrZXJzIGxpdmluZyBpbiBXZXN0IFN1c3NleCBpcyDCozU1Mi43LCBoaWdoZXIgdGhhbiB0aGUgbmF0aW9uYWwgYXZlcmFnZSwgYnV0IGxvd2VyIHRoYW4gdGhlIHJlZ2lvbmFsIGF2ZXJhZ2UuIFRoZSBoaWdoZXN0IGVhcm5lcnMgbGl2ZSBpbiBIb3JzaGFtIGFuZCBoYXZlIGF2ZXJhZ2Ugd2Vla2x5IGZ1bGwgdGltZSBlYXJuaW5ncyBvZiDCozYyNy45LCB0aGUgbG93ZXN0IGVhcm5lcnMgbGl2ZSBpbiBBcnVuIHdpdGggY29uc2lkZXJhYmx5IGxvd2VyIGF2ZXJhZ2UgbGV2ZWxzIG9mIHBheSBhdCDCozQ4Ni4yLiBQYXkgbGV2ZWxzIGhhdmUgaW5jcmVhc2VkIHN0ZWFkaWx5IG92ZXIgdGltZSwgb3ZlciB0aGUgeWVhciAyMDE0LTE1IFdlc3QgU3Vzc2V4IGhhcyBzZWVuIGEgMi40JSBncm93dGggaW4gYXZlcmFnZSB3ZWVrbHkgZWFybmluZ3MsIGhpZ2hlciB0aGFuIG5hdGlvbmFsbHkgb3IgcmVnaW9uYWxseSwgQWR1ciwgQXJ1biBhbmQgQ2hpY2hlc3RlciBoYXZlIHNlZW4gaGlnaGVyIGluY3JlYXNlIGluIGVhcm5pbmdzIHRoYW4gdGhlIGNvdW50eSBhdmVyYWdlLiBPdmVyIHRoZSBsb25nZXIgdGVybSwgc2luY2UgMjAxMCwgV2VzdCBTdXNzZXggaGFzIHNlZW4gYW4gaW5jcmVhc2Ugb2YgwqM0Ny44IHBlciB3ZWVrLCBvciA5LjUlIGdyb3d0aCBpbiBlYXJuaW5ncyBoaWdoZXIgdGhhbiByZWdpb25hbGx5ICg0LjklKSBvciBuYXRpb25hbGx5ICg1LjMlKSwgd2l0aCBBZHVyIHNlZWluZyB0aGUgaGlnaGVzdCBwZXJjZW50YWdlIGdyb3d0aCBhdCAyMi42JSBhbmQgQ3Jhd2xleSB0aGUgbG93ZXN0IGdyb3d0aCBhdCA0LjElLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy85QjBFNUY2My05MENBLTQwRTgtOTlCOC1DODVDQTIwMUQ1NTFcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiU291cmNlOiBBbm51YWwgU3VydmV5IG9mIEhvdXJzIGFuZCBFYXJuaW5ncywgMjAxNSAoT05TL25vbWlzKVxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJJbiAyMDE1IHRoZSBhdmVyYWdlIGFubnVhbCBncm9zcyBwYXkgZm9yIHJlc2lkZW50cyBpbiBXZXN0IFN1c3NleCB3YXMgwqMzMCw4NTMsIHNsaWdodGVyIGhpZ2hlciB0aGFuIHRoZSBhdmVyYWdlIGZvciBFbmdsYW5kICjCozMwLDE2NSkgYnV0IG1vcmUgdGhhbiAxMCUgbG93ZXIgdGhhbiB0aGUgcmVnaW9uYWwgYXZlcmFnZSAowqMzMywzODIpLiBPdmVyIHRoZSBsYXN0IGZpdmUgeWVhcnMsIDIwMTAtMjAxNSByZXNpZGVudCBiYXNlZCBlYXJuaW5ncyBpbiBXZXN0IFN1c3NleCBpbmNyZWFzZWQgYnkgOS4yJSxtb3JlIHRoYW4gZG91YmxlIHRoYXQgc2VlbiBpbiB0aGUgU291dGggRWFzdCByZWdpb24gKDQuMyUpIC4gQXZlcmFnZSBhbm51YWwgd29ya3BsYWNlIGJhc2VkIGVhcm5pbmdzIGluIFdlc3QgU3Vzc2V4IGFyZSBsb3dlciB0aGFuIGZvciByZXNpZGVudCBiYXNlZCBlYXJuaW5ncyBhdCDCozI2LDgzMSBsb3dlciB0aGFuIHRoZSBuYXRpb25hbCBhbmQgcmVnaW9uYWwgZWFybmluZ3MgbGV2ZWxzIHBvc3NpYmx5IGFuIGluZGljYXRpb24gb2YgdGhlIGV4dGVudCBvZiBsb3dlciBwYWlkIGpvYnMgaW4gV2VzdCBTdXNzZXguIFdvcmtwbGFjZSBiYXNlZCBlYXJuaW5ncyBoYXZlIGluY3JlYXNlZCBvdmVyIHRoZSBsYXN0IDUgeWVhcnMg4oCTIDIwMTAg4oCTIDIwMTUgYnkgNC42JS5cXG5cXG5UaGVyZSBpcyBzaWduaWZpY2FudCB2YXJpYXRpb24gdGhyb3VnaG91dCB0aGUgQ291bnR5IGluIGVhcm5pbmcgbGV2ZWxzLiBJbiAyMDE1IEhvcnNoYW0gcmVzaWRlbnRzIGhhdmUgdGhlIGhpZ2hlc3QgYXZlcmFnZSB3ZWVrbHkgZWFybmluZ3MgbGV2ZWxzIG9mIMKjNjI3LjkgYW5kIEFydW4gdGhlIGxvd2VzdCBhdCDCozQ4Ni4yLiBDZXJ0YWlubHkgZWFybmluZ3MgYXJlIGxvd2VyIGluIHRoZSBDb2FzdGFsIERpc3RyaWN0cyAsIGFuZCBoaWdoZXIgaW4gQ3Jhd2xleSwgSG9yc2hhbSBhbmQgTWlkIFN1c3NleCDigJMgcG9zc2libHkgYSByZWZsZWN0aW9uIG9mIGFjY2VzcyB0byBoaWdoZXIgcGFpZCBlbXBsb3ltZW50IG9wcG9ydHVuaXRpZXMgaW4gU3VycmV5IGFuZC9vciBMb25kb24gZnJvbSB0aGUgdGhyZWUgR2F0d2ljayBEaWFtb25kIGRpc3RyaWN0cy5cXG5cXG5JbiBhbGwgZGlzdHJpY3RzIGFuZCBib3JvdWdocyB3aXRoIHRoZSBleGNlcHRpb24gb2YgQ3Jhd2xleSB0aGUgYW5udWFsIGF2ZXJhZ2Ugd2Vla2x5IGVhcm5pbmdzIG9mIHJlc2lkZW50cyBpcyBoaWdoZXIgdGhhbiBpdCBpcyBmb3IgcGVvcGxlIHdvcmtpbmcgaW4gdGhlIGFyZWEuIEdyb3d0aCBpbiB0aGUgZWFybmluZ3Mgb2Ygd29ya2VycyBoYXNu4oCZdCBiZWVuIHNvIGhpZ2ggYXMgZm9yIHJlc2lkZW50cywgb3ZlcmFsbCBwZW9wbGUgd29ya2luZyBpbiBXZXN0IFN1c3NleCBoYXZlIGVuam95ZWQgYW4gaW5jcmVhc2Ugb2YgNi4wJSBvZiB3ZWVrbHkgZWFybmluZyByYXRlcyBmcm9tIDIwMTAtMjAxNCwgdGhvdWdoIG92ZXIgdGhlIHllYXIgMjAxMy0yMDE0IFdlc3QgU3Vzc2V4LCBBZHVyLCBBcnVuIENoaWNoZXN0ZXIgYW5kIFdvcnRoaW5nIGVhcm5pbmdzIGxldmVscyBvZiB3b3JrZXJzIGluIHRoZXNlIGFyZWFzIGhhdmUgZmFsbGVuLlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9GRTU5OTVGQy02MjVGLTQ5MEMtQjdCNi04OUU1RkU2N0M5NzZcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiU291cmNlOiBBbm51YWwgU3VydmV5IEhvdXJzIGFuZCBFYXJuaW5ncywgMjAxNSAoT05TL25vbWlzKVxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJMaW5rIHRvIGVhcm5pbmdzIGRhdGEgaHR0cDovL3d3dy5vbnMuZ292LnVrL29ucy9yZWwvYXNoZS9hbm51YWwtc3VydmV5LW9mLWhvdXJzLWFuZC1lYXJuaW5ncy9pbmRleC5odG1sXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fdGl0bGVcIjp0cnVlLFwiY3VzdG9tX3RpdGxlXCI6XCJJbXByb3ZpbmcgZ3Jvc3Mgd2Vla2x5IHBheSBmb3IgZnVsbCB0aW1lIHdvcmtlcnMgcmVzaWRlbnQgaW4gV2VzdCBTdXNzZXggdG8gYmUgYXQgb3IgYWJvdmUgwqM1MjIuNzBcIixcImljb25cIjpcImNyb3NzaGFpclwiLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOnRydWUsXCJjdXN0b21fc3VidGl0bGVcIjpcIiBHcm9zcyB3ZWVrbHkgcGF5IGZvciBmdWxsIHRpbWUgd29ya2VycyByZXNpZGVudCBpbiBXZXN0IFN1c3NleFwiLFwidGl0bGVfaW1hZ2VcIjpcIi9hcGkvYXNzZXRzLzBCRkEwMDZBLTgyNzctNDgwQS05QTc0LTBDMDIyMkREODc5QVwifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDAyLTAxLTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6IlBvdW5kcyIsInRhcmdldCI6NTIyLjcsInRhcmdldF90eXBlIjoiYWJzb2x1dGUiLCJ0YXJnZXRfZGVsdGEiOjAsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwiYmFzZWxpbmUiOjUzMy4yLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6Im1ibWMtY3hndSJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAwMn0sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fSxcImFjdGlvbl90eXBlXCI6XCJpbmNyZWFzZVwiLFwidGFyZ2V0X3R5cGVcIjpcImFic29sdXRlXCIsXCJtYWludGFpbl90eXBlXCI6XCI+XCJ9LFwiYmFzZWxpbmVcIjp7XCJzcXVpc2h5XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE1fSxcImVuZFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTV9fSxcInN0YXJ0XCI6XCIyMDE1LTAxLTAxVDAwOjAwOjAwLjAwMFwiLFwiZW5kXCI6XCIyMDE1LTAxLTAxVDIzOjU5OjU5LjAwMFwiLFwibWV0cmljXCI6e1wibWV0YWRhdGFcIjpcIntcXFwid2l6YXJkXFxcIjp7XFxcImZpbHRlcl9hc3RcXFwiOlt7XFxcInZhbHVlc1xcXCI6W3t9XX1dfX1cIn19LFwibmFtZVwiOlwidGhlIGF2ZXJhZ2UgZWFybmluZ3MgaW4gV2VzdCBTdXNzZXhcIixcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOmZhbHNlLFwicHJvZ3Jlc3Nfb3ZlcnJpZGVcIjpcImJhZFwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOToxMzo0MC43NTdaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MTM6NDAuNzU3WiIsInRhcmdldF90b2xlcmFuY2UiOjQsImlkIjoiZHJ6cy1jd3V0In0sInJlbGF0ZWRfbWVhc3VyZXMiOltdLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjE0OjAwLjgwNloiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOToxMzo0MC44MDJaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MTQ6MDAuODA2WiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoiOXlnNS00c3kyIiwibmFtZSI6IlBheW1lbnQgdG8gU21hbGwgJiBNaWNybyBCdXNpbmVzc2VzIiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJpY29uXCI6XCJjcm9zc2hhaXJcIixcIm5hcnJhdGl2ZVwiOlt7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuRHVyaW5nIFEzIChPY3RvYmVyIHRvIERlY2VtYmVyIDIwMTcpIGEgdG90YWwgb2YgMzYsMTE0IGludm9pY2VzIHdpdGggMjAgZGF5IHBheW1lbnQgdGVybXMgd2VyZSByZWNlaXZlZCwgYW5kIDk0JSB3ZXJlIHBhaWQgb24gdGltZS4gQWx0aG91Z2ggYW4gaW1wcm92ZW1lbnQgY29tcGFyZWQgdG8gcHJldmlvdXMgbW9udGgsIGl0IGlzIHVubGlrZWx5IHRoYXQgd2Ugd2lsbCBhY2hpZXZlIDk2JSBieSB5ZWFyLWVuZC5cXG5cXG5cIn1dLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOnRydWUsXCJjdXN0b21fc3VidGl0bGVcIjpcIlBheW1lbnQgdG8gc21hbGwgYW5kIG1pY3JvIGJ1c2luZXNzZXMuIFdTQ0Mgd2lsbCBhaW0gdG8gcGF5IDk2JSBvZiBpbnZvaWNlcyB0byBzbWFsbCBhbmQgbWljcm8gYnVzaW5lc3NlcyB0aGF0IGFyZSBkb2luZyBidXNpbmVzcyB3aXRoIHVzIHdpdGhpbiAyMCB3b3JraW5nIGRheXNcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxNy0wNC0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiIlIiwidGFyZ2V0IjoxMDAsInRhcmdldF90eXBlIjoicmVsYXRpdmUiLCJ0YXJnZXRfZGVsdGEiOjAsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwiYmFzZWxpbmUiOjk2LCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6IjNxamQtNmU1bSJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MyxcInllYXJcIjoyMDE3fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcIm1haW50YWluXCIsXCJtYWludGFpbl90eXBlXCI6XCI+XCJ9LFwiYmFzZWxpbmVcIjp7XCJzcXVpc2h5XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE2fSxcImVuZFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTZ9fSxcInN0YXJ0XCI6XCIyMDE2LTAxLTAxVDAwOjAwOjAwLjAwMFwiLFwiZW5kXCI6XCIyMDE2LTAxLTAxVDIzOjU5OjU5LjAwMFwiLFwibWV0cmljXCI6e1wibWV0YWRhdGFcIjpcIntcXFwid2l6YXJkXFxcIjp7XFxcImZpbHRlcl9hc3RcXFwiOlt7XFxcInZhbHVlc1xcXCI6W3t9XX1dfX1cIn19LFwibmFtZVwiOlwiSW52b2ljZXMgcGFpZCB3aXRoaW4gMjAgd29ya2luZyBkYXlzXCJ9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjEyOjMwLjMxNFoiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOToxMjozMC4zMTRaIiwidGFyZ2V0X3RvbGVyYW5jZSI6NSwiaWQiOiIzOGQ3LXJxemQifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MTI6MzYuNzAxWiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjEyOjMwLjM2MloiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOToxMjozNi43MDFaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiI3NnR1LW15a3UiLCJuYW1lIjoiQnVzaW5lc3MgU3VwcG9ydCBhbmQgR3JhbnRzIiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJpY29uXCI6XCJ0ZXh0XCIsXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgLSBEZWNlbWJlciAyMDE3KipcXG5cXG4tIC0gLVxcblxcbkJ1c2luZXNzZXMgc3VwcG9ydGVkIGJ5IFdTQ0MtbGVkIGFuZCBzdXBwb3J0ZWQgYnVzaW5lc3Mgc3VwcG9ydCBpbml0aWF0aXZlcyDigJMgdGhpcyBnb2FsIGlzIG1lYXN1cmVkIGJ5IHRyYWNraW5nIHRoZSBudW1iZXIgb2YgYnVzaW5lc3NlcyBzdXBwb3J0ZWQgYnkgV1NDQyBsZWQgYW5kIHN1cHBvcnRlZCBidXNpbmVzcyBzdXBwb3J0IGluaXRpYXRpdmVzLiBXZSBhaW0gdG8gaW5jcmVhc2UgdGhlIG51bWJlciBvZiBidXNpbmVzc2VzIHN1cHBvcnRlZCB0byAzMDAgYnVzaW5lc3NlcyBieSBNYXJjaCAyMDE3LlxcblxcblRoZSBudW1iZXJzIG9mIGJ1c2luZXNzZXMgc3VwcG9ydGVkIHRocm91Z2ggV1NDQyBvciBXU0NDIHN1cHBvcnRlZCBpbml0aWF0aXZlcyBhcm91bmQgYnVzaW5lc3Mgc3VwcG9ydFxcblxcbioqSGVhbHRoIGFuZCBMaWZlKiogKipTY2llbmNlcyoqXFxuXFxuRHVyaW5nIFEzIFdTQ0MncyBjb21taXRtZW50IHRvIHNjaWVuY2UsIHRlY2hub2xvZ3ksIGVuZ2luZWVyaW5nICYgbWF0aGVtYXRpYyAoU1RFTSkgaGFzIGNvbnRpbnVlZCB0aHJvdWdoIHNwb25zb3JzaGlwIGFuZCBvZmZpY2VyIHRpbWUsIHByZXBhcmF0aW9uIGlzIGluIGZ1bGwgc3dpbmcgZm9yIDIwMTjigJlzIFNURU0gZXZlbnRzLiBVcGNvbWluZyBTVEVNIGV2ZW50cyBjYW4gYmUgZm91bmQgb24gdGhlW1NURU0gU3Vzc2V4IHdlYnNpdGVdWzBdLiBBY3Rpdml0aWVzIGFyZSBwbGFubmVkIGZvciBib3RoIHByaW1hcnkgYWdlIHB1cGlscyBhbmQgc2Vjb25kYXJ5IHNjaG9vbCBzdHVkZW50cy4gUGFydG5lcnNoaXBzIGFjcm9zcyBXZXN0IFN1c3NleCBhcmUgd29ya2luZyBoYXJkIHRvIGVuc3VyZSB0aGF0IHlvdW5nIHBlb3BsZSBkZXZlbG9wIHRoZSBza2lsbHMgbmVlZGVkIGJ5IGluZHVzdHJ5LlxcblxcbkluIFExIGFuIEVSREYgc2VjdG9yIHN1cHBvcnQgY2FsbCBjb25zaXN0aW5nIG9mIGxpZmUgc2NpZW5jZSwgZGlnaXRhbCwgYW5kIGFkdmFuY2VkIG1hbnVmYWN0dXJpbmcg4oCYbG90c+KAmSB3YXMgcmVsZWFzZWQuIFRoZSBwcm94aW1pdHkgb2YgdGhlIGNhbGzigJlzIHJlbGVhc2UgdG8gdGhlIHN1bW1lciBob2xpZGF5cyBtZWFudCB0aGF0IG5vIGJpZHMgd2VyZSBzdWJtaXR0ZWQgYW5kIHRoZSBjYWxsIGhhcyBub3cgYmVlbiByZSByZWxlYXNlZCBpbiBRMy4gV1NDQywgdGhyb3VnaCB0aGUgRVUgUHJvamVjdCBSZXNvdXJjZXMgUHJvamVjdCBoYXMgYmVlbiBhY3RpdmVseSBlbmdhZ2luZyBwb3RlbnRpYWwgcGFydG5lcnMgdG8gZ2VuZXJhdGUgaW50ZXJlc3QgYW5kIGluY3JlYXNlIHRoZSBsaWtlbGlob29kIG9mIGEgc3Ryb25nIGNvbnNvcnRpdW0gZm9ybWluZyB0byBsZXZlcmFnZSB0aGUgYXZhaWxhYmxlIGZ1bmRzIHRvIHN1cHBvcnQgYnVzaW5lc3NlcyBpbiB0aGUgYXJlYS4gQSBuYXRpb25hbCBvcmdhbmlzYXRpb24gaGFzIGJlZW4gaWRlbnRpZmllZCBhcyBhIHBvdGVudGlhbCBsZWFkIHBhcnRuZXIgYW5kIHBvc2l0aXZlIGNvbnZlcnNhdGlvbnMgYXJlIHVuZGVyd2F5IHRvIHNoYXBlIHRoZSBzdWJtaXNzaW9uLiBJZiBzdWNjZXNzZnVsLCBhIHRvdGFsIHByb2plY3QgdmFsdWUgb2YgdXAgdG8gwqMxMG0gY291bGQgYmUgZGVsaXZlcmVkIGFjcm9zcyB0aGUgQ29hc3QgdG8gQ2FwaXRhbCBSZWdpb24uXFxuXFxuRHVyaW5nIHRoZSBhdXR1bW4gdGhlIERlcGFydG1lbnQgZm9yIEJ1c2luZXNzLCBFbmVyZ3kgYW5kIEluZHVzdHJpYWwgU3RyYXRlZ3kgcmVsZWFzZWQgdGhlIHNlY29uZCB3YXZlIG9mIHNjaWVuY2UgYW5kIGlubm92YXRpb24gcmVwb3J0cy5UaGUgcmVwb3J0cyBhcmUgR292ZXJubWVudCBzcG9uc29yZWQgYXVkaXRzIGRlc2lnbmVkIHRvIG1hcCBhc3NldHMgYW5kIHNob3djYXNlIHJlZ2lvbmFsIGV4Y2VsbGVuY2UuIFRoZSBjb3VudHkgb2YgV2VzdCBTdXNzZXggaXMgaW5jb3Jwb3JhdGVkIGludG8gYW4gYXVkaXQgY2FsbGVkIOKAmElubm92YXRpb24gU291dGjigJksIGEgcmVnaW9uIHdoaWNoIHN0cmV0Y2hlcyBmcm9tIERvcnNldCBpbiB0aGUgd2VzdCxhY3Jvc3MgdG8gS2VudCBpbiB0aGUgZWFzdCwgYW5kIHVwIHRvIFJlYWRpbmcuIFdTQ0MgcHJvdmlkZWQgc3BvbnNvcnNoaXAgYW5kIGhhZCBhbiBhY3RpdmUgcm9sZSBhcyBhIGNvbnNvcnRpdW0gbWVtYmVyIGluIHRoZSBhdWRpdC4gVGhlIHJlcG9ydCBkZW1vbnN0cmF0ZXMgdGhlIHJlZ2lvbuKAmXMgZXhjZWxsZW5jZSBpbiA1IOKAmGRpZ2l0YWwgZW5hYmxpbmcgdGVjaG5vbG9naWVz4oCZYWNyb3NzIGZvdXIgc2VjdG9yczogaW5jbHVkaW5nIENvbm5lY3RlZCBEaWdpdGFsLCBNYXJpbmUgYW5kIE1hcml0aW1lLCBCaW8gc2NpZW5jZSBhbmQgQWR2YW5jZWQgRW5naW5lZXJpbmcuIEl0IGZvY3Vzc2VzIG9uIHRoZSByZWdpb27igJlzIGhpZ2ggZ3Jvd3RoLGhpZ2ggdmFsdWUgYW5kIGEgaGlnaGx5IHN1Y2Nlc3NmdWwga25vd2xlZGdlLWJhc2VkIHJlZ2lvbmFsIGVjb25vbXkgYW5kIGl0cyBvdXRzdGFuZGluZyBwb3RlbnRpYWwgZm9yIGZ1cnRoZXIgaW5ub3ZhdGlvbiBhbmQgZ3Jvd3RoLiBUaGUgcmVwb3J0IGNhbiBiZSBhY2Nlc3NlZCBoZXJlOlxcblxcbnBhZ2UgW2h0dHBzOi8vd3d3LmVudGVycHJpc2VtMy5vcmcudWsvaW5ub3ZhdGlvbi1zb3V0aC1zaWFdWzFdXFxuXFxuKipCb2dub3IgUmVnaXMgQ3JlYXRpdmUgRGlnaXRhbCBIdWIqKlxcblxcblRoZXJlIHdhcyBubyBldmVudCBoZWxkIG92ZXIgdGhlIGxhc3QgcXVhcnRlciBob3dldmVyIGNvbnRhY3Qgd2l0aCB0aGUgY3JlYXRpdmUgZGlnaXRhbCBzZWN0b3IgdGhyb3VnaCBvdXIgd2Vic2l0ZSBhbmQgc29jaWFsIG1lZGlhIHByZXNlbmNlIGhhcyBiZWVuIG1haW50YWluZWQuIEluIFEzLCB3ZSBoYWQgMTg2IGVuZ2FnZW1lbnRzIG9uIFR3aXR0ZXIgZnJvbSB0aGUgY29tbXVuaXR5LCBhbmQgdHdvIGNvbXBhbmllcyBwb3N0ZWQgdGhlaXIgY29udGVudCBvbiBvdXIgRmFjZWJvb2sgY29tbXVuaXR5IHBhZ2UgdG8gc2hhcmUgd2l0aCB0aGUgb3RoZXIgY29tbXVuaXR5IG1lbWJlcnMuIFRoZXJlIGhhcyBiZWVuIGVuZ2FnZW1lbnQgd2l0aCBzaXggYnVzaW5lc3NlcyBpbiByZWxhdGlvbiB0byB0aGUgdXBjb21pbmcgcHJvY3VyZW1lbnQgZm9yIGEgSHViIG9wZXJhdG9yLlxcblxcbkFzIGJlZm9yZSwgd2UgaGF2ZSBhIGNvbnRhY3QgZGF0YWJhc2Ugb2YgYXJvdW5kIDIwMCBidXNpbmVzc2VzIHJlY2VpdmluZyByZWd1bGFyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBIdWIgY29tbXVuaXR5IGFuZCBldmVudHMgZXRjLlxcblxcbioqRXhwZXJpZW5jZSBXZXN0IFN1c3NleCoqXFxuXFxuVGhlIEV4cGVyaWVuY2UgV2VzdCBTdXNzZXggMjAxNyBtYXJrZXRpbmcgY2FtcGFpZ24gaGFzIG5vdyBjb25jbHVkZWQsIGFuZCB0aGUgd2Vic2l0ZSBub3cgZmVhdHVyZXMgYXJvdW5kIDIzNiBidXNpbmVzc2VzLCBhbiBpbmNyZWFzZSBvZiAxNSBidXNpbmVzc2VzIGZyb20gT2N0b2JlciAyMDE3LiBBbmFseXNpcyBvZiB0aGUgMjAxNyBjYW1wYWlnbiBpcyBjdXJyZW50bHkgdW5kZXJ3YXkgYW5kIGZlZWRiYWNrIGlzIGJlaW5nIHNvdWdodCBmcm9tIGZlYXR1cmVkIGJ1c2luZXNzZXMgb25jZSBhZ2Fpbi4gVGhlIGNhbXBhaWduIGlzIGNvbnRpbnVpbmcgaW4gMjAxOCBhbmQgd2lsbCBiZSBsZWQgYnkgV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwsd29ya2luZyB3aXRoIHBhcnRuZXJzIGZyb20gdGhlIERpc3RyaWN0IGFuZCBCb3JvdWdocyBhbmQgdGhlIFNvdXRoIERvd25zIE5hdGlvbmFsIFBhcmsuXFxuXFxuKipMRUFERVIqKlxcblxcblRoZSBMRUFERVIgdG90YWxzIGZvciBjdXJyZW50IHByb2dyYW1tZSBhcmU6XFxuXFxuRXhwcmVzc2lvbnMgb2YgSW50ZXJlc3QgcmVjZWl2ZWQgYW5kIHByb2Nlc3NlZCA9IDExN1xcblxcbkdyYW50IGFwcGxpY2F0aW9ucyBhcHByb3ZlZCA9IDM0IHByb2plY3RzIFRvdGFsIGdyYW50IGFwcHJvdmVkID3CoyAxLDEyMiwwODdcXG5cXG5Bc3NvY2lhdGVkIG1hdGNoIGZ1bmRpbmcgPSDCozIuMm1cXG5cXG5OZXcgam9icyB0aGF0IHdpbGwgYmUgY3JlYXRlZCBieSBhcHByb3ZlZCBwcm9qZWN0cyA9IDM4IEZURXNcXG5cXG5BZGRpdGlvbmFsIG92ZXJuaWdodCBzdGF5cyBmb3JlY2FzdCBmb3IgbmV4dCAzIHllYXJzID0gNiw5MDdcXG5cXG5OQiAtIHRoZSBmaWd1cmVzIGFyZSBmb3IgdGhlIHByb2dyYW1tZSBhcyBhIHdob2xlIG5vdCB0aGUgbGFzdCBxdWFydGVyXFxuXFxuKipUYXN0ZSBXZXN0IFN1c3NleCoqXFxuXFxuV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwgaXMgcHJvZ3Jlc3NpbmcgYSBUYXN0ZSBXZXN0IFN1c3NleCAtIGJyaW5naW5nIHByb2R1Y2VycyBhbmQgYnV5ZXJzIHRvZ2V0aGVyIGluaXRpYXRpdmUuIFRoZSBsb2NhbCBmb29kIGFuZCBkcmluayBzZWN0b3IgaXMgdmVyeSBpbXBvcnRhbnQgdG8gdGhlIGVjb25vbXkgb2YgdGhlIENvdW50eSwgYW5kIHByb2R1Y2VycyB3aWxsIGJlIHN1cHBvcnRlZCB0byBhY2Nlc3MgbmV3IG1hcmtldHMgYW5kIGJ1eWVycyBvZiBsb2NhbCBwcm9kdWNlLiBBIHNhbXBsZSBvZiBsb2NhbCBmb29kIGFuZCBkcmluayBwcm9kdWNlcnMgd2VyZSBjb25zdWx0ZWQgb24gZGV2ZWxvcG1lbnQgc3VwcG9ydCB0byBncm93IHRoZWlyIGJ1c2luZXNzZXMgdGhyb3VnaCBvZmZlcmluZyBwcm9kdWN0cyB0byBuZXcgYnV5ZXJzLCBhbmQgYnkgYnVpbGRpbmcgbG9uZyB0ZXJtIHJlbGF0aW9uc2hpcHMgd2l0aCBidXllcnMuIFRoZSBjb25zdWx0YXRpb24gaGFzIHNoYXBlZCBhIHRyYWluaW5nIHByb2dyYW1tZSBmb3IgcHJvZHVjZXJzIHRha2luZyBwbGFjZSBpbiBKYW51YXJ5ICYgRmVicnVhcnksIGFuZCBhICdNZWV0IHRoZSBCdXllcicgRXZlbnQgdGhhdCB3aWxsIGJyaW5nIHByb2R1Y2VycyBhbmQgYnV5ZXJzIHRvZ2V0aGVyIGluIEZlYnJ1YXJ5LlxcblxcblswXTogaHR0cDovL3d3dy5zdGVtc3Vzc2V4LmNvLnVrL1xcblsxXTogaHR0cHM6Ly93d3cuZW50ZXJwcmlzZW0zLm9yZy51ay9pbm5vdmF0aW9uLXNvdXRoLXNpYVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkxhdGVzdCB1cGRhdGUgLSBPY3RvYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuKipXZXN0IFN1c3NleCBIZWFsdGggYW5kIExpZmUgU2NpZW5jZXMgQ2x1c3RlcioqXFxuXFxuVGhlIGxhdGVzdCBjbHVzdGVyIGRpcmVjdG9yeSBhbmQgY29tcGFueSBtYXAgaGF2ZSBub3cgYmVlbiByZWxlYXNlZCBvbmxpbmUgYW5kIGNhbiBiZSBmb3VuZCBvbiB0aGUgV1NITEMgd2Vic2l0ZS4gVGhlIGRpcmVjdG9yeSBjb25zaXN0cyBvZiBhIHNlcmllcyBvZiBwcm9maWxlcyB3aGljaCBwcm92aWRlIGFuIGludGVyZXN0aW5nIGluc2lnaHQgaW50byB0aGUgYWN0aXZpdGllcyBvZiBvdmVyIDE0MCBjb21wYW5pZXMgaW4gdGhlIGNsdXN0ZXIuXFxuXFxuRHVyaW5nIFEyIHRoZSBjb3VudHkgY291bmNpbCBwYXJ0bmVyZWQgd2l0aCBDb2dlbnQgU2tpbGxzLCB0aGUgVUsgc3RyYXRlZ2ljIHNraWxscyBib2R5IGZvciB0aGUgc2NpZW5jZSBpbmR1c3RyaWVzLCB0byBob2xkIGFuIGluZm9ybWF0aXZlIGFwcHJlbnRpY2VzaGlwIGxldnkgd2ViaW5hci4gMjUgcGVvcGxlIGFjY2Vzc2VkIHRoZSBsaXZlIHdlYmluYXIgd2hpY2ggd2FzIHJlY29yZGVkIGFuZCBwbGFjZWQgb25saW5lIGFzIGEgc291cmNlIHRvb2wgZm9yIHRob3NlIHdobyB3ZXJlIHVuYWJsZSB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgbGl2ZSBzdHJlYW1pbmcuIEJ1c2luZXNzZXMgd2lzaGluZyB0byBsZWFybiBhYm91dCB0aGUgcmVjZW50IHJlZm9ybXMgYW5kIHRha2UgYWR2YW50YWdlIG9mIHRoZSBjdXJyZW50IDkwOjEwIGdvdmVybm1lbnQgYXBwcmVudGljZXNoaXAgZnVuZGluZyBtb2RlbCBjYW4gYWNjZXNzIHRoZSB3ZWJpbmFyIGZvciBmcmVlOlxcblxcbltodHRwczovL3JlZ2lzdGVyLmdvdG93ZWJpbmFyLmNvbS9yZWdpc3Rlci85NDQ5NjgxMDcyNjQ0Mjc1NF1bMF0uXFxuXFxuRHVyaW5nIFEyIHRoZSByZXN1bHRzIGZyb20gdGhlIENsdXN0ZXIgU2tpbGxzIGFuZCBCdXNpbmVzcyBTdXBwb3J0IFN1cnZleSB3ZXJlIHJlY2VpdmVkIHdoaWNoIHdpbGwgYXNzaXN0IGluIHVuZGVyc3RhbmRpbmcgdGhlIG5lZWRzIG9mIHRoZSBjbHVzdGVyLiBUaGUgRXhlY3V0aXZlIFN1bW1hcnkgd2lsbCBzaG9ydGx5IGJlIHJlbGVhc2VkLiBXb3JrIHdpdGggdGhvc2UgY29tcGFuaWVzIHdobywgaW4gdGhlIHN1cnZleSwgcmVxdWVzdGVkIHRhaWxvcmVkIHN1cHBvcnQsIHdpbGwgYmVnaW4gaW4gdGhlIG5lYXIgZnV0dXJlLiBJbiBhZGRpdGlvbiB0byB0aGVzZSBhY3Rpdml0aWVzLCBjbHVzdGVyIGVuZ2FnZW1lbnQgaGFzIGNvbnRpbnVlZCB3aGljaCBpbmNsdWRlcywgdGhyb3VnaCBuZXdzbGV0dGVycyBldGMuIHJlZ3VsYXJseSB1cGRhdGluZyBvdmVyIDM2MCBzdGFrZWhvbGRlcnMgb24gbGlmZSBzY2llbmNlIGFuZCBTVEVNIGFjdGl2aXRpZXMgaW4gdGhlIGxvY2FsIHJlZ2lvbiwgbmF0aW9uYWwgb3Bwb3J0dW5pdGllcywgZXZlbnRzLCBhbmQgZnVuZGluZyBvcHBvcnR1bml0aWVzLlxcblxcbioqTEVBREVSKipcXG5cXG5UaGUgTEVBREVSIHByb2dyYW1tZSwgbGF1bmNoZWQgaW4gTm92ZW1iZXIgMjAxNSBpcyBhIGdyYW50IGZ1bmRpbmcgcHJvZ3JhbW1lIHRoYXQgc3VwcG9ydHMgdGhlIGdyb3d0aCBhbmQgZGV2ZWxvcG1lbnQgb2YgcnVyYWwgYnVzaW5lc3NlcyBhbmQgaXMgcGFydCBvZiB0aGUgUnVyYWwgRGV2ZWxvcG1lbnQgcHJvZ3JhbW1lIGZvciBFbmdsYW5kIHdoaWNoIGFpbXMgdG8gaW1wcm92ZSB0aGUgY29tcGV0aXRpdmVuZXNzIG9mIGZhcm1pbmcgYW5kIGZvcmVzdHJ5LCBzdXBwb3J0aW5nIGEgZGl2ZXJzZSBhbmQgc3VjY2Vzc2Z1bCBydXJhbCBlY29ub215IGFuZCBoZWxwaW5nIHRvIGRldmVsb3AgdmlicmFudCBhbmQgdGhyaXZpbmcgcnVyYWwgY29tbXVuaXRpZXMuXFxuXFxuVG8gZGF0ZTpcXG5cXG4qIEV4cHJlc3Npb25zIG9mIEludGVyZXN0IHJlY2VpdmVkIGFuZCBwcm9jZXNzZWQgPSA5N1xcbiogR3JhbnQgYXBwbGljYXRpb25zIGFwcHJvdmVkID0gMjkgcHJvamVjdHNcXG4qIFRvdGFsIGdyYW50IGFwcHJvdmVkID0gwqM4NDEsNzAxXFxuKiBBc3NvY2lhdGVkIG1hdGNoIGZ1bmRpbmcgPSDCozEuNjhtXFxuKiBOZXcgam9icyB0aGF0IHdpbGwgYmUgY3JlYXRlZCBieSBwcm9qZWN0cyA9IDM1LjUgRlRFc1xcbiogQWRkaXRpb25hbCBvdmVybmlnaHQgc3RheXMgZm9yZWNhc3QgZm9yIG5leHQgMyB5ZWFycyA9IDYsOTA3XFxuXFxuKipUYXN0ZSBXZXN0IFN1c3NleCDigJMgRW50ZXJwcmlzZSBQcm9tb3Rpb24qKlxcblxcbldvcmsgaXMgdW5kZXJ3YXkgaW4gcHJlcGFyYXRpb24gZm9yIEEgTWVldCB0aGUgQnV5ZXIgZXZlbnQgdG8gYmUgaGVsZCBpbiBTcHJpbmcgMjAxOCB3aXRoIHRoZSBwdXJwb3NlIG9mIGluY3JlYXNpbmcgdGhlIG9wcG9ydHVuaXRpZXMgZm9yIFdlc3QgU3Vzc2V4IGZvb2QgYW5kIGRyaW5rIHByb2R1Y2VycyB0byBhY2Nlc3MgcG90ZW50aWFsIHB1cmNoYXNlcnMuIFByaW9yIHRvIHRoZSBldmVudCwgcHJvZHVjZXJzIHdpbGwgZ2V0IGFjY2VzcyB0byB0cmFpbmluZyBhbmQgYnVzaW5lc3Mgc3VwcG9ydCB0byBhbGxvdyB0aGVtIHRvIG1ha2UgdGhlIG1vc3Qgb2YgdGhlIGV2ZW50LiBJbiB0ZXJtcyBvZiBwcm9ncmVzcyBjb25zdWx0YXRpb24gd2l0aCBwcm9ncmFtbWUgcGFydGljaXBhbnRzIGhhcyBiZWVuIHVuZGVydGFrZW4sIHdoaWNoIHdpbGwgaW5mb3JtIHRyYWluaW5nIHJlcXVpcmVtZW50cy4gQW4gb3V0bGluZSBkZXNpZ24gb2YgdHJhaW5pbmcsIGJyYW5kaW5nIGFuZCBldmVudCBzY29wZSBpcyBiZWluZyBkZXZlbG9wZWQuIEEgQ29tbXVuaWNhdGlvbnMgUHJvZ3JhbW1lIGlzIHVuZGVyd2F5IGFuZCB0aGVyZSBoYXMgYmVlbiBhIGhpZ2ggbGV2ZWwgb2YgaW50ZXJlc3QgaW4gcGFydGljaXBhdGluZyBpbiB0aGUgZXZlbnQgZnJvbSBmb29kIGFuZCBkcmluayBwcm9kdWNlcnMuIERldGFpbHMgb24gdGhlIHRyYWluaW5nIGFuZCB0aGUgZXZlbnQgaXRzZWxmIHdpbGwgYmUgYXZhaWxhYmxlIGF0IHRoZSBlbmQgb2YgdGhlIG5leHQgcXVhcnRlci5cXG5cXG4qKkV4cGVyaWVuY2UgV2VzdCBTdXNzZXgqKlxcblxcblRoZSAqKkV4cGVyaWVuY2UgV2VzdCBTdXNzZXgqKiB0b3VyaXNtIGNhbXBhaWduIGxhdW5jaGVkIGluIE1heSAyMDE3LCBhbmQgbm93IGZlYXR1cmVzIGFyb3VuZCAyMjEgYnVzaW5lc3NlcywgYW4gaW5jcmVhc2Ugb2YgMTAzIGZyb20gMjAxNi4gUHJldmlvdXNseSBicmFuZGVkIGFzIFdlc3QgU3Vzc2V4IFdlZWtlbmRzLCBFeHBlcmllbmNlIFdlc3QgU3Vzc2V4IHNob3cgY2FzZXMgdGhlIG5ldyB0aGVtZXMgb2YgYWN0aXZlIGRheXMsIG5ldyBleHBlcmllbmNlcywgYmFjay10by1uYXR1cmUgZmFtaWx5IG91dGluZ3MgYW5kIGN1bHR1cmFsIGVuY291bnRlcnMgYWNyb3NzIHRoZSBjb3VudHkuIFRoZSB3ZWJzaXRlIGFuZCBzb2NpYWwgbWVkaWEgcGxhdGZvcm1zIGluY2x1ZGUgZmlyc3QgcGVyc29uIHN0b3JpZXMsIHdlZWtlbmQgaXRpbmVyYXJpZXMsIGV2ZW50cyBhcyB3ZWxsIGFzIGdyZWF0IHBsYWNlcyB0byBlYXQsIGRyaW5rIGFuZCBzdG9wIG9mZi4gVGhlIGNhbXBhaWduIGlzIGludGVuZGVkIHRvIGluc3BpcmUgdmlzaXRvcnMgYW5kIHJlc2lkZW50cyBhbmQgdG8gYmVuZWZpdCBsb2NhbCBidXNpbmVzc2VzIHRocm91Z2ggZmVhdHVyaW5nIHRoZW0gaW4gdGhlIGNhbXBhaWduLiBCdXNpbmVzc2VzIGhhdmUgYWxzbyBiZWVuIHN1cHBvcnRlZCB0aHJvdWdoIHNpZ25wb3N0aW5nIHRvIGdyYW50IGZ1bmRpbmcgYW5kIGNvbW1lcmNpYWwgc3BhY2Ugb3Bwb3J0dW5pdGllcywgYW5kIHRocm91Z2ggZXhwb3N1cmUgZnJvbSBmZWF0dXJlcyBpbiBUYXN0ZSBXZXN0IFN1c3NleCBtYWdhemluZS4gVGhlIGNhbXBhaWduIGlzIGxlZCBieSBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCwgd29ya2luZyB3aXRoIHBhcnRuZXJzIGluY2x1ZGluZyB0aGUgQ29hc3RhbCBXZXN0IFN1c3NleCBUb3VyaXNtIEdyb3VwIGFuZCB0aGUgU291dGggRG93bnMgTmF0aW9uYWwgUGFyay5cXG5cXG4qKlRoZXJlIGFyZSBub3cgYXJvdW5kIDIyMCBidXNpbmVzc2VzIGZlYXR1cmVkIG9uIHRoZSBFeHBlcmllbmNlIFdlc3QgU3Vzc2V4IHdlYnNpdGUsIG5lYXJseSBkb3VibGUgdGhhdCByZXBvcnRlZCBpbiBEZWNlbWJlciAyMDE2LioqXFxuXFxuKipCb2dub3IgUmVnaXMgQ3JlYXRpdmUgRGlnaXRhbCBIdWIqKlxcblxcblRoZSAqKkJvZ25vciBSZWdpcyBDcmVhdGl2ZSBEaWdpdGFsIEh1YioqIHByb2plY3QgYWltcyB0byBkZXZlbG9wIHRoZSBjcmVhdGl2ZSBhbmQgZGlnaXRhbCBzZWN0b3JzIGluIEJvZ25vciBSZWdpcyBhbmQgY29hc3RhbCBXZXN0IFN1c3NleCwgdG8gY3JlYXRlIGhpZ2ggdmFsdWUgam9icyBpbiBoaWdoIGdyb3d0aCBzZWN0b3JzLiBUaGUgcHJvamVjdCBpbnZvbHZlcyB0aGUgZXN0YWJsaXNobWVudCBvZiBhIHNoYXJlZCBhbmQgY29sbGFib3JhdGl2ZSB3b3Jrc3BhY2Ugd2l0aGluIEJvZ25vciBSZWdpcyByYWlsd2F5IHN0YXRpb24sIGFuZCBpcyBkdWUgdG8gYmUgZGVsaXZlcmVkIGluIEp1bmUgMjAxOC4gQXMgcGFydCBvZiB0aGUgc2VjdG9yIGVuZ2FnZW1lbnQgd29yayBpbiBzdXBwb3J0IG9mIHRoZSBCb2dub3IgUmVnaXMgQ3JlYXRpdmUgRGlnaXRhbCBIdWIgcHJvamVjdCwgdHdvIGV2ZW50cyB3ZXJlIGRlbGl2ZXJlZCBpbiBRMiBieSBXaXJlZCBTdXNzZXguXFxuXFxuVGhlIGZpcnN0IHdhcyBhIHdvcmtzaG9wIG9uIDI3dGggSnVseSBmb3IgcHJpbWFyeSBzY2hvb2wtYWdlZCBjaGlsZHJlbiBpbiBkaWdpdGFsIGFuaW1hdGlvbiBhbmQgd2FzIGhlbGQgYXQgdGhlIEJhc2UgU2thdGVwYXJrIGluIEJvZ25vciBSZWdpcy4gVGhlIHNlc3Npb24gd2FzIGF0dGVuZGVkIGJ5IDI0IGNoaWxkcmVuIGZyb20gMTEgbG9jYWwgcHJpbWFyeSBzY2hvb2xzLCBhbmQgd2FzIGEgcGlsb3QgZm9yIG91dHJlYWNoIGRpZ2l0YWwgc2tpbGxzIGFjdGl2aXRpZXMgdGhhdCBtYXkgYmUgY2FycmllZCBvdXQgYnkgdGhlIEh1YiBpbiB0aGUgbG9jYWwgY29tbXVuaXR5LlxcblxcblRoZSBzZWNvbmQgZXZlbnQgd2FzIGhlbGQgb24gMjd0aCBTZXB0ZW1iZXIgYXQgVGhlIFBpZXIgaW4gQm9nbm9yIFJlZ2lzIGFuZCB3YXMgYSBuZXR3b3JraW5nIGV2ZW50IGZvciB0aGUgSHViIGJ1c2luZXNzIGNvbW11bml0eS4gVGhlcmUgd2VyZSBmaXZlIGludml0ZWQgc3BlYWtlcnMgd2hvIHNoYXJlZCB0aGVpciBleHBlcmllbmNlcyB3aXRoIHRoZSBhdWRpZW5jZSBvZiAyNiBidXNpbmVzcyBwZW9wbGUuXFxuXFxuVGhlcmUgYXJlIGN1cnJlbnRseSAyMDIgY29udGFjdHMgb24gdGhlIENyZWF0aXZlIERpZ2l0YWwgSHViIGNvbnRhY3QgZGF0YWJhc2UsIHdobyByZWNlaXZlIHJlZ3VsYXIgZW1haWwgdXBkYXRlcy5cXG5cXG5bMF06IGh0dHBzOi8vcmVnaXN0ZXIuZ290b3dlYmluYXIuY29tL3JlZ2lzdGVyLzk0NDk2ODEwNzI2NDQyNzU0XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcbioqQnVzaW5lc3NlcyBzdXBwb3J0ZWQgYnkgV1NDQy1sZWQgYW5kIHN1cHBvcnRlZCBidXNpbmVzcyBzdXBwb3J0IGluaXRpYXRpdmVzKiog4oCTIHRoaXMgZ29hbCBpcyBtZWFzdXJlZCBieSB0cmFja2luZyB0aGUgbnVtYmVyIG9mIGJ1c2luZXNzZXMgc3VwcG9ydGVkIGJ5IFdTQ0MgbGVkIGFuZCBzdXBwb3J0ZWQgYnVzaW5lc3Mgc3VwcG9ydCBpbml0aWF0aXZlcy5cXG5cXG5PdmVyIHRoZSBsYXN0IHF1YXJ0ZXIgT3ZlciAxNDAgaGVhbHRoIGFuZCBsaWZlIHNjaWVuY2UgcmVsYXRlZCBjb21wYW5pZXMgaGF2ZSBub3cgYmVlbiBpZGVudGlmaWVkIGluIHRoZSBjb3VudHkuIFdlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIGhhcyBjb250aW51ZWQgdG8gZmFjaWxpdGF0ZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiBXZXN0IFN1c3NleCBIZWFsdGggYW5kIExpZmUgU2NpZW5jZXMgQ2x1c3RlciBjb21wYW5pZXMsIHVwZGF0aW5nIHRoZW0gb24gc2VjdG9yIGZ1bmRpbmcsIG9wcG9ydHVuaXRpZXMgYW5kIGFjdGl2aXRpZXMuXFxuXFxuVGhpcyBxdWFydGVyIGhhcyBzZWVuIHRoZSBkZWxpdmVyeSBvZiBzZXZlcmFsIFNURU0gKHNjaWVuY2UsIHRlY2hub2xvZ3ksIGVuZ2luZWVyaW5nIGFuZCBtYXRoZW1hdGljcykgYWN0aXZpdGllcyBhaW1lZCBhdCBpbnNwaXJpbmcgdGhlIG5leHQgZ2VuZXJhdGlvbiB0byBzdHVkeSBhbmQgYnVpbGQgY2FyZWVycywgYW5kIHRvIGRldmVsb3AgdGhlIHRvb2xzIGFuZCB0ZWNobmlxdWVzIHRoYXQgd2lsbCBkcml2ZSB0aGUgZWNvbm9teSBvZiB0aGUgZnV0dXJlLk1pZCBTdXNzZXggU2NpZW5jZSBXZWVrLCBhbiBpbml0aWF0aXZlIGFpbWVkIGF0IHByaW1hcnkgYWdlZCBzdHVkZW50cyBpbiB0aGUgTWlkIFN1c3NleCBhcmVhIHRvb2sgcGxhY2UgaW4gTWlkLUp1bmUuIENyYXdsZXkgU1RFTSBmZXN0LCBub3cgaW4gaXRzIHNpeHRoIHllYXIgcmFuIGZyb20gTWF5LUp1bmUuIENyYXdsZXkgU1RFTSBmZXN0IGluY2x1ZGVkIGluLXNjaG9vbCBhY3Rpdml0aWVzLCBjb21wYW55IHNpdGUgdmlzaXRzLCBhbmQgYSBjb21tdW5pdHkgZGF5IGluIENyYXdsZXkuIEl0IGN1bG1pbmF0ZWQgd2l0aCBvdmVyIDksMDAwIHN0dWRlbnRzLCA0MCBsb2NhbCBTVEVNIGVtcGxveWVycyBhbmQgYSBudW1iZXIgb2YgbmF0aW9uYWwgb3JnYW5pc2F0aW9ucyBwYXJ0aWNpcGF0aW5nIGluIHRoZSBCaWcgQmFuZyBGYWlyIFNvdXRoIEVhc3QgaW4gQXJkaW5nbHkuXFxuXFxuQW4gRVJERiBzZWN0b3Igc3VwcG9ydCBjYWxsIGNvbnRhaW5pbmcgYSBsaWZlIHNjaWVuY2VzIGVsZW1lbnQgaGFzIGJlZW4gcmVsZWFzZWQgZm9yIHRoZSBDb2FzdCB0byBDYXBpdGFsIHJlZ2lvbi4gV1NDQywgdGhyb3VnaCB0aGUgRVUgUHJvamVjdCBSZXNvdXJjZXMgUHJvamVjdCBoYXMgYmVlbiBhY3RpdmVseSBlbmdhZ2luZyBwb3RlbnRpYWwgcGFydG5lcnMgdG8gZ2VuZXJhdGUgaW50ZXJlc3QgYW5kIGluY3JlYXNlIHRoZSBsaWtlbGlob29kIG9mIGEgc3Ryb25nIGNvbnNvcnRpdW0gZm9ybWluZyB0byBsZXZlcmFnZSB0aGUgYXZhaWxhYmxlIGZ1bmRzIHRvIHN1cHBvcnQgYnVzaW5lc3NlcyBpbiB0aGUgYXJlYS5cXG5cXG5JbiByZWxhdGlvbiB0byB0aGUgQ3JlYXRpdmUgRGlnaXRhbCBIdWIgc2VjdG9yIHdvcmsgYXJvdW5kIEJvZ25vciBSZWdpcyBhIGJ1c2luZXNzIGJyZWFrZmFzdCB3YXMgaGVsZCBhdCBUaGUgUGllciBCb2dub3IgUmVnaXMgaW4gTWF5IGJ5IFdpcmVkIFN1c3NleC4gUGVlciB0byBwZWVyIGFkdmljZSBhbmQgaWRlYXMgc2Vzc2lvbnMgaGVsZCBpbiBmb3VyIGdyb3VwcyBhZGRyZXNzZWQgaXNzdWVzIGluY2x1ZGluZyBtYXJrZXRpbmcgYW5kIGZpbmFuY2VzLiAyNSBidXNpbmVzc2VzIHRvb2sgcGFydC4gQW5kIGluIEp1bmUgMjAxNyBhbiDigJhJZGVhcyBDbGluaWPigJkgd2FzIGhlbGQgYXQgdGhlIFVuaXZlcnNpdHkgb2YgQ2hpY2hlc3RlciBCb2dub3IgUmVnaXMgY2FtcHVzIHdoaWNoIGluY2x1ZGVkIGFuIGludGVuc2l2ZSBwcm9ibGVtLXNvbHZpbmcgc2Vzc2lvbiB3aXRoIGxvY2FsIGNvbW11bml0eSBidXNpbmVzcyBvcmdhbmlzZXJzLCBpbmNsdWRpbmcgc29jaWFsIGVudGVycHJpc2VzLiBTZXZlbiBidXNpbmVzc2VzIGF0dGVuZGVkIGFuZCBhZHZpY2Ugd2FzIHByb3ZpZGVkIGJ5IGEgQnVzaW5lc3MgTmF2aWdhdG9yIGFuZCB0aGUgVW5pdmVyc2l0eeKAmXMgaW5jdWJhdG9yIG1hbmFnZXIuXFxuXFxuVW5kZXIgdGhlIExFQURFUiBwcm9ncmFtbWUgYXMgYXQgMzAgSnVuZSBvdXIgdHdvIExFQURFUiBMb2NhbCBBY3Rpb24gR3JvdXBzIGhhdmUgYXBwcm92ZWQgZ3JhbnRzIHRvdGFsbGluZyDCozYxNCw2MzggZm9yIDIxIHByb2plY3RzLlxcblxcbkF0IGxlYXN0IDE3IGJ1c2luZXNzZXMgaGF2ZSBiZWVuIGRpcmVjdGx5IHN1cHBvcnRlZC5cXG5cXG5Ub3RhbCB2YWx1ZSBvZiB0aGUgcHJvamVjdHMgKGluY2x1ZGluZyBMRUFERVIgZ3JhbnQpIGlzIMKjMS45bS5cXG5cXG5UaGUgcHJvamVjdHMgd2lsbCBjcmVhdGUgMzQgRlRFIGpvYnMgYW5kIDQsODE0IGFkZGl0aW9uYWwgb3Zlcm5pZ2h0IHN0YXlzLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgNCAtIE1hcmNoIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuKipCdXNpbmVzc2VzIHN1cHBvcnRlZCBieSBXU0NDLWxlZCBhbmQgc3VwcG9ydGVkIGJ1c2luZXNzIHN1cHBvcnQgaW5pdGlhdGl2ZXMqKiDigJMgdGhpcyBnb2FsIGlzIG1lYXN1cmVkIGJ5IHRyYWNraW5nIHRoZSBudW1iZXIgb2YgYnVzaW5lc3NlcyBzdXBwb3J0ZWQgYnkgV1NDQyBsZWQgYW5kIHN1cHBvcnRlZCBidXNpbmVzcyBzdXBwb3J0IGluaXRpYXRpdmVzLiBXZSBhaW0gdG8gaW5jcmVhc2UgdGhlIG51bWJlciBvZmJ1c2luZXNzZXMgc3VwcG9ydGVkIHRvIDMwMCBidXNpbmVzc2VzIGJ5IE1hcmNoIDIwMTcuXFxuXFxuKiozNTErIGJ1c2luZXNzZXMgYXMgUXVhcnRlciA0IOKAk01hcmNoIDIwMTcqKlxcblxcblRoZSBudW1iZXJzIG9mIGJ1c2luZXNzZXMgc3VwcG9ydGVkIHRocm91Z2ggV1NDQyBvciBXU0NDIHN1cHBvcnRlZCBpbml0aWF0aXZlcyBhcm91bmQgYnVzaW5lc3Mgc3VwcG9ydDpcXG5cXG5PdmVyIHRoZSBsYXN0IHF1YXJ0ZXIgdGhlIHVwZGF0aW5nIG9mIG91ciBleGlzdGluZyAqKldlc3QgU3Vzc2V4IEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyBDbHVzdGVyKiogY29tcGFuaWVzIG9uIGZ1bmRpbmcgb3Bwb3J0dW5pdGllcywgYW5kIGhlYWx0aCBhbmQgbGlmZSBzY2llbmNlIGFjdGl2aXRpZXMgdGFraW5nIHBsYWNlIGluIHRoZSByZWdpb24gaGFzIGNvbnRpbnVlZC4gSW4gYWRkaXRpb24gdGhlcmUgaGFzIGJlZW4gc29tZSBlbmdhZ2VtZW50IHdpdGggbmV3IGNsdXN0ZXIgY29tcGFuaWVzLCBhcyB3ZWxsIGFzIGtub3dsZWRnZSB0cmFuc2ZlciBuZXR3b3JrcyBhbmQgbmF0aW9uYWwgc2VjdG9yIG9yZ2FuaXNhdGlvbnMuIFRoZXJlIGhhcyBiZWVuIGFjdGl2ZSBpbnZvbHZlbWVudCBpbiB0aGUgSW5ub3ZhdGlvbiBTb3V0aCBTY2llbmNlIGFuZCBJbm5vdmF0aW9uIEF1ZGl0LCBhIEdvdmVybm1lbnQgYmFja2VkIGluaXRpYXRpdmUgdGhhdCBpcyBjdXJyZW50bHkgdGFraW5nIHBsYWNlIGFuZCB3aGljaCBhaW1zIHRvIGFzc2VzcyB0aGUgU291dGggb2YgRW5nbGFuZOKAmXMgc3RyZW5ndGhzIGluIGRpZ2l0YWwgZW5hYmxpbmcgdGVjaG5vbG9naWVzLCB3aXRoIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gdG8gdGhlIGJpbyBzY2llbmNlLCBhZHZhbmNlZCBlbmdpbmVlcmluZywgbWFyaW5lIGFuZCBtYXJpdGltZSBhbmQgY29ubmVjdGVkIGRpZ2l0YWwgc2VjdG9ycy4gV1NDQyBoYXMgcGFydGljaXBhdGVkIGluIHRoZSBhdWRpdCBhbmQgZW5jb3VyYWdlZCBXU0hMU0MgbWVtYmVycyB0byBhdHRlbmQgYSBiaW9zY2llbmNlIHRoZW1lZCB3b3Jrc2hvcCB3aGljaCB0b29rIHBsYWNlIGluIENyYXdsZXkgaW4gTWFyY2gsIGFuZCBmb3IgbWVtYmVycyB0byBjb250cmlidXRlIGV2aWRlbmNlIHRvIHN1cHBvcnQgdGhlIHN0dWR5LiBGaW5kaW5ncyBmcm9tIHRoZSBidXNpbmVzcyBzdXJ2ZXkgdW5kZXJ0YWtlbiB0byB1bmRlcnN0YW5kIHRoZSBza2lsbHMgYW5kIGJ1c2luZXNzIHN1cHBvcnQgbmVlZHMgb2YgdGhlIGNsdXN0ZXIgaXMgZXhwZWN0ZWQgbGF0ZXIgb24gaW4gdGhlIFNwcmluZy5cXG5cXG5JbiB0aGUgbGFzdCBxdWFydGVyLCBDb2FzdGFsIFNURU1mZXN0IGhhcyBsYXVuY2hlZCwgR1NLIHNpdGUgdmlzaXRzIGhhdmUgY29tbWVuY2VkIGFuZCB0aGUgQmlnIEJhbmdAQnV0bGlucyB0b29rIHBsYWNlIG9uIE1hcmNoIDE0dGggZHVyaW5nIE5hdGlvbmFsIFNjaWVuY2UgV2VlayB3aGljaCBpbmNsdWRlZCBhIG51bWJlciBvZiBhY3Rpdml0aWVzIHByb3ZpZGVkIGJ5IGxvY2FsIGFuZCB3aWRlciBhZmllbGQgY29tcGFuaWVzIGFuZCBvcmdhbmlzYXRpb25zIGRlc2lnbmVkIHRvIGluc3BpcmUga2V5IHN0YWdlIDMgJiA0IHN0dWRlbnRzIHRvIGNvbnRpbnVlIHN0dWR5aW5nIFNURU0gc3ViamVjdHMsIGFuZCBkaXNjb3ZlciBjYXJlZXIgb3Bwb3J0dW5pdGllcyBhbmQgaWRlbnRpZnkgcGF0aHdheXMgdG8gcmVhY2ggdGhlaXIgYXNwaXJhdGlvbnMuIE92ZXIgNzUwIHB1cGlscywgYW5kIHRlYWNoZXJzIGF0dGVuZGVkIHRoZSBldmVudC4gLiBNaWQtU3Vzc2V4IFNjaWVuY2UgV2VlayBhbmQgQ3Jhd2xleSBTVEVNZmVzdCBoYXZlIGJvdGggbGF1bmNoZWQgd2l0aCB0aGVpciByZXNwZWN0aXZlIGFjdGl2aXRpZXMgYW5kIEJpZyBCYW5nIGV2ZW50cyBzY2hlZHVsZWQgdG8gdGFrZSBwbGFjZSBsYXRlciBvbiBpbiB0aGUgeWVhci5cXG5cXG5JbiB0aGUgbGFzdCBxdWFydGVyLCB0aGUgQm9nbm9yIFJlZ2lzIENyZWF0aXZlIERpZ2l0YWwgSHViIHByb2plY3QgaGFzIGVuZ2FnZWQgd2l0aCBjcmVhdGl2ZSBhbmQgZGlnaXRhbCBidXNpbmVzc2VzIGluIGFuZCBhcm91bmQgQm9nbm9yIFJlZ2lzIHRocm91Z2ggb3VyIFdpcmVkIFN1c3NleCBzZWN0b3IgZW5nYWdlbWVudCBjb250cmFjdC4gQW4gZXZlbnQgd2FzIGhlbGQgb24gMjR0aCBKYW51YXJ5IGF0IHRoZSBVbml2ZXJzaXR5IG9mIENoaWNoZXN0ZXLigJlzIEJvZ25vciBSZWdpcyBjYW1wdXMsIGFuZCB3YXMgYXR0ZW5kZWQgYnkgNDggYnVzaW5lc3Nlcy4gVGhlIGZvY3VzIG9mIHRoZSBldmVudCB3YXMgYXNwaXJhdGlvbnMsIGdvYWxzIGFuZCByZXNvbHV0aW9ucyBmb3IgMjAxNywgYW5kIGluY2x1ZGVkIGEgcGFuZWwgZGlzY3Vzc2lvbiB3aXRoIGxvY2FsIGNyZWF0aXZlIGFuZCBkaWdpdGFsIGJ1c2luZXNzIGxlYWRlcnMuXFxuXFxuVGhpcyB3YXMgdGhlIGxhc3Qgb2YgZml2ZSBidXNpbmVzcyBlbmdhZ2VtZW50IGV2ZW50cyBvcmdhbmlzZWQgb24gb3VyIGJlaGFsZiBieSBXaXJlZCBTdXNzZXggaW4gMTYvMTcuIFRoZSBjdW11bGF0aXZlIHRvdGFsIG9mIGJ1c2luZXNzZXMgYXR0ZW5kaW5nIHRoZXNlIGV2ZW50cyBpbiB0aGUgcmVwb3J0aW5nIHllYXIgd2FzIDE0MCwgd2l0aCBhdmVyYWdlIGF0dGVuZGFuY2UgYXQgdGhlIGV2ZW50cyBpbmNyZWFzaW5nIGZyb20gMjAgYXR0ZW5kZWVzIGluIEFwcmlsIDIwMTYgdG8gNDggaW4gSmFudWFyeSAyMDE3LlxcblxcbkluIGFkZGl0aW9uLCBhcm91bmQgMjQwIGJ1c2luZXNzZXMgYXJlIHVwZGF0ZWQgbW9udGhseSBhbmQgZW5nYWdlZCB0aHJvdWdoIHRoZSBwcm9qZWN0IGNvbnRhY3QgZGF0YWJhc2UsIGFuZCBzb2NpYWwgbWVkaWEgYWNjb3VudHMuXFxuXFxuVW5kZXIgdGhlIGN1cnJlbnQgTEVBREVSIHByb2dyYW1tZSBhIHRvdGFsIG9mIDU3IG91dGxpbmUgYXBwbGljYXRpb25zIGhhdmUgYmVlbiByZWNlaXZlZCB0byBkYXRlLCB3aXRoLCBzbyBmYXIsIGEgdG90YWwgb2bCozQyMSwyNDcgYmVpbmcgY29tbWl0dGVkIHRvIDE0IGFwcHJvdmVkIHByb2plY3RzLiBUaGVzZSBwcm9qZWN0cyB3aWxsIGNyZWF0ZSBhcHByb3guIDI2IEZURSBqb2JzIGFuZCBhbiBleHRyYSA0LDgxNCBvdmVybmlnaHQgc3RheXMuIFRoZSB0b3RhbCBtYXRjaCBmdW5kaW5nIGlzIMKjMSwwNTIsOTM3LCBzbyB0b3RhbCB2YWx1ZSBvZiB0aGUgMTQgcHJvamVjdHMgPcKjMSw0NzQsMTg0LiBBIGZ1cnRoZXIgMjEgcHJvamVjdHMgaGF2ZSBiZWVuIGludml0ZWQgdG8gZnVsbCBhcHBsaWNhdGlvbiDigJMgcmVxdWVzdGluZyBncmFudCBvZiBhcHByb3guwqM3NTAsMDAwLiBBbGwgTEVBREVSIGZ1bmRpbmcgbXVzdCBiZSBjb21taXR0ZWQgYmVmb3JlIHRoZSBVSyBsZWF2ZXMgdGhlIEVVLlxcblxcbioqQnVzaW5lc3MgRmluYW5jZSBQcm9qZWN0KipcXG5cXG5UaGUgY2FsbCBmb3IgYXBwbGljYXRpb25zIGhhcyBub3cgY2xvc2VkLiBPdmVyYWxsIDIwMSBlbnF1aXJpZXMgYW5kIDEwNyBleHByZXNzaW9ucyBvZiBpbnRlcmVzdCB3ZXJlIHJlY2VpdmVkIGZyb20gY29tcGFuaWVzIGludGVyZXN0ZWQgaW4gYXBwbHlpbmcgZm9yIGEgQnVzaW5lc3MgR3Jvd3RoIEdyYW50LiBUaGlzIGNvbnZlcnRlZCB0byAzNiBmdWxsIGFwcGxpY2F0aW9ucyBhbmQgcmVzdWx0ZWQgaW4gMjMgY29tcGFuaWVzIHJlY2VpdmluZyBhbiBhcHByb3ZhbCBmcm9tIHRoZSBHcm93dGggR3JhbnQgcGFuZWxzIGluIDIwMTYvMTcgd2hpY2gsaWYgZnVsbHkgc3BlbnQsIHdpbGwgdG90YWwgwqM5NjAsMjEwLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuVGhlIG51bWJlcnMgb2YgYnVzaW5lc3NlcyBzdXBwb3J0ZWQgdGhyb3VnaCBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCAoV1NDQykgb3IgV1NDQyBzdXBwb3J0ZWQgaW5pdGlhdGl2ZXMgYXJvdW5kIGJ1c2luZXNzIHN1cHBvcnQ6XFxuXFxuKiBPdmVyIDEyMCBoZWFsdGggYW5kIGxpZmUgc2NpZW5jZXMgcmVsYXRlZCBjb21wYW5pZXMgaGF2ZSBiZWVuIHN1cHBvcnRlZCB0aHJvdWdoIHRoZSBIZWFsdGggYW5kIExpZmUgU2NpZW5jZXMgY2x1c3RlciBuZXR3b3JrLiBDb21wYW5pZXMgd2l0aGluIHRoZSBjbHVzdGVyIGFyZSByZWd1bGFybHkgdXBkYXRlZCBhYm91dCB0aGUgc2VjdG9yIGluaXRpYXRpdmVzIFdTQ0MgaXMgcHJvZ3Jlc3NpbmcsIHJlZ2lvbmFsIGV2ZW50cywgZnVuZGluZyBvcHBvcnR1bml0aWVzLCBsb2NhbCByZXNlYXJjaCwgYW5kIFNURU0gb3Bwb3J0dW5pdGllcy4gV29yayBoYXMgY29tbWVuY2VkIHRvIHVuZGVyc3RhbmQgdGhlIHNraWxscyBhbmQgYnVzaW5lc3Mgc3VwcG9ydCBuZWVkcyBvZiB0aGUgY2x1c3RlciBhbmQgYSBidXNpbmVzcyBzdXJ2ZXkgaGFzIGJlZW4gY29tbWlzc2lvbmVkIGFuZCByZWxlYXNlZC4gQWxsIGNsdXN0ZXIgY29tcGFuaWVzIGhhdmUgYmVlbiBnaXZlbiB0aGUgb3Bwb3J0dW5pdHkgdG8gY29udHJpYnV0ZSB0byB0aGUgd29yayBieSBoaWdobGlnaHRpbmcgYW55IGNoYWxsZW5nZXMgdGhhdCB0aGV5IGZhY2UuIE9uIE5vdmVtYmVyIDR0aCBXU0hMU0MgcGFydG5lcmVkIHdpdGggQ29nZW50IFNraWxscywgdGhlIHN0cmF0ZWdpYyBza2lsbHMgYm9keSBmb3IgdGhlIHNjaWVuY2UgaW5kdXN0cmllcyB0byBkZWxpdmVyIGEgU2tpbGxzIFJlZm9ybSBhbmQgQXBwcmVudGljZXNoaXAgTGV2eSBXb3Jrc2hvcC4gNiBidXNpbmVzc2VzIGF0dGVuZGVkIHRoZSB3b3Jrc2hvcCBhcyBkaWQgbG9jYWwgYXV0aG9yaXR5IGFuZCB1bml2ZXJzaXR5IHBhcnRuZXJzLiBPbiBEZWNlbWJlciA2dGggV1NITFNDIHBhcnRuZXJlZCB3aXRoIE9CTiwgYSBoZWFsdGggYW5kIGxpZmUgc2NpZW5jZXMgbWVtYmVyc2hpcCBvcmdhbmlzYXRpb24gdG8gZGVsaXZlciBhbiBldmVudCBhdCB0aGUgSG9saWRheSBJbm4sIEdhdHdpY2stIFdvcnRoIG9uIOKAmFB1YmxpYyBOb24tIERpbHV0YWJsZSBGdW5kaW5nIGFuZCBFeHBvcnQgU3VwcG9ydOKAmS4gUmFpbCBzdHJpa2VzIGFuZCBhZHZlcnNlIHRyYWZmaWMgY29uZGl0aW9ucyBoYWQgYSBuZWdhdGl2ZSBlZmZlY3Qgb24gbnVtYmVycyByZXN1bHRpbmcgaW4gMTQgYnVzaW5lc3NlcyBhbmQgMTcgYnVzaW5lc3MgZm9jdXNlZCBvcmdhbmlzYXRpb25zIGF0dGVuZGluZyAodW5pdmVyc2l0aWVzLCB0aGUgTEVQLCBDaGFtYmVycyBvZiBDb21tZXJjZSBldGMuKS4gVGhlIGluZm9ybWF0aW9uIGZyb20gdGhlIHR3byBldmVudHMgaGFzIGJlZW4gcGxhY2VkIG9ubGluZSBvbiB0aGUgV1NITFNDIHNlY3Rpb24gb2YgdGhlIEJ1c2luZXNzIFdlc3QgU3Vzc2V4IHdlYnNpdGUgdG8gc2VydmUgYXMgYW4gYWRkaXRpb25hbCByZXNvdXJjZSBmb3IgdGhvc2Ugd2hvIHdlcmUgdW5hYmxlIHRvIGF0dGVuZCB0aGUgZXZlbnRzLlxcblxcbiogVGhlIEJlYXV0aWZ1bCBPdXRkb29ycy9XZXN0IFN1c3NleCBXZWVrZW5kcyBjYW1wYWlnbiByYW4gZm9yIGl0cyBzZWNvbmQgeWVhciBmcm9tIE1heS1PY3RvYmVyIDIwMTYsIGFuZCB0aGUgd2Vic2l0ZSBub3cgZmVhdHVyZXMgYXJvdW5kIDExOCBidXNpbmVzc2VzIGFzIHBsYWNlcyB0byBzdG9wIG9mZiBhbmQgc3RheSBvbiByb3V0ZSBpbiBXZXN0IFN1c3NleCwgYW4gaW5jcmVhc2Ugb2YgNDggb24gdGhhdCBwcmV2aW91c2x5IHJlcG9ydGVkLiBEdXJpbmcgdGhlIGNhbXBhaWduLCBidXNpbmVzc2VzIHJlY2VpdmVkIGluIHRvdGFsIG92ZXIgMiw4MDAgb3V0Ym91bmQgY2xpY2tzIGZyb20gdGhlIGNhbXBhaWduIHdlYnNpdGUsIHNvbWUgb2Ygd2hpY2ggd2VyZSBkaXJlY3QgYm9va2luZ3MuIExvY2FsIGJ1c2luZXNzZXMgd2VyZSBhbHNvIHN1cHBvcnRlZCwgdGhyb3VnaCBzaWducG9zdGluZywgdG8gZ3JhbnQgZnVuZGluZyBhbmQgZGlnaXRhbCBtZWRpYSB0cmFpbmluZywgYW5kIHRocm91Z2ggZXhwb3N1cmUgaW4gZmVhdHVyZXMgaW4gVGFzdGUgV2VzdCBTdXNzZXggbWFnYXppbmUuIEEgZm9sbG93LXVwIHN1cnZleSB3YXMgdW5kZXJ0YWtlbiB3aXRoIGEgZmlmdGggb2YgdGhlIGZlYXR1cmVkIGJ1c2luZXNzZXMgdG8gZ2FpbiBmZWVkYmFjayBvbiB0aGVpciB2aWV3cyBvZiB0aGUgMjAxNiBjYW1wYWlnbi4gVGhlIGZlZWRiYWNrIHdlIHJlY2VpdmVkIHdhcyBwb3NpdGl2ZSwgYW5kIGtleSBtZXNzYWdlcyBpbmNsdWRlZCBzdXBwb3J0IGZvciBjb250aW51aW5nIGFuZCBleHBhbmRpbmcgdGhlIGNhbXBhaWduLCBjcmVhdGluZyBhIGdyZWF0ZXIgbnVtYmVyIG9mIHBsYWNlLWJhc2VkIGl0aW5lcmFyaWVzIHRvIGluc3BpcmUgdmlzaXRvcnMsIGFuZCBkZXZlbG9waW5nIGZ1cnRoZXIgbGlua2FnZXMgd2l0aCBsb2NhbCBhdHRyYWN0aW9ucy4gVGhlIGNhbXBhaWduIGlzIGNvbnRpbnVpbmcgdGhyb3VnaG91dCB0aGUgV2ludGVyLCB0byBwcm9tb3RlIFdlc3QgU3Vzc2V4IGFzIGFuIGF0dHJhY3RpdmUgdmlzaXRvciBkZXN0aW5hdGlvbiwgd2l0aCB0aGUgYWltIHRvIHJlY3J1aXQgYW5kIHN1cHBvcnQgbW9yZSBsb2NhbCBidXNpbmVzc2VzIGluIDIwMTcuXFxuXFxuKiBVbmRlciB0aGUgY3VycmVudCBMRUFERVIgcHJvZ3JhbW1lLCBDZW50cmFsIFN1c3NleCBhbmQgU3Vzc2V4IERvd25zICYgQ29hc3RhbCBQbGFpbiBMRUFERVIgTG9jYWwgQWN0aW9uIEdyb3VwcyBoYXZlIGFwcHJvdmVkIGEgdG90YWwgb2YgMTMgcHJvamVjdHMgd2l0aCBncmFudHMgdG90YWxsaW5nIMKjMzgwLDY3NC4gVGhlc2UgYXJlIGZvcmVjYXN0IHRvIGNyZWF0ZSAyNSBuZXcgZnVsbCB0aW1lIGVxdWl2YWxlbnQgam9icyBhbmQgNCw4MTQgYWRkaXRpb25hbCBvdmVybmlnaHQgc3RheXMgb3ZlciB0aGUgbmV4dCB0aHJlZSB5ZWFycy4gVGhlIHRvdGFsIG1hdGNoIGZ1bmRpbmcgYXNzb2NpYXRlZCB3aXRoIExFQURFUiBncmFudHMgaXMgwqM4NTIsNjEwIHdoaWNoIGVxdWF0ZXMgdG8gYSB0b3RhbCBwcm9qZWN0IHZhbHVlIG9mIMKjMSwyMzMsMjg0LlxcblxcbiogVGhlIEJ1c2luZXNzIEZpbmFuY2UgUHJvamVjdCByZWNlaXZlZCAyMDEgZW5xdWlyaWVzIGFuZCAxMDcgZXhwcmVzc2lvbnMgb2YgaW50ZXJlc3QgZnJvbSBjb21wYW5pZXMgaW50ZXJlc3RlZCBpbiBhcHBseWluZyBmb3IgYSBCdXNpbmVzcyBHcm93dGggR3JhbnQgKGFkZGl0aW9uYWwgMzYgdG8gdGhhdCBwcmV2aW91c2x5IHJlcG9ydGVkKS4gVGhpcyBjb252ZXJ0ZWQgdG8gMzYgZnVsbCBhcHBsaWNhdGlvbnMgYW5kIHJlc3VsdGVkIGluIDI0IGNvbXBhbmllcyByZWNlaXZpbmcgYW4gYXBwcm92YWwgZnJvbSB0aGUgR3Jvd3RoIEdyYW50IHBhbmVscyBpbiAyMDE2LzE3IHdoaWNoLCBpZiBmdWxseSBzcGVudCwgd2lsbCB0b3RhbCDCozEsMTA4LDc3MS5cXG5cXG5JbiB0aGUgbGFzdCBxdWFydGVyIHdpdGggcmVnYXJkIHRvIHRoZSBDcmVhdGl2ZS9EaWdpdGFsIHByb3Bvc2l0aW9uIFdpcmVkIFN1c3NleCBoYXZlIGRlbGl2ZXJlZCB0d28gc2VjdG9yIGVuZ2FnZW1lbnQgZXZlbnRzIGFzIHBhcnQgb2YgdGhlaXIgd29yayBvbiB0aGUgQm9nbm9yIFJlZ2lzIENyZWF0aXZlIERpZ2l0YWwgSHViIHByb2plY3QuIFRoZSBmaXJzdCB3YXMgaGVsZCBhdCBPeGZvcmTigJlzIEJhciBpbiBCb2dub3IgUmVnaXMgb24gMTUgTm92IGFuZCB3YXMgYXR0ZW5kZWQgYnkgMzEgY3JlYXRpdmUgZGlnaXRhbCBidXNpbmVzc2VzLiBUaGUgZXZlbnQgaW5jbHVkZWQgYSBwcmVzZW50YXRpb24gYnkgTWF0dCBEZXNtaWVyIGZyb20gdGhlIEJvdXJuZW1vdXRoIGFuZCBQb29sZSBkaWdpdGFsIGNsdXN0ZXIgYWJvdXQgdGhlaXIgZXhwZXJpZW5jZSBvZiBkZXZlbG9waW5nIHRoZSBzZWN0b3IgaW4gdGhhdCBhcmVhLCBhbmQgYSBwcmVzZW50YXRpb24gb2YgdGhlIHJlc3VsdHMgb2YgdGhlIFdpcmVkIFN1c3NleCBjcmVhdGl2ZSBkaWdpdGFsIHNlY3RvciBzdXJ2ZXkuIFdpcmVkIFN1c3NleCBjYXJyaWVkIG91dCBhIHN1cnZleSBvZiBjcmVhdGl2ZSBkaWdpdGFsIGJ1c2luZXNzZXMgaW4gQm9nbm9yIFJlZ2lzIHRvIHVuZGVyc3RhbmQgdGhlIGdlb2dyYXBoaWNhbCBhbmQgc2VjdG9yYWwgcmFuZ2Ugb2YgYnVzaW5lc3NlcyBjdXJyZW50bHkgZW5nYWdlZCB3aXRoIHRoZSBwcm9qZWN0LiBPdmVyIDEwMCBidXNpbmVzc2VzIHdlcmUgY29udGFjdGVkIGFuZCA0NSByZXNwb25zZXMgcmVjZWl2ZWQuIFRoZSBzZWNvbmQgZXZlbnQgd2FzIGhlbGQgb24gMTMgRGVjIGF0IFRoZSBQaWVyIGluIEJvZ25vciBSZWdpcyBhbmQgMjEgYnVzaW5lc3NlcyBhdHRlbmRlZC4gU3BlYWtlcnMgaW5jbHVkZWQgTWlrZSBIb2xsZXksIEhlYWQgb2YgdGhlIERlcGFydG1lbnQgb2YgQ3JlYXRpdmUgYW5kIERpZ2l0YWwgVGVjaG5vbG9neSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBDaGljaGVzdGVyLCB3aG8gc3Bva2UgYWJvdXQgdGhlIFVuaXZlcnNpdHnigJlzIG5ldyBFbmdpbmVlcmluZyBhbmQgRGlnaXRhbCBUZWNobm9sb2d5IFBhcmsgZHVlIHRvIG9wZW4gaW4gMjAxOC5cXG5cXG5JbiBhZGRpdGlvbiwgbW9udGhseSB1cGRhdGUgZW1haWxzIGFyZSBzZW50IHRvIDIyOCBjb250YWN0cyBvbiBXaXJlZCBTdXNzZXjigJlzIEJvZ25vciBodWIgZGF0YWJhc2UuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gU2VwdGVtYmVyIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuVGhlIG51bWJlcnMgb2YgYnVzaW5lc3NlcyBzdXBwb3J0ZWQgdGhyb3VnaCBXU0NDIG9yIFdTQ0Mgc3VwcG9ydGVkIGluaXRpYXRpdmVzIGFyb3VuZCBidXNpbmVzcyBzdXBwb3J0Olxcblxcbk92ZXIgMTIwIGhlYWx0aCBhbmQgbGlmZSBzY2llbmNlcyByZWxhdGVkIGNvbXBhbmllcyBoYXZlIGJlZW4gc3VwcG9ydGVkIHRocm91Z2ggdGhlIEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyBjbHVzdGVyIG5ldHdvcmsuIC4gQ29tcGFuaWVzIHdpdGhpbiB0aGUgY2x1c3RlciBhcmUgcmVndWxhcmx5IHVwZGF0ZWQgYWJvdXQgdGhlIHNlY3RvciBpbml0aWF0aXZlcyBXU0NDIGlzIHByb2dyZXNzaW5nLCByZWdpb25hbCBldmVudHMsIGZ1bmRpbmcgb3Bwb3J0dW5pdGllcywgbG9jYWwgcmVzZWFyY2gsIGFuZCBTVEVNIG9wcG9ydHVuaXRpZXMuIFdTQ0MgaXMgd29ya2luZyBoYXJkIHRvIGdyb3cgdGhlIGNsdXN0ZXIgYW5kIGRldmVsb3AgYSBwcm9ncmFtbWUgb2Ygc3VwcG9ydCB3aGljaCB3aWxsIGFkZCByZWFsIHZhbHVlIHRvIGNvbXBhbmllcyB3aXRoaW4gdGhlIHJlZ2lvbi4gVGhlIHByb2dyYW1tZSBvZiBzdXBwb3J0IHdpbGwgYmVnaW4gZnVsbHkgaW4gTm92ZW1iZXIgYW5kIGRldGFpbCBmcm9tIHRoZW0gcmVwb3J0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBxdWFydGVyLlxcblxcbk9uIHRoZUNyZWF0aXZlL0RpZ2l0YWwgcHJvcG9zaXRpb24gV2lyZWQgU3Vzc2V4IGhlbGQgYW4gZW5nYWdlbWVudCBldmVudCBmb3IgdGhlIHNlY3RvciBpbiBTZXB0ZW1iZXIgYXMgcGFydCBvZiB0aGVpciBzZWN0b3IgZGV2ZWxvcG1lbnQgY29udHJhY3QuIDIwIGJ1c2luZXNzZXMgYXR0ZW5kZWQuIEJyYW5kaW5nIGlkZWFzIGZvciB0aGUgaHViIGFzIHdlbGwgYXMgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBpbnRlcm5hbCBwbGFuc3dlcmUgcHJlc2VudGVkIGJ5IEhlbW1pbmd3YXkgRGVzaWduIGFsb25nIHdpdGggYSByZXN1bWUgb2Ygd29yayB1bmRlcnRha2VuIHRvIGRhdGUsIGFuZCBkaXNjdXNzaW9ucyBvdmVyIHRoZSBuZXh0IHN0ZXBzLiBUaGVyZSB3YXMgbmV0d29ya2luZyBvcHBvcnR1bml0aWVzIGZvciB0aG9zZSBidXNpbmVzc2VzIGF0dGVuZGluZyBhbmQgZGlzY3Vzc2lvbnMgb3ZlciB0aGUgcGxhbnMgZm9yIGVuY291cmFnaW5nIGdyb3d0aCBpbiB0aGlzIHNlY3Rvci5cXG5cXG5PdXIgdHdvIExFQURFUiBMb2NhbCBBY3RvbiBHcm91cHMgKExBR3MpIGhhdmUgc28gZmFyIGFwcHJvdmVkIGdyYW50cyB0b3RhbGxpbmcgwqMzMzcsOTMxIGZvciAxMSBwcm9qZWN0cyB3aGljaCBhcmUgZm9yZWNhc3QgdG8gY3JlYXRlIDIzIG5ldyBGVEUgam9icy4gQXQgbGVhc3QgMTEgYnVzaW5lc3NlcyBpbiB0b3RhbCB3aWxsIGJlbmVmaXQuIEhvd2V2ZXIgdGhlIExBR3MgZXh0ZW5kIHRvIGFyZWFzIG91dHNpZGUgb2YgV2VzdCBTdXNzZXgsIFdpdGhpbiBXZXN0IFN1c3NleCB0aGVyZSBhcmUgNyBwcm9qZWN0cyB3aGljaCBoYXZlIGJlZW4gYXBwcm92ZWQsIGZvcmVjYXN0IHRvIGNyZWF0ZSAxNy43IEZURSBqb2JzIGFuZCB0b3RhbGxpbmcgwqMyNDYsMDYzLiBUaGUgcHJvamVjdHMgaW4gV2VzdCBTdXNzZXggYXJlIGxpc3RlZCBiZWxvdywgb25seSB0aGUgZmlyc3Qgb25lIGxpc3RlZCBoYXMgYmVlbiBjb21wbGV0ZWQgYW5kIHRoZSBvdGhlcnMgYXJlIGluIHByZXBhcmF0aW9uOlxcblxcbiogTHV4dXJ5IGxvZGdlcyBvbiBhIHZpbmV5YXJkIHRvIHByb21vdGUgd2luZSB0b3VyaXNtXFxuXFxuKiBGYXJtIGJ1bmtob3VzZSBzdHlsZSBhY2NvbW1vZGF0aW9uIG5lYXIgdGhlIFNvdXRoIERvd25zIFdheSBmb3IgY3ljbGlzdHMgYW5kIHdhbGtlcnNcXG5cXG4qIE5ldyBlcXVpcG1lbnQgZm9yIGEgZm9vZCBwcm9jZXNzaW5nIGNvbXBhbnkgaW5jbHVkaW5nIGNvbW1lcmNpYWxpc2F0aW9uIG9mIGEgbmV3IOKAnGNsZWFu4oCdIHRlY2hub2xvZ3kgZm9yIHNtb2tpbmcgaW5ncmVkaWVudHNcXG5cXG4qIE1vZGVybiBkaWdpdGFsIGVxdWlwbWVudCBmb3IgYSBsb2NhbCBsYWJlbCBwcmludGluZyBidXNpbmVzc1xcblxcbiogRm9yZXN0cnkgaGFydmVzdGVyIGhlYWQgZm9yIGEgZmFybSBiYXNlZCBiaW9tYXNzIGJ1c2luZXNzXFxuXFxuKiBTdHJhdyBzaHJlZGRpbmcgYW5kIHBlbGxldGluZyBlcXVpcG1lbnQgZm9yIGEgZGl2ZXJzaWZpZWQgZmFybSBidXNpbmVzcyBwcm9kdWNpbmcgYW5pbWFsIGJlZGRpbmcgYW5kIGJpb21hc3MgZm9yIHdvb2QtYnVybmluZyBib2lsZXJzXFxuXFxuKiBOZXcgc2lnbmFnZSBhbmQgd2Vic2l0ZSBwcm9tb3RpbmcgYWNjZXNzaWJsZSB3YWxrcyBhcm91bmQgQnJhbWJlclxcblwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIldpdGggcmVnYXJkIHRvIHRoZSBCdXNpbmVzcyBGaW5hbmNlIFByb2plY3QgMTc1IGJ1c2luZXNzZXMgaGF2ZSBiZWVuIGluIGRpc2N1c3Npb24gb3ZlciBwcm9wb3NlZCBwcm9qZWN0cywgYW5kIHNvIGZhciA2IGhhdmUgZGVjbGFyZWQgdGhleSBpbnRlbnQgdG8gc3VibWl0IGFuIEV4cHJlc3Npb24gb2YgSW50ZXJlc3QgKEVPSSkuIFRoZSB0YWJsZSBvbiB0aGUgcmlnaHQgc2hvd3MgdGhlIGxhdGVzdCBwb3NpdGlvbiBmb3IgdGhlIHByb2plY3QgaW4gdGVybXMgb2YgYXBwbGljYXRpb25zIHNvIGZhci5cXG5cXG5cIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy85NTZBN0I2Qi1CMzhDLTQ4RkUtOEI3QS1GQzk5OTVDNjg5MEFcIn1dXX0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiRm9sbG93aW5nIGhpcyBhbm5vdW5jZW1lbnQgaW4gQXVndXN0LCBvbiB0aGUgZnV0dXJlIG9mIEVVIGZ1bmRpbmcgaW4gdGhlIGNvbnRleHQgb2YgQnJleGl0IGFuZCB3aGljaCBndWFyYW50ZWVkIGZ1bmRzIGZvciBwcm9qZWN0cyBzaWduZWQgdXAgdW50aWwgdGhlIEF1dHVtbiBTdGF0ZW1lbnQgKE5vdmVtYmVyIDIwMTYpLCB0aGUgQ2hhbmNlbGxvciBoYXMgbm93IGV4dGVuZGVkIHRoaXMgZ3VhcmFudGVlIHRvIHRoZSBwb2ludCBhdCB3aGljaCB0aGUgVUsgZGVwYXJ0cyB0aGUgRVUuIFRoZSBDaGFuY2VsbG9yIGNvbmZpcm1lZCB0aGF0IHRoZSBnb3Zlcm5tZW50IHdpbGwgZ3VhcmFudGVlIEVVIGZ1bmRpbmcgZm9yIHN0cnVjdHVyYWwgYW5kIGludmVzdG1lbnQgZnVuZCBwcm9qZWN0cywgaW5jbHVkaW5nIGFncmktZW52aXJvbm1lbnQgc2NoZW1lcywgc2lnbmVkIGFmdGVyIHRoZSBBdXR1bW4gU3RhdGVtZW50IGFuZCB3aGljaGNvbnRpbnVlIGFmdGVyIHdlIGhhdmUgbGVmdCB0aGUgRVUuXFxuXFxuSGUgd2FzIGNsZWFyLCB3aGlsZSB0aGUgVUsgaXMgc3RpbGwgYSBtZW1iZXIgb2YgdGhlIEVVLCBCcml0aXNoIGJ1c2luZXNzZXMsIGZhcm1lcnMgYW5kIG90aGVyIG9yZ2FuaXNhdGlvbnMgbXVzdCBiZSBlbnRpdGxlZCB0byBhcHBseSBmb3IgRVVmdW5kcy4gRnVuZGluZyBmb3IgcHJvamVjdHMgd2lsbCBiZSBob25vdXJlZCBieSB0aGUgZ292ZXJubWVudCwgaWYgdGhleSBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcXG5cXG4qIHRoZXkgYXJlIGdvb2QgdmFsdWUgZm9yIG1vbmV5XFxuXFxuKiB0aGV5IGFyZSBpbiBsaW5lIHdpdGggZG9tZXN0aWMgc3RyYXRlZ2ljIHByaW9yaXRpZXNcXG5cXG5BcyBhIHJlc3VsdCwgQnJpdGlzaCBidXNpbmVzc2VzLCBmYXJtZXJzIGFuZCBvdGhlciBvcmdhbmlzYXRpb25zIHdpbGwgaGF2ZSBhZGRpdGlvbmFsIGNlcnRhaW50eSBvdmVyIGZ1dHVyZSBmdW5kaW5nIGFuZCBzaG91bGQgY29udGludWUgdG8gYXBwbHkgZm9yIEVVIGZ1bmRpbmcgd2hpbGUgdGhlIFVLIHJlbWFpbnMgYSBtZW1iZXIgb2YgdGhlIEVVLlxcblxcblRoZSBhbm5vdW5jZW1lbnQgbWFkZSBvbiAzIE9jdG9iZXIgMjAxNiBidWlsZHMgb24gdGhlIGFzc3VyYW5jZXMgZ2l2ZW5ieSB0aGUgQ2hhbmNlbGxvciBpbiBBdWd1c3Qgd2hpY2ggYWxzbyBpbmNsdWRlZDpcXG5cXG4qIGFsbCBzdHJ1Y3R1cmFsIGFuZCBpbnZlc3RtZW50IGZ1bmQgcHJvamVjdHMsIGluY2x1ZGluZyBhZ3JpLWVudmlyb25tZW50IHNjaGVtZXMsIHNpZ25lZCBiZWZvcmUgdGhlIEF1dHVtbiBTdGF0ZW1lbnQgd2lsbCBiZSBmdWxseSBmdW5kZWQsIGV2ZW4gd2hlbiB0aGVzZSBwcm9qZWN0cyBjb250aW51ZSBiZXlvbmQgdGhlIFVL4oCZcyBkZXBhcnR1cmUgZnJvbSB0aGUgRVVcXG5cXG4qIGFsbCBkaXJlY3QgY29tcGV0aXRpdmVseSBiaWQgcHJvamVjdHMgZGlyZWN0bHkgd2l0aCB0aGUgRXVyb3BlYW4gQ29tbWlzc2lvbiwgZm9yIGV4YW1wbGUgdW5pdmVyc2l0aWVzIHBhcnRpY2lwYXRpbmcgaW4gSG9yaXpvbiAyMDIwXFxuXFxuKiB0aGUgY3VycmVudCBsZXZlbCBvZiBhZ3JpY3VsdHVyYWwgZnVuZGluZyB1bmRlciBDQVAgcGlsbGFyIDEgd2lsbCBiZSB1cGhlbGQgdW50aWwgMjAyMCBhcyBwYXJ0IG9mIHRoZSB0cmFuc2l0aW9uIHRvIG5ldyBkb21lc3RpYyBhcnJhbmdlbWVudHNcXG5cXG5baHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvbmV3cy9mdXJ0aGVyLWNlcnRhaW50eS1vbi1ldS1mdW5kaW5nLWZvci1odW5kcmVkcy1vZi1icml0aXNoLXByb2plY3RzXVswXVxcblxcblswXTogaHR0cHM6Ly93d3cuZ292LnVrL2dvdmVybm1lbnQvbmV3cy9mdXJ0aGVyLWNlcnRhaW50eS1vbi1ldS1mdW5kaW5nLWZvci1odW5kcmVkcy1vZi1icml0aXNoLXByb2plY3RzXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE2KipcXG5cXG5fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXFxuXFxuVGhlIG51bWJlcnMgb2YgYnVzaW5lc3NlcyBzdXBwb3J0ZWQgdGhyb3VnaCBXU0NDIG9yIFdTQ0Mgc3VwcG9ydGVkIGluaXRpYXRpdmVzIGFyb3VuZCBidXNpbmVzcyBzdXBwb3J0OlxcblxcblRoZSB1cHNob3QgaXMgdGhhdCB0aGVyZSBhcmUgYXJvdW5kIDkwIGJ1c2luZXNzZXMgc3VwcG9ydGVkIHRocm91Z2ggdGhlIEhlYWx0aCBhbmQgTGlmZSBzY2llbmNlcyBjbHVzdGVyIG5ldHdvcmssIDExIGNvbXBhbmllcyBoYXZlIHBhcnRpY2lwYXRlZCBvciBhcmUgY29tbWl0dGVkIHRvIHBhcnRpY2lwYXRpbmcgaW4gU1RFTSBpbml0aWF0aXZlcyB0aGF0IFdTQ0MgaGF2ZSBwYXJ0IGZ1bmRlZC4gSXQgaXMgdGhlIGludGVudGlvbiB0byBob2xkIGEgc2Vjb25kIGNsdXN0ZXIgZXZlbnQgaW4gTm92ZW1iZXIuXFxuXFxuT24gdGhlIENyZWF0aXZlL0RpZ2l0YWwgcHJvcG9zaXRpb24gYSBuZXR3b3JraW5nIGV2ZW50IHdhcyBoZWxkIGF0IHRoZSBXYXZlcmxleSBIb3RlbCBpbiBCb2dub3IgUmVnaXMgaW4gQXByaWwsIDIwIGJ1c2luZXNzZXMgYXR0ZW5kZWQuIFRoZSBwbGFucyBmb3IgdGhlIG5ldyBodWIgYW5kIGl0cyBsaW5rcyB0byB0aGUgVW5pdmVyc2l0eeKAmXMgbmV3IEVuZ2luZWVyaW5nIGFuZCBEaWdpdGFsIFRlY2hub2xvZ3kgUGFyayB3ZXJlIGRpc2N1c3NlZCBhbmQgYnVzaW5lc3NlcyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIHdlcmUgYWJsZSB0byBmZWVkIGJhY2sgdGhlaXIgdGhvdWdodHMgb24gdGhlIHBsYW5zIGFuZCBob3cgdGhlIGh1YiBjb3VsZCBzdXBwb3J0IHRoZW07IGFuZCB0aGV5IHdlcmUgYWJsZSB0byBuZXR3b3JrIHRvZ2V0aGVyIGFzIHBhcnQgb2YgdGhlIHNlY3RvciBkZXZlbG9wbWVudCB3b3JrIHRoYXQgY29tcGxlbWVudHMgdGhlIGVzdGFibGlzaG1lbnQgb2YgdGhlIGh1Yi5cXG5cXG5TbyBmYXIgOCBidXNpbmVzc2VzIGhhdmUgYmVlbiBzdXBwb3J0ZWQgdG8gc3VibWl0IEVPSXMgdG8gdGhlIEJ1c2luZXNzZXMgRmluYW5jZSBwcm9ncmFtbWUuXFxuXFxuVGhlIHR3byBMRUFERVIgTG9jYWwgQWN0aW9uIEdyb3VwcyBoYXZlIGFwcHJvdmVkIDYgcHJvamVjdCBzdWJtaXNzaW9ucyBmcm9tIGJ1c2luZXNzZXMuIFRoZSB0b3RhbCBncmFudCBjb21taXR0ZWQgdG8gZGF0ZSBpcyDCozE4OCw3NTAuXFxuXFxuVGhlIG5leHQgdXBkYXRlIGlzIGR1ZSBpbiBPY3RvYmVyIGZvciB0aGUgcXVhcnRlciB0byBTcGV0ZW1iZXIgMjAxNi5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgLSBEZWNlbWJlciAyMDE1KipcXG5cXG4tIC0gLVxcblxcblRoaXMgY29tbWVudGFyeSByZXBvcnRzIG9uIEVjb25vbWljIERldmVsb3BtZW50IGluaXRpYXRpdmVzIGFuZCBhY3Rpdml0aWVzIHRoYXQgc3VwcG9ydCBidXNpbmVzc2VzLlxcblxcbioqQmV0dGVyIEJvZ25vciBSZWdpcyBCb2xkIElkZWEgKERpZ2l0YWwgYW5kIGNyZWF0aXZlIGNsdXN0ZXIpKipcXG5cXG5UaGlzIHByb2plY3QgaXMgb25lIG9mIHRoZSBmaXZlICdCb2xkIElkZWFzJyBkZXZlbG9wZWQgdG8gaGVscCB0YWNrbGUgV2VzdCBTdXNzZXjigJlzIGVjb25vbWljIGNoYWxsZW5nZXMgYW5kIGVuY291cmFnZSBlY29ub21pYyBhY3Rpdml0eSBvdmVyIHRoZSBzaG9ydCB0byBtZWRpdW0gdGVybS4gRHJhd2luZyBvbiBleGFtcGxlcyBmcm9tIG90aGVyIHBsYWNlcyBpbiB0aGUgVUsgYW5kIGludGVybmF0aW9uYWxseSwgdGhlIGNvdW50eSB3b3VsZCBsaWtlIHRvIGVzdGFibGlzaCBCb2dub3IgUmVnaXMgYXMgYW4gYXJ0aXN0aWMvY3JlYXRpdmUgY2VudHJlLCBhIHBsYWNlIHdoZXJlIHlvdW5nIGNyZWF0aXZlIHBlb3BsZSBmcm9tIHRoZSBsb2NhbCBhcmVhIHRocml2ZSwgYW5kIGF0dHJhY3RzIG90aGVycyBmcm9tIHN1cnJvdW5kaW5nIGFyZWFzIGluY2x1ZGluZyBMb25kb24gdG8gcmVsb2NhdGUuIFRoZSBmb2N1cyB3aWxsIGJlIHRvIGNyZWF0ZSBhIHNoYXJlZCB3b3Jrc3BhY2UgYXQgQm9nbm9yIFJlZ2lzIHJhaWx3YXkgc3RhdGlvbiB3aGVyZSBzbWFsbCBidXNpbmVzc2VzIGNhbiB3b3JrIGluIGEgY3JlYXRpdmUgYW5kIHN1cHBvcnRpdmUgZW52aXJvbm1lbnQsIG5ldHdvcmssIHNvY2lhbGlzZSwgZGlzcGxheSB3b3JrLCBzaGFyZSBmYWNpbGl0aWVzIGV0Yy4gSXQgaXMgdG8gYmUgdW5kZXJ0YWtpbmcgaW4gcGFydG5lcnNoaXAgd2l0aCBvdGhlcnMgaW5jbHVkaW5nIENoaWNoZXN0ZXIgVW5pdmVyc2l0eSwgYW5kIGl0IGludGVuZGVkIHRoYXQgdGhlIG5ldyBmYWNpbGl0aWVzIHdvdWxkIHByb3ZpZGUgYW4gZW52aXJvbm1lbnQgZm9yIGdyYWR1YXRlcyBmcm9tIHRoZSBVbml2ZXJzaXR5IHRvIGRldmVsb3AgbmV3IGJ1c2luZXNzZXM7IGFuZCB0aGUgVW5pdmVyc2l0eSB3b3VsZCBwcm92aWRlIGEgc291cmNlIG9mIHNraWxscyBmb3IgdGhpcyBncm93aW5nIHNlY3RvciBpbiBCb2dub3IgUmVnaXMgYW5kIFdlc3QgU3Vzc2V4LlxcblxcblRoZSBmaXJzdCBidXNpbmVzcyBldmVudCBhcm91bmQgdGhpcyBwcm9wb3NpdGlvbiB3YXMgaGVsZCBpbiBOb3ZlbWJlciAyMDE1IGluIEJvZ25vciBSZWdpcy4gVGhlIGFpbSBvZiB0aGUgZXZlbnQgd2FzIHRvIHNoYXJlIHRoZSBlbWVyZ2luZyBwbGFucyBmb3IgYSBkaWdpdGFsIGFuZCBjcmVhdGl2ZSBodWIgd2l0aCBwYXJ0bmVycywgcG90ZW50aWFsIHN0YWtlaG9sZGVycyBhbmQgYSBzbWFsbCBudW1iZXIgb2YgbG9jYWwgY3JlYXRpdmUgYW5kIGRpZ2l0YWwgYnVzaW5lc3NlcywgdG8gaW52aXRlIGZlZWRiYWNrLCB0byBleGFtaW5lIHRoZSBwb3RlbnRpYWwgc3BhY2UgZm9yIHRoZSBodWIgYXQgQm9nbm9yIFJlZ2lzIFJhaWx3YXkgU3RhdGlvbiBhbmQgdG8gZXhhbWluZSBob3cgdGhlIGlkZWEgc2hvdWxkIGJlIHByb2dyZXNzZWQuXFxuXFxuOCBidXNpbmVzc2VzIGF0dGVuZGVkIHRoaXMgZXZlbnQuIFRoZSBuZXh0IGV2ZW50IGlzIGJlaW5nIG9yZ2FuaXNlZCBpbiBKYW51YXJ5IHdoaWNoIHdpbGwgaW5jbHVkZSBhIGJpZ2dlciBhdHRlbmRhbmNlIGZyb20gYnVzaW5lc3NlcywgYW5kIHdpbGwgYmUgZmVlZGJhY2sgaW4gdGhlIG5leHQgcXVhcnRlci5cXG5cXG4qKkJlYXV0aWZ1bCBPdXRkb29ycy9XZXN0IFN1c3NleCBXZWVrZW5kcyoqXFxuXFxuRm9sbG93aW5nIG9uIGZyb20gdGhlIEJlYXV0aWZ1bCBPdXRkb29ycy9XZXN0IFN1c3NleCBXZWVrZW5kcyBjYW1wYWlnbiB0aGF0IHdhcyBsYXVuY2hlZCBpbiBTdW1tZXIg4oCZMTUgdGhlcmUgd2FzIGEgZm9sbG93IHVwIHN1cnZleSBvZiBhcm91bmQgYSB0aGlyZCBvZiB0aGUgYnVzaW5lc3NlcyB0aGF0IHdlcmUgaW52b2x2ZWQgdG8gYXNjZXJ0YWluIHRoZSBiZW5lZml0cyB0aGV5IGhhZCBzZWVuIGFuZCB0byBnZXQgdGhlaXIgdmlldyBvbiB0aGUgcHJvbW90aW9uIG9mIFdlc3QgU3Vzc2V4IGFzIGEgdmlzaXRvciBkZXN0aW5hdGlvbi4gQ2VydGFpbmx5IHRoZSBmZWVkYmFjayBmcm9tIHRoZW0gd2FzIHZlcnkgcG9zaXRpdmUsIGFsbCBvZiB0aGVtIHJlcG9ydGVkIHRoYXQgdGhleSB3YW50ZWQgdGhlIGNhbXBhaWduIHRvIGNvbnRpbnVlLCBtYW55IGV4cGVjdCB0aGUgd2Fsa2luZy9jeWNsaW5nIG1hcmtldCB0byBpbmNyZWFzZSBmb3IgdGhlaXIgYnVzaW5lc3MgYW5kIHNvbWUgaGFkIHVuZGVydGFrZW4gaW1wcm92ZW1lbnRzIHRvIG1ha2UgdGhlbXNlbHZlcyBtb3JlIGN5Y2xpbmcvd2Fsa2luZyBmcmllbmRseSBpLmUuIGludHJvZHVjdGlvbiBvZiBzZWN1cmUgY3ljbGUgc3RvcmFnZS5cXG5cXG5HaXZlbiB0aGUgd2ludGVyIGx1bGwgV2VzdCBTdXNzZXggV2Vla2VuZHMgaXMgY29uY2VudHJhdGluZyBvbiBwcm9tb3RpbmcgYSBzZXJpZXMgb2Ygd2Fsa3MgaW4gdGhlIENvdW50eSwgdGhpcyBpcyBpbiBwYXJ0bmVyc2hpcCB3aXRoIGlGb290cGF0aCwgYSBuYXRpb25hbCB3ZWJzaXRlIGFuZCBhcHAgdG8gZW5jb3VyYWdlIHBlb3BsZSB0byBnZXQgb3V0IGFuZCBlbmpveSB3YWxrcyBhY3Jvc3MgdGhlIFVLLiBUaGVyZSBhcmUgMTAgd2Fsa3MgaW5jbHVkZWQgaW4gV2VzdCBTdXNzZXgsIGRldGFpbGVkIG1hcHMgYW5kIGEgZGVzY3JpcHRpb24gb2YgdGhlIHdhbGsgaXMgaW5jbHVkZWQgYW5kIGxvY2FsIGJ1c2luZXNzZXMgdGhhdCBhIHdhbGtlciBjb3VsZCBzdG9wIG9mZiBhdCBmb3IgcmVmcmVzaG1lbnQgYXJlIG1lbnRpb25lZC5cXG5cXG5baHR0cDovL3d3dy53ZXN0LXN1c3NleC13ZWVrZW5kcy5jb20vd2ludGVyLXdhbGtzXVswXVxcblxcblRoZXJlIGFyZSBub3cgYXJvdW5kIDcwIGxvY2FsIGJ1c2luZXNzZXMgb24gdGhlIFdlc3QgU3Vzc2V4IFdlZWtlbmRzIHdlYnNpdGUsIHByb21vdGluZyB0aGVtIGFzIHBsYWNlcyB0byBzdG9wIG9mZiBhbmQvb3Igc3RheSBmb3IgdmlzaXRvcnMgdG8gV2VzdCBTdXNzZXgsIHRoaXMgaXMgMTAgbW9yZSB0aGFuIHByZXZpb3VzbHkgcmVwb3J0ZWQgYW5kIHRoZW4gYXJlIHBsYW5zIHRvIHJlY3J1aXQgZXZlbiBtb3JlIGxvY2FsIGJ1c2luZXNzZXMgdG8gb3VyIGNhbXBhaWduIGFuZCBoZWxwIHRvIHN1cHBvcnQgdGhlbSB0byBiZWNvbWUgZXZlbiBtb3JlIGF0dHJhY3RpdmUgdG8gdmlzaXRvcnMgdG8gV2VzdCBTdXNzZXggdGhyb3VnaCBvdXIgMjAxNiBjYW1wYWlnbi5cXG5cXG4qKkhlYWx0aCAmIExpZmUgU2NpZW5jZXMqKlxcblxcblRoZSBIZWFsdGggYW5kIExpZmUgU2NpZW5jZXMgQ2x1c3RlciBoYXMgbm93IGlkZW50aWZpZWQgb3ZlciA5MCBjb21wYW5pZXMgYW5kIHdvcmsgaGFzIGJlZW4gdW5kZXJ0YWtlbiBhbmQgaXMgb24tZ29pbmcgdG8gZW5nYWdlIHRoZSBuZXcgY29tcGFuaWVzIHRvIHRoZSB3b3JrIHRvIGRhdGUuIEFuIHVwZGF0ZWQgY2x1c3RlciBkaXJlY3RvcnkgaXMgc2hvcnRseSB0byBiZSByZWxlYXNlZCB0byBpbmNsdWRlIGFsbCA5MCBjb21wYW5pZXMgKGluY3JlYXNlIG9mIGFyb3VuZCAyNiBmcm9tIHRoZSBwcmV2aW91cyB2ZXJzaW9uKS4gVGhlIGNsdXN0ZXIgaGFzIGFuIG9uLWxpbmUgcHJlc2VuY2UgaW4gdGhlIGZvcm0gb2YgYSB3ZWJzaXRlLCB0d2l0dGVyIGFuZCBsaW5rZWQtaW4gZ3JvdXAsIGluIGFkZGl0aW9uIHRvIHRoZSA5MCBjb21wYW5pZXMgdGhlcmUgYXJlIG92ZXIgMzAwIGluZGl2aWR1YWxzIGZyb20gcHJpdmF0ZSBidXNpbmVzcywgZXh0ZXJuYWwgc2VjdG9yIG9yZ2FuaXNhdGlvbnMsIGFjYWRlbWljcywgbG9jYWwgZ292ZXJubWVudCBhbmQgdGhlIE5IUy4gV1NDQyBhcmUgZGV2ZWxvcGluZyBzb21lIGluaXRpYXRpdmVzIChjb2xsZWN0aXZlbHkga25vd24gYXMgdGhlIEdyb3d0aCBIdWIpIHRvIHN1cHBvcnQgc3RhcnQtdXBzIGFuZCBTTUVzIGluIHRoaXMgY2x1c3RlciB0aHJvdWdob3V0IHRoZSBjb3VudHkuIFNwZWNpZmljIGluaXRpYXRpdmVzIGluY2x1ZGUgcG90ZW50aWFsbHkgY3JlYXRpbmcgYSBNZWQgVGVjaCBBY2NlbGVyYXRvciBpbiB0aGUgY291bnR5IHdoaWNoIHdvdWxkIHByb3ZpZGUgYW4gaW50ZW5zaXZlIGJ1c2luZXNzIHN1cHBvcnQgcHJvZ3JhbW1lIGZvciBzbWFsbCBncm91cHMgb2Ygc3RhcnQtIHVwczsgYW5kIGRldmVsb3BtZW50IG9mIHByYWN0aWNhbCBtZWFzdXJlcyBlLmcuIHJvdW5kLXRhYmxlIGRpc2N1c3Npb25zIGFuZCBpbXByb3ZlZCBzaWduIHBvc3RpbmcgdG8gaGVscCBhbGxldmlhdGUgc29tZSBvZiB0aGUgcmVndWxhdG9yeSBjaGFsbGVuZ2VzIHRoYXQgdGhlIGNvbXBhbmllcyBmYWNlLlxcblxcbltodHRwOi8vd3d3LmJ1c2luZXNzd2VzdHN1c3NleC5jby51ay8yNTItd3NobHNjLmh0bWxdWzFdXFxuXFxuSW4gYWRkaXRpb24gdGhlcmUgaXMgd29yayBiZWluZyB1bmRlcnRha2VuIHRvIGFkZHJlc3MgdGhlIHNraWxscyBnYXBzIGluIHRoaXMgYXJlYSBhbmQgYnVzaW5lc3NlcyBpbiB0aGUgY2x1c3RlciBoYXZlIGJlZW4gaW52aXRlZCB0byBwYXJ0aWNpcGF0ZSBpbiBDb2FzdGFsIFNURU0gZmVzdCAyMDE2LCBhbmQgYSBudW1iZXIgb2YgYnVzaW5lc3NlcyBhdHRlbmRlZCB0aGUgcHJlbGltaW5hcnkgbWVldGluZyBpbiBOb3ZlbWJlciB0byBwbGFuIGZvciB0aGlzLlxcblxcbkNvbXBhbmllcyBpbiB0aGlzIHNlY3RvciBoYXZlIHJlcG9ydGVkIHRoYXQgdGhleSBkbyBub3QgaGF2ZSBsaW5rcyB3aXRoIGxvY2FsIHVuaXZlcnNpdGllcywgYW5kIGluZGVlZCB0aGF0IHVuaXZlcnNpdGllcyB3ZXJlIOKAmGludmlzaWJsZeKAmSB0byB0aGVtLiBJbiByZXNwb25zZSB0byB0aGlzIHRoZXJlIHdvcmsgaXMgdW5kZXJ3YXkgdG8gaW1wcm92ZSB0aGUgbGluayBiZXR3ZWVuIGNvbXBhbmllcyBpbiB0aGUgaGVhbHRoIGFuZCBsaWZlIHNjaWVuY2VzIGNsdXN0ZXIgYW5kIGxvY2FsIHVuaXZlcnNpdGllczsgaW4gcGFydGljdWxhciBhIOKAmFVuaXZlcnNpdHkgb2YgU3Vzc2V4IE9mZmVy4oCZIGlzIGJlaW5nIGRldmVsb3BlZCB3aGljaCB3aWxsIGhpZ2hsaWdodCBhbGwgb2YgdGhlIG9wcG9ydHVuaXRpZXMgZm9yIGJ1c2luZXNzZXMgaW4gdGhlIGhlYWx0aCBhbmQgbGlmZSBzY2llbmNlcyBjbHVzdGVyIHRvIGNvbGxhYm9yYXRlIHdpdGggU3Vzc2V4IFVuaXZlcnNpdHkuIEV2ZW50cyBhcmUgYmVpbmcgcGxhbm5lZCBmb3IgTWFyY2ggd2hpY2ggd2lsbCBnaXZlIGFuIG9wcG9ydHVuaXR5IGZvciBsb2NhbCBjb21wYW5pZXMgdG8gdmlzaXQgU3Vzc2V4IFVuaXZlcnNpdHksIHRvIGxvb2sgYXQgdGhlIGZhY2lsaXRpZXMgb24gb2ZmZXIgYW5kIHRvIGVuZ2FnZSB3aXRoIGEgcmFuZ2Ugb2YgYWNhZGVtaWNzIGZyb20gYWNyb3NzIHRoZSB1bml2ZXJzaXR5LiBUaGUgaW50ZW50aW9uIGZvbGxvd2luZyB0aGlzIGlzIHRvIGNyZWF0ZSBhIHNpbWlsYXIgb2ZmZXIgd2l0aCBvdGhlciBsb2NhbCB1bml2ZXJzaXRpZXMuXFxuXFxuKipMRUFERVIqKlxcblxcblRoZSBMRUFERVIgcHJvZ3JhbW1lIHdhcyBsYXVuY2hlZCBpbiBOb3ZlbWJlciAyMDE1OyBpdCBpcyBhIGdyYW50IGZ1bmRpbmcgcHJvZ3JhbW1lIHRoYXQgc3VwcG9ydHMgdGhlIGdyb3d0aCBhbmQgZGV2ZWxvcG1lbnQgb2YgcnVyYWwgYnVzaW5lc3MgYW5kIGlzIHBhcnQgb2YgdGhlIFJ1cmFsIERldmVsb3BtZW50IHByb2dyYW1tZSBmb3IgRW5nbGFuZCB3aGljaCBhaW1zIHRvIGltcHJvdmUgdGhlIGNvbXBldGl0aXZlbmVzcyBvZiBmYXJtaW5nIGFuZCBmb3Jlc3RyeSwgc3VwcG9ydCBhIGRpdmVyc2UgYW5kIHN1Y2Nlc3NmdWwgcnVyYWwgZWNvbm9teSBhbmQgaGVscCB0byBkZXZlbG9wIHZpYnJhbnQgYW5kIHRocml2aW5nIHJ1cmFsIGNvbW11bml0aWVzLiBTbyBmYXIgd2UgaGF2ZSByZWNlaXZlZCAzNyBlbnF1aXJpZXMgZnJvbSBidXNpbmVzc2VzIGluIHJlbGF0aW9uIHRvIExFQURFUiBmdW5kaW5nIHNpbmNlIGl0IGhhcyBiZWVuIGxhdW5jaGVkLlxcblxcbltodHRwOi8vd3d3LmJ1c2luZXNzd2VzdHN1c3NleC5jby51ay8yNjAtbGVhZGVyLWdyYW50cy0yMDE1LTIwLmh0bWxdWzJdXFxuXFxuWzBdOiBodHRwOi8vd3d3Lndlc3Qtc3Vzc2V4LXdlZWtlbmRzLmNvbS93aW50ZXItd2Fsa3NcXG5bMV06IGh0dHA6Ly93d3cuYnVzaW5lc3N3ZXN0c3Vzc2V4LmNvLnVrLzI1Mi13c2hsc2MuaHRtbFxcblsyXTogaHR0cDovL3d3dy5idXNpbmVzc3dlc3RzdXNzZXguY28udWsvMjYwLWxlYWRlci1ncmFudHMtMjAxNS0yMC5odG1sXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIC0gU2VwdGVtYmVyIDIwMTUqKlxcblxcbi0gLSAtXFxuXFxuVGhlIEJlYXV0aWZ1bCBPdXRkb29ycy9XZXN0IFN1c3NleCBXZWVrZW5kcyBjYW1wYWlnbiB3YXMgbGF1bmNoZWQgaW4gSnVuZSB0byBhbiBhdWRpZW5jZSBvZiBhcm91bmQgMTAwIGF0dGVuZGVlcywgbWFueSBmcm9tIGxvY2FsIGJ1c2luZXNzZXMuIEEgd2Vic2l0ZSBoYXMgYmVlbiBkZXZlbG9wZWQgdG8gc2hvd2Nhc2UgdGhvc2UgYnVzaW5lc3NlcyAoYWNjb21tb2RhdGlvbiBwcm92aWRlcnMgYW5kIGZvb2QvZHJpbmsgcHJvdmlkZXJzKSBpbiBXZXN0IFN1c3NleCB0aGF0IGFyZSB3ZWxjb21pbmcgdG8gY3ljbGlzdHMgYW5kIHdhbGtlcnMsIGFzIHdlbGwgYXMgdGhvc2UgcHJvdmlkaW5nIHNlcnZpY2VzIHRvIGN5Y2xpc3RzIGFuZCB3YWxrZXJzLiBUbyB0aGlzIGVmZmVjdCwgd2UgaGF2ZSA2MCBidXNpbmVzc2VzIGZlYXR1cmVkIG9uIHRoZSB3ZWJzaXRlIGFuZCBoYXZlIG9uLWdvaW5nIGVuZ2FnZW1lbnQgd2l0aCB0aGVzZSBidXNpbmVzc2VzIGluY2x1ZGluZyBvZmZlcmluZyBlbGlnaWJsZSBidXNpbmVzc2VzIGZyZWUgY3ljbGUgc3RhbmRzIHRvIGVuc3VyZSB0aGVpciBidXNpbmVzcyBpcyB3ZWxjb21pbmcgdG8gY3ljbGlzdHMgYW5kIHdhbGtlcnMuXFxuXFxuVGhlIFdlc3QgU3Vzc2V4IFdlZWtlbmRzIGxvY2FsIGNhbXBhaWduIGhhcyBzZWVuIDExIGxvY2FsIGJ1c2luZXNzZXMgZG9uYXRlIHByaXplcyB0byBvdXIgY29tcGV0aXRpb24sIHRoZXNlIGhhdmUgdGhlcmVmb3JlIGJlbmVmaXR0ZWQgZnJvbSBwcmVzcyBhbmQgcHJvbW90aW9uIHRocm91Z2ggY29ycG9yYXRlIGNoYW5uZWxzIGFuZCBXZXN0IFN1c3NleCB3ZWVrZW5kcyBwcm9tb3Rpb24uXFxuXFxuQXQgdGhlIGVuZCBvZiB0aGUgY2FtcGFpZ24gaW4gT2N0b2JlciB3ZSB3aWxsIGJlIHVuZGVydGFraW5nIGEgZm9sbG93IHVwIHN1cnZleSB3aXRoIHRoZSBidXNpbmVzc2VzIGZlYXR1cmVkIGluIHRoZSBjYW1wYWlnbiB0byBhc2NlcnRhaW4gd2hhdCBiZW5lZml0IHRoZXkgaGF2ZSBzZWVuIHRocm91Z2ggdGhlIGNhbXBhaWduIGFuZCBwcm9tb3Rpb24gb2YgV2VzdCBTdXNzZXggYXMgYSB2aXNpdG9yIGRlc3RpbmF0aW9uLiBUaGVpciByZXNwb25zZXMgd2lsbCBoZWxwIHVzIHNoYXBlIG91ciBmb2N1cyBmb3Igc3Vic2VxdWVudCBjYW1wYWlnbnMuXFxuXFxuV1NDQyBob3N0ZWQgdGhlIGZpcnN0IEhlYWx0aCBhbmQgTGlmZSBTY2llbmNlcyBDbHVzdGVyIGV2ZW50IHdoaWNoIHNhdyBvdmVyIDkwIHBlb3BsZSBmcm9tIGxvY2FsIGJ1c2luZXNzZXMgYXR0ZW5kIGFuZCBoZWFyIGFib3V0IHRoZSBzdXBwb3J0IHRoYXQgV1NDQyBjYW4gb2ZmZXIgYW5kIGZ1dHVyZSBpbnZlc3RtZW50IHBsYW5zIHRoZSBjb3VudHkgY291bmNpbCBpcyBhaW1pbmcgdG8gZGV2ZWxvcCBmb3IgdGhlIGNsdXN0ZXIgaXRzZWxmLiBUaGlzIHdhcyBmb2xsb3dlZCB1cCB3aXRoIHB1bGxpbmcgdG9nZXRoZXIgYSBkaXJlY3Rvcnkgb2YgYWxsIHRoZSBIZWFsdGggYW5kIExpZmUgU2NpZW5jZXMgQ2x1c3RlciBidXNpbmVzc2VzIGluIFdlc3QgU3Vzc2V4IChpbmNsdWRpbmcgYnVzaW5lc3NlcyBhbmQgaW5kdXN0cnkgc3VwcG9ydCBzZXJ2aWNlcykuIEl0IGZlYXR1cmVzIDY0IGJ1c2luZXNzZXMgdG8gZGF0ZS4gVGhlIENvdW50eSBDb3VuY2lsIGlzIGNvbW1pdHRlZCB0byBkZXZlbG9waW5nIGEgc3Ryb25nIGNsdXN0ZXIgd2l0aCB0aGVzZSBidXNpbmVzc2VzIGFuZCBhcmUgZGV2ZWxvcGluZyBwbGFucyB0byBlbmdhZ2Ugd2l0aCB0aGVtIGZ1cnRoZXIgdG8gc3VwcG9ydCB0aGVpciBuZWVkcyBhbmQgZ3Jvd3RoIHByaW9yaXRpZXMsIGFzIHdlbGwgYXMgb2ZmZXJpbmcgc3BlY2lmaWMgb3Bwb3J0dW5pdGllcyBmb3Igc3VwcG9ydCBhbmQgYWR2aWNlIHRhaWxvcmVkIHRvIHRoZSBzZWN0b3IuIEFzIHBhcnQgb2YgdGhpcyBkZXRhaWxlZCBjb252ZXJzYXRpb25zL21lZXRpbmdzIGhhdmUgdGFrZW4gcGxhY2UgYWNyb3NzIHRoZSBsYXN0IGZldyBtb250aHMgd2l0aCBhIG51bWJlciBvZiB0aGVzZSBsb2NhbCBidXNpbmVzc2VzIHdoaWNoIGhhcyBoZWxwZWQgdG8gc2hhcGUgdGhlIHRoaW5raW5nIGFib3V0IGRldmVsb3BpbmcgdGhlIHNlY3RvciBmdXJ0aGVyLlxcblxcbjY5IG9yZ2FuaXNhdGlvbnMgYXBwbGllZCBmb3IgYnVzaW5lc3MgZ3JhbnQgZnVuZGluZywgd2l0aCAyMyBiZWluZyBzaG9ydGxpc3RlZCBmb3IgdGhlIHBhbmVsLCBhbmQgMTMgc3VjY2Vzc2Z1bGx5IHNlbGVjdGVkLiBGZWVkYmFjayBhbmQgYWR2aWNlIHdhcyBvZmZlcmVkIHRvIHRob3NlIHVuc3VjY2Vzc2Z1bCBvcmdhbmlzYXRpb25zIGFuZCAyNyB0b29rIHRoaXMgdXAuIDggZnVydGhlciBwcm9qZWN0cyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRoZSBncm93dGggZ3JhbnRzIGFzIHBhcnQgb2YgdGhlIEJ1c2luZXNzIEZpbmFuY2UgUHJvZ3JhbW1lLCBmdW5kZWQgYnkgdGhlIExvY2FsIEdyb3d0aCBGdW5kLlxcblxcblRoZSBHYXR3aWNrIERpYW1vbmQgTWVldCB0aGUgQnV5ZXIgZXZlbnQgd2FzIGhlbGQgaW4gSnVseSBhdCB0aGUgQXJvcmEgSG90ZWwsIENyYXdsZXksIGdpdmluZyBzbWFsbCBhbmQgbWVkaXVtIHNpemVkIGVudGVycHJpc2VzIHRoZSBvcHBvcnR1bml0eSB0byBtZWV0IGJ1eWVycyBmcm9tIGxvY2FsLCBsYXJnZSBwdWJsaWMgYW5kIHByaXZhdGUgb3JnYW5pc2F0aW9ucy4gVGhyZWUgaW50cm9kdWN0b3J5IHdvcmtzaG9wcyB3ZXJlIGhlbGQgYSByb3VuZCBwcm9jdXJlbWVudCBpc3N1ZXMgd2hpY2ggd2VyZSBhdHRlbmRlZCBieSA1NyBXZXN0IFN1c3NleCBiYXNlZCBidXNpbmVzc2VzLiBUaGUgZXZlbnQgb3JnYW5pc2VycyB3aWxsIGJlIHJlcG9ydGluZyBvbiB0aGUgbGV2ZWwgb2YgYnVzaW5lc3MgdW5kZXJ0YWtlbiBhdCB0aGUgZXZlbnQg4oCTIHRoaXMgd2lsbCBiZSBhdmFpbGFibGUgbGF0ZXIgaW4gU2VwdGVtYmVyLlxcblxcblByZXBhcmF0aW9uIGlzIGNvbnRpbnVpbmcgZm9yIHRoZSBsYXVuY2ggb2YgdGhlIExFQURFUiBwcm9ncmFtbWUgd2hpY2ggaGFzIGJlZW4gYXdhcmRlZCBmdW5kaW5nIHRvIHN1cHBvcnQgdGhlIHJ1cmFsIGVjb25vbXkg4oCTIGl0IGlzIGFudGljaXBhdGVkIHRoYXQgTEVBREVSIHdpbGwgb3BlbiBmb3IgYXBwbGljYXRpb25zIGluIE9jdG9iZXIuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkxFQURFUiBncmFudHMgY2FuIGJlIHVzZWQgZm9yIHByb2plY3RzIHRoYXQgd2lsbCBzdXBwb3J0OlxcblxcbiogaW5jcmVhc2luZyBmYXJtIHByb2R1Y3Rpdml0eVxcblxcbiogc21hbGwgYnVzaW5lc3MgZ3Jvd3RoIGFuZCBmYXJtIGRpdmVyc2lmaWNhdGlvblxcblxcbiogcnVyYWwgdG91cmlzbVxcblxcbiogcnVyYWwgc2VydmljZXNcXG5cXG4qIGN1bHR1cmFsIGFuZCBoZXJpdGFnZSBhY3Rpdml0eVxcblxcbiogaW5jcmVhc2luZyBmb3Jlc3RyeSBwcm9kdWN0aXZpdHlcXG5cXG5Gb3IgbW9yZSBkZXRhaWxzIHNlZTpcXG5cXG5baHR0cHM6Ly93d3cud2VzdHN1c3NleC5nb3YudWsvYnVzaW5lc3MtYW5kLWNvbnN1bWVycy9zdGFydC1vci1ncm93LXlvdXItYnVzaW5lc3MvcnVyYWwtZGV2ZWxvcG1lbnQtcHJvZ3JhbW1lLWxlYWRlci1mdW5kaW5nL11bMF1cXG5cXG5bMF06IGh0dHBzOi8vd3d3Lndlc3RzdXNzZXguZ292LnVrL2J1c2luZXNzLWFuZC1jb25zdW1lcnMvc3RhcnQtb3ItZ3Jvdy15b3VyLWJ1c2luZXNzL3J1cmFsLWRldmVsb3BtZW50LXByb2dyYW1tZS1sZWFkZXItZnVuZGluZy9cIn1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIlN1cHBvcnRpbmcgYnVzaW5lc3NlcyBhY3Jvc3MgV2VzdCBTdXNzZXggd2l0aCBXU0NDLWxlZCBhbmQgYnVzaW5lc3Mgc3VwcG9ydCBpbml0aWF0aXZlcy4gIFwiLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOnRydWUsXCJjdXN0b21fc3VidGl0bGVcIjpcIkFpbSB0byBzdXBwb3J0IGF0IGxlYXN0IDMwMCBidXNpbmVzc2VzLCB0aHJvdWdoIGEgcmFuZ2Ugb2YgbmV0d29ya2luZyBpbml0aWF0aXZlc1wifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE3LTA0LTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6ImJ1c2luZXNzZXMgcGVyIHllYXIiLCJ0YXJnZXQiOjMwMCwidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiI5OW0zLWRrZ3oifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjMsXCJ5ZWFyXCI6MjAxN30sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fSxcImFjdGlvbl90eXBlXCI6XCJpbmNyZWFzZVwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fX0sXCJzdGFydFwiOlwiMjAxNC0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNC0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcIlRoZSBudW1iZXIgb2YgYnVzaW5lc3NlcyBzdXBwb3J0ZWQgYnkgV1NDQyBsZWQgYW5kIHN1cHBvcnRlZCBidXNpbmVzcyBzdXBwb3J0IGluaXRpYXRpdmVzXCIsXCJ5U2NhbGVcIjp7XCJ1c2VfZGVmYXVsdFwiOnRydWV9fSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOToxMToxMi43MzRaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MTE6MTIuNzM0WiIsInRhcmdldF90b2xlcmFuY2UiOjMwLCJpZCI6ImVhODctM2cyYiJ9LCJyZWxhdGVkX21lYXN1cmVzIjpbXSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOToxMToyMi42OTBaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MTE6MTIuNzgxWiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA5OjExOjIyLjY5MFoiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6InBqYXQtd3NzcyIsIm5hbWUiOiIxNi0xN3lycyBpbiBFZHVjYXRpb24sIEVtcGxveW1lbnQgb3IgVHJhaW5pbmcgIiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJpY29uXCI6XCJ0ZXh0XCIsXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipNYXJjaCAyMDE4KipcXG5cXG4tIC0gLVxcblxcblRoZSBsYXRlc3QgZmlndXJlcyB3ZSBoYXZlIHdlcmUgdGhvc2UgZm9yIHRoZSBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIEphbnVhcnkgMjAxOCwgd2hpY2ggc2hvd2VkIHRoZSBmb2xsb3dpbmc6LVxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy84Q0U0MDI4RC01OEJDLTRGM0YtOEY3MS0yRUQ2RjM3OUJGMEVcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipKYW51YXJ5IDIwMTgqKlxcblxcbi0gLSAtXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0M1NjhEQTFELUFCQkEtNDkyMS04MTg2LTMzODc4MTE5QzhBNFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMyAtIERlY2VtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIEF1dGhvcml0eSBpcyBjdXJyZW50bHkgc3RpbGwgaW4gdGhlIG1pZGRsZSBvZiB0aGUgeWVhcmx5IEFubnVhbCBBY3Rpdml0eSBTdXJ2ZXkgdG8gY29uZmlybSB0aGUgYWN0dWFsIGRlc3RpbmF0aW9ucyBvZiBhbGwgeW91bmcgcGVvcGxlIG9mIGFjYWRlbWljIGFnZSAxNiBhbmQgMTcuIFRoaXMgd29yayB3aWxsIGNvbnRpbnVlIGJldHdlZW4gU2VwdGVtYmVyIDIwMTcgYW5kIEZlYnJ1YXJ5IDIwMTggYW5kIHRoZXJlZm9yZSB0aGUgZGF0YSB3aWxsIG5vdCBiZSByb2J1c3QgdW50aWwgdGhlIGVuZCBvZiB0aGlzIHRyYWNraW5nIHBlcmlvZC4gVGhlIGxhdGVzdCBwZXJmb3JtYW5jZSBkYXRhIGF2YWlsYWJsZSBmcm9tIHRoZSBEZXBhcnRtZW50IGZvciBFZHVjYXRpb24gKERmRSkgaXMgZm9yIHRoZSBtb250aCBvZiBOb3ZlbWJlciAyMDE3IGFuZCB0aGlzIGlzIHNob3duIGluIHRoZSB0YWJsZSBiZWxvdy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvOTZCRTZCNEMtQTY2Qi00OTM1LTgyRUYtQ0U3REFEODM3REQxXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIldlc3QgU3Vzc2V4IGlzIGN1cnJlbnRseSBpbiB0aGUgZm91cnRoIHF1aW50aWxlIG9mIEF1dGhvcml0aWVzIHdpdGhpbiB0aGUgU291dGggRWFzdCBmb3IgaXRzIHBlcmZvcm1hbmNlIG9uIHRoZSBwZXJjZW50YWdlIG9mIHlvdW5nIHBlb3BsZSB3aXRoIGFuIOKAmHVua25vd27igJlkZXN0aW5hdGlvbi4gSG93ZXZlciwgb25lIGNhbiBzZWUgZnJvbSB0aGUgdGFibGUgYmVsb3cgdGhhdCB0aGUgY3VycmVudCB1bmtub3duIGZpZ3VyZSBpcyBvdmVyIDElIGxvd2VyIHRoYW4gdGhlIHNhbWUgbW9udGggbGFzdCB5ZWFyLiBXZXN0IFN1c3NleCBpcyBvbiBhIHBhciB3aXRoIHRoZSBTb3V0aCBFYXN0IGFuZCBOYXRpb25hbCBBdmVyYWdlIGluIHRlcm1zIG9mIHRoZSBwZXJjZW50YWdlIG9mIHlvdW5nIHBlb3BsZSBtZWV0aW5nIHRoZWlyIER1dHkgdG8gUGFydGljaXBhdGUgKEluIExlYXJuaW5nKSBhbmQgYWdhaW4sIHRoZXJlIGhhcyBiZWVuIGEgc2xpZ2h0IGltcHJvdmVtZW50IG9uIGxhc3QgeWVhcnPigJkgZmlndXJlcyBzbyBmYXIgdGhpcyB5ZWFyLiBZb3VuZyBwZW9wbGUgd2hvIGFyZSBORUVUIHJlbWFpbiBsb3csIGJ1dHQgaGlzIG1heSBpbmNyZWFzZSBvbmNlIG1vcmUgeW91bmcgcGVvcGxlIGJlY29tZSDigJhrbm93buKAmSBhcyBjb250YWN0IGNvbnRpbnVlcyB0byBiZSBhdHRlbXB0ZWQuXFxuXFxuIFwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy82Q0EyQ0Y5Ny1EQTI5LTQ0NDktOUMxMS03RkU3MzQzRTcwQzdcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiQXR0ZW1wdHMgdG8gY29udGFjdCBvdXIgcmVtYWluaW5nIOKAmHVua25vd27igJkgeW91bmcgcGVvcGxlIGNvbnRpbnVlIHRvIGJlIG1hZGUgdXNpbmcgYSBtaXh0dXJlIG9mIHRoZSBXZXN0IFN1c3NleCBDb3VudHkgQ291bmNpbCBDb250YWN0IENlbnRyZSBzdGFmZiwgSVBFSCBIdWIgc3RhZmYsb25nb2luZyBjb21tdW5pY2F0aW9uIHdpdGggc2Nob29scyBhbmQgcG9zdC0xNiBwcm92aWRlcnMgYW5kIGxpYWlzb24gd2l0aCBuZWlnaGJvdXJpbmcgYXV0aG9yaXRpZXMgYW5kIHVzaW5nIGFuIG9uLWxpbmUgc3VydmV5IGZvciB5b3VuZyBwZW9wbGUgYW5kIHBhcmVudHMgdG8gYWNjZXNzIGRpcmVjdC4gVGhlIG1ham9yaXR5IG9mIG91ciByZW1haW5pbmcg4oCYdW5rbm93buKAmSB5b3VuZyBwZW9wbGUgYXJlIG9mIGFjYWRlbWljIGFnZSAxNyAoeWVhciAxMykgc28gd29yayBpcyBjdXJyZW50bHkgdW5kZXJ3YXkgdG8gc3BlY2lmaWNhbGx5IHRhcmdldCBjb250YWN0aW5nIHRoaXMgY29ob3J0LlxcblxcbiBcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgbGF0ZXN0IGRhdGEgYXZhaWxhYmxlIGZyb20gdGhlIERlcGFydG1lbnQgZm9yIEVkdWNhdGlvbiAoREZFKSBpcyBmb3IgdGhlIG1vbnRoIG9mIEF1Z3VzdCAyMDE3IGFuZCB0aGlzIGlzIHNob3duIGluIHRoZSB0YWJsZSBiZWxvdy4gRnJvbSBTZXB0ZW1iZXIgdGhlIEF1dGhvcml0eSB3aWxsIGJlIHVuZGVydGFraW5nIHRoZSBBbm51YWwgQWN0aXZpdHkgU3VydmV5IHRvIGNvbmZpcm0gdGhlIGFjdHVhbCBkZXN0aW5hdGlvbnMgb2YgYWxsIHlvdW5nIHBlb3BsZSBvZiBhY2FkZW1pYyBhZ2UgMTYgYW5kIDE3LiBUaGlzIHdvcmsgd2lsbCBjb250aW51ZSBiZXR3ZWVuIFNlcHRlbWJlciAyMDE3IGFuZCBGZWJydWFyeSAyMDE4IGFuZCB0aGVyZWZvcmUgdGhlIGRhdGEgd2lsbCBub3QgYmUgcm9idXN0IHVudGlsIHRoZSBlbmQgb2YgdGhpcyB0cmFja2luZyBwZXJpb2QuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0E2QjREOTQzLUM2RTEtNEVGNy05MkJGLTA3OTBCNjgwQ0QyM1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgRGZFIGRvIG5vdCBtb25pdG9yIHRoZSBwZXJmb3JtYW5jZSBvZiBBdXRob3JpdGllcyBvdmVyIHRoZSBzdW1tZXIgbW9udGhzIGR1ZSB0byB5b3VuZyBwZW9wbGUgZmluaXNoaW5nIGNvdXJzZXMgZWFybHkgKGkuZS4gTWF5L0p1bmUpIGFuZCB0aGUgaW1wZW5kaW5nIEFubnVhbCBBY3Rpdml0eSBTdXJ2ZXkgd2hpY2ggc3RhcnRzIGluIFNlcHRlbWJlci4gQXMgc3VjaCwgY29tcGFyaXNvbiB3aXRoIHRoZSByZWdpb25hbCBhbmQgbmF0aW9uYWwgZGF0YSBuZWVkcyB0byBiZSB0cmVhdGVkIHdpdGggc29tZSBjYXV0aW9uIGZvciBBdWd1c3QuIFRoZSBwZXJjZW50YWdlIG9mIHlvdW5nIHBlb3BsZSDigJhJbiBMZWFybmluZ+KAmSBpbiBXZXN0IFN1c3NleCBpcyBoaWdoZXIgZm9yIEF1Z3VzdCB0aGFuIHRoZSByZWdpb25hbCBhbmQgbmF0aW9uYWwgZmlndXJlcy4gVGhvc2UgaW4gRUVUIHJlbWFpbiBzbGlnaHRseSBsb3dlciBpbiBXZXN0IFN1c3NleCBjb21wYXJlZCB3aXRoIHRoZSBuYXRpb25hbCBwaWN0dXJlLCBhbHRob3VnaCBXZXN0IFN1c3NleCBoYXMgYSBoaWdoZXIgcGVyY2VudGFnZSBFRVQgdGhhbiB0aGUgcmVnaW9uLiAxNiBhbmQgMTcgeWVhciBvbGRzIHdobyBhcmUgTkVFVCBhbHNvIHJlbWFpbiBsb3dlciBpbiBXZXN0IFN1c3NleC4gV2hpbGUgdGhlIHBlcmNlbnRhZ2Ugb2YgeW91bmcgcGVvcGxlIHdpdGggYW4gdW5rbm93biBFRVQgc2l0dWF0aW9uIHJlbWFpbnMgaGlnaCBpbiBXZXN0IFN1c3NleCBpbiBjb21wYXJpc29uIHdpdGggb3RoZXIgYXJlYXMsIHRoZSBnYXAgaGFzIGZhbGxlbiBjb25zaWRlcmFibHkgZm9yIEF1Z3VzdC4gSG93ZXZlciwgdGhpcyBpcyBtb3N0IGxpa2VseSBkdWUgdG8gb3RoZXIgYXJlYXMgd2FpdGluZyB0byByZS1jb25maXJtIHRoZSBkZXN0aW5hdGlvbnMgb2YgdGhlaXIgc2Nob29sIGxlYXZlcnMgYW5kIHllYXIgMTMgeW91bmcgcGVvcGxlIGZyb20gU2VwdGVtYmVyIG9ud2FyZHMuIEFjb21wYXJpc29uIG9mIHRoZSBjdXJyZW50IEF1Z3VzdCBkYXRhIHdpdGggQXVndXN0IDIwMTYsIHNob3dzIHRoYXQgaW1wcm92ZW1lbnRzIGhhdmUgYmVlbiBtYWRlIGFjcm9zcyB0aGUgYm9hcmQgd2l0aCBVbmtub3duIGZpZ3VyZXMgMS4yJSBsb3dlciB0aGlzIHllYXI7IEluIExlYXJuaW5nIGZpZ3VyZXMgMS42JSBoaWdoZXI7IE5FRVQgZmlndXJlcyAwLjMlIGxvd2VyIGFuZCB0aGUgcGVyY2VudGFnZSBvZiB0aG9zZSBpbiBhbnkgZm9ybSBvZiBFRVQgYmVpbmcgMS40JSBoaWdoZXIuIEFsdGhvdWdoIHdlIGhhdmUgZm91bmQgb3V0IHRoZSBFRVQgZGV0YWlscyBvZiBtb3JlIHlvdW5nIHBlb3BsZSB0aGlzIHllYXIsIG91ciBORUVUIGZpZ3VyZXMgaGF2ZSByZWR1Y2VkLCB0aGVyZWJ5IHN1Z2dlc3RpbmcgdGhhdCBtYW55IG9mIG91ciB1bmtub3ducyBtYXkgd2VsbCBiZSBwYXJ0aWNpcGF0aW5nIGluIHNvbWUgZm9ybSBvZiBFRVQgYXMgb3Bwb3NlZCB0byBiZWluZyBORUVULlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy81Q0NFRUQ0Mi02MzI3LTQxNjgtQUQyMC0xOEExQ0EzRjkyN0FcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiUmVkdWNpbmcgb3VyIFVua25vd24gZmlndXJlIGFuZCBpbmNyZWFzaW5nIG91ciBjb25maWRlbmNlIGFyb3VuZCBvdXIgRUVUIGRhdGEgaXMgYSBrZXkgT3V0Y29tZSBJbmRpY2F0b3IgZm9yIHRoZSBuZXcgSVBFSCBzZXJ2aWNlLiBUaGUgbmV3IElQRUggc2VydmljZSBpbnZvbHZlcyBtdWx0aSBhZ2VuY3kgZGVsaXZlcnkgdGhyb3VnaCBhIGxvY2FsaXNlZCBIdWIgc3RydWN0dXJlLiBUaGVzZSBIdWJzIGhhdmUgYSBjbGVhciByZW1pdCB0byBkZXZlbG9wIGxpbmtzIHdpdGhpbiB0aGVpciBjb21tdW5pdGllcyBhbmQgd2l0aCBwYXJ0bmVycyB0byBpbXByb3ZlIHRoZSBvdXRjb21lcyBmb3IgY2hpbGRyZW4sIHlvdW5nIHBlb3BsZSBhbmQgZmFtaWxpZXMsIGluY2x1ZGluZyBkZXZlbG9waW5nIGZ1cnRoZXIgbGlua3Mgd2l0aCBsb2NhbCBzY2hvb2xzIGFuZCBjb2xsZWdlcyB0byBlbmFibGUgYSBtb3JlIGxvY2FsaXNlZCB0cmFja2luZyBvZiB0aG9zZSB5b3VuZyBwZW9wbGUgYXQgcmlzayBvZiBORUVUIGFuZCB0aG9zZSB3aG9zZSBFRVQgc2l0dWF0aW9uIGlzIHVua25vd24uIEluY2x1ZGVkIGluIHRoaXMgd2lsbCBiZSBwYXJ0bmVyc2hpcCB3aXRoIENhcmVlcnMgQWR2aXNlcnMgd2l0aGluIEVkdWNhdGlvbiBhbmQgU2tpbGxzIHdobyB3aWxsIGJlIHNoaWZ0aW5nIGZvY3VzIHRvIHdvcmsgbW9yZSB3aXRoIE5FRVQgeW91bmcgcGVvcGxlIGluIHRoZSBmdXR1cmUuXFxuXFxuIFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgbGF0ZXN0IGRhdGEgYXZhaWxhYmxlIGZyb20gdGhlIERlcGFydG1lbnQgZm9yIEVkdWNhdGlvbiAoREZFKSBpcyBmb3IgdGhlIG1vbnRoIG9mIE1heSAyMDE3IGFuZCB0aGlzIGlzIHNob3duIGluIHRoZSB0YWJsZSBiZWxvdy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvQkZDOUI1M0YtQTUzNC00QzZCLTlGQkItMEI3QTZDMTREODQ5XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZSBwZXJjZW50YWdlIG9mIHlvdW5nIHBlb3BsZSDigJhJbiBMZWFybmluZ+KAmSBhbmQgaW4gRUVUIHJlbWFpbnMgc2xpZ2h0bHkgbG93ZXIgaW4gV2VzdCBTdXNzZXggY29tcGFyZWQgd2l0aCB0aGUgcmVnaW9uYWwgYW5kIG5hdGlvbmFsIHBpY3R1cmUuIDE2IGFuZCAxNyB5ZWFyIG9sZHMgd2hvIGFyZSBORUVUIGFsc28gcmVtYWluIGxvd2VyLiBIb3dldmVyLCB0aGUgcGVyY2VudGFnZSBvZiB5b3VuZyBwZW9wbGUgd2l0aCBhbiB1bmtub3duIEVFVCBzaXR1YXRpb24gcmVtYWlucyBoaWdoIGluIFdlc3QgU3Vzc2V4IGluIGNvbXBhcmlzb24gd2l0aCB0aGUgZmlndXJlIGZvciB0aGUgcmVnaW9uIGFuZCBuYXRpb25hbGx5LCB3aGljaCBoYXMgdGhlIGltcGFjdCBvZiBkZWNyZWFzaW5nIG91ciBjb25maWRlbmNlIGluIG91ciBJbiBMZWFybmluZywgRUVUIGFuZCBORUVUIGRhdGEuIFRoZSB0YWJsZSBiZWxvdyBzaG93cyBwZXJmb3JtYW5jZSBmb3IgdGhlIGxhc3QgMyBtb250aHMgb2YgYXZhaWxhYmxlIGRhdGEsIGluY2x1ZGluZyB0aGUgMyBtb250aCBhdmVyYWdlLiBUaGlzIHNob3dzIGEgZmFpcmx5IHN0YXRpYyBwaWN0dXJlIGFjcm9zcyB0aGUgYm9hcmQsIGFsdGhvdWdoIG91ciBVbmtub3duIGZpZ3VyZXMgaGF2ZSByaXNlbiBzbGlnaHRseSBzaW5jZSBNYXJjaC4gSG93ZXZlciwgYSByaXNlIGluIHVua25vd25zIGlzIHRvIGJlIGV4cGVjdGVkIGFzIHRoZSB5ZWFyIHByb2dyZXNzZXMsIGVzcGVjYWlsbHkgdGhyb3VnaG91dCB0aGUgc3VtbWVyIHBlcmlvZCwgYXMgeW91bmcgcGVvcGxlIHN0YXJ0IHRvIGZpbmlzaCBlZHVjYXRpb24gYW5kIHRyYWluaW5nIHBsYWNlbWVudHMuIEZvciB0aGlzIHJlYXNvbiwgdGhlIERmRSBkbyBub3QgbW9uaXRvciB0aGUgcGVyZm9ybWFuY2Ugb2YgbG9jYWwgYXV0aG9yaXRpZXMgaW4gdGVybXMgb2YgdGhlaXIgdW5rbm93biBjb2hvcnQgb3ZlciB0aGUgc3VtbWVyIG1vbnRocy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRjJBMDcwQjUtNzU3NC00MEFCLUJENzQtOTExQkEyNDFDQjEzXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkEgY29tcGFyaXNvbiB3aXRoIHRoZSBjdXJyZW50IE1heSBkYXRhIHdpdGggTWF5IDIwMTYsIHNob3dzIHRoYXQgaW1wcm92ZW1lbnRzIGhhdmUgYmVlbiBtYWRlIGFjcm9zcyB0aGUgYm9hcmQgd2l0aCBVbmtub3duIGZpZ3VyZXMgMi4yJSBsb3dlciB0aGlzIHllYXIsIEluIExlYXJuaW5nIGZpZ3VyZXMgMi41JSBoaWdoZXIsIE5FRVQgZmlndXJlcyAwLjMlIGxvd2VyIGFuZCB0aGUgcGVyY2VudGFnZSBvZiB0aG9zZSBpbiBhbnkgZm9ybSBvZiBFRVQgYmVpbmcgMi41JSBoaWdoZXIuIEFsdGhvdWdoIHdlIGhhdmUgZm91bmQgb3V0IHRoZSBFRVQgZGV0YWlscyBvZiBtb3JlIHlvdW5nIHBlb3BsZSB0aGlzIHllYXIsIG91ciBORUVUIGZpZ3VyZXMgaGF2ZSByZWR1Y2VkLCB0aGVyZWJ5IHN1Z2dlc3RpbmcgdGhhdCBtYW55IG9mIG91ciB1bmtub3ducyBtYXkgd2VsbCBiZSBwYXJ0aWNpcGF0aW5nIGluIHNvbWUgZm9ybSBvZiBFRVQgYXMgb3Bwb3NlZCB0byBiZWluZyBORUVULlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9GRkQxNTg2RS0xQ0M3LTQ4QjctODdDRi04RjVGMTE0Qjc5NkFcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiUmVkdWNpbmcgb3VyIFVua25vd24gZmlndXJlIGFuZCBpbmNyZWFzaW5nIG91ciBjb25maWRlbmNlIGFyb3VuZCBvdXIgRUVUIGRhdGEgaXMgYSBrZXkgT3V0Y29tZSBJbmRpY2F0b3IgZm9yIHRoZSBuZXcgSVBFSCBzZXJ2aWNlLiBUaGUgbmV3IElQRUggc2VydmljZSBpbnZvbHZlcyBtdWx0aSBhZ2VuY3kgZGVsaXZlcnkgdGhyb3VnaCBhIGxvY2FsaXNlZCBIdWIgc3RydWN0dXJlLiBUaGVzZSBIdWJzIGhhdmUgYSBjbGVhciByZW1pdCB0byBkZXZlbG9wIGxpbmtzIHdpdGhpbiB0aGVpciBjb21tdW5pdGllcyBhbmQgd2l0aCBwYXJ0bmVycyB0byBpbXByb3ZlIHRoZSBvdXRjb21lcyBmb3IgY2hpbGRyZW4sIHlvdW5nIHBlb3BsZSBhbmQgZmFtaWxpZXMsIGluY2x1ZGluZyBkZXZlbG9waW5nIGZ1cnRoZXIgbGlua3Mgd2l0aCBsb2NhbCBzY2hvb2xzIGFuZCBjb2xsZWdlcyB0byBlbmFibGUgYSBtb3JlIGxvY2FsaXNlZCB0cmFja2luZyBvZiB0aG9zZSB5b3VuZyBwZW9wbGUgYXQgcmlzayBvZiBORUVUIGFuZCB0aG9zZSB3aG9zZSBFRVQgc2l0dWF0aW9uIGlzIHVua25vd24uIEluY2x1ZGVkIGluIHRoaXMgd2lsbCBiZSBwYXJ0bmVyc2hpcCB3aXRoIENhcmVlcnMgQWR2aXNlcnMgd2l0aGluIEVkdWNhdGlvbiBhbmQgU2tpbGxzIHdobyB3aWxsIGJlIHNoaWZ0aW5nIGZvY3VzIHRvIHdvcmsgbW9yZSB3aXRoIE5FRVQgeW91bmcgcGVvcGxlIGluIHRoZSBmdXR1cmUuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIGZpcnN0IGRhdGEgdGFibGUgYmVsb3cgcHJvdmlkZXMgdGhlIE5vdmVtYmVyIHRvIEphbnVhcnkgYXZlcmFnZSBmaWd1cmVzLiBBbHRob3VnaCBkYXRhIGlzIHN1Ym1pdHRlZCB0byB0aGUgRGZFIG9uIGEgbW9udGhseSBiYXNpcywgdGhleSB1c2UgYW5kIHB1Ymxpc2ggdGhlIE5vdmVtYmVyIHRvIEphbnVhcnkgYXZlcmFnZSBmaWd1cmVzIHRvIG1lYXN1cmUgdGhlIHBlcmZvcm1hbmNlIG9mIGVhY2ggQXV0aG9yaXR5IGV2ZXJ5IHllYXIuIFRoZSBBdXR1bW4gcGVyaW9kIGlzIHRoZSBwZWFrIG9mIHRyYWNraW5nIGFjdGl2aXR5IGR1ZSB0byBzZWVraW5nIHRvIGRldGVybWluZSB0aGUgZGVzdGluYXRpb25zIG9mIGFsbCB0aG9zZSB5b3VuZyBwZW9wbGUgc3RhcnRpbmcgYSBuZXcgYWNhZGVtaWMgeWVhci4gVGhlIE5hdGlvbmFsIGFuZCBTb3V0aCBFYXN0IHBlcmZvcm1hbmNlIGlzIHByb3ZpZGVkIGZvciBjb21wYXJpc29uIGFuZCB0aGUgY29tbWVudGFyeSBiZWxvdyBkZW1vbnN0cmF0ZXMgaG93IHRoaXMgeWVhcuKAmXMgcGVyZm9ybWFuY2UgY29tcGFyZXMgdG8gdGhlIHNhbWUgYXZlcmFnZSBmb3IgMjAxNS8xNi4gVGhlIHNlY29uZCBkYXRhIHRhYmxlIHByb3ZpZGVzIHRoZSBtb3N0IHJlY2VudCBkYXRhIHJlbGVhc2VkIHRvIHVzIGZyb20gdGhlIERmRS4gTWFyY2ggZGF0YSB3aWxsIGJlIG1hZGUgYXZhaWxhYmxlIHRvIHVzIG1pZC1BcHJpbCAyMDE3LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy81MTE5N0Q5Qi01ODY3LTQ3QUQtQjhGRi1BNDc3MTY4MkE3M0JcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiQ29tbWVudGFyeSBpbmNsdWRpbmcgdXNlZnVsIGNvbnRleHR1YWwgaW5mb3JtYXRpb246XFxuXFxuRnJvbSBTZXB0ZW1iZXIgMjAxNiBMb2NhbCBBdXRob3JpdGllcyBhcmUgb25seSByZXF1aXJlZCB0byB0cmFjayBhbmQgc3VibWl0IGluZm9ybWF0aW9uIGFib3V0IHlvdW5nIHBlb3BsZSB1cCB0byB0aGUgZW5kIG9mIHRoZSBhY2FkZW1pYyB5ZWFyIGluIHdoaWNoIHRoZXkgaGF2ZSB0aGVpciAxOHRoIGJpcnRoZGF5IGkuZS4gYWNhZGVtaWMgYWdlIDE2IGFuZCAxNy15ZWFyLW9sZHMuIExvY2FsIEF1dGhvcml0aWVzIG5vIGxvbmdlciBoYXZlIHRvIHN1Ym1pdCBkYXRhIGZvciB0aG9zZSBhYm92ZSB0aGlzIGFnZSByYW5nZSB1bmxlc3MgdGhlIHlvdW5nIHBlcnNvbiBoYXMgYSBTcGVjaWFsIEVkdWNhdGlvbmFsIE5lZWQgb3IgRGlzYWJpbGl0eSAoU0VORCkgYW5kIGhhcyBhbiBFZHVjYXRpb24sIEhlYWx0aCBhbmQgQ2FyZSBQbGFuIChFSENQKS4gQXMgc3VjaCwgRWR1Y2F0aW9uLCBUcmFpbmluZyBhbmQgRW1wbG95bWVudCBkYXRhIGlzIG9ubHkgY3VycmVudGx5IGF2YWlsYWJsZSBhbmQgYWNjdXJhdGUgb24gdGhvc2UgeW91bmcgcGVvcGxlIG9mIGFjYWRlbWljIGFnZSAxNiBhbmQgMTcuIFRoaXMgY29ob3J0IHNpemUgYXQgdGhlIGVuZCBvZiBKYW51YXJ5IDIwMTcgd2FzIDE3LDU5OCwgdGhlIGZvdXJ0aCBsYXJnZXN0IGluIHRoZSBTb3V0aCBFYXN0LlxcblxcbkluIFN1bW1hcnksIGFsdGhvdWdoIHRoZSBwZXJjZW50YWdlIG9mIHlvdW5nIHBlb3BsZSB3aXRoIGFuIHVua25vd24gRUVUIHNpdHVhdGlvbiBpbiBXZXN0IFN1c3NleCByZW1haW5zIGhpZ2hlciB0aGFuIHRoZSBOYXRpb25hbCBhbmQgUmVnaW9uYWwgZmlndXJlcyBhbmQgdGhlIHBlcmNlbnRhZ2UgSW4gTGVhcm5pbmcgcmVtYWlucyBsb3dlciwgaW1wcm92ZW1lbnRzIGhhdmUgYmVlbiBtYWRlIHRoaXMgeWVhciB3aXRoIG92ZXIgYSAyJXJlZHVjdGlvbiBpbiB0aGUgMyBtb250aCBhdmVyYWdlIHVua25vd24gcGVyY2VudGFnZSBhbmQgYSAzJSBpbmNyZWFzZSBpbiB0aGUgMyBtb250aCBhdmVyYWdlIG9mIHRob3NlIEluIExlYXJuaW5nLiBMYXRlc3QgZmlndXJlcyBzaG93IHRoYXQgb3ZlciA5MCUgb2YgeW91bmcgcGVvcGxlIG9mIGFjYWRlbWljIGFnZSAxNiBhbmQgMTcgYXJlIG1lZXRpbmcgdGhlaXIgRHV0eSB0byBQYXJ0aWNpcGF0ZS4gVGhlIHBlcmNlbnRhZ2Ugb2YgeW91bmcgcGVvcGxlIGluIGVkdWNhdGlvbiwgdHJhaW5pbmcgb3IgZW1wbG95bWVudCBoYXMgcmlzZW4gZnJvbSA4Ny43JSBpbiAyMDE1LzE2IHRvIDkwLjElIHRoaXMgeWVhciAoMy1tb250aCBhdmVyYWdlKS4gSW4gYWRkaXRpb24gdG8gdGhlc2UgaW1wcm92ZW1lbnRzLCB0aGUgcGVyY2VudGFnZSBvZiBORUVUIHlvdW5nIHBlb3BsZSByZW1haW5zIGxvd2VyIHRoYW4gdGhlIG5hdGlvbmFsIGFuZCByZWdpb25hbCBmaWd1cmVzIGFuZCB3aGVyZWFzIHRoZSBORUVUIDMgbW9udGggYXZlcmFnZSBwZXJjZW50YWdlIGZvciB0aGUgcmVnaW9uIGFuZCBuYXRpb25hbGx5IGhhcyByZW1haW5lZCBzdGF0aWMsIFdlc3QgU3Vzc2V4IGhhcyBzZWVuIGEgcmVkdWN0aW9uIG9mIDAuNCUuXFxuXFxuVGhpcyBpbXByb3ZlbWVudCB0byBwZXJmb3JtYW5jZSBoYXMgYmVlbiBhY2hpZXZlZCB0aHJvdWdoIGEgbnVtYmVyIG9mIGRldmVsb3BtZW50cyB0byBvdXIgdHJhY2tpbmcgYWN0aXZpdHksIGluY2x1ZGluZyBpbXByb3ZpbmcgdGhlIHNwZWVkIGF0IHdoaWNoIGRhdGEgaXMgcmVjZWl2ZWQgYW5kIHVwbG9hZGVkIGZyb20gc2Nob29scyBhbmQgcG9zdC0xNiBwcm92aWRlcnMsIG1ha2luZyB1c2Ugb2YgU01TIGFuZCBvbi1saW5lIHN1cnZleXMgZm9yIHBhcmVudHMgYW5kIHlvdW5nIHBlb3BsZSBhbmQgYWRvcHRpbmcgYSBtb3JlIHRhcmdldGVkIGFwcHJvYWNoIHRvIGNvbnRhY3RpbmcgcGFyZW50cyBhbmQgeW91bmcgcGVvcGxlIHVzaW5nIHRoZSBGaW5kIGl0IE91dCBDZW50cmVzIGFuZCBDb250YWN0IENlbnRyZS5cXG5cXG5Hb2luZyBmb3J3YXJkLGRldmVsb3BtZW50cyB0byB0aGUgd2F5IHlvdW5nIHBlb3BsZSBhcmUgdHJhY2tlZCBhcmUgc3RpbGwgdW5kZXJ3YXkgaW5jbHVkaW5nIHN0cmVuZ3RoZW5pbmcgb3VyIFNFTkQgZGF0YSBhbmQgcmVmaW5pbmcgb3VyIHRyYWNraW5nIHRpbWVsaW5lIHRvIG1ha2UgcmVjZWlwdCBhbmQgdXBsb2FkIG9mIGRhdGEgZXZlbiBtb3JlIGVmZmljaWVudC4gRnVydGhlcm1vcmUsdGhlIGludHJvZHVjdGlvbiBvZiB0aGUgbmV3IEludGVncmF0ZWQgUHJldmVudGlvbiBhbmQgRWFybGllc3QgSGVscCBTZXJ2aWNlLGludm9sdmluZyBtdWx0aSBhZ2VuY3kgZGVsaXZlcnkgdGhyb3VnaCBsb2NhbGlzZWQgSHViIHN0cnVjdHVyZSwgd2lsbCBkZXZlbG9wIGZ1cnRoZXIgdGhlIGxpbmtzIHdpdGggbG9jYWwgc2Nob29scyBhbmQgY29sbGVnZXMgYW5kIGVuYWJsZSBtb3JlIGxvY2FsaXNlZCB0cmFja2luZyBvZiB0aG9zZSB5b3VuZyBwZW9wbGUgYXQgcmlzayBvZiBORUVUIGFuZCB0aG9zZSB3aG9zZSBFRVQgc2l0dWF0aW9uIGlzIHVua25vd24uXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIC0gdG8gRGVjZW1iZXIgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5Gcm9tIFNlcHRlbWJlciAyMDE2IExvY2FsIEF1dGhvcml0aWVzIGFyZSBvbmx5IHJlcXVpcmVkIHRvIHRyYWNrIGFuZCBzdWJtaXQgaW5mb3JtYXRpb24gYWJvdXQgeW91bmcgcGVvcGxlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGFjYWRlbWljIHllYXIgaW4gd2hpY2ggdGhleSBoYXZlIHRoZWlyIDE4dGggYmlydGhkYXkgaS5lLiBhY2FkZW1pYyBhZ2UgMTYgYW5kIDE3LXllYXItb2xkcy4gTG9jYWwgQXV0aG9yaXRpZXMgbm8gbG9uZ2VyIGhhdmUgdG8gc3VibWl0IGRhdGEgZm9yIHRob3NlIGFib3ZlIHRoaXMgYWNhZGVtaWMgYWdlIHJhbmdlIHVubGVzcyB0aGUgeW91bmcgcGVyc29uIGhhcyBhIFNwZWNpYWwgRWR1Y2F0aW9uYWwgTmVlZCBvciBEaXNhYmlsaXR5IChTRU5EKSBhbmQgaGFzIGFuIEVkdWNhdGlvbiwgSGVhbHRoIGFuZCBDYXJlIFBsYW4gKEVIQ1ApLiBBcyBzdWNoLCBFZHVjYXRpb24sIFRyYWluaW5nIGFuZCBFbXBsb3ltZW50IGRhdGEgaXMgb25seSBjdXJyZW50bHkgYXZhaWxhYmxlIGFuZCBhY2N1cmF0ZSBvbiB0aG9zZSB5b3VuZyBwZW9wbGUgb2YgYWNhZGVtaWMgYWdlIDE2IGFuZCAxNy5cXG5cXG5MYXRlc3QgZmlndXJlcyAoTm92ZW1iZXIgMjAxNikgcmVsZWFzZWQgYnkgdGhlIERmRSBmb2xsb3dpbmcgc3VibWlzc2lvbiBvZiBvdXIgZGF0YSBzaG93IHRoYXQgODguNCUgb2YgeW91bmcgcGVvcGxlIGFnZWQgMTYgYW5kIDE3IGFyZSBpbiBzb21lIGZvcm0gb2YgRWR1Y2F0aW9uLCBUcmFpbmluZyBvciBFbXBsb3ltZW50LiA4OCUgb2YgdGhlc2UgYXJlIOKAmEluIExlYXJuaW5n4oCZLCB3aGlsZSAwLjQlIGFyZSBlbXBsb3llZCB3aXRoIG5vIHRyYWluaW5nIG9yIGVkdWNhdGlvbiBhdHRhY2hlZCB0byB0aGlzIGVtcGxveW1lbnQuIFRoZSBwZXJjZW50YWdlIG9mIHRoaXMgYWdlIGdyb3VwIGN1cnJlbnRseSBub3QgaW4gRWR1Y2F0aW9uLCBUcmFpbmluZyBvciBFbXBsb3ltZW50IChORUVUKSBzdGFuZHMgYXQgMS4wJS4gQWZ0ZXIgbG9hZGluZyBhbGwgZGF0YSByZWNlaXZlZCBmcm9tIGFsbCBzY2hvb2xzIGFuZCBwb3N0LTE2IHByb3ZpZGVycywgdGhlIG51bWJlciBvZiB5b3VuZyBwZW9wbGUgYWdlZCAxNiBhbmQgMTcgd2l0aCBhbiB1bmtub3duIEVkdWNhdGlvbiwgVHJhaW5pbmcgb3IgRW1wbG95bWVudCBzaXR1YXRpb24gc3RhbmRzIGF0IDEwLjclIGF0IHRoZSBlbmQgb2YgTm92ZW1iZXIgMjAxNi4gVGhpcyBjb21wYXJlcyB0byA1LjglIGZvciB0aGUgU291dGggRWFzdCBSZWdpb24gYW5kIDUuMiUgbmF0aW9uYWxseS5cXG5cXG5Ib3dldmVyLCB3b3JrIGhhcyBzdGFydGVkIGluIERlY2VtYmVyIHRvIGF0dGVtcHQgdG8gY29udGFjdCB0aGVzZSB5b3VuZyBwZW9wbGUgdG8gZGV0ZXJtaW5lIHRoZWlyIGRlc3RpbmF0aW9uLiBUaGlzIHdvcmsgaW5jbHVkZXMgYSBtaXh0dXJlIG9mIGNvbnRhY3RpbmcgeW91bmcgcGVvcGxlIHZpYSBlbWFpbCBhbmQgU01TIChtZXNzYWdpbmcpIGFzIHdlbGwgYXMgY29udGFjdGluZyB5b3VuZyBwZW9wbGUgYW5kIHBhcmVudHMgZGlyZWN0IGJ5IHBob25lLiBUaGlzIHdvcmsgaXMgY29udGludWluZyB0aHJvdWdob3V0IERlY2VtYmVyIDIwMTYgYW5kIEphbnVhcnkgMjAxNyB3aXRoIGEgdmlldyB0byByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHVua25vd24geW91bmcgcGVvcGxlIGFzIG11Y2ggYXMgcG9zc2libGUgYnkgdGhlIGVuZCBvZiBKYW51YXJ5LiBUaGUgRGZFIHdpbGwgcHJlc2VudCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIExvY2FsIEF1dGhvcml0eSB1c2luZyB0aGUgYXZlcmFnZXMgZm9yIHRoZSBtb250aHMgb2YgTm92ZW1iZXIgYW5kIERlY2VtYmVyIDIwMTYgYW5kIEphbnVhcnkgMjAxNy4gVGhlIHRyYWNraW5nIG9mIHlvdW5nIHBlb3BsZeKAmXMgRWR1Y2F0aW9uLCBUcmFpbmluZyBhbmQgRW1wbG95bWVudCBzaXR1YXRpb24gaXMgYXJlIHNvdXJjZSBpbnRlbnNpdmUgdGFzay4gVGhlIHNpemUgb2YgdGhlIGFjYWRlbWljIGFnZSAxNiBhbmQgMTcgY29ob3J0IHNpemUgaW4gV2VzdCBTdXNzZXggaXMgY3VycmVudGx5IDE3LDE2Ni4gT25seSBIYW1wc2hpcmUsIEtlbnQgYW5kIFN1cnJleSBoYXZlIGxhcmdlciBjb2hvcnQgc2l6ZXMgaW4gdGhlIFNvdXRoIEVhc3QgUmVnaW9uLiBBY2N1cmFjeSBhbmQgdGltZWxpbmVzcyBvZiBkYXRhIHJlY2VpdmVkIGZyb20gc2Nob29scywgcG9zdC0xNiBwcm92aWRlcnMgYW5kIG90aGVyIHNlcnZpY2VzIGFuZCBvcmdhbmlzYXRpb25zIGlzIGNydWNpYWwgdG8gc3VjY2VzcyBhcyB3ZWxsIGFzIGhhdmluZyB0aGUgcmVzb3VyY2VzIHRvIGNvbnRhY3QgdGhvc2UgeW91bmcgcGVvcGxlIHdob3NlIG5hbWUgZG9lcyBub3QgYXBwZWFyIG9uIGFueSBlbnJvbG1lbnQgbGlzdHMgcmVjZWl2ZWQuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAyIOKAkyBTZXB0ZW1iZXIgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG4gVGhlcmUgaXMgbm8gRVRFIGRhdGEgZm9yIFNlcHRlbWJlciAyMDE2LiBUaGUgcGVyZm9ybWFuY2Ugb2YgTG9jYWwgQXV0aG9yaXRpZXMgaXMgbm90IG1lYXN1cmVkIGJ5IHRoZSBEZkUgb3ZlciB0aGUgc3VtbWVyIG1vbnRocyBkdWUgdG8gbWFueSB5b3VuZyBwZW9wbGUgbGVhdmluZyBjb3Vyc2VzIG92ZXIgdGhpcyBwZXJpb2QsIHJlc3VsdGluZyBpbiBhIGdyYWR1YWwgcmlzZSBpbiB0aGUgbnVtYmVyIG9mIHlvdW5nIHBlb3BsZSB3aG9zZSBFVEUgYWN0aXZpdHkgaXMgdW5rbm93bi4gRnVydGhlcm1vcmUsIGF0IHRoZSBlbmQgb2YgQXVndXN0IGVhY2ggeWVhciwgYWxsIHlvdW5nIHBlb3BsZSBhZ2VkIDE2IHRvIDE4IHdobyB3ZXJlIGF0dGVuZGluZyBlZHVjYXRpb24gb3IgdHJhaW5pbmcgcHJpb3IgdG8gdGhlIGVuZCBvZiBBdWd1c3QsIGhhdmUgdGhlaXIgRVRFIGFjdGl2aXR5IGNoYW5nZWQgdG8g4oCYdW5rbm93buKAmS4gVGhpcyBpcyBhIERmRSByZXF1aXJlbWVudCBhbmQgZm9yY2VzIGFsbCBMb2NhbCBBdXRob3JpdGllcyB0byByZWd1bGFybHkgcmV2aWV3IHRoZSBFVEUgYWN0aXZpdHkgb2YgeW91bmcgcGVvcGxlIGxpdmluZyBpbiB0aGVpciBhcmVhLiBGcm9tIFNlcHRlbWJlciBlYWNoIHllYXIgdGhlIExvY2FsIEF1dGhvcml0eSBzdGFydHMgdG8gdHJhY2sgdGhlIEVURSBkZXN0aW5hdGlvbnMgb2YgdGhlc2UgeW91bmcgcGVvcGxlIHVzaW5nIGEgY29tYmluYXRpb24gb2YgZW5yb2xtZW50IGxpc3RzIGZyb20gc2l4dGggZm9ybXMsIGNvbGxlZ2VzIGFuZCBvdGhlciBwb3N0IDE2IEVURSBwcm92aWRlcnMsIHRoZSBOYXRpb25hbCBBcHByZW50aWNlc2hpcCBTZXJ2aWNlIGFuZCB0aGUgRGVwYXJ0bWVudCBmb3IgV29yayBhbmQgUGVuc2lvbnMsIGFzIHdlbGwgYXMgYXR0ZW1wdGluZyB0byBjb250YWN0IHlvdW5nIHBlb3BsZSB0aGVtc2VsdmVzLCBzaG91bGQgdGhleSBub3QgYXBwZWFyIG9uIGFueSBlbnJvbG1lbnQgbGlzdC5cXG5cXG5BdCB0aGUgZW5kIG9mIFNlcHRlbWJlciAyMDE2IHRoZSBMb2NhbCBBdXRob3JpdHkgaGFkIHJlY2VpdmVkIGVucm9sbWVudCBsaXN0cyBmcm9tIGFsbCBzY2hvb2xzIGFuZCBjb2xsZWdlcyBpbiBXZXN0IFN1c3NleCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIDYgc2Nob29scy4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHByaXZhdGUgc2Nob29scyBhcyB0aGV5IGhhdmUgbm8gc3RhdHV0b3J5IG9ibGlnYXRpb24gdG8gc2VuZCB0aGUgQXV0aG9yaXR5IHRoZWlyIGRhdGEuIEl0IGRvZXMgaW5jbHVkZSBBY2FkZW1pZXMuIFRoZSBBdXRob3JpdHkgaGFzIGFsc28gc3RhcnRlZCB0byByZWNlaXZlIGVucm9sbWVudCBsaXN0cyBmcm9tIHBvc3QgMTYgcHJvdmlzaW9uIGxvY2F0ZWQgaW4gbmVpZ2hib3JpbmcgYXV0aG9yaXRpZXMuIFVDQVMgbGlzdHMgd2lsbCBiZSBhdmFpbGFibGUgZnJvbSBzY2hvb2xzIGFuZCBjb2xsZWdlcyB0b3dhcmRzIHRoZSBlbmQgb2YgT2N0b2Jlci9lYXJseSBOb3ZlbWJlci4gVGhpcyB0cmFja2luZyBhY3Rpdml0eSB3aWxsIGNvbnRpbnVlIG92ZXIgdGhlIHF1YXJ0ZXIgMyBwZXJpb2QuIFRocm91Z2ggdGhpcyBwcm9jZXNzIHRoZSBBdXRob3JpdHkgY2FuIHN0YXJ0IHRvIGlkZW50aWZ5IHlvdW5nIHBlb3BsZSB3aG8gbWF5IG5vdCBiZSBtZWV0aW5nIHRoZSDigJhEdXR5IHRvIFBhcnRpY2lwYXRl4oCZIGluIEVkdWNhdGlvbiBvciBUcmFpbmluZywgdGhvc2Ugbm90IGluIGFueSBmb3JtIG9mIGVkdWNhdGlvbiwgdHJhaW5pbmcgb3IgZW1wbG95bWVudCAoTkVFVCksIG9yIHRob3NlIHdobyBhcmUgYXQgcmlzayBvZiBiZWNvbWluZyBORUVUIGFuZCBwcm92aWRlIHN1cHBvcnQgdG8gdGhlc2UgeW91bmcgcGVvcGxlIGFzIGFwcHJvcHJpYXRlLlxcblxcbkl0IGlzIGRpZmZpY3VsdCB0byBzYXkgd2l0aCBhbnkgY2VydGFpbnR5IGF0IHRoaXMgcG9pbnQgd2hldGhlciB0aGUgQXV0aG9yaXR5IHdpbGwgcmVhY2ggaXRzIEVURSB0YXJnZXQgYnkgdGhlIGVuZCBvZiB0aGUgeWVhci4gQSBtb3JlIGNlcnRhaW4gaWRlYSB3aWxsIGJlIHBvc3NpYmxlIGF0IHRoZSBlbmQgb2YgcXVhcnRlciAzIChlbmQgRGVjZW1iZXIgMjAxNikgd2hlbiB0aGUgbWFqb3JpdHkgb2YgdGhlIGRhdGEgd2lsbCBoYXZlIGJlZW4gcmVjZWl2ZWQuIEl0IGlzIGFsc28gY29tcGxpY2F0ZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgRGZFIGhhdmUgY2hhbmdlZCB0aGUgdHJhY2tpbmcgcmVxdWlyZW1lbnRzIG9uIExvY2FsIEF1dGhvcml0aWVzIGZyb20gU2VwdGVtYmVyIDIwMTYuIExvY2FsIEF1dGhvcml0aWVzIG5vdyBoYXZlIHRvIHN1Ym1pdCBkYXRhIHRvIHRoZSBEZkUgZm9yIHlvdW5nIHBlb3BsZSBhZ2VkIDE2IGFuZCAxNyBvbmx5LCBvciB1cCB0byBhZ2UgMjUgaWYgdGhlIHlvdW5nIHBlcnNvbiBoYXMgYSBzcGVjaWFsIGVkdWNhdGlvbmFsIG5lZWQgb3IgZGlzYWJpbGl0eSAoU0VORCkuIFdoaWxlIExvY2FsIEF1dGhvcml0aWVzIGFyZSBleHBlY3RlZCB0byBpbnRyb2R1Y2UgbG9jYWxseSBkZXNpZ25lZCBwcm9jZWR1cmVzIHRvIGlkZW50aWZ5IHRob3NlIGFjYWRlbWljIGFnZSAxOC15ZWFyLW9sZHMgd2hvIG5lZWQgc3VwcG9ydCB0byBlbmdhZ2UsIHdlIGFyZSBhbHNvIHRvIGludGVuc2lmeSBvdXIgZWZmb3J0cyB0byBlbnN1cmUgYWxsIGFjYWRlbWljIGFnZSAxNiBhbmQgMTcteWVhci1vbGRzIGFyZSB0cmFja2VkIGVmZmljaWVudGx5IHRvIHJlZHVjZSB0aGUgcHJvcG9ydGlvbiB3aG9zZSBhY3Rpdml0eSBpcyByZWNvcmRlZCBhcyBub3Qga25vd24gYW5kIHRvIGluY3JlYXNlIHRoZSBwcm9wb3J0aW9uIGVudGVyaW5nIGFuZCBzdXN0YWluaW5nIGFuIFJQQSAoUmFpc2luZyBQYXJ0aWNpcGF0aW9uIEFnZSkgY29tcGxpYW50IGRlc3RpbmF0aW9uIGFmdGVyIGxlYXZpbmcgc2Nob29sLiBUaGUgRGZFIHdpbGwgdGhlcmVmb3JlIHB1Ymxpc2ggb3VyIHBlcmZvcm1hbmNlIGZvciAxNiBhbmQgMTcgeWVhciBvbGRzIG9ubHkgKG9yIHVwIHRvIDI1IHdpdGggU0VORCkgYXMgb3Bwb3NlZCB0byB5b3VuZyBwZW9wbGUgYWdlZCAxNiB0byAxOC5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSBKdW5lIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuVGhpcyBtZWFzdXJlIGlzIHRoZSBwcm9wb3J0aW9uIG9mIFdlc3QgU3Vzc2V4IHJlc2lkZW50IHlvdW5nIHBlb3BsZSBvZiBhY2FkZW1pYyBhZ2UgMTYsIDE3IGFuZCAxOCAoc2Nob29sIHllYXJzIDEyIHRvIDE0KSB3aG8gYXJlIGVuZ2FnZWQgaW4gc29tZSBmb3JtIG9mIGVkdWNhdGlvbiwgZW1wbG95bWVudCBvciB0cmFpbmluZy4gVGhpcyBpbmNsdWRlcyB5b3VuZyBwZW9wbGUgd2hvc2UgcGVybWFuZW50IGFkZHJlc3MgaXMgd2l0aGluIFdlc3QgU3Vzc2V4IGJ1dCB0aGV5IGFyZSBzdHVkeWluZyBhd2F5IGZyb20gaG9tZS4gSXQgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBMb2NhbCBBdXRob3JpdGllcyBkdXRpZXMgdG8gZW5jb3VyYWdlLCBlbmFibGUgYW5kIGFzc2lzdCB5b3VuZyBwZW9wbGUgdG8gcGFydGljaXBhdGUgaW4gZWR1Y2F0aW9uIG9yIHRyYWluaW5nIChFZHVjYXRpb24gYW5kIFNraWxscyBBY3QgMjAwOCwgUy42OCkuXFxuXFxuSXQgaXMgbm90IHRoZSBzYW1lIGFzIHRob3NlIHlvdW5nIHBlb3BsZSBhZ2VkIDE2IGFuZCAxNyB3aG8gYXJlIG1lZXRpbmcgdGhlIOKAmGR1dHkgdG8gcGFydGljaXBhdGXigJkgb3IgdGhvc2UgYWdlZCAxNiB0byAxOCBlbmdhZ2VkIGluIGVkdWNhdGlvbiBvciB0cmFpbmluZyAoaS5lLiDigJhpbiBMZWFybmluZ+KAmSkgYXMgbWVhc3VyZWQgYnkgdGhlIERmRS4gVGhlc2UgbWVhc3VyZXMgaGF2ZSBydWxlcyBhcm91bmQgd2hhdCBjb3VudHMgYXMg4oCYcGFydGljaXBhdGlvbuKAmSAoaS5lLiB0byBtZWV0IHRoaXMgZHV0eSBvciB0byBiZSBjbGFzc2VkIGFzIOKAmEluIExlYXJuaW5n4oCZIGVtcGxveW1lbnQgaGFzIHRvIGJlIGNvbWJpbmVkIHdpdGggc29tZSBmb3JtIG9mIGFjY3JlZGl0ZWQgdHJhaW5pbmcpLiBJbiBjb250cmFzdCwgd2l0aGluIHRoZSAxNiB0byAxOCB5ZWFyIG9sZHMgaW4gRUVUIG1lYXN1cmUsIHdlIGNvdW50IHlvdW5nIHBlb3BsZSB3aG8gYXJlIGluIHBhcnQtdGltZSBlbXBsb3ltZW50IG9yIGVtcGxveW1lbnQgd2l0aG91dCB0cmFpbmluZyBldmVuIHRob3VnaCB0aGVzZSB5b3VuZyBwZW9wbGUgYXJlIG5vdCBtZWV0aW5nIHRoZSBEdXR5IHRvIFBhcnRpY2lwYXRlLlxcblxcblRoZSBmaWd1cmUgZm9yIEp1bmUgMjAxNiAoODUuMSUpIGlzIHByb3ZpZGVkIGZyb20gbG9jYWwgZGF0YS4gSWYgdGhpcyBwZXJmb3JtYW5jZSBpcyBzcGxpdCBieSBhY2FkZW1pYyBhZ2UgZ3JvdXAsIHdlIGNhbiBzZWUgdGhhdCB0aGUgbGFyZ2VzdCBwcm9ibGVtIGlzIGluIHRoZSBhY2FkZW1pYyBhZ2UgMTggZ3JvdXA6IEFnZSAxNiAoeWVhciAxMikg4oCTIDk0LjElOyBBZ2UgMTcgKHllYXIgMTMpIOKAkyA4Ny41JTsgQWdlIDE4ICh5ZWFyIDE0KSDigJMgNzMuOCUuIE91ciDigJh1bmtub3du4oCZIGNvaG9ydCBpcyBhbHNvIGF0IGl0cyBsYXJnZXN0IGluIHRoZSBBZ2UgMTggZ3JvdXAgYXMgZm9sbG93czogQWdlIDE2IOKAkyA0LjUlOyBBZ2UgMTcg4oCTIDkuOSU7IEFnZSAxOCDigJMgMTkuNCU7IE92ZXJhbGwgMTYgdG8gMTgg4oCTIDExLjMlLiBJbiBiZW5jaG1hcmtpbmcgdGVybXMsIHRoZSBwZXJjZW50YWdlIG9mIDE2IHRvIDE4IHllYXIgb2xkcyB3aG8gYXJlIG5vdCBpbiBlZHVjYXRpb24sIGVtcGxveW1lbnQgb3IgdHJhaW5pbmcgKE5FRVQpIHdhcyAzLjklIGluIDIwMTUuVGhlIHNlcnZpY2UgYXJlIG9uIHRyYWNrIHRvIG1ha2UgYW4gaW1wcm92ZW1lbnQgb24gbGFzdCB5ZWFyLiBUaGlzIHRpbWUgbGFzdCB5ZWFyIG91ciBwZXJmb3JtYW5jZSB3YXMgYXQgODAuMiUsIHNob3dpbmcgYW4gaW5jcmVhc2Ugb2YgNSUuXFxuXFxuVGhlIG51bWJlcnMgaW4gRUVUIGFuZCB1bmtub3duIHRlbmQgdG8gZGVjbGluZSBhbmQgcmlzZSByZXNwZWN0aXZlbHkgZnJvbSBKYW51YXJ5IHRocm91Z2ggdG8gdGhlIHN1bW1lciBhcyB5b3VuZyBwZW9wbGUgbGVhdmUgYW5kIGNoYW5nZSBjb3Vyc2VzL3Byb3ZpZGVycy4gVGVhbXMgd29yayB3aXRoIHBvc3QgMTYgcHJvdmlkZXJzLCBvdXIgWW91dGggSW50ZXJ2ZW50aW9ucyBUZWFtLCBGaW5kIGl0IE91dCBTaG9wcyBhbmQgdGhlIENvbnRhY3QgQ2VudHJlIHRvIHRyeSB0byBkZXRlcm1pbmUgdGhlIG9uLWdvaW5nIGRlc3RpbmF0aW9uIG9mIHRob3NlIHlvdW5nIHBlb3BsZSB3aG8gbGVhdmUgY291cnNlcyBhbmQgcHJvdmlkZXJzIGVhcmx5LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgb2xkZXIgYWdlIGdyb3VwIGlzIHdoZXJlIHdlIHN0cnVnZ2xlIGluIHRlcm1zIG9mIOKAmHRyYWNraW5n4oCZIHlvdW5nIHBlb3BsZeKAmXMgRUVUIGRlc3RpbmF0aW9uLiBXZSBubyBsb25nZXIgcmVjZWl2ZSBVQ0FTIGRhdGEgZGlyZWN0IGZyb20gVUNBUywgYW5kIHJlbHkgb24gc2Nob29scyBhbmQgY29sbGVnZXMgc2VuZGluZyB1cyB0aGlzIGRhdGEsIHdoaWNoIGlzbuKAmXQgYWx3YXlzIGNvbXBsZXRlLiBNYW55IG9mIHRoZXNlIHlvdW5nIHBlb3BsZSBtYXkgYmUgd29ya2luZyBvciBzdHVkeWluZyBhd2F5IGZyb20gaG9tZSBhbmQgdGhlcmVmb3JlIHJlbWFpbiBkaWZmaWN1bHQgdG8gY29udGFjdCB0byByZS12ZXJpZnkgdGhlaXIgRUVUIHN0YXR1cy4gRnJvbSBTZXB0ZW1iZXIgMjAxNiB0aGUgRGZFIHdpbGwgbm8gbG9uZ2VyIGJlIHJlcG9ydGluZyBvdXIgcGVyZm9ybWFuY2Ugb24gdGhlIDE2IHRvIDE4IGFnZSBncm91cC4gSXQgaXMgbW92aW5nIGluc3RlYWQgdG8gdGhvc2UgeW91bmcgcGVvcGxlIGFnZWQgMTYgYW5kIDE3IGluIGxpbmUgd2l0aCB0aGUg4oCYRHV0eSB0byBQYXJ0aWNpcGF0ZeKAmSBsZWdpc2xhdGlvbi4gVGhpcyBjaGFuZ2Ugd2lsbCBlbnN1cmUgdGhhdCB0aGUgc2VydmljZSBjYW4gZm9jdXMgaXRzIGVmZm9ydCBvbiByZWR1Y2luZyB0aGUgdW5rbm93bnMgYW5kIHlvdW5nIHBlb3BsZSB3aG8gYXJlIE5FRVQgaW4gdGhlIHllYXIgMTIgYW5kIHllYXIgMTMgY29ob3J0IGFuZCBpbiB0dXJuIHdvcmsgdG8gaW1wcm92ZSB0aGUgbnVtYmVycyBpbiBFRVQsIHNwZWNpZmljYWxseSBmb3IgdGhvc2UgeW91bmcgcGVvcGxlIHdobyBmYWxsIHVuZGVyIHRoZSDigJhEdXR5IHRvIFBhcnRpY2lwYXRl4oCZIGxlZ2lzbGF0aW9uLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgZGV2ZWxvcG1lbnQgb2YgdGhlIFBvc3QgMTYgUGFydGljaXBhdGlvbiBhbmQgRW5nYWdlbWVudCBpbiBFRVQgc3RyYXRlZ3kgYWxvbmdzaWRlIGtleSBwYXJ0bmVycyB3aWxsIHByb3ZpZGUgc3RyYXRlZ2ljIG92ZXJzaWdodCBhbmQgZGlyZWN0aW9uIHRvIHRoZSB3b3JrIGFyb3VuZCBlbmdhZ2luZyB5b3VuZyBwZW9wbGUgaW4gRUVUIGFuZCBtYWludGFpbmluZyB0aGVpciBlbmdhZ2VtZW50LiBUaGUgYW1hbGdhbWF0aW9uIG9mIHRoZSBUaGluayBGYW1pbHksIEVhcmx5IENoaWxkaG9vZCBTZXJ2aWNlIGFuZCBZb3VuZyBQZW9wbGXigJlzIFNlcnZpY2UgZGF0YSB0ZWFtcyBhbHNvIHByb3ZpZGVzIGFuIGV4Y2VsbGVudCBvcHBvcnR1bml0eSB0byBpZGVudGlmeSB5b3VuZyBwZW9wbGUgZWFybHkgd2hvIGFyZSBhdCByaXNrIG9mIGJlY29taW5nIE5FRVQgcG9zdCAxNiBhbmQgdG8gcHJvdmlkZSB0YXJnZXRlZCBpbnRlcnZlbnRpb24gdG8gcHJldmVudCB0aGlzIGhhcHBlbmluZy4gVGhpcyBzdHJhdGVneSBmb2N1c2VzIG9uIGltcHJvdmluZyDigJhwcmV2ZW50aW9u4oCZIChwcmV2ZW50aW5nIHlvdW5nIHBlb3BsZSBiZWNvbWluZyBORUVUKSwg4oCYSW50ZXJ2ZW50aW9u4oCZIChlbnN1cmluZyB3ZSBoYXZlIHRoZSByZXNvdXJjZXMgdG8ga25vdyB3aGF0IHlvdW5nIHBlb3BsZSBhcmUgZG9pbmcgYW5kIHB1dHRpbmcgaW4gcGxhY2UgdGFyZ2V0ZWQgaW50ZXJ2ZW50aW9uIHRvIHN1cHBvcnQgeW91bmcgcGVvcGxlIGludG8gRUVUKSBhbmQg4oCYc3VzdGFpbmFiaWxpdHnigJkgKHN1cHBvcnRpbmcgdGhvc2UgeW91bmcgcGVvcGxlIHdpdGggYSBoaXN0b3J5IG9mIOKAmGRyb3BwaW5nIG91dOKAmSBvZiBFRVQgYW5kIHRhY2tsaW5nIG9ic3RhY2xlcyB0byBlbmdhZ2VtZW50KS5cXG5cXG4gXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciA0IC0gTWFyY2ggMjAxNioqXFxuXFxuLSAtIC1cXG5cXG7igJhBbHRob3VnaCBpbiBNYXJjaCAyMDE2IHdlIHdlcmUgYWxtb3N0IDEwJSB1bmRlciB0YXJnZXQsIHRoaXMgaXMgbGFyZ2VseSBhIHJlc3VsdCBvZiBvdXIg4oCYdW5rbm93buKAmSBjb2hvcnQgYmVpbmcgMTEuMSUgYXQgdGhpcyB0aW1lLiBPdXIg4oCYdW5rbm93bnPigJkgYXJlIHRob3NlIHlvdW5nIHBlb3BsZSB3aG9tLCBkZXNwaXRlIHZhcmlvdXMgZWZmb3J0cywgd2UgaGF2ZSBiZWVuIHVuYWJsZSB0byBjb250YWN0IHRvIHJlLXZlcmlmeSB0aGVpciBjdXJyZW50IEVFVCBhY3Rpdml0eS4gSXQgaXMgdmVyeSBsaWtlbHkgdGhhdCBhIGdvb2QgcGVyY2VudGFnZSBvZiB0aGVzZSB5b3VuZyBwZW9wbGUgYXJlIHBhcnRpY2lwYXRpbmcgaW4gc29tZSBmb3JtIG9mIEVFVCwgbW9zdCBsaWtlbHkgZW1wbG95bWVudCwgb3IgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHRoZXkgaGF2ZSBtb3ZlZCBvdXQgb2YgV2VzdCBTdXNzZXguIFRoZSBtYWpvcml0eSBvZiB0aGUgdW5rbm93biBjb2hvcnQgaXMgaW4gdGhlIG9sZGVyIGFnZSBncm91cC4gV2UgaGF2ZSBiZWVuIHdvcmtpbmcgaGFyZCBvdmVyIHRoZSBwYXN0IHllYXIgdG8gaW1wcm92ZSBvdXIgdW5rbm93biBmaWd1cmVzIGFuZCB0aGVyZWZvcmUgaW1wcm92ZSBvdXIgZGF0YSBpbnRlZ3JpdHkgYW5kIHJlbGlhYmlsaXR5LiBXZSBob3BlIHRvIG1ha2UgZnVydGhlciBpbXByb3ZlbWVudHMgdGhpcyB5ZWFyIGFzIHdlIGFyZSBiZWNvbWluZyBpbmNyZWFzaW5nbHkgbW9yZSBjb25maWRlbnQgd2l0aCBvdXIgY29ob3J0IGRhdGEu4oCZXFxuXFxuXCJ9XSxcInVzZV9jdXN0b21fc3VidGl0bGVcIjp0cnVlLFwiY3VzdG9tX3N1YnRpdGxlXCI6XCJUaGlzIGdvYWwgaXMgbWVhc3VyZWQgYnkgdHJhY2tpbmcgYW4gaW5jcmVhc2UgaW4gdGhlICUgb2YgMTYgLSAxNyB5ZWFyIG9sZHMgaW4gZWR1Y2F0aW9uLCBlbXBsb3ltZW50IG9yIHRyYWluaW5nIGluIFdlc3QgU3Vzc2V4XCIsXCJ1c2VfY3VzdG9tX3RpdGxlXCI6dHJ1ZSxcImN1c3RvbV90aXRsZVwiOlwiSW5jcmVhc2UgIHRoZSBudW1iZXIgb2YgMTYgLSAxNyB5ZWFyIG9sZHMgaW4gZWR1Y2F0aW9uLCBlbXBsb3ltZW50IG9yIHRyYWluaW5nIGluIFdlc3QgU3Vzc2V4IFwiLFwidGl0bGVfaW1hZ2VcIjpcIi9hcGkvYXNzZXRzLzIxNDVBOTE1LTJFNDgtNEFCNi1BRjM2LTZDODBBNEMyRkNGQ1wifSJ9LCJwcmV2YWlsaW5nX21lYXN1cmUiOnsic3RhcnQiOiIyMDE0LTAzLTAxVDAwOjAwOjAwLjAwMCIsImVuZCI6IjIwMTgtMDMtMzFUMjM6NTk6NTkuMDAwIiwidW5pdCI6IiUiLCJ0YXJnZXQiOjk1LCJ0YXJnZXRfdHlwZSI6ImFic29sdXRlIiwidGFyZ2V0X2RlbHRhIjowLCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjo5NSwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiJndnU3LXE1NHIifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjIsXCJ5ZWFyXCI6MjAxNH0sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fSxcImFjdGlvbl90eXBlXCI6XCJpbmNyZWFzZVwiLFwibWFpbnRhaW5fdHlwZVwiOlwiPlwifSxcImJhc2VsaW5lXCI6e1wic3F1aXNoeVwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNn0sXCJlbmRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE2fX0sXCJzdGFydFwiOlwiMjAxNi0wMS0wMVQwMDowMDowMC4wMDBcIixcImVuZFwiOlwiMjAxNi0wMS0wMVQyMzo1OTo1OS4wMDBcIixcIm1ldHJpY1wiOntcIm1ldGFkYXRhXCI6XCJ7XFxcIndpemFyZFxcXCI6e1xcXCJmaWx0ZXJfYXN0XFxcIjpbe1xcXCJ2YWx1ZXNcXFwiOlt7fV19XX19XCJ9fSxcIm5hbWVcIjpcIiB0aGUgJSBvZiAxNiAtIDE3IHllYXIgb2xkcyBpbiBlZHVjYXRpb24sIGVtcGxveW1lbnQgb3IgdHJhaW5pbmcgaW4gV2VzdCBTdXNzZXhcIixcInVzZV9wcm9ncmVzc19vdmVycmlkZVwiOmZhbHNlLFwicHJvZ3Jlc3Nfb3ZlcnJpZGVcIjpcImJhZFwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTowOTozMy41MjhaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MDk6MzMuNTI4WiIsInRhcmdldF90b2xlcmFuY2UiOjksImlkIjoiZ2J5eC15a2NkIn0sInJlbGF0ZWRfbWVhc3VyZXMiOltdLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjEwOjAxLjE2N1oiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTowOTozMy42NDRaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MTA6MDEuMTY3WiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoiN3J4cy02YTQzIiwibmFtZSI6IkFwcHJlbnRpY2VzaGlwcyBpbiBXZXN0IFN1c3NleCIsImlzX3B1YmxpYyI6dHJ1ZSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJyZXRpcmVtZW50X25hcnJhdGl2ZVwiOltdLFwiaWNvblwiOlwidGV4dFwiLFwibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRTg5REJCNzEtNTgwNC00NDc2LUI0Q0ItRDFFQzM4MDkxRTAzXCJ9XSxbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIFtOYXRpb25hbCBBcHByZW50aWNlc2hpcCBTZXJ2aWNlXShodHRwOi8vd3d3LmFwcHJlbnRpY2VzaGlwcy5vcmcudWspIGlzIHBhcnQgb2YgdGhlIFNraWxscyBGdW5kaW5nIEFnZW5jeVwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGUgQ291bnR5IENvdW5jaWwgaGFzIGVtYnJhY2VkIGFwcHJlbnRpY2VzaGlwcyBhbmQgd2lzaGVzIG90aGVyIGVtcGxveWVycyBkbyBsaWtld2lzZS4gQW55IGJ1c2luZXNzZXMgbmV3IHRvIEFwcHJlbnRpY2VzaGlwcyBjYW4gYWNjZXNzIGluZm9ybWF0aW9uIGFuZCBhZHZpY2UgZnJvbSB0aGUgQXBwcmVudGljZW1ha2VycyB3ZWJzaXRlLiBXZXN0IFN1c3NleCBhbHNvIG9mZmVycyBidXNpbmVzcyB0byBidXNpbmVzcyBhZHZpY2UgdG8gYW55IGVtcGxveWVyIG5ldyB0byBBcHByZW50aWNlc2hpcHNcXG5cXG5BcHByZW50aWNlc2hpcHMgYXJlIGEga2V5IHdheSBvZiBib29zdGluZyB0aGUgbG9jYWwgZWNvbm9teSwgdGhyb3VnaCBwcm92aWRpbmcgdHJhaW5pbmcgYWxvbmcgc2lkZSBwYWlkIHdvcmsgb3Bwb3J0dW5pdGllcywgcHJvdmlkaW5nIG9wcG9ydHVuaXRpZXMgZm9yIHNraWxscyBkZXZlbG9wbWVudCBhbGwgb2Ygd2hpY2ggY2FuIGVuaGFuY2UgcHJvZHVjdGl2aXR5IGFuZCBpbmNyZWFzZSBjb21wZXRpdGl2ZW5lc3Mgb2YgYnVzaW5lc3Nlcy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyAqKldTQ0MgQXBwcmVudGljZXMqKlxcblxcbkFzIG9uZSBvZiB0aGUgbGFyZ2VzdCBlbXBsb3llcnMgaW4gdGhlIGNvdW50eSwgdGhlIENvdW50eSBDb3VuY2lsIGhhcyBhbiBpbXBvcnRhbnQgcm9sZSB0byBwbGF5IGluIGxlYWRpbmcgYnkgZXhhbXBsZSB0byBkZW1vbnN0cmF0ZSB0aGUgYmVuZWZpdHMgb2YgYXBwcmVudGljZXNoaXBzIHRvIGEgcmFuZ2Ugb2Ygc3Rha2Vob2xkZXJzLlxcblxcblNpbmNlIDIwMTAgb3ZlciAzMDAgcGVvcGxlIGhhdmUgc3R1ZGllZCBhbiBhcHByZW50aWNlc2hpcCBwcm9ncmFtbWUgd2hpbHN0IGVtcGxveWVkIGJ5IHRoZSBDb3VudHkgQ291bmNpbCwgd2Ugb2ZmZXIgYSBkaXZlcnNlIHJhbmdlIG9mIEFwcHJlbnRpY2VzaGlwcyBzdWNoIGFzIENhcmUsIEhSLCBMZWdhbCwgRW5naW5lZXJpbmcuIEFwcHJlbnRpY2VzaGlwcyBhcmUgcmVhbGx5IGhlbHBpbmcgdXMgdG8gZGV2ZWxvcCBvdXIgYnVzaW5lc3MsIEFwcHJlbnRpY2VzIGJyaW5nIGZyZXNoIGlkZWFzIGFuZCBoZWxwIHVzIGV4cGVyaWVuY2UgbmV3IHRlY2hub2xvZ3kgdG8gdGhlIG9yZ2FuaXNhdGlvbi4gODUlIG9mIHRob3NlIHdobyBjb21wbGV0ZWQgdGhlaXIgYXBwcmVudGljZXNoaXAgaGF2ZSBtb3ZlZCBpbnRvIHBhaWQgZW1wbG95bWVudCBoZWxwaW5nIHRvIGV2aWRlbmNlIGFwcHJlbnRpY2VzaGlwcyB3b3JrIGFuZCBnaXZlIHJlYWwgZWNvbm9taWMgYmVuZWZpdC4gQXMgdGhlIENvdW50eSBDb3VuY2ls4oCZcyB3b3JrZm9yY2Ugc2l6ZSBzaHJpbmtzIGFuZCBvdXIgc2VydmljZSBwcm92aXNpb24gaXMgb3V0c291cmNlZCwgdGhlIGltcGFjdCBvZiB0aGUgQ291bnR5IENvdW5jaWzigJlzIGFwcHJlbnRpY2VzaGlwIHByb2dyYW1tZSByZWR1Y2VzLiBJdCBpcyB0aGVyZWZvcmUgaW1wb3J0YW50LCBhcyB3ZSBjb21taXNzaW9uIHNlcnZpY2VzLCB0byByZWFsaXN0aWNhbGx5IGJ1aWxkIGFwcHJlbnRpY2VzaGlwcyBhbmQgZW1wbG95bWVudCBhbmQgc2tpbGxzIGluaXRpYXRpdmVzIGludG8gY29udHJhY3R1YWwgcmVxdWlyZW1lbnRzIGluIG9yZGVyIHdlIGNhbiBtYWludGFpbiB0aGUgYmVuZWZpdCBhcHByZW50aWNlc2hpcHMgY2FuIGJyaW5nIHRvIHRoZSBsb2NhbCBlY29ub215LlxcblxcbiBcXG5cXG5WaWV3IG91ciBXU0NDIEFwcHJlbnRpY2VzaGlwIHBhZ2VzIHdoZXJlIHlvdSBjYW4gZmluZCBvdXQgaW5mb3JtYXRpb24gYW5kIHZpZXcgYWxsIHRoZSBsYXRlc3QgV2VzdCBTdXNzZXggQXBwcmVudGljZXNoaXAgdmFjYW5jaWVzLiBXYXRjaCBvdXIgdmlkZW8gJ0NvdW50eSBDb3VuY2lsIGFwcHJlbnRpY2VzIGZpbmQgZ2F0ZXdheSB0byB3b3JrJ1xcblxcbiBcIn0se1widHlwZVwiOlwidHdvQ29sTGF5b3V0XCIsXCJjb2x1bW5zXCI6W1t7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJXZSBjdXJyZW50bHkgaGF2ZSA1OCBhcHByZW50aWNlcyB3b3JraW5nIGluIFdTQ0Mgb3IgU2Nob29scywgdGhlIGJyZWFrZG93biBvZiB3aGljaCBpczpcXG5cXG4xOCBBcHByZW50aWNlc2hpcCBjb250cmFjdHNcXG5cXG45IFBlcm1hbmVudCBjb250cmFjdHNcXG5cXG4zMSBTY2hvb2wgY29udHJhY3RzXFxuXFxuXCJ9XSxbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRUVCODMyQkYtOUQwNi00RjgyLThDNjAtNkVDRDgwN0MwMkZFXCJ9XV19LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqQXBwcmVudGljZXNoaXAgUmVwb3J0IChGZWIgMTgpKipcXG5cXG4tIC0gLVxcblxcbldlIGNvbnRpbnVlIHRvIGluY3JlYXNlIHRoZSBudW1iZXIgb2YgYXBwcmVudGljZXNoaXBzIHRha2VuIHVwIGFjcm9zcyBvdXIgQ29ycG9yYXRlIFNlcnZpY2VzIGFuZCBvdXIgU2Nob29scyAoYW4gaW5jcmVhc2Ugb2YgMTUgb3ZlciB0aGUgcHJldmlvdXMgbW9udGggYW5kIGFuIDI1JSBpbmNyZWFzZSBvbiBKYW51YXJ5IDIwMTcpIFdlIGFyZSB1c2luZyBhIG51bWJlciBvZiBjYW1wYWlnbmluZyB0b29scyB0byBpbmNpdGUgaW50ZXJlc3QsIHJhaXNlIGF3YXJlbmVzcywgYnVzdCBzb21lIG15dGhzIGFuZCBpbmNyZWFzZSB0YWtlIHVwLCBmb3IgZXhhbXBsZSBob3N0aW5nIGFuIGluZm9ybWF0aW9uIHNlc3Npb24gdG8gcHJvbW90ZSB0aGUgbmV3IFRlYWNoaW5nIHBvc3QgZ3JhZHVhdGUgZGVncmVlIGFwcHJlbnRpY2VzaGlwLCBhdHRlbmRpbmcgU2VuaW9yIExlYWRlcnNoaXAgVGVhbSBNZWV0aW5ncywgSGVhZCBUZWFjaGVyIGFuZCBCdXNpbmVzcyBNYW5hZ2VyIEJyaWVmaW5ncyBhbmQgcnVubmluZyBhIHNlcmllcyBvZiByb2Fkc2hvd3MgYXJvdW5kIHRoZSBDb3VudHkgZm9yIG91ciBlbXBsb3llZXMgYW5kIG1hbmFnZXJzLlxcblxcbldlIGhhdmUgYWxzbyBiZWVuIHNvdXJjaW5nIHByb3ZpZGVycyB0byBkZWxpdmVyIG91ciBhcHByZW50aWNlc2hpcCByZXF1aXJlbWVudHMgYW5kIGVuc3VyaW5nIHRoZXkgYXJlIHNpZ25lZCB1cCB0byBvdXIgRHluYW1pYyBQdXJjaGFzaW5nIFN5c3RlbSBhbmQgYWJsZSB0byBkZWxpdmVyIG91ciByZXF1aXJlbWVudHMuXFxuXFxuV2UgYXJlIHN0aWxsIHdhaXRpbmcgZm9yIGtleSBhcHByZW50aWNlc2hpcHMgdG8gYmUgZmluYWxpc2VkIHRoYXQgYXJlIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QgdG8gdXMgYXMgYSBMb2NhbCBBdXRob3JpdHkgYW5kIHRoZXNlIGFyZTpcXG5cXG4qIFNvY2lhbCBXb3JrIGRlZ3JlZVxcblxcbiogT2NjdXBhdGlvbmFsIFRoZXJhcHkgZGVncmVlXFxuXFxuKiBDaXZpbCBFbmdpbmVlcmluZyBMZXZlbCA0XFxuXFxuVGhlIFNlbmlvciBTdHJhdGVnaWMgTGVhZGVycyAoTUJBKSBMZXZlbCA3IE1hc3RlcnMgbGV2ZWwgZGVncmVlIGhhcyB2ZXJ5IHJlY2VudGx5IGJlZW4gYXBwcm92ZWQgYW5kIHdlIGFyZSBub3cgd2FpdGluZyBmb3IgdW5pdmVyc2l0eSBwcm92aWRlcnMgdG8gZ2l2ZSB1cyBkYXRlcyBvZiB3aGVuIHRoZXkgd2lsbCBiZSByZWFkeSB0byBkZWxpdmVyLlxcblxcbldlIGNvbnRpbnVlIHRvIGhhdmUgY2hhbGxlbmdlcyBhc3NvY2lhdGVkIHdpdGggYnJpbmdpbmcgaW4gdGhlIG5ldyBhcHByZW50aWNlc2hpcCBhcnJhbmdlbWVudHMg4oCTIGluY2x1ZGluZyBzb21lIG9mIHRoZSBrZXkgbmV3IGFwcHJlbnRpY2VzaGlwIHN0YW5kYXJkcyBub3QgeWV0IGJlaW5nIGF2YWlsYWJsZSAoc2VlIGFib3ZlKSwgdGhlIGZ1bmRpbmcgY3Jpc2lzIGluIG91ciBzY2hvb2xzLCBwcm9jdXJlbWVudCB0aW1lbGluZXMgYW5kIHRoZSBuZWVkIGZvciBtYW5hZ2VycyB0byByZWxlYXNlIHRoZWlyIGFwcHJlbnRpY2VzIGZvciAyMCUgb2ZmIHRoZSBqb2IgdHJhaW5pbmcuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIERlY2VtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuKipBcHByZW50aWNlc2hpcCBSZXBvcnQgKE9jdDE3LUphbjE4KSoqXFxuXFxuSW4gQXByaWwgMjAxNyB0aGUgR292ZXJubWVudCBpbnRyb2R1Y2VkIGEgbnVtYmVyIG9mIGFwcHJlbnRpY2VzaGlwIHJlZm9ybXMgYXMgcGFydCBvZiBpdHMgYW1iaXRpb24gdG8gY3JlYXRlIGFuIGFkZGl0aW9uYWwgMyBtaWxsaW9uIGFwcHJlbnRpY2VzaGlwIHN0YXJ0cyBpbiBFbmdsYW5kLCBieSAyMDIwLCBhbmQgaW4gZG9pbmcgc28sIGRldmVsb3Agdm9jYXRpb25hbCBza2lsbHMsIGluY3JlYXNpbmcgdGhlIHF1YW50aXR5IGFuZCBxdWFsaXR5IG9mIHRoZSBhcHByZW50aWNlc2hpcCBleHBlcmllbmNlLldlc3QgU3Vzc2V4IENvdW50eSBDb3VuY2lsIGhhcyBiZWVuIHRyYW5zaXRpb25pbmcgb3ZlciB0byB0aGUgbmV3IGFwcHJlbnRpY2VzaGlwIGFycmFuZ2VtZW50cyB3aGljaCBtZWFuIHRoYXQgcHVibGljIHNlY3RvciBib2RpZXMgY2FuIG5vdyBwbGFuIGFuZCBmdW5kIGFwcHJlbnRpY2VzaGlwIHF1YWxpZmljYXRpb25zIGZvciB0aGVpciBzdGFmZiByYW5naW5nIGZyb20gbGV2ZWwgMiAoZXF1aXZhbGVudCB0byBHQ1NFIGxldmVsKSBxdWFsaWZpY2F0aW9ucyByaWdodCB1cCB0byBkZWdyZWUgYW5kIG1hc3RlcnMgbGV2ZWwgYXBwcmVudGljZXNoaXBzLlxcblxcbkEgbnVtYmVyIG9mIG5ldyBBcHByZW50aWNlc2hpcCBTdGFuZGFyZHMgYXJlIGJlaW5nIGRldmVsb3BlZCB3aGljaCB3aWxsIHByb3ZpZGUgZ3JlYXRlciBvcHBvcnR1bml0aWVzIGZvciBwdWJsaWMgc2VjdG9yIGFwcHJlbnRpY2VzIHdoZW4gdGhleSBjb21lIG9uLXN0cmVhbS4gU2V2ZXJhbCBvZiB0aGVzZSBzdGFuZGFyZHMgd2lsbCBiZSB2ZXJ5IGltcG9ydGFudCBpbiBmaWxsaW5nIHNraWxscyBzaG9ydGFnZXMgd2l0aGluIHRoZSBDb3VuY2lsIGluIG1hbnkgb2NjdXBhdGlvbmFsIHNraWxscyBzaG9ydGFnZSBhcmVhcyBzdWNoIGFzIFRlYWNoZXJzLCBPY2N1cGF0aW9uYWwgVGhlcmFwaXN0cywgQ2l2aWwgRW5naW5lZXJzIGFuZCBTb2NpYWwgV29ya2VycyB0byBuYW1lIGJ1dCBhIGZldy4gVGhlIGRldmVsb3BtZW50IG9mIHRoZXNlIHN0YW5kYXJkcyBoYXMgaGFkIG11Y2ggZ3JlYXRlciBpbnZvbHZlbWVudCBmcm9tIGVtcGxveWVycyB3aG8gaGF2ZSBiZWVuIGFjdGl2ZWx5IGludm9sdmVkIGluIGRldmVsb3BpbmcgdGhlIG5ldyBhcHByZW50aWNlc2hpcCBzdGFuZGFyZCBxdWFsaWZpY2F0aW9ucy5cXG5cXG5XZSBoYXZlIGNvbnRpbnVlZCBvdXIgYXBwcmVudGljZXMgZnJvbSB0aGUgMjAxNi8yMDE3IGZyb20gdGhlIG9sZCBmcmFtZXdvcmsgYW5kIGhhdmUgYWxzbyBzaWduZWQgdXAgYSBudW1iZXIgb2YgYXBwcmVudGljZXMgdW5kZXIgdGhlIG5ldyBhcnJhbmdlbWVudHMgaW4gYXJlYXMgc3VjaCBhcyBidXNpbmVzcyBhZG1pbmlzdHJhdGlvbiwgYXNzaXN0YW50IGFjY291bnRhbmN5LCBwcm9qZWN0IG1hbmFnZW1lbnQsIGZpcmUgdmVoaWNsZSBtYWludGVuYW5jZSBhbmQgdG93biBwbGFubmluZy4gQXMgdGhlIG5ldyBBcHByZW50aWNlc2hpcCBTdGFuZGFyZHMsd2hpY2ggYXJlIHN0aWxsIGluIGRldmVsb3BtZW50LCBiZWNvbWUgYXBwcm92ZWQsIHdlIGFyZSBjb25maWRlbnQgdGhhdCBtYW55IG1vcmUgc3RhZmYgYW5kIG5ldyBhcHByZW50aWNlcyB3aWxsIGJlIGFibGUgdG8gdGFrZSB1cCBmdXJ0aGVyIG9wcG9ydHVuaXRpZXMgb3ZlciB0aGUgY29taW5nIHllYXIuIFRoZXNlIHdpbGwgY29udHJpYnV0ZSB0byB0aGUgcHJvZmVzc2lvbmFsaXphdGlvbiBhbmQgdXBza2lsbGluZyBvZiBvdXIgd29ya2ZvcmNlIGVuYWJsaW5nIGFuZCBzdXBwb3J0aW5nIHRoZW0gdG8gY29udGludW91c2x5IGRldmVsb3AgYW5kIGltcHJvdmUgdGhlIGRlbGl2ZXJ5IG9mIGVmZmVjdGl2ZSBzZXJ2aWNlcyB0byBvdXIgbG9jYWwgY29tbXVuaXR5LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy83RjkyOUEzQS04NTEwLTQwM0QtOTIxNS0yMzdFMzU0RjU1RjRcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVW5kZXIgdGhlIG5ldyBhcHByZW50aWNlc2hpcCByZWZvcm1zIHRoZSBDb3VuY2ls4oCZcyB0YXJnZXQgZm9yIGFwcHJlbnRpY2VzIGhhcyBjaGFuZ2VkLiBBcyBhIHB1YmxpYyBzZWN0b3IgYm9keSB3ZSBhcmUgcmVxdWlyZWQgdG8gZGVsaXZlciBjaXJjYSAzNjAgYXBwcmVudGljZXMgcGVyIGFubnVtIGFjcm9zcyBvdXIgb3JnYW5pc2F0aW9uLlxcblxcbkNoYWxsZW5nZXMgYXNzb2NpYXRlZCB3aXRoIGJyaW5naW5nIGluIHRoZSBuZXcgYXJyYW5nZW1lbnRzIOKAkyBpbmNsdWRpbmcgc29tZSBvZiB0aGUga2V5IG5ldyBhcHByZW50aWNlc2hpcCBzdGFuZGFyZHMgbm90IHlldCBiZWluZyBhdmFpbGFibGUsIHRoZSBmdW5kaW5nIGNyaXNpcyBpbiBvdXIgc2Nob29scywgcHJvY3VyZW1lbnQgdGltZWxpbmVzIGFuZCB0aGUgbmVlZCBmb3IgbWFuYWdlcnMgdG8gcmVsZWFzZSB0aGVpciBhcHByZW50aWNlcyBmb3IgMjAlIG9mZiB0aGUgam9iIHRyYWluaW5nIG1lYW4gdGhhdCB3ZSBoYXZlIGEgd2F5IHRvIGdvIHRvIG1lZXQgb3VyIHRhcmdldCBidXQgd2UgYW50aWNpcGF0ZSBhIHJpc2UgaW4gdGhlIHVwdGFrZSBvZiB0cmFpbmluZyBvdmVyIHRoZSBjb3Vyc2Ugb2YgMjAxOC8yMDE5IGFzIG1vcmUgbmV3IFN0YW5kYXJkcyBhcmUgYXBwcm92ZWQgd2hpY2ggd2UgY2FuIGFjdGl2ZWx5IHVzZS5cXG5cXG5JbiBwcmVwYXJhdGlvbiBmb3IgdGhlc2UgZGV2ZWxvcG1lbnRzIHRoZSBMZWFybmluZyAmIERldmVsb3BtZW50IENvbW1pc3Npb25pbmcgdGVhbTpcXG5cXG4qIEhhdmUgbWV0IHdpdGggYWxsIERpcmVjdG9ycyB0byBicmllZiB0aGVtIGFuZCB0aGVpciBtYW5hZ2VycyBvZiB0aGUgb3Bwb3J0dW5pdGllcyB0aGF0IGFyZSBvciB3aWxsIGJlY29tZSBhdmFpbGFibGUgZm9yIHRoZWlyIGRpcmVjdG9yYXRlc1xcbiogSGF2ZSBpZGVudGlmaWVkIGFwcHJlbnRpY2VzaGlwIHRyYWluaW5nIG9wcG9ydHVuaXRpZXMgZm9yIGVhY2ggZGlyZWN0b3JhdGVcXG4qIEhhdmUgbWV0IHdpdGggYWxsIFNjaG9vbHMgYW5kIGEgbnVtYmVyIG9mIEJvYXJkcyBvZiBHb3Zlcm5vcnNcXG4qIElkZW50aWZpZWQgYXBwcm9wcmlhdGUgdHJhaW5pbmcgb3Bwb3J0dW5pdGllcyBmb3IgU2Nob29sc1xcbiogUHJvdmlkZWQgaW5mb3JtYXRpb24gdG8gZGlyZWN0b3JhdGUgSGUgQ29uc3VsdGFudHMgaW4gb3JkZXIgZm9yIHdvcmtmb3JjZSBwbGFubmluZyB0byB0YWtlIHBsYWNlIHRoYXQgZW5jb21wYXNzZXMgdGhlIHRha2UgdXAgb2YgYXBwcmVudGljZXNoaXAgdHJhaW5pbmdcXG4qIEFyZSB3b3JraW5nIHdpdGggQ29tbXVuaWNhdGlvbnMgJiBFbmdhZ2VtZW50IHRvIGRldmVsb3AgYSBwcm9tb3Rpb25hbCBjYW1wYWlnbiBmb3IgYWxsIHN0YWZmIGFuZCBtYW5hZ2VycyBzbyB0aGUgdHJhaW5pbmcgb2ZmZXIgcmVhY2hlcyBldmVyeW9uZS5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGlzIHF1YXJ0ZXJzIGZpZ3VyZXMgcGx1bW1ldGVkIGluIEp1bHkgYW5kIEF1Z3VzdCBhbmQgc3Vic2VxdWVudGx5IGdyZXcgaW4gU2VwdGVtYmVyIHRvIHRoZWlyIGhpZ2hlc3QgbGV2ZWwgZm9yIGFsbW9zdCBhIHllYXIuIFRoZXkgYXJlIHlldCB0byByaXNlIGZ1cnRoZXIgYXMgdGhlIHllYXIgcHJvZ3Jlc3NlcyBhbmQgaXQgaXMgZXh0cmVtZWx5IGxpa2VseSB0aGlzIG1lYXN1cmUgd2lsbCBiZSBtZXQgdGhyb3VnaG91dCB0aGUgeWVhci4gVGhlIENvdW50eSBDb3VuY2lsIGhhcyBiZWVuIHByb2N1cmluZyBBcHByZW50aWNlc2hpcCBUcmFpbmluZyBwcm92aWRlcnMgaW4gb3JkZXIgdG8gc3BlbmQgaXRzIG5ldyBBcHByZW50aWNlc2hpcCBMZXZ5IGZ1bmQgZm9yIEFwcHJlbnRpY2VzaGlwIHRyYWluaW5nIGFuZCB0aGlzIG5ldyB3YXkgb2YgaW52ZXN0bWVudCBpcyBoYXZpbmcgYSBwb3NpdGl2ZSBpbXBhY3Qgb24gb3VyIHRha2UgdXAgb2YgYXBwcmVudGljZXNoaXBzLiBUaGUgZnVuZCBjYW4gYmUgdXNlZCB0byBwYXkgZm9yIGFwcHJlbnRpY2VzaGlwIHRyYWluaW5nIGZvciBleGlzdGluZyBlbXBsb3llZXMgd2hpY2ggc2hvdWxkIHNlZSBhIHJpc2UgaW4gdGhlIG51bWJlciBvZiBleGlzdGluZyBlbXBsb3llZXMgaW4gYm90aCBjb3VuY2lsIGFuZCBzY2hvb2wgc2VydmljZXMgd2hvIHN0dWR5IGEgcHJvZmVzc2lvbmFsIHF1YWxpZmljYXRpb24gdXNpbmcgdGhpcyByb3V0ZS4gTW9yZSBhcHByZW50aWNlc2hpcCB0cmFpbmluZyBwYXRod2F5cyBhcmUgYmVpbmcgZGV2ZWxvcGVkIGFuZCBiZWNvbWluZyBhdmFpbGFibGUgdG8gZW1wbG95ZXJzIHdoaWNoIHdpbGwgYWxzbyBoZWxwIHVzIHRvIGdyb3cgb3VyIGFwcHJlbnRpY2VzaGlwIG9mZmVyIGluIGJvdGggc2Nob29scyBhbmQgY29ycG9yYXRlLiBBbiBPZmZpY2VyIGhhcyBiZWVuIGRlc2lnbmF0ZWQgdG8gd29yayB3aXRoIHNjaG9vbHMgZm9yIGEgeWVhciB0byBlbmNvdXJhZ2UgdGhlaXIgZW5nYWdlbWVudCB3aXRoIGFwcHJlbnRpY2VzaGlwcyB3aGljaCBhaW1zIHRvIHNlZSBhbiBpbmNyZWFzZSBpbiB0aGUgbnVtYmVyIG9mIEFwcHJlbnRpY2VzIHdvcmtpbmcgZm9yIHRoZW0uXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAxIC0gSnVuZSAyMDE3KipcXG5cXG4tIC0gLVxcblxcbihUaGUgY291bnR5IGZpZ3VyZXMsIG5hdGlvbmFsIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnQgcXVhcnRlciBidXQgd2lsbCBiZSBhdmFpbGFibGUgaW4gU2VwdGVtYmVyIC0gcXVhcnRlciAyKVxcblxcblRoZSBjb3VudHkgY291bmNpbOKAmXMgQXBwcmVudGljZXNoaXAgbnVtYmVycyBoYXZlIHJlbWFpbmVkIHN0ZWFkeSBmb3IgdGhpcyBxdWFydGVyIGFuZCBhcmUgYXMgd2UgZXhwZWN0ZWQgd2l0aCBsaXR0bGUgY2hhbmdlLyBncm93dGguIFRoZSBDb3VudHkgQ291bmNpbCBoYXMgYmVlbiBmb2N1c2VkIG9uIGl0cyBwcmVwYXJhdGlvbiBmb3IgdGhlIGFwcHJlbnRpY2VzaGlwIGxldnkgZ28gbGl2ZS4gVGhlc2UgcHJlcGFyYXRpb25zIGluY2x1ZGUgdGhlIHNldC11cCBvZiBhIG5ldyBwcm9jdXJlbWVudCBzeXN0ZW0gZm9yIGFwcHJlbnRpY2VzaGlwIHRyYWluaW5nIGFuZCBhIG5ldyBzdGFmZiBzdHJ1Y3R1cmUgdG8gc3VwcG9ydCBhcHByZW50aWNlc2hpcHMgaW50byB0aGUgZnV0dXJlLiBUaGUgc3RydWN0dXJlIHRoaXMgaW5jbHVkZSBhIHJvbGUgZGVkaWNhdGVkIHRvIHN1cHBvcnRpbmcgc2Nob29scyBpbiB0aGUgY291bnR5IGFzIHRoZSBhcmVhIHdobyBlbXBsb3kgdGhlIGxhcmdlc3QgcGVyY2VudGFnZSBvZiBvdXIgd29ya2ZvcmNlLiBUaGUgbmV3IHByb2N1cmVtZW50IHN5c3RlbSB3ZW50IGxpdmUgYXQgdGhlIGVuZCBvZiBKdW5lIGFuZCB3ZSBoYXZlIHN0YXJ0ZWQgdG8gc3VibWl0IHRlbmRlcnMgZm9yIGFwcHJlbnRpY2VzaGlwIHRyYWluaW5nIHByb3ZpZGVycyB0byBkZWxpdmVyIHRoZSBxdWFsaWZpY2F0aW9ucyB3ZSByZXF1aXJlLiBXZSB3aWxsIGJyaW5nIG5ld3Mgb24gdGhlIHJlc3VsdHMgb2YgdGhpcyBleGVyY2lzZSBpbiB0aGUgbmV4dCBxdWFydGVyIHdoZW4gaXQgaXMgaG9wZWQgb3VyIEFwcHJlbnRpY2UgbnVtYmVycyBhcmUgc3RhcnRpbmcgdG8gaW5jcmVhc2UuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqTm92ZW1iZXIgMjAxNioqXFxuXFxuX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19cXG5cXG5BcHByZW50aWNlc2hpcCBzdGFydHMgaW4gdGhlIGNvdW50eSBoYXMgaW5jcmVhc2VkIHRoaXMgeWVhciBhbmQgbm93IGV4Y2VlZCB0aGUgcGVhayBvZiAyMDEyLzEzIHdoZW4gd2UgYWNoaWV2ZWQgNSw2MTAgc3RhcnRzLiBUaGUgZm9sbG93aW5nIHR3byB5ZWFycyB3ZXJlIHdlbGwgYmVsb3cgdGhpcyBsZXZlbC4gQ2hpY2hlc3RlciBEaXN0cmljdCBDb3VuY2lsIGhhcyBoYWQgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgaW5jcmVhc2UgaW4gc3RhcnRzIGFuZCB1cCBzb21lIDE2LjUlIG9uIGxhc3QgeWVhci4gV29ydGhpbmcgaGFzIHNlZW4gYSBzaWduaWZpY2FudCBkZWNyZWFzZSB3aXRoIDUwIHN0YXJ0cyBsZXNzIHRoYW4gdGhleSBhY2hpZXZlZCBpbiAyMDE0LzE1LiBXZSBoYXZlIHNwb2tlbiB3aXRoIHRoZSBEaXN0cmljdCBDb3VuY2lsIHNvIHRoZXkgYXJlIGF3YXJlIG9mIHRoaXMgYW5kIGNvbnNpZGVyaW5nIHdheXMgb2YgaW5mbHVlbmNpbmcgdGhpcyBwYXR0ZXJuIGluIHRoZSBmdXR1cmUuXFxuXFxuVGhlIEFwcHJlbnRpY2VzaGlwIGxldnkgd2lsbCBiZSBsaXZlIGZyb20gTWF5IDIwMTcgcHJvdmlkaW5nIGEgbmV3IHN5c3RlbSBhbmQgd2F5cyBvZiBlbXBsb3llcnMgYW5kIGxlYXJuaW5nIHByb3ZpZGVycyBhY2Nlc3NpbmcgZnVuZGluZyBmb3IgdGhlaXIgQXBwcmVudGljZXNoaXAgdHJhaW5pbmcuIFRoaXMgbWF5IG1lYW4gdW5jZXJ0YWludHkgYXMgZW1wbG95ZXJzIGxlYXJuIGFuZCBhZGFwdCB0byB0aGUgbmV3IHN5c3RlbSB3aGljaCBtYXkgaW1wYWN0IG9uIHRoZSBzdGFydCBudW1iZXJzIG5leHQgeWVhci4gSG93ZXZlciB0aGUgbG9uZ2VyIHRlcm0gaW50ZW50aW9uIGlzIHRvIGluY3JlYXNlIHRoZSBudW1iZXIgb2YgQXBwcmVudGljZXMgaW4gdGhlIGNvdW50eSBhbmQgdGhlIENvdW50eSBDb3VuY2lsIGFuZCBvdXIgRGlzdHJpY3QgYW5kIEJvcm91Z2ggcGFydG5lcnMgd2lsbCBiZSBtaW5kZnVsIG9mIGhvdyB3ZSBjb3VsZCBzdXBwb3J0IGFuZCBjb21tdW5pY2F0ZSB3aXRoIGVtcGxveWVycyB0byBoZWxwIGVuY291cmFnZSB0aGVpciBlbmdhZ2VtZW50LlxcblxcblwifV0sXCJ1c2VfY3VzdG9tX3RpdGxlXCI6dHJ1ZSxcImN1c3RvbV90aXRsZVwiOlwiSW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mIGFwcHJlbnRpY2VzaGlwcyBpbiBXZXN0IFN1c3NleFwiLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOnRydWUsXCJjdXN0b21fc3VidGl0bGVcIjpcIldlIGFpbSB0byBpbXByb3ZlIHRoZSBudW1iZXIgb2YgdGhlIEFwcHJlbnRpY2VzaGlwcyBpbiBXZXN0IFN1c3NleCBieSA1JSBvciBtb3JlLCB5ZWFyIG9uIHllYXIuXCIsXCJ0aXRsZV9pbWFnZVwiOlwiL2FwaS9hc3NldHMvOUU2RDZCN0EtQkM2Qi00NDRGLUIyRkYtRjE4NjkwNDcxNEQyXCJ9In0sInByZXZhaWxpbmdfbWVhc3VyZSI6eyJzdGFydCI6IjIwMDYtMDQtMDFUMDA6MDA6MDAuMDAwIiwiZW5kIjoiMjAxOC0wMy0zMVQyMzo1OTo1OS4wMDAiLCJ1bml0IjoiYXBwcmVudGljZXMiLCJ0YXJnZXRfdHlwZSI6InJlbGF0aXZlIiwidGFyZ2V0X2RlbHRhIjowLCJ0YXJnZXRfZGVsdGFfaXNfcGVyY2VudCI6ZmFsc2UsImJhc2VsaW5lIjo2MDgwLCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6IjJwOGstNnA4NSJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI+In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MyxcInllYXJcIjoyMDA2fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcIm1haW50YWluXCIsXCJtYWludGFpbl90eXBlXCI6XCI+XCJ9LFwiYmFzZWxpbmVcIjp7XCJzcXVpc2h5XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE0fSxcImVuZFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9fSxcInN0YXJ0XCI6XCIyMDE0LTAxLTAxVDAwOjAwOjAwLjAwMFwiLFwiZW5kXCI6XCIyMDE0LTAxLTAxVDIzOjU5OjU5LjAwMFwiLFwibWV0cmljXCI6e1wibWV0YWRhdGFcIjpcIntcXFwid2l6YXJkXFxcIjp7XFxcImZpbHRlcl9hc3RcXFwiOlt7XFxcInZhbHVlc1xcXCI6W3t9XX1dfX1cIn19LFwibmFtZVwiOlwidGhlIG51bWJlciBvZiBhcHByZW50aWNlcyBpbiBXZXN0IFN1c3NleFwiLFwidXNlX3Byb2dyZXNzX292ZXJyaWRlXCI6ZmFsc2UsXCJwcm9ncmVzc19vdmVycmlkZVwiOlwiZ29vZFwifSJ9LCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTowNDoyMi4xODNaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6MDQ6MjIuMTgzWiIsInRhcmdldF90b2xlcmFuY2UiOjI5MCwiaWQiOiJ2NzluLXE2a3oifSwicmVsYXRlZF9tZWFzdXJlcyI6W3sibWV0YWRhdGEiOiIiLCJpZCI6InJ6aHktZGtiNCJ9XSwiYmFzZV9kYXNoYm9hcmQiOiI1NzRyLWg1bmMiLCJ1cGRhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTozOTo1My4zMDFaIiwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MDQ6MjIuMjM5WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA5OjM5OjUzLjMwMVoiLCJjcmVhdGVkX2J5IjoiNzk3aS02cjlnIn0seyJpZCI6InNpZmotbnBtNSIsIm5hbWUiOiJVbmVtcGxveW1lbnQgcmF0ZSBwZW9wbGUgYWdlZCA1MC02NCIsImlzX3B1YmxpYyI6dHJ1ZSwibWV0YWRhdGEiOnsibWV0YWRhdGEiOiJ7XCJvcHRpb25zXCI6e1wicGFyZW50XCI6e1wib3B0aW9uc1wiOntcInBhcmVudFwiOntcIm9wdGlvbnNcIjp7XCJwYXJlbnRcIjp7XCJfZXZlbnRzXCI6e1wibWF4TGlzdGVuZXJzXCI6MH0sXCJuZXdMaXN0ZW5lclwiOmZhbHNlLFwiX2NvbmZcIjp7XCJkZWxpbWl0ZXJcIjpcIjpcIixcIm1heExpc3RlbmVyc1wiOjB9LFwiZGVsaW1pdGVyXCI6XCI6XCIsXCJfb3V0d2FyZExpc3RlbmVyc1wiOltdLFwiX2lkXCI6MTE2NCxcImxpc3RcIjpbXX19LFwiX2V2ZW50c1wiOntcIm1heExpc3RlbmVyc1wiOjB9LFwibmV3TGlzdGVuZXJcIjpmYWxzZSxcIl9jb25mXCI6e1wiZGVsaW1pdGVyXCI6XCI6XCIsXCJtYXhMaXN0ZW5lcnNcIjowfSxcImRlbGltaXRlclwiOlwiOlwiLFwiX291dHdhcmRMaXN0ZW5lcnNcIjpbXSxcIl9pZFwiOjMyOTIyLFwiX3BhcmVudFwiOntcIl9ldmVudHNcIjp7XCJtYXhMaXN0ZW5lcnNcIjowfSxcIm5ld0xpc3RlbmVyXCI6ZmFsc2UsXCJfY29uZlwiOntcImRlbGltaXRlclwiOlwiOlwiLFwibWF4TGlzdGVuZXJzXCI6MH0sXCJkZWxpbWl0ZXJcIjpcIjpcIixcIl9vdXR3YXJkTGlzdGVuZXJzXCI6W10sXCJfaWRcIjoxMTY0LFwibGlzdFwiOltdfSxcImxpc3RcIjpbXX19LFwiX2V2ZW50c1wiOntcIm1heExpc3RlbmVyc1wiOjB9LFwibmV3TGlzdGVuZXJcIjpmYWxzZSxcIl9jb25mXCI6e1wiZGVsaW1pdGVyXCI6XCI6XCIsXCJtYXhMaXN0ZW5lcnNcIjowfSxcImRlbGltaXRlclwiOlwiOlwiLFwiX291dHdhcmRMaXN0ZW5lcnNcIjpbXSxcIl9pZFwiOjMyOTM4LFwiX3BhcmVudFwiOntcIm9wdGlvbnNcIjp7XCJwYXJlbnRcIjp7XCJfZXZlbnRzXCI6e1wibWF4TGlzdGVuZXJzXCI6MH0sXCJuZXdMaXN0ZW5lclwiOmZhbHNlLFwiX2NvbmZcIjp7XCJkZWxpbWl0ZXJcIjpcIjpcIixcIm1heExpc3RlbmVyc1wiOjB9LFwiZGVsaW1pdGVyXCI6XCI6XCIsXCJfb3V0d2FyZExpc3RlbmVyc1wiOltdLFwiX2lkXCI6MTE2NCxcImxpc3RcIjpbXX19LFwiX2V2ZW50c1wiOntcIm1heExpc3RlbmVyc1wiOjB9LFwibmV3TGlzdGVuZXJcIjpmYWxzZSxcIl9jb25mXCI6e1wiZGVsaW1pdGVyXCI6XCI6XCIsXCJtYXhMaXN0ZW5lcnNcIjowfSxcImRlbGltaXRlclwiOlwiOlwiLFwiX291dHdhcmRMaXN0ZW5lcnNcIjpbXSxcIl9pZFwiOjMyOTIyLFwiX3BhcmVudFwiOntcIl9ldmVudHNcIjp7XCJtYXhMaXN0ZW5lcnNcIjowfSxcIm5ld0xpc3RlbmVyXCI6ZmFsc2UsXCJfY29uZlwiOntcImRlbGltaXRlclwiOlwiOlwiLFwibWF4TGlzdGVuZXJzXCI6MH0sXCJkZWxpbWl0ZXJcIjpcIjpcIixcIl9vdXR3YXJkTGlzdGVuZXJzXCI6W10sXCJfaWRcIjoxMTY0LFwibGlzdFwiOltdfSxcImxpc3RcIjpbXX0sXCJsaXN0XCI6W119fSxcIl9ldmVudHNcIjp7XCJtYXhMaXN0ZW5lcnNcIjowfSxcIm5ld0xpc3RlbmVyXCI6ZmFsc2UsXCJfY29uZlwiOntcImRlbGltaXRlclwiOlwiOlwiLFwibWF4TGlzdGVuZXJzXCI6MH0sXCJkZWxpbWl0ZXJcIjpcIjpcIixcIl9vdXR3YXJkTGlzdGVuZXJzXCI6W10sXCJfaWRcIjozMjkzOSxcIl9wYXJlbnRcIjp7XCJvcHRpb25zXCI6e1wicGFyZW50XCI6e1wib3B0aW9uc1wiOntcInBhcmVudFwiOntcIl9ldmVudHNcIjp7XCJtYXhMaXN0ZW5lcnNcIjowfSxcIm5ld0xpc3RlbmVyXCI6ZmFsc2UsXCJfY29uZlwiOntcImRlbGltaXRlclwiOlwiOlwiLFwibWF4TGlzdGVuZXJzXCI6MH0sXCJkZWxpbWl0ZXJcIjpcIjpcIixcIl9vdXR3YXJkTGlzdGVuZXJzXCI6W10sXCJfaWRcIjoxMTY0LFwibGlzdFwiOltdfX0sXCJfZXZlbnRzXCI6e1wibWF4TGlzdGVuZXJzXCI6MH0sXCJuZXdMaXN0ZW5lclwiOmZhbHNlLFwiX2NvbmZcIjp7XCJkZWxpbWl0ZXJcIjpcIjpcIixcIm1heExpc3RlbmVyc1wiOjB9LFwiZGVsaW1pdGVyXCI6XCI6XCIsXCJfb3V0d2FyZExpc3RlbmVyc1wiOltdLFwiX2lkXCI6MzI5MjIsXCJfcGFyZW50XCI6e1wiX2V2ZW50c1wiOntcIm1heExpc3RlbmVyc1wiOjB9LFwibmV3TGlzdGVuZXJcIjpmYWxzZSxcIl9jb25mXCI6e1wiZGVsaW1pdGVyXCI6XCI6XCIsXCJtYXhMaXN0ZW5lcnNcIjowfSxcImRlbGltaXRlclwiOlwiOlwiLFwiX291dHdhcmRMaXN0ZW5lcnNcIjpbXSxcIl9pZFwiOjExNjQsXCJsaXN0XCI6W119LFwibGlzdFwiOltdfX0sXCJfZXZlbnRzXCI6e1wibWF4TGlzdGVuZXJzXCI6MH0sXCJuZXdMaXN0ZW5lclwiOmZhbHNlLFwiX2NvbmZcIjp7XCJkZWxpbWl0ZXJcIjpcIjpcIixcIm1heExpc3RlbmVyc1wiOjB9LFwiZGVsaW1pdGVyXCI6XCI6XCIsXCJfb3V0d2FyZExpc3RlbmVyc1wiOltdLFwiX2lkXCI6MzI5MzgsXCJfcGFyZW50XCI6e1wib3B0aW9uc1wiOntcInBhcmVudFwiOntcIl9ldmVudHNcIjp7XCJtYXhMaXN0ZW5lcnNcIjowfSxcIm5ld0xpc3RlbmVyXCI6ZmFsc2UsXCJfY29uZlwiOntcImRlbGltaXRlclwiOlwiOlwiLFwibWF4TGlzdGVuZXJzXCI6MH0sXCJkZWxpbWl0ZXJcIjpcIjpcIixcIl9vdXR3YXJkTGlzdGVuZXJzXCI6W10sXCJfaWRcIjoxMTY0LFwibGlzdFwiOltdfX0sXCJfZXZlbnRzXCI6e1wibWF4TGlzdGVuZXJzXCI6MH0sXCJuZXdMaXN0ZW5lclwiOmZhbHNlLFwiX2NvbmZcIjp7XCJkZWxpbWl0ZXJcIjpcIjpcIixcIm1heExpc3RlbmVyc1wiOjB9LFwiZGVsaW1pdGVyXCI6XCI6XCIsXCJfb3V0d2FyZExpc3RlbmVyc1wiOltdLFwiX2lkXCI6MzI5MjIsXCJfcGFyZW50XCI6e1wiX2V2ZW50c1wiOntcIm1heExpc3RlbmVyc1wiOjB9LFwibmV3TGlzdGVuZXJcIjpmYWxzZSxcIl9jb25mXCI6e1wiZGVsaW1pdGVyXCI6XCI6XCIsXCJtYXhMaXN0ZW5lcnNcIjowfSxcImRlbGltaXRlclwiOlwiOlwiLFwiX291dHdhcmRMaXN0ZW5lcnNcIjpbXSxcIl9pZFwiOjExNjQsXCJsaXN0XCI6W119LFwibGlzdFwiOltdfSxcImxpc3RcIjpbXX0sXCJsaXN0XCI6W10sXCJyZXRpcmVtZW50X25hcnJhdGl2ZVwiOltdLFwibmFycmF0aXZlXCI6W3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoaXMgZ29hbCBpcyB0cmFja2VkIGJ5IG1lYXN1cmluZyB0aGUgJSBvZiBwZW9wbGUgYWdlZCA1MC02NCBjbGFpbWluZyBKb2JzZWVrZXJzIEFsbG93YW5jZSBhcyBhIHByb3BvcnRpb24gb2YgdGhlIHJlc2lkZW50IHBvcHVsYXRpb24gb2YgdGhlIHNhbWUgYWdlLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkZlYnJ1YXJ5IDIwMTggVXBkYXRlKipcXG5cXG4tIC0gLVxcblxcbkxhdGVzdCBmaWd1cmVzIGZvciA1MC02NCBjbGFpbWluZyBKb2JzZWVrZXIncyBBbGxvd2FuY2VcXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvNEFCQzE5MzYtMEQ0Ni00MUM3LUEwMzYtMjg0RjE3MzE0NjE1XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqUXVhcnRlciAzIOKAkyBKYW51YXJ5IDIwMTgqKlxcblxcblRoZSB1bmVtcGxveW1lbnQgcmF0ZSBpcyBnZW5lcmFsbHkgY2FsY3VsYXRlZCBieSB0YWtpbmcgdGhlIG51bWJlciBvZiBwZW9wbGUgd2hvIGFyZSB1bmVtcGxveWVkIGFuZCBhcmUgbG9va2luZyBmb3IgYSBwYWlkIGpvYiBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGVjb25vbWljYWxseSBhY3RpdmUgcG9wdWxhdGlvbiBpLmUuIHRoZSBwb3B1bGF0aW9uIHdobyBhcmUgZWl0aGVyIGVtcGxveWVkIG9yIHVuZW1wbG95ZWQgYW5kIGxvb2tpbmcgZm9yIHdvcmsuXFxuXFxuVGhlcmUgYXJlIHR3byBtZWFzdXJlcyBvZiB1bmVtcGxveW1lbnQuXFxuXFxuVGhlIGZpcnN0IGlzIHRoZeKAmG9mZmljaWFs4oCZIGVzdGltYXRlIHVzaW5nIHRoZSBJbnRlcm5hdGlvbmFsIExhYm91ciBPcmdhbmlzYXRpb24gKElMTykgZGVmaW5pdGlvbiB3aGljaCBjb25mb3JtcyB0byB0aGUgaW50ZXJuYXRpb25hbCBkZWZpbml0aW9uIG9mIHVuZW1wbG95bWVudCwgdGhlIG1lYXN1cmUgaXMgYmFzZWQgb24gYSBxdWFydGVybHkgc2FtcGxlIHN1cnZleSBvZiBob3VzZWhvbGRzIHVuZGVydGFrZW4gYnkgT05TIGFzIHBhcnQgb2YgdGhlIEFubnVhbCBQb3B1bGF0aW9uIFN1cnZleSAoQVBTKS4gVGhlIHVuZW1wbG95bWVudCByYXRlcyBmcm9tIHRoZSBBUFMgaG93ZXZlciBhcmUgbm90IGJyb2tlbiBkb3duIGJ5IGFnZSBiYW5kcy5cXG5cXG5UaGUgc2Vjb25kIG1lYXN1cmUsIHRoZSBjbGFpbWFudCBjb3VudCwgdGVuZHMgdG8gYmUgYSBsb3dlciBtZWFzdXJlIG9mIHRoZSB0d28gYmVjYXVzZSBzb21lIHVuZW1wbG95ZWQgYXJlIG5vdCBlbnRpdGxlZCB0byBjbGFpbSBiZW5lZml0cyBvZiBhbnkgc29ydCBvciBjaG9vc2Ugbm90IHRvIGRvIHNvLiBJdCBpcyBzZWVuIGJ5IHNvbWUgYXMgbW9yZSBvZiBhIHdlbGZhcmUgY291bnQgYW5kIG5vdCBzdHJpY3RseSBhbiB1bmVtcGxveW1lbnQgY291bnQuIFRoZSBkYXRhIGlzIHB1Ymxpc2hlZCBtb250aGx5IGFuZCBpcyBpbmRpY2F0aXZlIG9mIHJlbGF0aXZlIHVuZW1wbG95bWVudCBsZXZlbHMgaW4gdGhlIGxvY2FsIGFyZWEuXFxuXFxuSG93ZXZlciwgdGhlIGNsYWltYW50IGNvdW50IGhhcyB1bmRlcmdvbmUgc3Vic3RhbnRpYWwgY2hhbmdlIG92ZXIgcmVjZW50IHllYXJzLiBJbiAyMDEzIFVuaXZlcnNhbCBDcmVkaXQgd2FzIGludHJvZHVjZWQgYW5kIHJvbGxlZCBvdXQgb3ZlciBhIHBlcmlvZCBvZiB5ZWFycyBhbmQgd2FzIGltcGxlbWVudGVkIGluIFdlc3QgU3Vzc2V4IGR1cmluZyAyMDE1LiBVbml2ZXJzYWwgQ3JlZGl0IGlzIGEgc2luZ2xlIG1vbnRobHkgcGF5bWVudCBmb3IgcGVvcGxlIGluIG9yIG91dCBvZiB3b3JrLCB3aGljaCBtZXJnZXMgdG9nZXRoZXIgc29tZSBvZiB0aGUgZXhpc3RpbmcgbWVhbnMtdGVzdGVkIGJlbmVmaXRzIGFuZCB0YXggY3JlZGl0cyBpbmNsdWRpbmcgSW5jb21lLWJhc2VkIEpvYnNlZWtlcidzIEFsbG93YW5jZSBhbmQgaW5jb21lLXJlbGF0ZWQgRW1wbG95bWVudCBhbmQgU3VwcG9ydCBBbGxvd2FuY2UuXFxuXFxuVGhlcmUgaXMgYW4gZXhwZXJpbWVudGFsIGRhdGEgc2VyaWVzIGdpdmluZyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcidzIEFsbG93YW5jZSBwbHVzIHRob3NlIHdobyBjbGFpbSBVbml2ZXJzYWwgQ3JlZGl0IGJlY2F1c2UgdGhleSBhcmUgb3V0IG9mIHdvcmssIGl0IHJlcGxhY2VzIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcidzIEFsbG93YW5jZSBhcyB0aGUgaGVhZGxpbmUgaW5kaWNhdG9yIG9mIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIGJlbmVmaXRzIHByaW5jaXBhbGx5IGZvciB0aGUgcmVhc29uIG9mIGJlaW5nIHVuZW1wbG95ZWQuIEhvd2V2ZXIsIHRoZSByYXRlcyBhcmUgbm90IGJyb2tlbiBkb3duIGludG8gZGlmZmVyZW50IGFnZSBncm91cHMuXFxuXFxuVGhlIGNvdW50IG9mIHBlb3BsZSBjbGFpbWluZyBKb2JzZWVrZXJzIEFsbG93YW5jZSBpcyBzdGlsbCBhdmFpbGFibGUgYnkgYWdlIG9mIGNsYWltYW50IGFuZCBkdXJhdGlvbiBvZiBjbGFpbWluZy4gTG9va2luZyBhdCB0aGUgbnVtYmVycyBob3dldmVyLCBpdCBkb2VzIGFwcGVhciB0aGF0IHRoZSBudW1iZXJzIG9mIHBlcnNvbnMgYWdlZCAxNisgYXMgd2VsbCBhcyB0aG9zZSBwZW9wbGUgd2l0aGluIHRoZSA1MC02NCBhZ2UgYnJhY2tldCBjbGFpbWluZyBlaXRoZXIgdW5pdmVyc2FsIGNyZWRpdCBvciBKb2IgU2Vla2VyIEFsbG93YW5jZSBoYXMgaW5jcmVhc2VkIG92ZXIgdGhlIHllYXIgTm92ZW1iZXIgMjAxNy1Ob3YgMjAxNi5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvRDFEQkI1NDUtMEU3MC00ODA2LUFFRjQtNzA3NkEwRTRDQjY2XCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoZSB0YWJsZSBiZWxvdyBzaG93cyB0aGUgbnVtYmVyIG9mIDUwLTY0IHllYXIgb2xkcyB3aG8gd2VyZSBjbGFpbWluZyBvbmx5IEpTQSB1cCB0byBOb3ZlbWJlciAyMDE3LCBhbmQgdGhlIHJhdGUgaS5lLiB0aGUgbnVtYmVyIG9mIHRob3NlIGNsYWltaW5nIGFzIGEgcGVyY2VudGFnZSBvZiA1MC02NCBhZ2VkIHJlc2lkZW50cy5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvN0E2RjdFODgtOUNFRi00NEU3LUJGRjgtQTg0MkQ4RjA4ODcwXCJ9LHtcInR5cGVcIjpcInRleHRcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDIgLSBTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgdW5lbXBsb3ltZW50IHJhdGUgaXMgZ2VuZXJhbGx5IGNhbGN1bGF0ZWQgYXMgYSBwcm9wb3J0aW9uIG9mIHRoZSBlY29ub21pY2FsbHkgYWN0aXZlIHBvcHVsYXRpb24gaS5lLiB0aGUgcG9wdWxhdGlvbiB3aG8gYXJlIGVpdGhlciBlbXBsb3llZCBvciB1bmVtcGxveWVkIChpLmUgdGhvc2Ugd2hvIGFyZSBvdXQgb2Ygd29yayBidXQgYWN0aXZlbHkgc2Vla2luZyBhbmQgYXZhaWxhYmxlIHRvIHdvcmsg4oCTIGl0IGRvZXMgbm90IGluY2x1ZGUgcmV0aXJlZCkuXFxuXFxuVGhlcmUgYXJlIHR3byBtZWFzdXJlcyBvZiB1bmVtcGxveW1lbnQuXFxuXFxuVGhlIGZpcnN0IGlzIHRoZeKAmCBvZmZpY2lhbOKAmSBlc3RpbWF0ZSB1c2luZyB0aGUgSW50ZXJuYXRpb25hbCBMYWJvdXIgT3JnYW5pc2F0aW9uIChJTE8pIGRlZmluaXRpb24gd2hpY2ggY29uZm9ybXMgdG8gdGhlIGludGVybmF0aW9uYWwgZGVmaW5pdGlvbiBvZiB1bmVtcGxveW1lbnQsIHRoZSBtZWFzdXJlIGlzIGJhc2VkIG9uIGEgcXVhcnRlcmx5IHNhbXBsZSBzdXJ2ZXkgb2YgaG91c2Vob2xkcyB1bmRlcnRha2VuIGJ5IE9OUyBhcyBwYXJ0IG9mIHRoZSBBbm51YWwgUG9wdWxhdGlvbiBTdXJ2ZXkgKEFQUykuIFRoZSBsYXRlc3QgZmlndXJlcyBoYXZlIGJlZW4gcmVwb3J0ZWQgaW4gdGhlIHByZXZpb3VzIHF1YXJ0ZXIsIHRob3VnaCBhcmUgbm90IGJyb2tlbiBkb3duIGJ5IGFnZSBiYW5kcy5cXG5cXG5UaGUgc2Vjb25kIG1lYXN1cmUsIHRoZSBjbGFpbWFudCBjb3VudCwgdGVuZHMgdG8gYmUgYSBsb3dlciBtZWFzdXJlIG9mIHRoZSB0d28gYmVjYXVzZSBzb21lIHVuZW1wbG95ZWQgYXJlIG5vdCBlbnRpdGxlZCB0byBjbGFpbSBiZW5lZml0cyBvZiBhbnkgc29ydCBvciBjaG9vc2Ugbm90IHRvIGRvIHNvLiBJdCBpcyBzZWVuIGJ5IHNvbWUgYXMgbW9yZSBvZiBhIHdlbGZhcmUgY291bnQgYW5kIG5vdCBzdHJpY3RseSBhbiB1bmVtcGxveW1lbnQgY291bnQuXFxuXFxuVGhlIGRhdGEgaXMgcHVibGlzaGVkIG1vbnRobHkgYW5kIGlzIGluZGljYXRpdmUgb2YgcmVsYXRpdmUgdW5lbXBsb3ltZW50IGxldmVscyBpbiB0aGUgbG9jYWwgYXJlYS4gVGhlIGNsYWltYW50IGNvdW50IGhhcyB1bmRlcmdvbmUgc3Vic3RhbnRpYWwgY2hhbmdlIG92ZXIgcmVjZW50IHllYXJzLiBJbiAyMDEzIFVuaXZlcnNhbCBDcmVkaXQgd2FzIGludHJvZHVjZWQgYW5kIHJvbGxlZCBvdXQgb3ZlciBhIHBlcmlvZCBvZiB5ZWFycyBhbmQgd2FzIGltcGxlbWVudGVkIGluIFdlc3QgU3Vzc2V4IGR1cmluZyAyMDE1LiBVbml2ZXJzYWwgQ3JlZGl0IGlzIGEgc2luZ2xlIG1vbnRobHkgcGF5bWVudCBmb3IgcGVvcGxlIGluIG9yIG91dCBvZiB3b3JrLCB3aGljaCBtZXJnZXMgdG9nZXRoZXIgc29tZSBvZiB0aGUgZXhpc3RpbmcgbWVhbnMtdGVzdGVkIGJlbmVmaXRzIGFuZCB0YXggY3JlZGl0cyBpbmNsdWRpbmcgSW5jb21lLWJhc2VkIEpvYnNlZWtlcidzIEFsbG93YW5jZSBhbmQgaW5jb21lLXJlbGF0ZWQgRW1wbG95bWVudCBhbmQgU3VwcG9ydCBBbGxvd2FuY2UuXFxuXFxuVGhlcmUgaXMgYW4gZXhwZXJpbWVudGFsIGRhdGEgc2VyaWVzIGdpdmluZyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcidzIEFsbG93YW5jZSBwbHVzIHRob3NlIHdobyBjbGFpbSBVbml2ZXJzYWwgQ3JlZGl0IGJlY2F1c2UgdGhleSBhcmUgb3V0IG9mIHdvcmssIGl0IHJlcGxhY2VzIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcidzIEFsbG93YW5jZSBhcyB0aGUgaGVhZGxpbmUgaW5kaWNhdG9yIG9mIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIGJlbmVmaXRzIHByaW5jaXBhbGx5IGZvciB0aGUgcmVhc29uIG9mIGJlaW5nIHVuZW1wbG95ZWQuIFRoZSB0b3RhbCBudW1iZXJzIG9mIGNsYWltYW50cyBhbmQgcmF0ZXMgYXMgYSBwcm9wb3J0aW9uIG9mIHJlc2lkZW50cyBhZ2VkIDE2LTY0IGFyZSBpbiB0aGUgdGFibGUgYmVsb3c6XFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzI0MkVEMjk1LUFBRjktNEFENi1BMTE1LTkyMTA0ODBDNDE2NlwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRoaXMgZGF0YSBzZXQgaG93ZXZlciwgZG9lcyBub3QgZ2l2ZSBhbiB1bmVtcGxveW1lbnQgcmF0ZSBieSBhZ2UgYnJlYWtkb3duLiBUaGUgY291bnQgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcnMgQWxsb3dhbmNlIGlzIHN0aWxsIGF2YWlsYWJsZSBieSBhZ2Ugb2YgY2xhaW1hbnQgYW5kIGR1cmF0aW9uIG9mIGNsYWltaW5nLlxcblxcbiBcXG5cXG5UaGUgdGFibGUgb24gdGhlIHJpZ2h0IHNob3dzIHRoZSBudW1iZXIgb2YgNTAtNjQgeWVhciBvbGRzIHdobyB3ZXJlIGNsYWltaW5nIEpTQSBpbiBBdWd1c3QgMjAxNywgYW5kIHRoZSByYXRlIGkuZS4gdGhlIG51bWJlciBvZiB0aG9zZSBjbGFpbWluZyBhcyBhIHBlcmNlbnRhZ2Ugb2YgNTAtNjQgcmVzaWRlbnRzLlxcblxcblwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzI3QTAxRDY1LTU3MDMtNDUyOS04OTNELUUwNTU3QzRENUQ0M1wifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgdW5lbXBsb3ltZW50IHJhdGUgaXMgZ2VuZXJhbGx5IGNhbGN1bGF0ZWQgYXMgYSBwcm9wb3J0aW9uIG9mIHRoZSBlY29ub21pY2FsbHkgYWN0aXZlIHBvcHVsYXRpb24gaS5lLiB0aGUgcG9wdWxhdGlvbiB3aG8gYXJlIGVpdGhlciBlbXBsb3llZCBvciB1bmVtcGxveWVkIChpLmUgdGhvc2Ugd2hvIGFyZSBvdXQgb2Ygd29yayBidXQgYWN0aXZlbHkgc2Vla2luZyBhbmQgYXZhaWxhYmxlIHRvIHdvcmsg4oCTIGl0IGRvZXMgbm90IGluY2x1ZGUgcmV0aXJlZCkuIFRoZXJlIGFyZSB0d28gbWVhc3VyZXMgb2YgdW5lbXBsb3ltZW50LiBUaGUgZmlyc3QgaXMgdGhlIOKAmG9mZmljaWFs4oCZIGVzdGltYXRlIHVzaW5nIHRoZSBJbnRlcm5hdGlvbmFsIExhYm91ciBPcmdhbmlzYXRpb24gKElMTykgZGVmaW5pdGlvbiB3aGljaCBjb25mb3JtcyB0byB0aGUgaW50ZXJuYXRpb25hbCBkZWZpbml0aW9uIG9mIHVuZW1wbG95bWVudCwgdGhlIG1lYXN1cmUgaXMgYmFzZWQgb24gYSBxdWFydGVybHkgc2FtcGxlIHN1cnZleSBvZiBob3VzZWhvbGRzIHVuZGVydGFrZW4gYnkgT05TIGFzIHBhcnQgb2YgdGhlIEFubnVhbCBQb3B1bGF0aW9uIFN1cnZleSAoQVBTKS4gQXMgdGhlIHVuZW1wbG95ZWQgZm9ybSBhIHNtYWxsIHBlcmNlbnRhZ2Ugb2YgdGhlIGVjb25vbWljYWxseSBhY3RpdmUgcG9wdWxhdGlvbiwgYW5kIGFzIHVuZW1wbG95bWVudCBlc3RpbWF0ZXMgZm9yIGxvY2FsIGF1dGhvcml0eSBnZW9ncmFwaGllcyBhcmUgYmFzZWQgb24gdmVyeSBzbWFsbCBzdXJ2ZXkgc2FtcGxlcywgbW9kZWwtYmFzZWQgZXN0aW1hdGVzIGhhdmUgYmVlbiBkZXZlbG9wZWQgdGhhdCBwcm92aWRlIGJldHRlciBlc3RpbWF0ZXMgb2YgdG90YWwgdW5lbXBsb3llZCBmb3IgbG9jYWwgYXV0aG9yaXRpZXMuIFRoZXNlIGVzdGltYXRlcyBhcmUgbm90IGJyb2tlbiBkb3duIGJ5IGFnZSBiYW5kcy5cXG5cXG5VbmVtcGxveW1lbnQgY291bnQgYW5kIHJhdGVzIHVuZGVyIHRoaXMgZGVmaW5pdGlvbiBmb3IgV2VzdCBTdXNzZXggYXJlOlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy85RkY0MDY0MC04OEFBLTQyQTUtQjYzRC1GNUU4MkVBQTg2ODdcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIHNlY29uZCBtZWFzdXJlIGlzIHRoZSBjbGFpbWFudCBjb3VudC4gVGhpcyB0ZW5kcyB0byBiZSB0aGUgbG93ZXIgbWVhc3VyZSBvZiB0aGUgdHdvIGJlY2F1c2Ugc29tZSB1bmVtcGxveWVkIGFyZSBub3QgZW50aXRsZWQgdG8gY2xhaW0gYmVuZWZpdHMgb2YgYW55IHNvcnQgb3IgY2hvb3NlIG5vdCB0byBkbyBzby4gSXQgaXMgc2VlbiBieSBzb21lIGFzIG1vcmUgb2YgYSB3ZWxmYXJlIGNvdW50IGFuZCBub3Qgc3RyaWN0bHkgYW4gdW5lbXBsb3ltZW50IGNvdW50LiBUaGUgZGF0YSBpcyBwdWJsaXNoZWQgbW9udGhseSBhbmQgaXMgaW5kaWNhdGl2ZSBvZiByZWxhdGl2ZSB1bmVtcGxveW1lbnQgbGV2ZWxzIGluIHRoZSBsb2NhbCBhcmVhLiBUaGUgY2xhaW1hbnQgY291bnQgaGFzIHVuZGVyZ29uZSBzdWJzdGFudGlhbCBjaGFuZ2Ugb3ZlciByZWNlbnQgeWVhcnMuIEluIDIwMTMgVW5pdmVyc2FsIENyZWRpdCB3YXMgaW50cm9kdWNlZCBhbmQgcm9sbGVkIG91dCBvdmVyIGEgcGVyaW9kIG9mIHllYXJzIGFuZCB3YXMgaW1wbGVtZW50ZWQgaW4gV2VzdCBTdXNzZXggZHVyaW5nIDIwMTUuIFVuaXZlcnNhbCBDcmVkaXQgaXMgYSBzaW5nbGUgbW9udGhseSBwYXltZW50IGZvciBwZW9wbGUgaW4gb3Igb3V0IG9mIHdvcmssIHdoaWNoIG1lcmdlcyB0b2dldGhlciBzb21lIG9mIHRoZSBleGlzdGluZyBtZWFucy10ZXN0ZWQgYmVuZWZpdHMgYW5kIHRheCBjcmVkaXRzIGluY2x1ZGluZyBJbmNvbWUtYmFzZWQgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIGFuZCBpbmNvbWUtcmVsYXRlZCBFbXBsb3ltZW50IGFuZCBTdXBwb3J0IEFsbG93YW5jZS5cXG5cXG5UaGVyZSBpcyBhbiBleHBlcmltZW50YWwgZGF0YSBzZXJpZXMgZ2l2aW5nIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIHBsdXMgdGhvc2Ugd2hvIGNsYWltIFVuaXZlcnNhbCBDcmVkaXQgYmVjYXVzZSB0aGV5IGFyZSBvdXQgb2Ygd29yaywgaXQgcmVwbGFjZXMgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIGFzIHRoZSBoZWFkbGluZSBpbmRpY2F0b3Igb2YgdGhlIG51bWJlciBvZiBwZW9wbGUgY2xhaW1pbmcgYmVuZWZpdHMgcHJpbmNpcGFsbHkgZm9yIHRoZSByZWFzb24gb2YgYmVpbmcgdW5lbXBsb3llZC4gVGhlIHRvdGFsIG51bWJlcnMgb2YgY2xhaW1hbnRzLCBhbmQgcmF0ZXMgYXMgYSBwcm9wb3J0aW9uIG9mIHJlc2lkZW50cyBhZ2VkIDE2LTY0IGFyZSBpbiB0aGUgdGFibGUgYmVsb3c6XFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzNEREI0NDQwLUE3MkQtNDZERS05OTQwLUI2NUU2MTJGMEE1OFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGlzIGRhdGEgc2V0IGhvd2V2ZXIsIGRvZXMgbm90IGdpdmUgYW4gdW5lbXBsb3ltZW50IHJhdGUgYnkgYWdlIGJyZWFrZG93bi4gVGhlIGNvdW50IG9mIHBlb3BsZSBjbGFpbWluZyBKb2JzZWVrZXJzIEFsbG93YW5jZSBpcyBzdGlsbCBhdmFpbGFibGUgYnkgYWdlIG9mIGNsYWltYW50IGFuZCBkdXJhdGlvbiBvZiBjbGFpbWluZy4gVGhlIHRhYmxlIGJlbG93IHNob3dzIHRoZSBudW1iZXIgb2YgNTAtNjQgeWVhciBvbGRzIHdobyBhcmUgY2xhaW1pbmcgSlNBLCBhbmQgdGhlIHJhdGUgaS5lLiB0aGUgbnVtYmVyIG9mIHRob3NlIGNsYWltaW5nIGFzIGEgcGVyY2VudGFnZSBvZiA1MC02NCByZXNpZGVudHMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzhEOEVEMzA5LTQ2QUMtNDExNC04QURCLThDQTI4QkU2MzRGNFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgNCAtIE1hcmNoIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhpcyBnb2FsIGlzIHRyYWNrZWQgYnkgbWVhc3VyaW5nIHRoZSBwZXJjZW50YWdlIG9mIHBlb3BsZSBhZ2VkIDUwLTY0IGNsYWltaW5nIGpvYnNlZWtlcnMgYWxsb3dhbmNlIChKU0EpIGFzIGEgcHJvcG9ydGlvbiBvZiB0aGUgcmVzaWRlbnQgcG9wdWxhdGlvbiBvZiB0aGUgc2FtZSBhZ2UuIFRoZSBKU0EgY2xhaW1hbnQgZGF0YSBpcyBwdWJsaXNoZWQgbW9udGhseSwgd2l0aCB0aGUgbGF0ZXN0IGRhdGEgYXZhaWxhYmxlIGZvciBGZWJydWFyeSAoYXMgYXQgNXRoIEFwcmlsKS5cXG5cXG5UaGUgdGFibGUgYmVsb3cgc2hvd3MgdGhlIHRvdGFsIG51bWJlcnMgYW5kIHJhdGUgb2YgSlNBIGNsYWltYW50cyBhZ2VkIDUwLTY0IHllYXJzLCB0aGUgcmF0ZSBpcyBjYWxjdWxhdGVkIGFzIGEgcHJvcG9ydGlvbiBvZiByZXNpZGVudCBwb3B1bGF0aW9uIGluIHRoYXQgYWdlIGdyb3VwLiBUaGUgcHJvcG9ydGlvbiBpcyBsb3dlc3QgaW4gTWlkIFN1c3NleCBhbmQgSG9yc2hhbSwgYW5kIGhpZ2hlc3QgaW4gQ3Jhd2xleSDigJMgcG9zc2libHkgYSByZWZsZWN0aW9uIG9mIHRoZSB5b3VuZ2VyIGFnZWQgcG9wdWxhdGlvbiBpbiBDcmF3bGV5IEJvcm91Z2ggY29tcGFyZWQgd2l0aCBvdGhlciBhcmVhcyBvZiB0aGUgY291bnR5LiBUaGUgcmF0ZSBmb3IgV2VzdCBTdXNzZXggY29udGludWVzIHRvIGJlIGxvd2VyIHRoYW4gcmVnaW9uYWxseSBvciBuYXRpb25hbGx5LCBhbmQgdGhlIG51bWJlcnMgb2YgSlNBIGNsYWltYW50cyBvdmVyIHRoZSB5ZWFyIEZlYnJ1YXJ5IDIwMTYtMjAxNyBoYXZlIGZhbGxlbiBieSAyLjQlLCBhIGdyZWF0ZXIgZGVjcmVhc2UgdGhhbiByZWdpb25hbGx5LiBIb3JzaGFtLCBob3dldmVyLCBoYXMgc2VlbiBhcmlzZSBpbiB0aGUgbnVtYmVyIG9mIGNsYWltYW50cyBpbiB0aGlzIGFnZSBicmFja2V0LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy9CNjFBOTk5OS1BMkI4LTQwNDItQTFBNi1ENEYyREVBNUNBOUVcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiVGhlIGNoYXJ0IGJlbG93IHNob3dzIHRoYXQgV2VzdCBTdXNzZXggaGFzIGNvbnNpc3RlbnRseSBoYWQgYSBsb3dlciByYXRlIG9mIEpTQSBjbGFpbWFudHMgaW4gdGhpcyBhZ2UgYnJhY2tldCBjb21wYXJlZCB3aXRoIHRoZSByZWdpb24gb3IgaW4gRW5nbGFuZCBvdmVyIHRoZSB0aGlydGVlbiBtb250aHMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0JFNzM1ODFBLTUwNDQtNEJGQS04RkM5LUYyNEMyODFBN0UzMVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJVbml2ZXJzYWwgQ3JlZGl0IENsYWltYW50cyBob3dldmVyLCByb2xsZWQgb3V0IGluIHRoZSBDb3VudHkgZHVyaW5nIDIwMTUgaXMgYSBtb3JlIGNvbXByZWhlbnNpdmUgbWVhc3VyZSBvZiB0aGUgY2xhaW1hbnQgY291bnQuIFVuaXZlcnNhbCBDcmVkaXQgaXMgYSBzaW5nbGUgbW9udGhseSBwYXltZW50IGZvciBwZW9wbGUgaW4gb3Igb3V0IG9mIHdvcmssIHdoaWNoIG1lcmdlcyB0b2dldGhlciBzb21lIG9mIHRoZSBleGlzdGluZyBtZWFucy10ZXN0ZWQgYmVuZWZpdHMgYW5kIHRheCBjcmVkaXRzIGluY2x1ZGluZyBpbmNvbWUtYmFzZWQgSm9ic2Vla2VyJ3MgQWxsb3dhbmNlIGFuZCBpbmNvbWUtcmVsYXRlZCBFbXBsb3ltZW50IGFuZCBTdXBwb3J0IEFsbG93YW5jZS4gVGhlcmUgaXMgYW4gZXhwZXJpbWVudGFsIGRhdGEgc2VyaWVzIGdpdmluZyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcidzIEFsbG93YW5jZSBwbHVzIHRob3NlIHdobyBjbGFpbSBVbml2ZXJzYWwgQ3JlZGl0IHdobyBhcmUgb3V0IG9mIHdvcmssIGl0IHJlcGxhY2VzIHRoZSBudW1iZXIgb2YgcGVvcGxlIGNsYWltaW5nIEpvYnNlZWtlcidzIEFsbG93YW5jZSBhcyB0aGUgaGVhZGxpbmUgaW5kaWNhdG9yIG9mIHRoZSBudW1iZXIgbyBwZW9wbGUgY2xhaW1pbmcgYmVuZWZpdHMgcHJpbmNpcGFsbHkgZm9yIHRoZSByZWFzb24gb2YgYmVpbmcgdW5lbXBsb3llZC4gVGhpcyBkYXRhIHNldCBnaXZlcyBhbiBvcHBvcnR1bml0eSB0byBjb21wYXJlIHRoZSBudW1iZXJzIG9mIHVuaXZlcnNhbCBjcmVkaXQgY2xhaW1hbnRzIHdpdGggSlNBIGNsYWltYW50cywgYW5kIHdoaWxzdCB0aGUgZGF0YSBzZXQgZG9lcyBub3QgaW5jbHVkZSByYXRlcyxieSB1c2luZyB0aGUgcmVzaWRlbnQgcG9wdWxhdGlvbiBpbiB0aGlzIGFnZSBncm91cCBmcm9tIHRoZSBKU0EgY2xhaW1hbnQgcmF0ZSB3ZSBjYW4gbWFrZSBhbiBlc3RpbWF0ZSBhcyB0byB0aGUgcmF0ZXMgY2xhaW1pbmcgdW5pdmVyc2FsIGNyZWRpdCDigJMgYXMgc2hvd24gaW4gdGhlIHRhYmxlIGJlbG93LlxcblxcblwifSx7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy81Mzg2QkU4QS1GMTQ5LTRCQjktOEExQy1BMDRCQkMyN0RDQzZcIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDMgLSBEZWNlbWJlciAyMDE2KipcXG5cXG4qKioqXFxuXFxuVGhpcyBnb2FsIGlzIHRyYWNrZWQgYnkgbWVhc3VyaW5nIHRoZSAlIG9mIHBlb3BsZSBhZ2VkIDUwLTY0IGNsYWltaW5nIEpvYnNlZWtlcnMgQWxsb3dhbmNlIGFzIGEgcHJvcG9ydGlvbiBvZiB0aGUgcmVzaWRlbnQgcG9wdWxhdGlvbiBvZiB0aGUgc2FtZSBhZ2UuIEZvciBXZXN0IFN1c3NleCB0aGlzIGlzIGN1cnJlbnRseSAwLjclLlxcblxcbkNsYWltYW50IGNvdW50IHJhdGVzIGFyZSBhdmFpbGFibGUgYnkgYWdlIG9mIGNsYWltYW50IGFuZCBkdXJhdGlvbiBvZiBjbGFpbWluZy4gVGhlIHRhYmxlIGJlbG93IHNob3dzIHRoZSBudW1iZXIgb2YgNTAtNjQgeWVhciBvbGRzIHdobyBhcmUgY2xhaW1pbmcgSlNBLCBhbmQgdGhlIHJhdGUgaS5lLiB0aGUgbnVtYmVyIG9mIHRob3NlIGNsYWltaW5nIGFzIGEgcGVyY2VudGFnZSBvZiA1MC02NCByZXNpZGVudHMuIFRoZSBwcm9wb3J0aW9uIGlzIGxvd2VzdCBpbiBNaWQgU3Vzc2V4IGFuZCBoaWdoZXN0IGluIENyYXdsZXkuIEFsbCBsb2NhbCBhdXRob3JpdGllcyAoV2VzdCBTdXNzZXggZGlzdHJpY3RzL2Jvcm91Z2hzKSBoYXZlIGEgbG93ZXIgcHJvcG9ydGlvbiBvZiBjbGFpbWFudHMgYWdlZCA1MC02NCB5ZWFycyB0aGFuIHRoZSBuYXRpb25hbCBmaWd1cmUgb2YgMS4yJSBhbmQgb25seSBBZHVyIGFuZCBDcmF3bGV5IGhhcyBhIGhpZ2hlciByYXRlIHRoYW4gdGhlIFNvdXRoIEVhc3QgZmlndXJlIG9mIDAuOCUuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzIxRTU1OTNBLTVGQzEtNDlBQi1BMDQzLTE1MjJBNkU2MDcwQVwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJUaGVyZSBpcyBhIHNpbWlsYXIgcGljdHVyZSBmb3IgdGhlIDE2LTY0IGFnZSByYW5nZSBhcyBkZXRhaWxlZCBpbiB0aGUgdGFibGUgYmVsb3c6XCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzQyQzg1MjZCLURDRTItNDg0MS04MTM5LTk3QzUyNzYwOUQyM1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMiAtIFNlcHRlbWJlciAyMDE2KipcXG5cXG4tIC0gLVxcblxcbioqVGhpcyBnb2FsIGlzIHRyYWNrZWQgYnkgbWVhc3VyaW5nIHRoZSAlIG9mIHBlb3BsZSBhZ2VkIDUwLTY0IGNsYWltaW5nIEpvYnNlZWtlcnMgQWxsb3dhbmNlIGFzIGEgcHJvcG9ydGlvbiBvZiB0aGUgcmVzaWRlbnQgcG9wdWxhdGlvbiBvZiB0aGUgc2FtZSBhZ2UuKipcXG5cXG5BZ2VkIDE2LTY0IGJlbmNobWFya2luZzogVGhpcyBpcyB0aGUgcGVyY2VudGFnZSBvZiBwZW9wbGUgYWdlZCAxNiB0byA2NCBjbGFpbWluZyBKb2JzZWVrZXJzIEFsbG93YW5jZSBhcyBhIHByb3BvcnRpb24gb2YgdGhlIHJlc2lkZW50IHBvcHVsYXRpb24gb2YgdGhlIHNhbWUgYWdlLiBXZXN0IFN1c3NleCBjdXJyZW50bHkgc3RhbmRzIGF0IDAuNyUsIHRoaXMgY29tcGFyZXMgZmF2b3VyYWJseSB3aXRoIHRoZSBhdmVyYWdlIGZvciB0aGUgU291dGggRWFzdCAwLjglIGFuZCAxLjIlIGZvciBFbmdsYW5kLlxcblxcblRoZSB1bmVtcGxveW1lbnQgcmF0ZSBpcyBjYWxjdWxhdGVkIGFzIGEgcHJvcG9ydGlvbiBvZiB0aGUgZWNvbm9taWNhbGx5IGFjdGl2ZSBwb3B1bGF0aW9uOyBlY29ub21pY2FsbHkgYWN0aXZlIHBlcnNvbnMgYmVpbmcgdGhvc2Ugd2hvIGFyZSBlaXRoZXIgZW1wbG95ZWQgb3IgdW5lbXBsb3llZCAoaS5lLiBkb2VzIG5vdCBpbmNsdWRlIHJldGlyZWQpLiBUaGVyZSBhcmUgdHdvIG1lYXN1cmVzIG9mIHVuZW1wbG95bWVudDsgdGhlIGZpcnN0IGlzIHRoZSDigJhvZmZpY2lhbOKAmSBlc3RpbWF0ZSB1c2luZyB0aGUgSW50ZXJuYXRpb25hbCBMYWJvdXIgT3JnYW5pc2F0aW9uIChJTE8pIGRlZmluaXRpb24gd2hpY2ggY29uZm9ybXMgdG8gdGhlIGludGVybmF0aW9uYWwgZGVmaW5pdGlvbiBvZiB1bmVtcGxveW1lbnQsIHRoZSBtZWFzdXJlIGlzIGJhc2VkIG9uIGEgcXVhcnRlcmx5IHNhbXBsZSBzdXJ2ZXkgb2YgaG91c2Vob2xkcyB1bmRlcnRha2VuIGJ5IE9OUyBhcyBwYXJ0IG9mIHRoZSBBbm51YWwgUG9wdWxhdGlvbiBTdXJ2ZXkgKEFQUykuIEhvd2V2ZXIsIGFzIHVuZW1wbG95ZWQgZm9ybSBhIHNtYWxsIHBlcmNlbnRhZ2Ugb2YgdGhlIHBvcHVsYXRpb24gYW5kIGFzIHVuZW1wbG95ZWQgZXN0aW1hdGVzIHdpdGhpbiBsb2NhbCBhdXRob3JpdGllcyBhcmUgYmFzZWQgb24gdmVyeSBzbWFsbCBzdXJ2ZXkgc2FtcGxlcyBtb2RlbC1iYXNlZCBlc3RpbWF0ZXMgaGF2ZSBiZWVuIGRldmVsb3BlZCB0aGF0IHByb3ZpZGUgYmV0dGVyIGVzdGltYXRlcyBvZiB0b3RhbCB1bmVtcGxveWVkIGZvciBsb2NhbCBhdXRob3JpdGllcywgYnV0IHRoZXNlIGVzdGltYXRlcyBhcmUgbm90IGJyb2tlbiBkb3duIGJ5IGFnZSBiYW5kcy5cXG5cXG5UaGUgc2Vjb25kIG1lYXN1cmUgaXMgdGhlIGNsYWltYW50IGNvdW50LiBUaGlzIHRlbmRzIHRvIGJlIHRoZSBsb3dlciBtZWFzdXJlIG9mIHRoZSB0d28gYmVjYXVzZSBzb21lIHVuZW1wbG95ZWQgYXJlIG5vdCBlbnRpdGxlZCB0byBjbGFpbSBiZW5lZml0cyBvZiBhbnkgc29ydCBvciBjaG9vc2Ugbm90IHRvIGRvIHNvLiBJdCBpcyBzZWVuIGJ5IHNvbWUgYXMgbW9yZSBvZiBhIHdlbGZhcmUgY291bnQgYW5kIG5vdCBzdHJpY3RseSBhbiB1bmVtcGxveW1lbnQgY291bnQuIFRoZSBkYXRhIGlzIHB1Ymxpc2hlZCBtb250aGx5IGFuZCBpcyBpbmRpY2F0aXZlIG9mIHJlbGF0aXZlIHVuZW1wbG95bWVudCBsZXZlbHMgaW4gdGhlIGxvY2FsIGFyZWEuIFRoZSBjbGFpbWFudCBjb3VudCBoYXMgdW5kZXJnb25lIHN1YnN0YW50aWFsIGNoYW5nZSBvdmVyIHJlY2VudCB5ZWFycy4gSW4gMjAxMyBVbml2ZXJzYWwgQ3JlZGl0IHdhcyBpbnRyb2R1Y2VkIGFuZCByb2xsZWQgb3V0IG92ZXIgYSBwZXJpb2Qgb2YgeWVhcnMgYW5kIHdhcyBpbXBsZW1lbnRlZCBpbiBXZXN0IFN1c3NleCBkdXJpbmcgMjAxNS4gVW5pdmVyc2FsIENyZWRpdCBpcyBhIHNpbmdsZSBtb250aGx5IHBheW1lbnQgZm9yIHBlb3BsZSBpbiBvciBvdXQgb2Ygd29yaywgd2hpY2ggbWVyZ2VzIHRvZ2V0aGVyIHNvbWUgb2YgdGhlIGV4aXN0aW5nIG1lYW5zLXRlc3RlZCBiZW5lZml0cyBhbmQgdGF4IGNyZWRpdHMgaW5jbHVkaW5nIEluY29tZS1iYXNlZCBKb2JzZWVrZXIncyBBbGxvd2FuY2UgYW5kIGluY29tZS1yZWxhdGVkIEVtcGxveW1lbnQgYW5kIFN1cHBvcnQgQWxsb3dhbmNlLlxcblxcblRoZXJlIGlzIGFuIGV4cGVyaW1lbnRhbCBkYXRhIHNlcmllcyBnaXZpbmcgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHBlb3BsZSBjbGFpbWluZyBKb2JzZWVrZXIncyBBbGxvd2FuY2UgcGx1cyB0aG9zZSB3aG8gY2xhaW0gVW5pdmVyc2FsIENyZWRpdCB3aG8gYXJlIG91dCBvZiB3b3JrLCBpdCByZXBsYWNlcyB0aGUgbnVtYmVyIG9mIHBlb3BsZSBjbGFpbWluZyBKb2JzZWVrZXIncyBBbGxvd2FuY2UgYXMgdGhlIGhlYWRsaW5lIGluZGljYXRvciBvZiB0aGUgbnVtYmVyIG9mIHBlb3BsZSBjbGFpbWluZyBiZW5lZml0cyBwcmluY2lwYWxseSBmb3IgdGhlIHJlYXNvbiBvZiBiZWluZyB1bmVtcGxveWVkLiBUaGlzIGRhdGEgc2V0IGhvd2V2ZXIsIGRvZXMgbm90IGdpdmUgYW4gdW5lbXBsb3ltZW50IHJhdGUgYnkgYWdlIGJyZWFrZG93bi4gVGhlIGNvdW50IG9mIHBlb3BsZSBjbGFpbWluZyBKb2JzZWVrZXJzIEFsbG93YW5jZSBpcyBzdGlsbCBhdmFpbGFibGUgYnkgYWdlIG9mIGNsYWltYW50IGFuZCBkdXJhdGlvbiBvZiBjbGFpbWluZy4gVGhlIHRhYmxlIGJlbG93IHNob3dzIHRoZSBudW1iZXIgb2YgNTAtNjQgeWVhciBvbGRzIHdobyBhcmUgY2xhaW1pbmcgSlNBLCBhbmQgdGhlIHJhdGUgaS5lLiB0aGUgbnVtYmVyIG9mIHRob3NlIGNsYWltaW5nIGFzIGEgcGVyY2VudGFnZSBvZiA1MC02NCByZXNpZGVudHMuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzE2ODBGMEU2LTM2NzQtNEM4OC04N0MxLUNBQkY5Q0JBRTNGN1wifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgMSAtIEp1bmUgMjAxNioqXFxuXFxuLSAtIC1cXG5cXG5DbGFpbWFudCBjb3VudCByYXRlcyBhcmUgYXZhaWxhYmxlIGJ5IGFnZSBvZiBjbGFpbWFudCBhbmQgZHVyYXRpb24gb2YgY2xhaW1pbmcuIFRoZSB0YWJsZSBiZWxvdyBzaG93cyB0aGUgbnVtYmVyIG9mIDUwLTY0IHllYXIgb2xkcyB3aG8gYXJlIGNsYWltaW5nIEpTQSwgYW5kIHRoZSByYXRlIGkuZS4gdGhlIG51bWJlciBvZiB0aG9zZSBjbGFpbWluZyBhcyBhIHBlcmNlbnRhZ2Ugb2YgNTAtNjQgcmVzaWRlbnRzLiBUaGUgcHJvcG9ydGlvbiBpcyBsb3dlc3QgaW4gTWlkIFN1c3NleCBhbmQgaGlnaGVzdCBpbiBDcmF3bGV5LiBBbGwgbG9jYWwgYXV0aG9yaXRpZXMgKFdlc3QgU3Vzc2V4IGRpc3RyaWN0cy9ib3JvdWdocykgaGF2ZSBhIGxvd2VyIHByb3BvcnRpb24gb2YgY2xhaW1hbnRzIGFnZWQgNTAtNjQgeWVhcnMgdGhhbiBuYXRpb25hbGx5IGFuZCBvbmx5IENyYXdsZXkgaGFzIGEgaGlnaGVyIHJhdGUgdGhhbiB0aGUgU291dGggRWFzdCBmaWd1cmUgKGFsdGhvdWdoIENyYXdsZXkncyBmaWd1cmUgaGFzIHJlZHVjZWQgYnkgMC4yJSkuXFxuXFxuV2hhdCB3aWxsIGhhcHBlbiB0byB0aGlzIG1lYXN1cmUsIGluIHJlc3BlY3Qgb2YgdGhlIG5hdGlvbmFsL3JlZ2lvbmFsL2xvY2FsIGVjb25vbXksIGdpdmVuIHRoZSBFVSByZWZlcmVuZHVtIHJlc3VsdCwgaXMgc3RpbGwgdG8gYmUgZGV0ZXJtaW5lZC5cXG5cXG5cIn0se1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMDUwODdENDQtNUMwQi00RkYwLUI2MDYtOUMzQjY3QzgwMEE1XCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0UwRTI3QzMzLTU5QTQtNDBEMS1CODBCLTI5RjI4MUQxNjVCNlwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKlF1YXJ0ZXIgNCAtIE1hcmNoIDIwMTYqKlxcblxcbi0gLSAtXFxuXFxuU2luY2UgT2N0b2JlciAxOTk2IHRoZSBjbGFpbWFudCBjb3VudCBoYXMgYmVlbiBkZXJpdmVkIGZyb20gdGhlIG51bWJlcnMgb2YgSm9ic2Vla2Vy4oCZcyBBbGxvd2FuY2UgKEpTQSkgQ2xhaW1hbnRzIHJlY29yZGVkIGJ5IEpvYiBDZW50cmUgUGx1cywgaXQgaXMgY29udGludWVkIHRvIGJlIHB1Ymxpc2hlZCBtb250aGx5LiBJdCBpcyBhIG5hcnJvd2VyIG1lYXN1cmUgdGhhbiB0aGUgY291bnQgb2YgdW5lbXBsb3ltZW50IGZyb20gdGhlIE5hdGlvbmFsIFN0YXRpc3RpY3MgTGFib3VyIEZvcmNlIFN1cnZleSB3aGljaCBpcyB0YWtlbiBmcm9tIGEgY29udGludW91cyBzdXJ2ZXkgdGhhdCBPZmZpY2UgZm9yIE5hdGlvbmFsIFN0YXRpc3RpY3MgKE9OUykgdXNlcyB0byBtZWFzdXJlIGVjb25vbWljIGFjdGl2aXR5IG5hdGlvbmFsbHkuIFRvIGNvdW50IGFzIHVuZW1wbG95ZWQgcGVvcGxlIGhhdmUgdG8gc2F5IHRoZXkgYXJlIG5vdCB3b3JraW5nLCBhcmUgYXZhaWxhYmxlIGZvciB3b3JrIGFuZCBoYXZlIGVpdGhlciBsb29rZWQgZm9yIHdvcmsgaW4gdGhlIHBhc3QgZm91ciB3ZWVrcyBvciBhcmUgYXdhaXRpbmcgdG8gc3RhcnQgYSBuZXcgam9iIHRoZXkgaGF2ZSBhbHJlYWR5IG9idGFpbmVkLiBTb21lb25lIHdobyBpcyBvdXQgb2Ygd29yayBidXQgZG9lc27igJl0IG1lZXQgdGhlc2UgY3JpdGVyaWEgY291bnRzIGFzIGVjb25vbWljYWxseSBpbmFjdGl2ZS4gVGhlIGNsYWltYW50IGNvdW50IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhlIGxpbWl0YXRpb25zIG9mIHNhbXBsZSBzaXplIGFuZCBzYW1wbGluZyBmcmFtZS4gSG93ZXZlciwgbWFueSBwZW9wbGUgd2hvIGFyZSBvdXQgb2Ygd29yayBhcmUgbm90IG5lY2Vzc2FyaWx5IGVsaWdpYmxlIGZvciBKU0EgYW5kIHRoZXJlZm9yZSBpdCBnaXZlcyBhIG11Y2ggbG93ZXIgZmlndXJlIG9mIHVuZW1wbG95ZWQgdGhhbiB0aGF0IGZyb20gdGhlIExhYm91ciBGb3JjZSBTdXJ2ZXkuXFxuXFxuVGhlIHRhYmxlIGJlbG93IHNob3dzIHRoZSB0b3RhbCBudW1iZXIgb2YgSlNBIGNsYWltYW50cyBhbmQgdGhlIHVuZW1wbG95bWVudCByYXRlIGZvciBGZWJydWFyeSAyMDE1IOKAkyAyMDE2IChGZWJydWFyeSAyMDE2IGlzIHRoZSBsYXRlc3QgYXZhaWxhYmxlIGRhdGEgKGNsYWltYW50cyBhcyBhIHBlcmNlbnRhZ2Ugb2YgMTYtNjQgeWVhciBvbGQgcmVzaWRlbnRzKS4gV2VzdCBTdXNzZXggaGFzIGEgbG93ZXIgY2xhaW1hbnQgY291bnQgcmF0ZSB0aGFuIG5hdGlvbmFsbHkgYW5kIHJlZ2lvbmFsbHksIE1pZCBTdXNzZXggaGFzIHRoZSBsb3dlc3QgY2xhaW1hbnQgY291bnQgcmF0ZSBhbmQgQ3Jhd2xleSB0aGUgaGlnaGVzdCwgYnV0IGFsbCBkaXN0cmljdHMgYW5kIGJvcm91Z2hzIHdpdGhpbiBXZXN0IFN1c3NleCBoYXZlIGNsYWltYW50IGNvdW50IHJhdGVzIGxvd2VyIHRoYW4gdGhlIG5hdGlvbmFsIGF2ZXJhZ2UuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0VGNDU3M0FDLTFDN0QtNDVEMS04NEUzLUMyQjE3NzRFQzJBOFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJVbml2ZXJzYWwgQ3JlZGl0IHdhcyBpbnRyb2R1Y2VkIGluIDIwMTMgd2hpY2ggd2FzIHRvIHJlcGxhY2UgYSBudW1iZXIgb2YgbWVhbnMgdGVzdGVkIGJlbmVmaXRzIGluY2x1ZGluZyB0aGUgbWVhbnMtdGVzdGVkIGVsZW1lbnQgb2YgSlNBLiBUaGlzIGhhcyBiZWVuIHJvbGxlZCBvdXQgYWNyb3NzIHRoZSBjb3VudHJ5IGFuZCBmcm9tIHRoZSBBdXR1bW4gMjAxNSBoYXMgYmVlbiByb2xsZWQgb3V0IHRocm91Z2hvdXQgYWxsIFdlc3QgU3Vzc2V4IEpvYmNlbnRyZXMuIFRoZXJlIGlzIGEgbmV3IGV4cGVyaW1lbnRhbCBkYXRhIHNldCB3aGljaCBpbmNsdWRlcyB0aGUgbnVtYmVyIG9mIHBlb3BsZSBjbGFpbWluZyBKb2JzZWVrZXJzIEFsbG93YW5jZSBwbHVzIHRob3NlIHdobyBjbGFpbSBVbml2ZXJzYWwgQ3JlZGl0IHdobyBhcmUgb3V0IG9mIHdvcmsuIFRoZXJlIGFyZSBzb21lIGNhdmVhdHMgd2l0aCB0aGUgZGF0YSwgYW5kIHNvIGZhciwgYXMgaXTigJlzIHN0aWxsIGVhcmx5IGRheXMgb2YgVW5pdmVyc2FsIENyZWRpdCBiZWluZyBpbnRyb2R1Y2VkIHRoZXJlIGlzIGxpdHRsZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIG5ldyBkYXRhIHNldCBhbmQgdGhhdCBmb3IgSlNBIGNsYWltYW50cyBzbyBmb3IgdGhlIHRpbWUgd2Ugd2lsbCBjb250aW51ZSB0byBtb25pdG9yIEpTQSBjbGFpbWFudHMgZm9yIDUwLTY0IHllYXIgb2xkcy4gSG93ZXZlciB0aGUgcGVyY2VudGFnZSBvZiBjbGFpbWFudHMgYnkgYWdlIGdyb3VwIGZyb20gdGhlIFVuaXZlcnNhbCBDcmVkaXQgZXhwZXJpbWVudGFsIGRhdGEgc2V0IGlzIG5vdCBhdmFpbGFibGUuIFRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSB0d28gc2V0cyBvZiBkYXRhIGFyZSBzaG93biBpbiB0aGUgdGFibGUgYmVsb3cuXFxuXFxuXCJ9LHtcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzLzBEQ0FFMjExLTg5NUQtNDI2Ni1CREE4LUQ0ODRFRjI3QTFBRlwifV0sXCJ1c2VfY3VzdG9tX3RpdGxlXCI6dHJ1ZSxcImN1c3RvbV90aXRsZVwiOlwiUmVkdWNpbmcgdGhlIG51bWJlciBvZiBwZW9wbGUgYWdlZCA1MC02NCBjbGFpbWluZyBKb2JzZWVrZXJzIEFsbG93YW5jZSBhcyBhIHByb3BvcnRpb24gb2YgdGhlIHJlc2lkZW50IHBvcHVsYXRpb24gb2YgdGhlIHNhbWUgYWdlXCIsXCJpY29uXCI6XCJ0ZXh0XCIsXCJ1c2VfY3VzdG9tX3N1YnRpdGxlXCI6ZmFsc2UsXCJjdXN0b21fc3VidGl0bGVcIjpcIlRoaXMgZ29hbCBpcyB0cmFja2VkIGJ5IG1lYXN1cmluZyB0aGUgJSBvZiBwZW9wbGUgYWdlZCA1MCDigJMgNjQgY2xhaW1pbmcgSm9ic2Vla2VycyBBbGxvd2FuY2UgYXMgYSBwcm9wb3J0aW9uIG9mIHRoZSByZXNpZGVudCBwb3B1bGF0aW9uIG9mIHRoZSBzYW1lIGFnZS5cIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxNS0wNC0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiIlIiwidGFyZ2V0X3R5cGUiOiJyZWxhdGl2ZSIsInRhcmdldF9kZWx0YSI6MCwidGFyZ2V0X2RlbHRhX2lzX3BlcmNlbnQiOmZhbHNlLCJiYXNlbGluZSI6MC45LCJtZXRyaWMiOnsibWV0YWRhdGEiOiIiLCJpZCI6IjloZ3ctOXBzMyJ9LCJjb21wYXJpc29uIjp7ImNvbXBhcmlzb25fZnVuY3Rpb24iOiI8In0sIm1ldGFkYXRhIjp7Im1ldGFkYXRhIjoie1wiZWRpdFwiOntcInN0YXJ0XCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6MyxcInllYXJcIjoyMDE1fSxcImVuZFwiOntcImRhdGVcIjpcImVuZFwiLFwibW9udGhcIjoyLFwieWVhclwiOjIwMTh9LFwiYWN0aW9uX3R5cGVcIjpcIm1haW50YWluXCIsXCJtYWludGFpbl90eXBlXCI6XCI8XCJ9LFwiYmFzZWxpbmVcIjp7XCJzcXVpc2h5XCI6e1wic3RhcnRcIjp7XCJkYXRlXCI6XCJzdGFydFwiLFwibW9udGhcIjpcInllYXJcIixcInllYXJcIjoyMDE1fSxcImVuZFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTV9fSxcInN0YXJ0XCI6XCIyMDE1LTAxLTAxVDAwOjAwOjAwLjAwMFwiLFwiZW5kXCI6XCIyMDE1LTAxLTAxVDIzOjU5OjU5LjAwMFwiLFwibWV0cmljXCI6e1wibWV0YWRhdGFcIjpcIntcXFwid2l6YXJkXFxcIjp7XFxcImZpbHRlcl9hc3RcXFwiOlt7XFxcInZhbHVlc1xcXCI6W3t9XX1dfX1cIn19LFwibmFtZVwiOlwidGhlIHVuZW1wbG95bWVudCByYXRlIGZvciBwZW9wbGUgYWdlZCA1MC02NFwiLFwiaXNfYnVybmRvd25fZGlzYWJsZWRcIjpmYWxzZSxcImlzX3RyZW5kbGluZV9kaXNhYmxlZFwiOnRydWV9In0sImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjAyOjQ2LjUwNloiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOTowMjo0Ni41MDZaIiwiaWQiOiJiZGU2LWhubXIifSwicmVsYXRlZF9tZWFzdXJlcyI6W10sImJhc2VfZGFzaGJvYXJkIjoiNTc0ci1oNW5jIiwidXBkYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6NDk6NDAuNjIxWiIsImNyZWF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjAyOjQ2LjU0N1oiLCJ2ZXJzaW9uIjoiMjAxOC0wNy0yM1QwOTo0OTo0MC42MjFaIiwiY3JlYXRlZF9ieSI6Ijc5N2ktNnI5ZyJ9LHsiaWQiOiJoM3puLTdrdWIiLCJuYW1lIjoiQnJvYWRiYW5kIFJvbGwgT3V0IiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJpY29uXCI6XCJ0ZXh0XCIsXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWRkaXRpb25hbCBwcmVtaXNlcyBmaWd1cmUgYXMgc3RhdGVkIGFib3ZlIGlzIGJhc2VkIG9uIHRoZSBsYXRlc3QgYXZhaWxhYmxlIGRhdGEgd2hpY2ggaXMgcHJvdmlkZWQgYnkgQlQgb25lIHF1YXJ0ZXIgYWZ0ZXIgZGVsaXZlcnkuXFxuXFxuKipGaWJyZSBicm9hZGJhbmQgZm9yIG91ciBjb3VudHnigJlzIGZ1dHVyZSoqXFxuXFxuQmV0dGVyIENvbm5lY3RlZCBpcyBhbiBleGNpdGluZyBwcm9qZWN0IHRvIGJyaW5nIGJldHRlciwgZmFzdGVyIGJyb2FkYmFuZCB0byBvdXIgY291bnR5LiBJbiBTcHJpbmcgMjAxNiB3ZSBhY2hpZXZlZCBvdXIgdGFyZ2V0IG9mIGluY3JlYXNpbmcgY292ZXJhZ2UgYnkg4oCYc3VwZXJmYXN0IOKAmWJyb2FkYmFuZCB0byBtb3JlIHRoYW4gOTAlIG9mIHRoZSBjb3VudHkuIE1vcmUgdGhhbiA2MCwwMDAgaG9tZXMgYW5kIGJ1c2luZXNzZXMgaGF2ZSBhY2Nlc3MgdG8gbmV3IGZpYnJlIGJyb2FkYmFuZCBzZXJ2aWNlcyB3aGljaCB3b3VsZCBub3QgaGF2ZSBiZWVuIGF2YWlsYWJsZSB0byB0aGVtIHdpdGhvdXQgdGhlIHByb2plY3TigJlzIGludGVydmVudGlvbi4gTm93IHdlIGFyZSB1c2luZyBhZGRpdGlvbmFsIGZ1bmRpbmcsIHRvZ2V0aGVyIHdpdGggbW9uZXkgdGhhdCBCVCBpcyBwYXlpbmcgYmFjayB0byB0aGUgQ291bnR5IENvdW5jaWwsIHRvIHJlYWNoIGFuIGV4dHJhIDcsMDAwIHByZW1pc2VzIGJ5IHRoZSBlbmQgb2YgMjAxOC4gVGhlIHByb2plY3QgaXMgcHJvZ3Jlc3Npbmcgd2VsbCB3aXRoIGRldGFpbGVkIG5ldHdvcmsgZGVzaWduLCBwbGFubmluZyBhbmQgZW5naW5lZXJpbmcgc3VydmV5cyBjb250aW51aW5nIGFuZCBzbyBmYXIgaGFzIGRlbGl2ZXJlZCBhY2Nlc3MgdG8gJ3N1cGVyZmFzdCcgZmlicmUgYnJvYWRiYW5kIHRvIGFuIGV4dHJhIDMsMzA3IHByZW1pc2VzIGluIFdlc3QgU3Vzc2V4IHNpbmNlIHRoaXMgcGhhc2UgYmVnYW4gaW4gQXByaWwgMjAxNi5cXG5cXG4gXFxuXFxuKipUYXJnZXQqKlxcblxcbiBcXG5cXG5JbiB0b3RhbCB3ZSBhaW0gdG8gYmVuZWZpdCBhbiBleHRyYSA3LDAwMCBwcmVtaXNlcyBieSBEZWNlbWJlciAyMDE4Llxcblxcbk1vcmUgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGF0OiBbd3d3Lndlc3RzdXNzZXgtYmV0dGVyY29ubmVjdGVkLm9yZy51a0RpZ2l0YWxdWzBdIGNvbW11bmljYXRpb25zIGluZnJhc3RydWN0dXJlIGlzIGJlY29taW5nIGFzIHZpdGFsIGFzIHRyYW5zcG9ydGF0aW9uLCB3YXRlciBhbmQgcG93ZXIgc2VydmljZXMuIOKAmFN1cGVyZmFzdOKAmSBicm9hZGJhbmQgdGVjaG5vbG9neSBoYXMgdHJhbnNmb3JtZWQgaG93IHdlIHdvcmssIGxpdmUgYW5kIGNvbW11bmljYXRlLiBUaGlzIGV4Y2l0aW5nIHRlY2hub2xvZ3kgY2FuIGltcHJvdmUgb3VyIHF1YWxpdHkgb2YgbGlmZSwgYW5kIGhlbHAgdG8gZ3JvdyBvdXIgZWNvbm9teSBieSBlbmFibGluZyBuZXcgYnVzaW5lc3NlcyB0byBzdGFydCB1cCwgYW5kIGV4aXN0aW5nIG9uZXMgdG8gcHJvc3Blci5cXG5cXG5XZSBhcmUgbG9va2luZyB0byB0aGUgZnV0dXJlIGFuZCBoYXZlIGFuIGFtYml0aW9uIHRvIHN1cHBvcnQgb3VyIHB1YmxpYyBzZXJ2aWNlcyBieSBidWlsZGluZyB0aGUgbmV4dCBnZW5lcmF0aW9uIG9mIGNvbm5lY3Rpdml0eSwgZ2l2aW5nIHNwZWVkcyBmcm9tIDFHYiAoMTAwMG1icHMpIHVzaW5nIHB1cmUgb3B0aWNhbCBmaWJyZS5cXG5cXG4gXFxuXFxuVGhlIGdvdmVybm1lbnQgd2FudHMgdG8gaW5jcmVhc2UgdGhlIGFtb3VudCBvZiBwdXJlIG9wdGljYWwgb3Ig4oCYZnVsbCBmaWJyZeKAmSBpbmZyYXN0cnVjdHVyZSBjb3ZlcmluZyB0aGUgVUsuIEN1cnJlbnRseSBvbmx5IGFyb3VuZCAyJSBvZiBwcmVtaXNlcyBpbiB0aGUgVUsgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZhc3Rlc3QgYnJvYWRiYW5kIHNwZWVkcyB3aGljaCB0cmF2ZWwgYWxsIHRoZSB3YXlpbnRvIGJ1aWxkaW5ncyBvdmVyIGZ1bGwgZmlicmUgaW5mcmFzdHJ1Y3R1cmUuIFB1YmxpYyBzZXJ2aWNlcyBhcmUgZXZvbHZpbmcgYW5kIHNvb24gd2lsbCBiZSBkZWxpdmVyZWQgaW4gbmV3IGFuZCBkaWdpdGFsIHdheXMsIHdoaWNoIHdpbGwgcmVxdWlyZSBmYXN0ZXIgZG93bmxvYWQgYW5kIHVwbG9hZCBzcGVlZHMgYW5kIGdyZWF0ZXIgYmFuZHdpZHRoLiBXZSB3YW50IHRvIGludmVzdCBpbiBmdWxsIGZpYnJlIGluZnJhc3RydWN0dXJlIG5vdyB0byBnZXQgb3VyIHB1YmxpYyBidWlsZGluZ3MgYW5kIG91ciBzZXJ2aWNlcyByZWFkeSBmb3IgdGhlIGZ1dHVyZS5cXG5cXG5bMF06IGh0dHA6Ly93d3cud2VzdHN1c3NleC1iZXR0ZXJjb25uZWN0ZWQub3JnLnVrRGlnaXRhbFwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIqKkRlY2VtYmVyIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIHByb2plY3QgaXMgcHJvZ3Jlc3Npbmcgd2VsbCB3aXRoIGRldGFpbGVkIG5ldHdvcmsgZGVzaWduLCBwbGFubmluZyBhbmQgZW5naW5lZXJpbmcgc3VydmV5cyBjb250aW51aW5nIGFuZCBzbyBmYXIgaGFzIGRlbGl2ZXJlZCBhY2Nlc3MgdG8gJ3N1cGVyZmFzdCcgZmlicmUgYnJvYWRiYW5kIHRvIGFuIGV4dHJhIDMsMzA3IHByZW1pc2VzIGluIFdlc3QgU3Vzc2V4IHNpbmNlIHRoaXMgcGhhc2UgYmVnYW4gaW4gQXByaWwgMjAxNi5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipTZXB0ZW1iZXIgMjAxNyoqXFxuXFxuLSAtIC1cXG5cXG5UaGUgcHJvamVjdCBpcyBwcm9ncmVzc2luZyB3ZWxsIHdpdGggZGV0YWlsZWQgbmV0d29yayBkZXNpZ24sIHBsYW5uaW5nIGFuZCBlbmdpbmVlcmluZyBzdXJ2ZXlzIGNvbnRpbnVpbmcgYW5kIHNvIGZhciBoYXMgZGVsaXZlcmVkIGFjY2VzcyB0byBcXFwic3VwZXJmYXN0XFxcIiBmaWJyZSBicm9hZGJhbmQgdG8gMSw4NzEgcHJlbWlzZXMgaW4gV2VzdCBTdXNzZXggc2luY2UgdGhpcyBwaGFzZSBiZWdhbiBpbiBBcHJpbCAyMDE2LiBUaGlzIGlzIGN1cnJlbnRseSAyNi43JSBvZiBvdXIgdGFyZ2V0IHRvIHJlYWNoIDcsMDAwIHByZW1pc2VzIGJ5IHRoZSBlbmQgb2YgU2VwdGVtYmVyIDIwMTguIFRoZSBwcm9qZWN0IGlzIG9uIHRyYWNrIGluIHRlcm1zIG9mIGFjdHVhbCBidWlsZCBwcm9ncmFtbWUuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqQXByaWwgLSBKdW5lIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIHByb2plY3QgaXMgcHJvZ3Jlc3Npbmcgd2VsbCB3aXRoIGRldGFpbGVkIG5ldHdvcmsgZGVzaWduLCBwbGFubmluZyBhbmQgZW5naW5lZXJpbmcgc3VydmV5cyBjb250aW51aW5nIGFuZCBzbyBmYXIgaGFzIGRlbGl2ZXJlZCBhY2Nlc3MgdG9cXFwic3VwZXJmYXN0XFxcIiBmaWJyZSBicm9hZGJhbmQgdG8gMSwyMDMgcHJlbWlzZXMgaW4gV2VzdCBTdXNzZXggc2luY2UgdGhpcyBwaGFzZSBiZWdhbiBpbiBBcHJpbCAyMDE2LlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0d29Db2xMYXlvdXRcIixcImNvbHVtbnNcIjpbW3tcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIioqVGFyZ2V0KipcXG5cXG5JbiB0b3RhbCB3ZSBhaW0gdG8gYmVuZWZpdCBhbiBleHRyYSA3LDAwMCBwcmVtaXNlcyBieSBTZXB0ZW1iZXIgb2YgMjAxOC5cXG5cXG5cIn1dLFt7XCJ0eXBlXCI6XCJpbWFnZVwiLFwic3JjXCI6XCIvYXBpL2Fzc2V0cy84MzFGN0E3RC0zRkE5LTRGMTMtODgxNC03MjU5QjNBRjI2RTlcIn1dXX1dLFwidXNlX2N1c3RvbV90aXRsZVwiOnRydWUsXCJjdXN0b21fdGl0bGVcIjpcIkluY3JlYXNpbmcgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsIHByb3BlcnRpZXMgd2l0aCBhY2Nlc3MgdG8gXFxcInN1cGVyZmFzdFxcXCIgZmlicmUgYnJvYWRiYW5kIFwiLFwidXNlX2N1c3RvbV9zdWJ0aXRsZVwiOnRydWUsXCJjdXN0b21fc3VidGl0bGVcIjpcIldlIGFpbSB0byBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mIHByZW1pc2VzIGluIFdlc3QgU3Vzc2V4IHdpdGggYWNjZXNzIHRvIFxcXCJzdXBlcmZhc3RcXFwiIGZpYnJlIGJyb2FkYmFuZCBieSB0aGUgZW5kIG9mIERlY2VtYmVyIDIwMTggYnkgYXQgbGVhc3QgNywwMDBcIixcInRpdGxlX2ltYWdlXCI6XCIvYXBpL2Fzc2V0cy8yNTY5QzY2QS0yN0EzLTQxMzYtQTUyRi1BQzJEQTRBRTM5NTBcIn0ifSwicHJldmFpbGluZ19tZWFzdXJlIjp7InN0YXJ0IjoiMjAxNi0wNC0wMVQwMDowMDowMC4wMDAiLCJlbmQiOiIyMDE4LTAzLTMxVDIzOjU5OjU5LjAwMCIsInVuaXQiOiJwcmVtaXNlcyIsInRhcmdldCI6NzAwMCwidGFyZ2V0X3R5cGUiOiJhYnNvbHV0ZSIsInRhcmdldF9kZWx0YV9pc19wZXJjZW50IjpmYWxzZSwibWV0cmljIjp7Im1ldGFkYXRhIjoiIiwiaWQiOiJnYWU4LWFmd2kifSwiY29tcGFyaXNvbiI6eyJjb21wYXJpc29uX2Z1bmN0aW9uIjoiPiJ9LCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcImVkaXRcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOjMsXCJ5ZWFyXCI6MjAxNn0sXCJlbmRcIjp7XCJkYXRlXCI6XCJlbmRcIixcIm1vbnRoXCI6MixcInllYXJcIjoyMDE4fX0sXCJiYXNlbGluZVwiOntcInNxdWlzaHlcIjp7XCJzdGFydFwiOntcImRhdGVcIjpcInN0YXJ0XCIsXCJtb250aFwiOlwieWVhclwiLFwieWVhclwiOjIwMTR9LFwiZW5kXCI6e1wiZGF0ZVwiOlwic3RhcnRcIixcIm1vbnRoXCI6XCJ5ZWFyXCIsXCJ5ZWFyXCI6MjAxNH19LFwic3RhcnRcIjpcIjIwMTQtMDEtMDFUMDA6MDA6MDAuMDAwXCIsXCJlbmRcIjpcIjIwMTQtMDEtMDFUMjM6NTk6NTkuMDAwXCIsXCJtZXRyaWNcIjp7XCJtZXRhZGF0YVwiOlwie1xcXCJ3aXphcmRcXFwiOntcXFwiZmlsdGVyX2FzdFxcXCI6W3tcXFwidmFsdWVzXFxcIjpbe31dfV19fVwifX0sXCJuYW1lXCI6XCJ0aGUgYWRkaXRpb25hbCB0b3RhbCBob21lcyBwYXNzZWQgKFRIUCkgXCIsXCJpc19idXJuZG93bl9kaXNhYmxlZFwiOmZhbHNlLFwiaXNfdHJlbmRsaW5lX2Rpc2FibGVkXCI6ZmFsc2UsXCJ1c2VfcHJvZ3Jlc3Nfb3ZlcnJpZGVcIjp0cnVlLFwicHJvZ3Jlc3Nfb3ZlcnJpZGVcIjpcImdvb2RcIn0ifSwiY3JlYXRlZF9hdCI6IjIwMTgtMDctMjNUMDk6MDM6MTYuMDM5WiIsInZlcnNpb24iOiIyMDE4LTA3LTIzVDA5OjAzOjE2LjAzOVoiLCJ0YXJnZXRfdG9sZXJhbmNlIjo3MDAsImlkIjoiZmN1aC1qN2VqIn0sInJlbGF0ZWRfbWVhc3VyZXMiOltdLCJiYXNlX2Rhc2hib2FyZCI6IjU3NHItaDVuYyIsInVwZGF0ZWRfYXQiOiIyMDE4LTA3LTIzVDA5OjUwOjE5LjQwMFoiLCJjcmVhdGVkX2F0IjoiMjAxOC0wNy0yM1QwOTowMzoxNi4wODFaIiwidmVyc2lvbiI6IjIwMTgtMDctMjNUMDk6NTA6MTkuNDAwWiIsImNyZWF0ZWRfYnkiOiI3OTdpLTZyOWcifSx7ImlkIjoiYXEzZC1iOXR2IiwibmFtZSI6IkNob2ljZSBvdmVyIE93biBDYXJlIiwiaXNfcHVibGljIjp0cnVlLCJtZXRhZGF0YSI6eyJtZXRhZGF0YSI6IntcInJldGlyZW1lbnRfbmFycmF0aXZlXCI6W10sXCJuYXJyYXRpdmVcIjpbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyAqKkNob2ljZSBvdmVyIG93biBDYXJlKipcXG5cXG4tIC0gLVxcblxcblRoaXMgbWVhc3VyZSBpcyBhIHJlZmxlY3Rpb24gb2YgV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwncyBkcml2ZSB0byBvZmZlciBwZW9wbGUgY2hvaWNlIGFuZCBpbmRlcGVuZGVuY2UuIFJlc2VhcmNoIGhhcyBpbmRpY2F0ZWQgdGhhdCByZWNlaXB0IG9mIHNlbGYtZGlyZWN0ZWQgc3VwcG9ydCwgdmlhIHBlcnNvbmFsIGJ1ZGdldHMsIGhhcyBhIHBvc2l0aXZlIGVmZmVjdCBpbiB0ZXJtcyBvZiBpbXBhY3Qgb24gd2VsbC1iZWluZywgaW5jcmVhc2VkIGNob2ljZSBhbmQgY29udHJvbCwgY29zdCBpbXBsaWNhdGlvbnMgYW5kIGltcHJvdmluZyBvdXRjb21lcy5cXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiKipRdWFydGVyIDEgLSBKdW5lIDIwMTcqKlxcblxcbi0gLSAtXFxuXFxuVGhlIGFubnVhbCBBZHVsdHMgU29jaWFsIENhcmUgVXNlciBTdXJ2ZXkgd2FzIGNvbXBsZXRlZCBpbiBBcHJpbCBhbmQgTWF5IDIwMTcuIFN1cnZleXMgd2VyZSBzZW50IG91dCB0byBjdXN0b21lcnMgYW5kIGNhcmVycyB3aG8gY3VycmVudGx5IHJlY2VpdmUgYSBzZXJ2aWNlIGZyb20gV2VzdCBTdXNzZXggQ291bnR5IENvdW5jaWwg4oCTIHRoZXJlIHdhcyBhIHNpZ25pZmljYW50IGltcHJvdmVtZW50IGluIHRoZSByZXR1cm4gb2YgdGhlIHN1cnZleXMgZnJvbSAzNyAlIHRvIDUxICUgYW5kIHRoZSBvdXRjb21lcyB3ZXJlIHJlcG9ydGVkIGluIGxpbmUgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIGZyb20gdGhlIERlcGFydG1lbnQgb2YgSGVhbHRoLiBUaGUgc2NvcmUgdG8gdGhlIHF1ZXN0aW9uIHdhcyA3Ny42ICUgd2hpY2ggaXMgYW4gaW1wcm92ZW1lbnQgb24gbGFzdCB5ZWFyLiBUaGUgUHVibGljIEhlYWx0aCBSZXNlYXJjaCB1bml0IGFyZSBjdXJyZW50bHkgdW5kZXJ0YWtpbmcgYSBtb3JlIGRldGFpbGVkIGFuYWx5c2lzIG9mIHRoZSBhbnN3ZXJzOyB0aGlzIHdpbGwgYmUgcmVhZHkgaW4gQXVndXN0IGFuZCB3aWxsIGJlIGNvbnNpZGVyZWQgYnkgdGhlIFF1YWxpdHkgQXNzdXJhbmNlIE1hbmFnZW1lbnQgQm9hcmQuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiIyAqKkNhcmUgRnVuZGluZyAmIEFkdmljZSoqXFxuXFxuKipDYXJld2lzZSBDYXJlIEZ1bmRpbmcgU2NoZW1lKipcXG5cXG5cIn0se1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiUGVvcGxlIGFyZSBsaXZpbmcgbG9uZ2VyIGFuZCBmb3Igc29tZSB0aGlzIG1heSBtZWFuIG1vdmluZyBpbnRvIGEgY2FyZSBob21lLiBUaGlzIGRlY2lzaW9uIGlzIGxpa2VseSB0byBiZSBvbmUgb2YgdGhlIG1vc3QgZXhwZW5zaXZlIGRlY2lzaW9ucyBwZW9wbGUgbWFrZSBpbiB0aGVpciBsaXZlcyBhbmQgdGhlIHByb3NwZWN0IG9mIHBheWluZyBmb3IgbG9uZy10ZXJtIGNhcmUgY2FuIGZlZWwgZGF1bnRpbmcuIFlldCBtYW55IGRvIG5vdCBzZWVrIGluZm9ybWF0aW9uIGFuZCBhZHZpY2UgdG8gaGVscCB0aGVtIGNvbnNpZGVyIGFsbCB0aGUgb3B0aW9ucyBhdmFpbGFibGUgYW5kIG1ha2UgaW5mb3JtZWQgZGVjaXNpb25zLiBUaGlzIHNvcnQgb2YgcGxhbm5pbmcgaXMgdml0YWwgYmVjYXVzZSBiYXNlZCBvbiBjdXJyZW50IGVzdGltYXRlcywgV2VzdCBTdXNzZXggcmVzaWRlbnRzIGNhbiBleHBlY3QgdG8gcGF5IGFuIGF2ZXJhZ2Ugb2YgwqM1MCwwMDAgb3IgbW9yZSBwZXIgeWVhciBmb3IgYSByZXNpZGVudGlhbCBjYXJlIGhvbWUuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIlRvIGVuc3VyZSB0aGF0IHRoZSByZXNpZGVudHMgb2YgV2VzdCBTdXNzZXggaGF2ZSBhY2Nlc3MgdG8gaGlnaCBxdWFsaXR5IGluZm9ybWF0aW9uIGFuZCBhZHZpY2UgYWJvdXQgY2FyZSBhbmQgc3VwcG9ydCBvcHRpb25zIGFuZCB0aGUgbW9zdCBjb3N0IGVmZmVjdGl2ZSB3YXlzIG9mIHBheWluZyBmb3IgdGhpcywgb3VyIENhcmV3aXNlIENhcmUgRnVuZGluZyBzY2hlbWUgd2FzIGVzdGFibGlzaGVkIGJ5IEFnZSBVSyBXZXN0IFN1c3NleCwgdGhlIFNvY2lldHkgb2YgTGF0ZXIgTGlmZSBBZHZpc2VycyAoU09MTEEpLCB0aGUgQ291bnR5IENvdW5jaWzigJlzIEFkdWx0c+KAmSBTZXJ2aWNlcyBhbmQgVHJhZGluZyBTdGFuZGFyZHMgZGVwYXJ0bWVudHMgYW5kIFdlc3QgU3Vzc2V4IFBhcnRuZXJzIGluIENhcmUuXFxuXFxuXCJ9LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIkNhcmV3aXNlIGhhcyBhIHBhbmVsIG9mIGFwcHJvdmVkIGluZGVwZW5kZW50IHNwZWNpYWxpc3QgZmluYW5jaWFsIGFkdmlzZXJzIHRvIGhlbHAgcGVvcGxlIGFmZm9yZCB0aGUgYmVzdCBxdWFsaXR5IGNhcmUgYXQgaG9tZSBvciBpbiB0aGVpciBwcmVmZXJyZWQgY2FyZSBob21lIGZvciBhcyBsb25nIGFzIHRoZXkgbmVlZCBpdCBhbmQgc28gcHJldmVudCBwZW9wbGUgcnVubmluZyBvdXQgb2YgbW9uZXkgYW5kIGJlY29taW5nIHRoZSBmaW5hbmNpYWwgcmVzcG9uc2liaWxpdHkgb2YgdGhlIENvdW50eSBDb3VuY2lsLlxcblxcblwifV0sW3tcInR5cGVcIjpcImltYWdlXCIsXCJzcmNcIjpcIi9hcGkvYXNzZXRzL0IyNDFCNEM2LTEzMzEtNDcwQi1CMzYxLUY2RjFFQUMxREQyNFwifV1dfSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCJDYXJld2lzZSBoYXMgYmVlbiBvcGVyYXRpb25hbCBzaW5jZSAyMDExIGFuZCB0aGUgQ291bnR5IENvdW5jaWwgaGFzLCB0aGVyZWZvcmUsIGJlZW4gaW4gYSBnb29kIHBvc2l0aW9uIHRvIGV2YWx1YXRlIHBlcmZvcm1hbmNlIG92ZXIgYSBmYWlybHkgbG9uZyBwZXJpb2QgYW5kIHRha2UgYWN0aW9uIGFzIG5lY2Vzc2FyeSB0byByZWZpbmUgdGhlIG1vZGVsLiBDb25zZXF1ZW50bHksIHdlIHdlcmUgd2VsbC1wb3NpdGlvbmVkIHRvIG1lZXQgb3VyIGR1dHkgdW5kZXIgdGhlIENhcmUgQWN0IHRvIGVuc3VyZSB0aGF0IHJlc2lkZW50cyBoYXZlIGFjY2VzcyB0byBpbXBhcnRpYWwgZmluYW5jaWFsIGFkdmljZSBhYm91dCBwYXlpbmcgZm9yIGNhcmUgYW5kIHN1cHBvcnQuIFRoaXMgYWxzbyBtZWFucyB0aGF0IENhcmV3aXNlIGhhcyBldm9sdmVkIGludG8gYSBtb2RlbCB0aGF0IGlzIGJlaW5nIHVzZWQgYXMgYW4gZXhlbXBsYXIgb2YgZ29vZCBwcmFjdGljZSBhdCBhIG5hdGlvbmFsIGxldmVsLCBub3QgbGVhc3QgYmVjYXVzZSBvZiB0aGUgaGlnaCBsZXZlbCBvZiBjdXN0b21lciBjaG9pY2UgdGhhdCBpcyBidWlsdCBpbnRvIHRoZSBtb2RlbC4gVGhlIHN1Y2Nlc3NmdWwgcGFydG5lcnNoaXAgc3R5bGUgYW5kIHRoZSByaXNrIG1hbmFnZW1lbnQgYXBwcm9hY2ggYWRvcHRlZCBieSB0aGUgQ291bnR5IENvdW5jaWwgaGF2ZSBhbHNvIGJlZW4gaGlnaGxpZ2h0ZWQgdG8gb3RoZXIgbG9jYWwgYXV0aG9yaXRpZXMgYXMgcG9zaXRpdmUgZWxlbWVudHMgb2Ygb3VyIGFwcHJvYWNoLlxcblxcblByZXNlbnRhdGlvbnMgb24gdGhlIENhcmV3aXNlIG1vZGVsIGhhdmUgYmVlbiBpbmNsdWRlZCBpbiBUTEFQIChUaGluayBMb2NhbCwgQWN0IFBlcnNvbmFsKS9EZXBhcnRtZW50IG9mIEhlYWx0aCBuYXRpb25hbCB3b3Jrc2hvcHMgaGVsZCB0byBzdXBwb3J0IGxvY2FsIGF1dGhvcml0aWVzIGluIHBsYW5uaW5nIHRvIGRpc2NoYXJnZSB0aGVpciBkdXR5IHVuZGVyIHRoZSBDYXJlIEFjdCAyMDE0LiBDYXJld2lzZSBoYXMgaW5mb3JtZWQgdGhlIERlcGFydG1lbnQgb2YgSGVhbHRoIGZpbmFsIGd1aWRhbmNlIGZvciBsb2NhbCBhdXRob3JpdGllcyBvbiB0aGUgcHJvdmlzaW9uIG9mIGZpbmFuY2lhbCBpbmZvcm1hdGlvbiBhbmQgYWR2aWNlLlxcblxcblwifSx7XCJ0eXBlXCI6XCJ0ZXh0XCIsXCJ0ZXh0XCI6XCIjICoqSGVyZeKAmXMgaG93IGZpbmFuY2lhbCBhZHZpY2UgZnJvbSBhIENhcmV3aXNlIGNhcmUgZmVlcyBzcGVjaWFsaXN0IGhlbHBlZCBvbmUgV2VzdCBTdXNzZXggZmFtaWx5LioqXFxuXFxuR3JhY2UqIHdhcyA4NCB3aGVuIGhlciBkYXVnaHRlciBhbmQgbGF3eWVyIGFza2VkIGZvciBhZHZpY2Ugb24gY292ZXJpbmcgaGVyIGNhcmUgY29zdHMuIEdyYWNlIHN1ZmZlcmVkIHNvbWUgcGh5c2ljYWwgcHJvYmxlbXMgYW5kIG1pbGQgZGVtZW50aWEgd2hpY2ggbWVhbnQgdGhhdCBzaGUgbmVlZGVkIGZ1bGwtdGltZSByZXNpZGVudGlhbCBjYXJlLiBHcmFjZSBvd25lZCBhIGhvdXNlIGFuZCBhZnRlciBpdCB3YXMgc29sZCB0aGF0IGdhdmUgaGVyIGFzc2V0cyBvZiDCozIxMCwwMDAuIFdlIGVzdGltYXRlZCB0aGF0IGlmIEdyYWNlIGRpZCBub3RoaW5nIGhlciBtb25leSB3b3VsZCBydW4gZG93biBhbmQgc2hlIHdvdWxkIG5lZWQgaGVyIGNhcmUgdG8gYmUgcGFpZCBmb3IgYnkgdGhlIGxvY2FsIGF1dGhvcml0eSBhZnRlciBzZXZlbiB5ZWFycy5cXG5cXG4gXCJ9LHtcInR5cGVcIjpcInR3b0NvbExheW91dFwiLFwiY29sdW1uc1wiOltbe1widHlwZVwiOlwiaW1hZ2VcIixcInNyY1wiOlwiL2FwaS9hc3NldHMvMEFDQkVFRDQtQzBBMC00MUQxLUIzNzEtQzQ3NDQ4ODlCODA2XCJ9XSxbe1widHlwZVwiOlwidGV4dFwiLFwidGV4dFwiOlwiQWZ0ZXIgbG9va2luZyBhdCBHcmFjZeKAmXMgc2l0dWF0aW9uIHdlIGNvbnNpZGVyZWQgYSBudW1iZXIgb2Ygb3B0aW9ucy4gT25lIG9wdGlvbiB3YXMgdG8gYXJyYW5nZSBhbiBpbW1lZGlhdGUgY2FyZSBwbGFuIGZvciBhIHByZW1pdW0gb2YgwqMxMzgsMDAwLiBJdCB3b3VsZCBwYXkgaGVyIGNhcmUgcHJvdmlkZXIgwqMyLDEwMCBhIG1vbnRoLCB3aGljaCB3b3VsZCBpbmNyZWFzZSBlYWNoIEFwcmlsIGJ5IDUlIGFuZCBiZSBwYXlhYmxlIGZvciBoZXIgbGlmZXRpbWUuIEhvd2V2ZXIsIHRoaXMgb3B0aW9uIHdvdWxkIG9ubHkgbGVhdmUgwqM3MiwwMDAgb2YgaGVyIGVzdGF0ZSBhbmQgR3JhY2UgYW5kIGhlciBmYW1pbHkgd2VyZSB1bmNvbWZvcnRhYmxlIHdpdGggdGhlIGlkZWEgdGhhdCBzdWNoIGEgbGFyZ2Ugc3VtIGNvdWxkIGJlIGxvc3QgaWYgR3JhY2UgZGllZCBzb29uIGFmdGVyIGJ1eWluZyB0aGUgcGxhbi4gSW5zdGVhZCB3ZSBhZ3JlZWQgdGhhdCBHcmFjZSBzaG91bGQgYnV5IGEgZml2ZS15ZWFyIGRlZmVycmVkIGNhcmUgcGxhbiBhdCBhIGNvc3Qgb2YgwqMyNiwxMDAuIFRoaXMgcGxhbiBoYXMgdGhlIHNhbWUgbG9uZy10ZXJtIGJlbmVmaXQgYXMgdGhlIGltbWVkaWF0ZSBwbGFuLCBidXQgd2lsbCBvbmx5IHBheSBvdXQgaWYgR3JhY2Ugc3RpbGwgbmVlZHMgY2FyZSBpbiBmaXZlIHllYXJz4oCZIHRpbWUuIEluIHRoZSBtZWFudGltZSBzaGUgZnVuZHMgdGhlIGNhcmUgZnJvbSBoZXIgYXNzZXRzLiBPdmVyYWxsIHRoZSBsb25nLXRlcm0gY29zdCBvZiB0aGlzIG9wdGlvbiBpcyBncmVhdGVyIGJ1dCBHcmFjZSBhbmQgdGhlIGZhbWlseSB3ZXJlIGhhcHBpZXIgd2l0aCB0aGlzIHNvbHV0aW9uIGFzIHRoZXkgd291bGQgZmVlbCB0aGF0IHRoZSBleHRyYSBtb25leSBoYWQgYmVlbiBzcGVudCBvbiBHcmFjZeKAmXMgY2FyZS4gT25jZSBwYWlkLCB0aGUgcHJlbWl1bSBjYW4gbmV2ZXIgYmUgcmV0dXJuZWQsIGJ1dCBHcmFjZSBhbmQgaGVyIGZhbWlseSBmb3VuZCB0aGUgcGxhbiBnYXZlIHRoZW0gZ3JlYXQgcGVhY2Ugb2YgbWluZC4gR3JhY2Uga25ldyB0aGF0IHRoZSBpbmNvbWUgZnJvbSB0aGUgcGxhbiB3b3VsZCBiZSB0aGVyZSBubyBtYXR0ZXIgaG93IGxvbmcgc2hlIGxpdmVkLiBTaGUgZGlkbuKAmXQgaGF2ZSB0byB3b3JyeSBhYm91dCBoZXIgbW9uZXkgcnVubmluZyBvdXQgYW5kIHNoZSB3b3VsZCBzdGlsbCBoYXZlIG1vbmV5IHRvIGxlYXZlIGFuIGluaGVyaXRhbmNlIGZvciBoZXIgZmFtaWx5LiBPbiBHcmFjZXMgZGVhdGggc2hlIHdpbGwgbGVhdmUgYW4gZXN0YXRlIGJldHdlZW4gwqMxODQsMDAwIGFuZCDCozY3LDAwMCwgZGVwZW5kaW5nIHVwb24gaG93IGxvbmcgc2hlIGxpdmVzLlxcblxcblRoaXMgaXMganVzdCBvbmUgZXhhbXBsZSBvZiBob3cgQ2FyZXdpc2UgY2FuIGhlbHAgcGVvcGxlIG1ha2UgbW9yZSBpbmZvcm1lZCBjaG9pY2VzIGF0IHRoaXMgc29tZXRpbWVzIHZlcnkgc3RyZXNzZnVsIHN0YWdlIGluIHRoZWlyIGxpdmVzLlxcblxcbiogTmFtZSBjaGFuZ2VkICAgXFxuXCJ9XV19LHtcInR5cGVcIjpcInRleHRcIixcInRleHRcIjpcIiMgKipQZXJmb3JtYW5jZSoqXFxuXFxuVGhlIHBvdGVudGlhbCBmaW5hbmNpYWwgYmVuZWZpdHMgdG8gYm90aCBpbmRpdmlkdWFscyBhbmQgdGhlIENvdW50eSBDb3VuY2lsLCBhbmQgdGhlIHByZWRpY3RlZCBkZW1vZ3JhcGhpYyBpbmNyZWFzZSBpbiBudW1iZXJzIG9mIG9sZGVyIHBlb3BsZSwgcGFydGljdWxhcmx5IHRob3NlIHdpdGggZGVtZW50aWEsIG92ZXIgdGhlIGNvbWluZyB5ZWFycywgbWVhbnMgdGhhdCBwcm9tb3Rpb24gb2YgdGhlIENhcmV3aXNlIHNjaGVtZSBpcyBpbXBlcmF0aXZlLiBDYXJlZnVsbHkgdGFyZ2V0ZWQgbWFya2V0aW5nIGFuZCBwcm9tb3Rpb25zIGNhbXBhaWducyByYW4gdGhyb3VnaG91dCAyMDE0LTE1LCAyMDE1LTE2IGFuZCAyMDE2LTE3LiBBIG1hcmtldGluZyBjYW1wYWlnbiBmb3IgMjAxNy0xOCBpcyBub3cgdW5kZXJ3YXkgdXNpbmcgdGhlIG91dGNvbWUgb2YgZXZhbHVhdGlvbiBmcm9tIHRoZSBwcmV2aW91cyB0aHJlZSB5ZWFycy4gVGhlIG1hcmtldGluZyBhaW1zIHRvIGVuc3VyZSB0aGF0IHRoZSBtb21lbnR1bSBvZiBwYXN0IGNhbXBhaWducyBpcyBtYWludGFpbmVkIGFuZCBwdWJsaWMgYXdhcmVuZXNzIGluY3JlYXNlZC4gV29ya2luZyBjbG9zZWx5IHdpdGggUG9saWN5ICYgQ29tbXVuaWNhdGlvbnMgdGhlIDIwMTctMTggY2FtcGFpZ24gd2lsbCByZWZsZWN0IHRoZSBBZHVsdHMnIFNlcnZpY2VzIHZpc2lvbiBmb3IgdGhlIGZ1dHVyZSB3aGljaCBmb2N1c2VzIG9uIGluY3JlYXNpbmcgcGVvcGxl4oCZcyBpbmRlcGVuZGVuY2UgYW5kIHdlbGxiZWluZyBhbmQgZW5jb3VyYWdpbmcgbW9yZSBwZW9wbGUgdG8gcGxhbiBlYXJseSBmb3IgdGhlaXIgbG9uZy10ZXJtIGNhcmUgbmVlZHMgaW4gb2xkZXIgYWdlLlxcblxcbldlIGtub3cgdGhhdCBtYW55IHBlb3BsZSBkbyBub3QgaW1tZWRpYXRlbHkgd2FudCBhIHJlZmVycmFsIHRvIGEgY2FyZSBmZWVzIHNwZWNpYWxpc3QgYnV0IHdvdWxkIHJhdGhlciBoYXZlIGluZm9ybWF0aW9uIGluIHRoZSBmaXJzdCBpbnN0YW5jZSBhbmQgdGhlbiBtYWtlIGEgbWVhc3VyZWQgZGVjaXNpb24gbGF0ZXIgYWJvdXQgd2hldGhlciB0byBwcm9jZWVkLiBJdCBpcywgdGhlcmVmb3JlLCByZWNvZ25pc2VkIHRoYXQgdGhlIG51bWJlciBvZiByZWZlcnJhbHMgaXMgbmV2ZXIgbGlrZWx5IHRvIGluY3JlYXNlIGRyYW1hdGljYWxseSBpbiBhIHNob3J0IHBlcmlvZCBvZiB0aW1lIGFuZCB0aGF0IGFueSBjYW1wYWlnbiB3aWxsIHRha2UgdGltZSB0byB5aWVsZCByZXN1bHRzLiBQYXJ0bmVycywgaW5jbHVkaW5nIHRoZSBjYXJlIGZlZXMgc3BlY2lhbGlzdHMsIGhhdmUgYWR2aXNlZCB0aGF0IHRoZSBxdWFsaXR5IG9mIHJlZmVycmFscyBzaG91bGQgYmUgYSBrZXkgZm9jdXMgcmF0aGVyIHRoYW4gc2ltcGx5IGFpbWluZyB0byBpbmNyZWFzZSB0aGUgbnVtYmVycy5cXG5cXG5BZ2UgVUsgV2VzdCBTdXNzZXggcHJvdmlkZXMgYSBmcmVlIE1vbmV5IEFkdmljZSBzZXJ2aWNlIHdoaWNoIGlzIHBhcnQgb2YgdGhlIENhcmV3aXNlIHNjaGVtZTsgdGhpcyBzZXJ2aWNlIGluY2x1ZGVzIGJlbmVmaXRzIGFkdmljZS4gTWF4aW1pc2luZyBiZW5lZml0IGVudGl0bGVtZW50