".base64_decode("PD9waHANCg0KDQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KKiAgTG9jdXM3cyBNb2RpZmllZCBjMTAwIFNoZWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KKiAgQmV0YSB2LiAxLjBhIC0gUHJvamVjdCB4MjMwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KKiAgV3JpdHRlbiBieSBDYXB0YWluIENydW5jaCBUZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoqICBNb2RpZmllZCBieSBTaGFkb3cgJiBQcmVkZHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoqICBSZS1Nb2RpZmllZCBieSAjIXBoeXN4XiAoMTUuMi4wNykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCio9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQoqICBOZXcgTW9kaWZpY2F0aW9ucyBJbXBsZW1lbnRlZCAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQoNCiogIC1BZGRlZCBsaW5rIHRvIEVudW1lcmF0ZSB0byBlc2NhbGF0ZSBwcml2aWxlZGdlcyAgICAgIA0KDQoqICAtQWRkZWQgUm9vdHNoZWxsLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiogIC1BZGRlZCBSb290c2hlbGwuYzthdXRvLWNvbXBpbGVyICAgICAgICAgICAgICAgICAgICAgIA0KDQoqICAtRXhlY3V0ZSBSb290c2hlbGwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KKiAgLUFkZGVkIE1pZy1Mb2cgTG9nY2xlYW5lciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiogIC1FeGVjdXRlIE1pZy1Mb2cgTG9nY2xlYW5lciAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KDQoqICAtbWlsdzBybSBzZWFyY2hlciAoR3JhYnMgT1MgYW5kIHNlYXJjaGVzIG1pbHcwcm0pICAgIA0KDQoqICAtTG9jdXM3cyBTdHlsZSAmIEltYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KKiAgLUFkZGVkIHc0Y2sxbmcgU2hlbGwgQmFja2Rvb3IgQ29ubmVjdCBhbmQgQmFja2Rvb3IgICAgDQoNCiogIC1BZGRlZCBQSFAtUHJveHkgbGluayB0byBoaWRlIHlvdXIgYXNzICAgICAgICAgICAgICAgIA0KDQoqICAtQWRkZWQgeW91ciBpcCBhbmQgc2VydmVyIGlwIHdpdGggd2hvaXMgY2FwYWJpbGl0eSAgICANCg0KKiAgLUFkZGVkIHByaXZhdGUgMGRheSByZWxlYXNlZCBieSBhbGxhaGFrYSB3aGljaCB1dGlsaXplcyB0aGUgbGludXgNCg0KKiAgIHN1ZG8gYmFzaCB0byBleGVjdXRlIGEgc3RhY2sgb3ZlcmZsb3cuDQoNCio9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQoqICBGRUIuIDE0LCAyMDA3IFJFTEVBU0UgTk9URVM6ICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KDQoqICBQUklWQVRFIFJFTEVBU0UgT0YgQzEwMCBTSEVMTCBGT1IgTE9DVVM3UyBNRU1CRVJTICAgICANCg0KKiAgRkFJTFVSRSBUTyBETyBTTyBXSUxMIFJFU1VMVCBJTiBMT1NTIE9GIFZJUCAgICAgICAgICAgDQoNCiogIE1FTUJFUlMgQUNDRVNTLCBCQU4gRlJPTSBTSVRFLCBBTkQgTk8gUkVGVU5EIEZPUiBWSVAuDQoNCio9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQoqICBQUk9EVUNUIElORk86ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKw0KDQoqICBDMTAwIFNIRUxMIENSRUFURUQgQlkgQ0FQVEFJTiBDUlVOQ0ggU0VDVVJJVFkgVEVBTSAgICANCg0KKiAgV1dXLkNDVEVBTS5SVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoNCiogIEMxMDAgU0hFTEwgLSBSRVZBTVBFRCAoWDIzMDApIE1PRElGSUVEIEJZIExPQ1VTN1MgICAgIA0KDQoqICBVTkRFUkdST1VORCBORVRXT1JLIHwgV1dXLkxPQ1VTN1MuQ09NICAgICAgICAgICAgICAgICANCg0KKiAgRTBULyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQoNCg0KLy9mb3IgcGhwIHByb3h5IHB1cnBvc2VzDQoNCg0KDQpmdW5jdGlvbiBzZWxmVVJMKCkgeyAkcyA9IGVtcHR5KCRfU0VSVkVSWyJIVFRQUyJdKSA/ICcnIDogKCRfU0VSVkVSWyJIVFRQUyJdID09ICJvbiIpID8gInMiIDogIiI7ICRwcm90b2NvbCA9IHN0cmxlZnQoc3RydG9sb3dlcigkX1NFUlZFUlsiU0VSVkVSX1BST1RPQ09MIl0pLCAiLyIpLiRzOyAkcG9ydCA9ICgkX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSA9PSAiODAiKSA/ICIiIDogKCI6Ii4kX1NFUlZFUlsiU0VSVkVSX1BPUlQiXSk7IHJldHVybiAkcHJvdG9jb2wuIjovLyIuJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10uJHBvcnQuJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107IH0gZnVuY3Rpb24gc3RybGVmdCgkczEsICRzMikgeyByZXR1cm4gc3Vic3RyKCRzMSwgMCwgc3RycG9zKCRzMSwgJHMyKSk7IH0NCg0KJHNlbGZ1cmwgPSBiYXNlNjRfZW5jb2RlKHNlbGZVUkwoKSk7DQoNCiRwaHByb3g9Imh0dHA6Ly90d29mYWNlZC5vcmcvcHJveHkvaW5kZXgucGhwP3E9Ii4kc2VsZnVybDsNCg0KDQoNCi8vZW5kIG9mIGxpbmsNCg0KDQoNCi8vbWlsdzBybSBzZWFyY2gNCg0KJEx2ZXJzaW9uID0gcGhwX3VuYW1lKHIpOw0KDQokT1NWID0gcGhwX3VuYW1lKHMpOw0KDQppZihlcmVnaSgiTGludXgiLCRPU1YpKQ0KDQp7DQoNCiRMdmVyc2lvbj1zdWJzdHIoJEx2ZXJzaW9uLDAsNik7DQoNCiRtaWxsaW5rPSJodHRwOi8vbWlsdzBybS5jb20vc2VhcmNoLnBocD9kb25nPUxpbnV4IEtlcm5lbCAiLiRMdmVyc2lvbjsNCg0KfWVsc2V7DQoNCiRMdmVyc2lvbj1zdWJzdHIoJEx2ZXJzaW9uLDAsMyk7DQoNCiRtaWxsaW5rPSJodHRwOi8vbWlsdzBybS5jb20vc2VhcmNoLnBocD9kb25nPSIuJE9TVi4iICIuJEx2ZXJzaW9uOw0KDQp9DQoNCi8vRW5kIG9mIG1pbHcwcm0gc2VhcmNoDQoNCg0KDQoNCg0KLy93NGNrMW5nIFNoZWxsDQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNoZWxsZXhlYyIpKQ0KDQp7DQoNCmlmKGlzX2NhbGxhYmxlKCJwb3BlbiIpKXsNCg0KZnVuY3Rpb24gbXlzaGVsbGV4ZWMoJGNvbW1hbmQpIHsNCg0KaWYgKCEoJHA9cG9wZW4oIigkY29tbWFuZCkyPiYxIiwiciIpKSkgew0KDQpyZXR1cm4gMTI2Ow0KDQp9DQoNCndoaWxlICghZmVvZigkcCkpIHsNCg0KJGxpbmU9ZmdldHMoJHAsMTAwMCk7DQoNCiRvdXQgLj0gJGxpbmU7DQoNCn0NCg0KcGNsb3NlKCRwKTsNCg0KcmV0dXJuICRvdXQ7DQoNCn0NCg0KfWVsc2V7DQoNCmZ1bmN0aW9uIG15c2hlbGxleGVjKCRjbWQpDQoNCnsNCg0KZ2xvYmFsICRkaXNhYmxlZnVuYzsNCg0KJHJlc3VsdCA9ICIiOw0KDQppZiAoIWVtcHR5KCRjbWQpKQ0KDQp7DQoNCiAgaWYgKGlzX2NhbGxhYmxlKCJleGVjIikgYW5kICFpbl9hcnJheSgiZXhlYyIsJGRpc2FibGVmdW5jKSkge2V4ZWMoJGNtZCwkcmVzdWx0KTsgJHJlc3VsdCA9IGpvaW4oIm4iLCRyZXN1bHQpO30NCg0KICBlbHNlaWYgKCgkcmVzdWx0ID0gYCRjbWRgKSAhPT0gRkFMU0UpIHt9DQoNCiAgZWxzZWlmIChpc19jYWxsYWJsZSgic3lzdGVtIikgYW5kICFpbl9hcnJheSgic3lzdGVtIiwkZGlzYWJsZWZ1bmMpKSB7JHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBzeXN0ZW0oJGNtZCk7ICRyZXN1bHQgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBlY2hvICR2O30NCg0KICBlbHNlaWYgKGlzX2NhbGxhYmxlKCJwYXNzdGhydSIpIGFuZCAhaW5fYXJyYXkoInBhc3N0aHJ1IiwkZGlzYWJsZWZ1bmMpKSB7JHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7IEBvYl9jbGVhbigpOyBwYXNzdGhydSgkY21kKTsgJHJlc3VsdCA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IGVjaG8gJHY7fQ0KDQogIGVsc2VpZiAoaXNfcmVzb3VyY2UoJGZwID0gcG9wZW4oJGNtZCwiciIpKSkNCg0KICB7DQoNCiAgICRyZXN1bHQgPSAiIjsNCg0KICAgd2hpbGUoIWZlb2YoJGZwKSkgeyRyZXN1bHQgLj0gZnJlYWQoJGZwLDEwMjQpO30NCg0KICAgcGNsb3NlKCRmcCk7DQoNCiAgfQ0KDQp9DQoNCnJldHVybiAkcmVzdWx0Ow0KDQp9DQoNCn0NCg0KfQ0KDQoNCg0KJHByb3h5X3NoaXQ9Ikg0c0lBTE1YeDBRQUErUmFmWGhVMVptL001bUJBVUptVUQ0aTJoS3NLRlNCaEM5UlJGTjFGSzFiUnBTSzFqWEVmSENEK1NwenAwQWZrTGpEckl6RDJOaUswcWUxR3grMGk2MWQ2WXFDcmRFZ1NJSkduNkR6ZE5QS3lvQUI3ekNqUmhnbFFHRDIvYjNuM0xrM0ljZy82eC83N01DWmMzN252T2Y5T3U4NTc3azNNOFZmb1pYV1RsVyt6VThoZmE2ZU9aUHJvaG5UKzlUeW94UVZ6cGhWTkt0bytxekNJcVd3cUdnV2RSWE0vRmExa3ArQVh5dGRWbENnMU5ZOVdGZSs4dHgwNXh2L1AvcVpJdFpmMWJUNjhtOUxCaFo0MW93WkE2OS9VVkhodE9tenN1cy84K3BDV3Y5cHMyYk9VZ29LdnkyRnJKLy81K3UveG52SExUYWJMWXZ0U280Q05QRnhoMnNHMVkzTFJmOE1wVUFacEV4VUxsWEdVUTFNcFlGb3FMUlFHOFZKeFVFbGgwb2FoY1pRTHFUMmhYTE1KZ3QvYUF4bDZRSkZRY0Y4eFNQR0d3ZzNISFM0VUY0Y29paUxpTUVnT1c2bnF2dytLa2NjTHBRT3dpaURwQXdVRnpGeFBlSndvUlFRTHJDTVRhMnVlbkJxZGZuazZxcmF3SW9wL3JvcDAwUy9SK3AyNjQ4V1NsK1lud2xVNWxDWlJPVnFpU2RLbWRiUE5WVEdVSmtsZlFTYkxxWkNJcFRMcVZ4QUpaOUtFUldjYjVkUnVaYktsVlF1bFR4R1VibUt5akNKdjAvbEVpcFRxR0JQREpHNndxYVJ5dmsvam5QMEQrNkhYWXF3K2NKKy9mREowSDU5bzJYOVhTcTVpbGp6RWJMUExldnhWTVpaNW56SDB2NmVwWDBSRldTZ0s2aE1wakpjOW8rbGtrZGx1c1N6QjdDaGgwcm5ZdzdYS0x2dzdTSXFPbUg0Q3RoT3l2Y1F2a2ZpUDhIT2lNTjFuY1FGTko1UCtQY1NEeUU4a2ZCc2lTY1FuazM0Qm9ubkU1NUhlSmJFTDBObVJPd1Y0QlFWTldMSzMwaGxCV0ZkNGs0cTZ5eno5NE9Hc0VmaUd1Sy9tWEMreFA5R1pUdmhheVErUktYTmd0ZUNKK0VXbThDdlVxMWI1SmZBUnhiOS9MQi92V24vL2JCL3ZjbnZOaXJGS1lmTHdlczVXbGxJNHpkYjhBK29ucmplOUVjZS9FTzRXT0pLS3ZNSWU2VStZNmxlUkRoUGpyZkRQNFJqRXI5RTR5c0lYeXh4QlA0aGJKZnIrUXlOYnlUY0tjZGJxR3dtWENqeFZ2akhvbjhyL0dQQnErRWZ3a0dKbStFZndrc2svMnI0aC9BdGN2eEhPRGVpRGxkVTZ0OEcvMFJOZnRjaVBnZy9KZkZWc0o5d202Ui9HUEZCK0tBY0Q4Tit3dGRMakRoVENYOGg1WCtKK0lpYTY3T1Q2TmNSL3F2RVMyQi8xUFRmaFlnUHduZEw3SVA5RnYyQ05ONUdlS2JFanhQZTFXcXNYNTRDdnAwMGZxMGN2d1grc01oL0F2Nnc4RFAySWo0RlZENUUvRHh1eHMvNGZ1UGdtLys0dVQ0S25iVzEvbXFjc2tWS3llMC9LMWxRc2FUS3IxVXN1Nm02MU8rdjhDc2xKVXRxNm1wTGtJVzFraEtRbDRGNGx1TFhscFhWcjFTV2wxWnA5VlhsQk12ckFwcFNWbGRiVzFHbUtVc3F1TGZTWDFaYVc2bFVFdlFyTlJVMW1FRTNtaXF0cXFaaUdZZ0NSRlJUV2wxZFY2YjRxeXNxNmhWL1hkbERGWnBTV1ZrZDhLdEthVmxaUlQxeEZSVExsMVZwRlVwbC9iS3FXcTFTZWFpcXVwcTFLTldVQjZ0cW9jSXkrcThzcXlndFZ3SzFsRDBlVWxTdHJyYWFsQ2FMYXBYS3VtVVBLWDZoa2I5cVNXbVpWbFZYaTFubGdYcUYrSmRXUXkyb1NTb3F0VnFkNmxmcTY2U1FtbnFvcTliNXRRZFgxcFlTbVVUYzlrdVZLc3VxNi93VjhFWEZNallQMXRTUkFkQUR2cVR1MnJvU3lHTFpGU3VxeU5TNmVsS3VWS3VyVWtwdW0wK2VMcStxTFFuNEs4cUpIdTZXdnE4cHJXSmxxNG1ZOVBQRHUyVzFXclZTdWF5aXdwREYydHg2eDIwMzNsUXlqUmJVYUdHMTdmOXIvM0xPMlcrVExTVmIwQVBwSGhtREk2cXFoaU1ieFd5aXo4UFlybndzTHgwVDZTd2JkSTA0NDV5anhkbm1wSVI5ZDlMaEdveTlpcG9ZMzQrYWt0cGkxTFI1eWxGVE1sZFJVOUt2UmswSnRCNDFKVTROTlNYbUZhZ3BXYTVDVFFtOEFUVWx5TFdvU1pOMXFHa3pyMGROaWJJUk5TbjZKR3BLb0J0UjA4YjVMV3BLeEUyb0tjay9oNW91QnB0UlUzSjRFVFVsemkyb0tWRnVSVTJINkhiVWRGbDRIVFVsM0JiVWxLUjNvYVprM0lhYU5tbzdhdHE4SGFqcDRoRkRUVW01RXpWZFN2YWhwa3RPSERWZFhMcFFVNExXVWRQRko0V2FMa1BkcU9tQ2trWk5sNWdlMUhSNTZVV05aRTcrSFV6SnlJR2FrcndMTlMxWUxtcTZCSGxRMCtWb0pHbzZoUEpSMCtGMUNXcEtrZ1dvS1JsZmhwb09sNFhoUThHVVMzK0Nsa1pQNFdzVG5VUjdkaXFabVhlUXhNd0VIMzFqblRNVHNLSXFtb2w0aGo0VHNMSXF4aElkakxIQ0trSWswY0lZSzYwaTdTYTJNTWFLcXpqU0VrMk1zZklxcm55SlJzYUlBQldobDJoZ2pFaFFjVzFJMUROR1JLaElpNG5GakJFWjZqeGdIMk5FaUlyak8xSE1HSkdpNHZxU0tHU01pRkVYQXhjd1J1U29NQ2poWVl3SVV1dUJGY2FJSkhVRmNQY1pZRVNVMnNEMk0wWmtxZXZZZnNhSU1MV1I3V2VNU0ZNM3N2Mk1FWEZxRTl2UEdKR25ibWI3R1NNQzFTMXNQMk5Fb3JxZDdXZU1pRlJiMkg3R2lFeTFqZTFuakFoVk85aCt4b2hVdFpQdFo0eUlWZU5zUDJORXJxcXovWXdSd1dvMzI4OFlrYXoyc1AybmdXTzgvamJZejdpVDF4KzRnL0UrWG4vZ0ZzWnhYbi9nTFl5N2VQMkJteGpydlA3QWpZeFR2UDdBRFl5N2VmMkI2eG1uZWYyQkZ6UHU0ZlVIOWpIdTVmVUhMbWFNbmFJdUFpNWtqQjJqTGdZdVlJeWRvNnJBSHNiWVFXbzlzTUlZTzBsZEFkemRDNHdkcFRhdy9ZeXhzOVIxYkQ5ajdEQzFrZTFuakoybWJtVDdHV1BIcVUxc1ArR2l6eDRJSHdoMmRmdnVYcUN1YjhYSzA2WDZ6aCtyblpUcjlmbTBBT25HUnRxYmQvbXdRc3BQSHRsNTlINjZ6QVd4ZnFFV3paN3BpUHh6NzU2ZFRFUDd0Mkh1UE9LdUJDWTl1NDZlN3lLZTBBZmFtUERYd1JiSEp1RE1COW51UUhLM0U2UzJQVHZEWDR1NXo5NU1qaU9lRnlIV3dOd1RUT1dxNk5Tbi92VFU4ZUF1ajVSejF5TXBaQUZTbWlrbjdXcjE0cWxVYVEzZGdZQ2hUMnNJb1lqTUVPSFdISzlybFRPeHdHN2c2TWdRSmtTOHVTUlhqWlBabVJrZTNVYnVJQ2trK1lxQnlENlJaUDg0SmNrQzQwaEJHc3dVNnVNb0kxQmZhK2c2S1RmUk0yUmdZVWNrbHlkUGZhT3d6eVJaVFZiWVNQMnhZYkF4SytHcGMwZzRMcWRPKzJZSkp5WFpzS3lFUXVxT01tWG1MTVpFcVNxSGFDbGVQODNraVI1bFlPazViWUx0MXBQZktIMlFKSXNhWklGY1drVzI2M2ZuNEh5Qm5IS2ZaUXF2T0dZbEh4cG9TcjZjY2tYL0tiaGhKR2NIVTQ2QjdCeVBXVE54Z2REenhFVGhkVHVmV1pScERDY2xmZ2RuTklPaHN2TDc0SVpnVUl2TitlK2ZzTXhuNitKMHQ5QTdoM0NBVDRDT0RTWjEwNG4rMHY2VHFJVUF1enYwQm9LZXRzUnpORU9QQ2MwSVoyYml6cU1IVDhnT2w5cmNoaFA2RStwOFF5eHVPRFR2RERURnR4SzRBVXplQkpOZlpKbW9jZUExSmxiMkVLNDd5L3p4VUNqbGlJYnVwaDZmT282b01xK0FyU0UvMUxKbWFwYi9WSlBmcGVBMzdpeCtld2V4VFpMSGZFbmZETzZLaGRIaEUxbEcxNEhSMzg3eTFEcG01RnJxanJCcXh6dDkrbDVqMVZlYWpKNHhHZDBPUnRHekdOMGdOWm9aNjZMeHVWbXZMaDFpY2w1dTJuVWZ1TnhxVWlucUEraTU5R0xMZ2NDWGxVK2RZdlYraXVIUkovcXQzdHZIQjFnOTVlVFpxNmY5TUxnNnJRUzhZTlVFVnUvMkdETkY5TzFGNTZzOVdmN0NzMS8xOUxmekh0YkhvYTRuc0pSQ2VoRVdWSzh4L0FINDZLL3ArVHJseUk0dWRldXJ2NWFNTGIwajlDVUQ5T2JwZDRyZXlsYm5ZakxScnJpM09ac09nbU91ejlDbmN0T0RLZlJRUXVTc2xpYmRsK2V6NjhMc2JSa0tHczRtNGY4ZDhVSE9nc01PbDAvOUFwYTJDOGVKc1RDYmwxamxFSzdtdGZtajZkbVRoS01oblExTjk1aExadlRWWE1TU1FacjNqa202SjBzYWZRWTlvcCtNOWVsNXpOd1ZkZVQ3MkFKOStGakp3a0hXU3R0OGVpdDdJdGU5cmNXblhnTE9GajdFbjBjZFlLSlBIa0N0dndtSEJPZnVvNGhVM0d2eGlnSTZGbGgwbkdETWN6d0xLdmUyWXBlUFc1Rml4dzQ5MzlMMlRFQThXanBjbGc3M3E4VU9uM3I5V1NwZWJsSHhNYmE1b0krSzA0V0srdWRwTE1Kc1hqaDhaN1FMUkVQUjdNbngrdnl2TXBua1pWaWF4U1JDOXhoaGs3dlVwdjhLZ0ZxS0h1YVdTNDIrWTJ5RTQxOFBjSXlORk51dENaeGVIc1B5azlQSkFjUkVQM3lNSGQ3bmdMb3gzVzlQSFBpS094cWZWU2ljNWpnN3lmNVZicUhNTFdJbzJkWHE3ZllvNHNqemR2dlVwalFPYXc3VHV3UzdUUzFmMFNMUHhYY204RjE5TW5wbk83US9DdVgyUUxuUlVybW5nM1BqSk1QbWZyTEYvV3BMT0hUekdlT21vcGczRldjWDFIQW1IaE5TbHpyVTU5Slk1bUwyODNlL2t0RU8yc2pJVUVQS0dDdnlSRGFnY3p1ZWJNSTdyc3pkME5EdGNHM0hiZWpET0crNWZ6a21uUGlXbURDZWp0bGlkdVNvWUROVVVheDZKWWRuazF4WkJqNW5pc0NWV0JjNFFZM0RzdXRHeTJpbll3d2UwTjgvS200SEw3Qi9qeUlZWnZDU3plQmdVRVZEMFp3SkpOeFdwNE04YjFQa2djdHVYWDgwdTExWnpqSElpWTBTNFhVbDVVMTVMbVJGL3VTb3Vhd1kwVzlQaS9EaDZRWHZFc21HVWYzVXZFS3FhWWRXVGl5L05RWW9rOU1pbzBOZGpPbFZ4ODdla3pmMlp4bjdVckI4aWE0RUVUNkcrR0pNMTlWSFVuajRpSGhkNFZDYWZZRnZ0elpKTnRaY0lCcDU3cldQNGx6K0FPN2duaEhhdllsZFFIUGhKaVh3QTJ3YzNnLy8vcVd4MjZXZVRlOGlEbnBZdFNOOTFCVjl2eHBwcUV2N2F4SVJOQ0syYkV1VnBSbjk1SmRHNHJZbkYyV0dnMS95Z0pTcHpVV0thSUtJanl3aUhqM1daNUdNN3NtbUZMdSs4Nml4bjErakZudUM2R0hDVVRoMXBGZ0MvUlZ4bUdVQ0xqV04vbDdEdEZ4MVJEdmhsSWtMZ1BlWmVERnd1NG1iZ0Y4M2NSejRSY3Y4OXdqLzFzUS9CRjV2NFFlOHlzSVB1TnJFclBmOUFsdnRpWVB1Wmt2L1BUOStKSVY3WXRQQ0RvZHJYYWdOQjJuekh2cnVmUTEvTnRtaUhQdURNWFNhaDA1aktDT0hXa05iVDRzalFSSnQ3Z1hSQzcxV0lqbTA4UlNHZm4xcW9LR1RQSFRTT2hTTkxxSTg4WmVjOStsa0tMYnpBZU5iY0tmZTFpMlR2b3RHa2FKYlE3blVhdUdXQjYxUDBCcUpWaGRhK2RUYXhhMUxxTlhHclFKcXRYUHJNbXAxY0dzaXRXTGN1b3BhbmR3cTdCSEd0WVptWkZ1elpTdkt0bElXNzBIcWVZN2J4ZHlHb1hReWlmWkp0T2YxNFBTOGc3N0xjUWcyNjVTVzNyaUpUTzk5RGUrbmp6Mlh2VXZ4Yzh0V1lXUFltK2I3azdzMTFFVVQ4UFk4OFRaOVl6OWtBbWwrcjJEc2Nkc1h4bE9ETXpIQ0FUMTNuVGIwQkVVTzQ0YlppdmFkdmgzZkM5aVRRNk1NTWtyeUErdmdia3pHcXZ1aUhCYytOZEJoWnZFM2hjU0c1alkrSllkUkF4S0ozVWpaRnhocjlsbHRzTkczUVpKbmtEZ1RsMmZnc0xZejRrUmNRNko4K3RqUERMT21DRlU0MS9KUUppV0gzS0VVa3BNVCtZcHZpLzk5eHNyb2wweTkxNlErckJoMllYZ1REeC84VENidDdmeVVoRzlGbTQ4YkNsTGNqcmpkaVF3bFVuU0VpWXA5ZXZQblBJbEpndGVGUUZId3NOWFEvQnlreXUzQ2xVbEIyT29RaENLUlNQL3EwejZYOHZtUnRmbDFkb21WMVh0Mm1XSWpUQklwOW1RS1RkMVNzT0UvaEEwWnpzcUp6dE5XSnp6UFZyWW5zMDZJOW5IQ3l6ejhKMk1Za3JHditTSHdGNEtScFB3TFV3YjdVN0xmSy9wUTdtREtlL3RUNG0rMGlUbW5zUit5eG5YYkVMQXRVcUladXNGbXRFWTg3RXhjaWxEZmdBTWh3cU03NHM2b3d4UGRJTzN6TGRDN2oyUnQwMFhVSHpmaTJQMEdKZUk0Ym9MTitLN1ZicEdOTlhtaVVVcko2d1dXQitTbmpQOGJjZExMNVJFeU0xdjV6TkVyaForVFB6ZHNwZnZLTDFQeXZpSklJMnVaTk94SkxyUXM4aitsenJQSXVuTDJJdmVWL1U1U25uNHQyZDB0ZGk2L1R3MDJjN2Q3N1Vlbit2aTNrVzNqazFxcmEyakcrYVJvMTdCOU9KOTg0c2p5TGJXNXQvRkI1aE5ubTQvZ1Z0Yjh2L0tRTEFzMjRkcWRuTXpaR3YvT1JiN1pRbzViUnlDdGp6Y1VoMUxpQ29sV3RLTG5nUks4S3BQdnltYlk1UDBLNTdUK2grRkdqbzZHT3ZuUStjSW1uN2R3NTlqTnFkekp0eWxnZlorZ1h4YzZ3YU1uY2NMc0RwM0M2NHlHNWhOOFRLbnNYM2tKa05laDE0WVp6MEVSNW1zK3RjVTd6QXZERGNrQjd4R0h4R1F4TXh5SzRabnVlcHRjUjZGMnNNWGhFK1JvNllPT1pCOUE3UWFCUFV0QWUrWlFJa3N3dEsrbTdtRVc4OFhGUzlGRzlKSDlGdmxXZno1WFBIVXBlMDFGWHpMRTB1TlNENStRUGNhVFlWbzNud3gzUWM0eHd5TjliVDB4VkZ4dFR3N0MxVFl0cG4rVHo0WWRHZEJuZng1cVhraTM0Q0o5MDZjeU9tTFpCNHhZbjF2cGJPbFJ1OHcrMGg5NHJjais2R0ovZEJuKzZETDlNWldURFNZNU5iY1F3RWZRR0g3dWRyaGZEU1hPY0FqcmNpRWs2em5uWngwalJ2SjFybVJ6alRlOXlwNGNFdzBkZ1Jodm12SXQ1YjdCVVcrYWN1dEhGaUtwQ1g2NGs0Z1NtOTBzM3JtYkNRYXlkTlJBNmtndStIbFA0dGFjYk14WjUybXU4NW94UENlclB4MlRUSVp2bTVZdkduWkREbjZxazlndkU1R0huaGc1Vmo3OTFIaHpBbWdIcXlTekVpZFNCN1BLRTQwY2JYbGlnN0U1MURZOGh3bzEzeHQ4WGpVcldUQTk5VHZmcFJrK3F0K1I5UjVaZzU5UHZXd3Zuc1FSVlZIV3JDQXhUVXEwOVhYTnZlZVhlZFJtQklsdUJrbXh3U0QvL0F6K2JHUGZZdHJ1dFJQbDRocWJRVERUTncyMnZqSUpQTURIblJ3YmUxaW1ERDRtbWp0WlJGNUV3Qlc1RG5HemdpajhIaXR4b3kyYlFFREJDWVRkckQ5eFNDU3RTWHpxQys3Q1MwOExFUVlmL3VQa1NabUk3T3B1YzQwbURUcXZ1Vy8xbWFkdUJmOHhRcko3bXhPUXMyVjVsM3loaHA0SXgxdzQxTTVjMnpsY2hva0dSVjd5S2oyQWx3UXNKVG1PamFQSVk1dHFCR2Y5WnphRHdOQXF6NnBWY21wcmFCL1Z4cnNSQmo1NmlKT0h6MU5kQXg0Kzhxa3BYNjZMdGhMcGtXMFFqc3ZNUkwvK0c3a3h2VDNCMVQySytaZUJmZnlPdmlkUzdOaTBSZGhOS0ZOL2lmNTBsL0dReGgwajlYL05kbVFDUGZvS3FZMDRWeElicEVjSDBRT3dYWDlYREFxT2MvR3RyQndpSlNacmVGdnlwcFNXM2Q4bDcwUXJiOWVMRDFJOEtHRnZyM25xdm5kQXZLRHg5b2E5M2NIVjNSWGFDUHF1MCt6SkM0Z25mbXlYdklnYStBVmcwbU5JR1N3MWkzalQwa096RWRHUXFqTFg4aHpwRUg1NDBZWVJZZGdiUyt5Z09idTluYzdkM3I5VC9ROHFIOWtRNmQ1T1RvcC90L09zSnNUTk9tKzhxWlhyQXlJSGVqdU5MWmZuTURNSEh0djBSNTNpM1hYZlYxOFdIeXc2WUgyV1dqbFV2L3FBZU92MW9iN0dLUzhiVFBobVhDd0RxRnhDNmFTYmFuWjJxemNtakk0WlJwTkVmaDcwcGtTbDQrMlZlTVVDdld5bVdIRll3Z2o5cndmRkV3TnNDWHM3bndYcnNEY2U4YWJtZUx0WFh4WHg2cFd0Tjc5Tm9STmNyU3NCV3RrT2wvUjVoeERmUWVNVDl6bVVaRzVscTNlZlRhSHZMaHMvRUVaRzRZRTIzRUhQQTdZTytUY2lTMk5IUE1kSE9RVksvSDYvVkMwV1hCMkRSeWJFaFVkZUExNHh0akxpL1RnWWQxWFNuVDJQMm9kbDI1NmsySTd4YnhVdXdqRkR0SWoyR0g1b21jQ3ZWc1E4ajJXZXg1ekh3WHlBYldCYmwwRGxoYW1JdDN0U2g0LzZLRm42REtQYkRhUGJoZEh0R1cxaXA3Ny80MzVxMSs0WGFyL0NlSWhVTHJrbXNqQVc5YVpzbnNUemVDenNzMHp1YmFSaXR5MFl0NFc5T3IrUndtTFIvWlE4bjlIZTd0Ui9mcUNma0NGU3lBZDloWXhsODRkSXc1SVU1REhhUTRucFowUU0wSVYzUzF4dXJwamx4UnAyU29adjdlSWlkR1hjMlBwR3o2UzRQUERsN1dxcHZGL3hVVTVubHQ2MnY5ODdIZU5zZUVrS1hPZ0syeU5lVjNBMnE5dUwzOFVtcXprSU13RTZjbHlaUXYzdS9mOUQzck5BTjFXbWVYUHZUWExiaGlaSXE2QlZMeStuUEZxd2dHSlp0YThyVkdnYisxREJRU1kwU1JOc0UwNlQ4cGl4SUthd2xBcTZqalBqdUlyT09vSTd1K05oM0ZWblI4WEtJaFNzdkZYS2V6MDYzazRZdCt1aVUyZFoyTy83SDhsTm14VEVzK2ZzNHovOE4vL3JlL3pmNDMvZDJ4OCtMb3dpd3hDV2RaNWs0ODU1L05vdVdrak9GZkhjaEZhUFBqVVlaR01NSkpNcDdEeFYySGsrZHU3VytnWHFsaDExL1IyYWcraTZYOUpzT1B6cXcxaGZZVXhxUFkvQ2Z2WWtGZloreksvR2dRMjNMOUZyQU9QR3VuNFRkS3QvbHVaNGVOdWdJZWdTaEg1NVlnQ2hhWU1JbVMrSDBIMlJzMlV2RkIzRWthbHJZK3VlOC84MGdwMVZvVjVyeWJyakUvRDlyN2lsN295MDdzU1RqZWZwWm4rSm9OOTlrbFgxa2JHdno2bm5ub2lQVHpZaGZCUE96MW9Yc0czVG00VFlLdnhlWE1oRHNiN3lKRjlSUThld0JIaURUU0k4bHNya2lVTlhSMUZXUkhjN1NjcFJSSm9zdGZsK2NCQk5mYWYrKytPSVlpcXgwNTM2ZW9xd28vVjgzS1JRNS9iWGk2eE8rbXRodjJiMkt6dDlmMGx3MmZTSnBLdHFoMmFMVFpkOHVOT2RlamZEclNta3d6SXRCakdNT0dFMDRnU1lwM2tINDYwL08yNXNMVWRhbFl6bHN3QXBESFVkanp5Rm5KeGhwaGVkQkFsY3BrYkhRRUpoTTloNWljMWc1ODNjVGszY1RzbStNM0kyQzlCMTFEazZLcks4N2RxZnZlMTEvZDcyaXE5eG81dTF4S1R2UEJIVFdtdWYwSEwxYnZPUnIraTdBQmozeWNnMmk0NS9YOFBJQW1PZXZhMFRWZGM2VWdoYklxMDVRc3M0SXV3Ky9hOHBJZ292R3VEL0EvbFoyRWVhamRRLzdhSDBTc0hSK21DWkYwZXd3SWpBeU1EdkRBaHk5QmM1QWdkQjRCQmFDb2pYOW9FZDZGZWZpSzgzK25RbEJjYm9RNlNCVGYvWmNkYjVzNUhXczBMTENOclNhbWhaVE1jcDdTdzlzQUNLT0tQZmVKeU5SMzBnR0JDcENDbndLMjk3aVVMTHZvWmtPclNHb1JpR1g3N1hRd05zVlhEYlZJS2pHSFFlVmlWMHhBSGVGeHpuRm9XOWl0YzQ5S0xqOFY0cGVrR0N5WXlFRVFIMGV1RmlTeGJNQUJmUXViRFJmVUxDMGkyTnpSWFIyNTlBeGFmamF1eTBhRnpNckx5R0xkTDhWL0ZWQndHd1llV3F2ZEE3TUJIb0VTRUxWaldkMHYwYU80U1dZSXZaRHRVOW1kUjdRL2lwajViVnJuVkhXcnZGOE5YNFhBMUM2RGFGRzZKVjhDdUZKMFpuUXplOWtabW1jQzFOaU9HNWd6Rk5JSmhvdThtRHE5TkZmSTAxc1BRY25aZVdxR0RveDN1NG9STmxLVXhwNEJRbHRyalNSbkpEcyttRkh6TkR5eUdHWmpEMWJUMkQ3SXJTYXpQRk5wQmtPYksxaCswZnRhTWljZzhyNW5idEJJNDBieFRSN1VJTGE5R3VIU09VK1l6M05yZHltUkNYaFpXM2NpdlAwYWYyR0sxOERNMFJmanVFRjVHbldQL3B2T0hEdnp4Qkt3Wm9XYTgreXFlN09SeWxyRC8zVVh6bFRtaDBIelhTMkU1eitrY2ZEYUx4QkZ2Rk83REhETnM3UjQxTGpYQ1Z2aG5Send5RnRUakZTUU1wTGtpZ09JOVJkQStpR0IxTkZBY2FLOHFNZEltZ3RFekk3UzVTNk1BSFBuY0FGcFBjNTloSGFsejRmYUNMcjZrbElUZ1owc0tqdkdRSFFNWkpLSy9Pakh4eXdkdnV6SXplRkdzbllydHJ2R1RhTnJiN1QyeEgzbG5ZWUErT2s5N1lEOWtxcDRoczJzaTNsK0ZyMlR0ZTJIOU0zMDFlN0JMWmZRbUxDLzNSRDJNOUJNelFEeHpTYVNNTXZSOWtNdllWNDB0Y243MXRCSzd4YVdaMUxVMjQ3VzAvTmZGUzkrb2JhY0prYnlPN1Y1SVI3VzFWZ0xIMzNreGU0clczaVZJODg3Z05WaWE5TXZqUkdsS3lCeGVYYlUra0dmT3JwOURXUyt4dGpWWU91c1QrV0xPWnQrb2lVSFl3dk42enczZ2gvakdIdlEwLzI0N25WMmZUOUY0Q3NBQzJacjF2eGdEeUNNQWhXT2oxYmhtR2Z2YXBUTmNiRzdWUG5XUUtsWmVZeUNncDY3ODZRdVpyMkhORVdzOElLeFN5NUJhajQrTkMxYTg1RWplbXVJQWJoMUVMSmk1Q1VFMzVrTHVJRWJybmNETG9mSUR1cUVEVmRjQWEzREZ3bHdLNTltS2w5NElORDhLTzBvT3dZNmgvQWdER2xjNk04TnBkYTN0UVBidldIc2NmdW1VbmE4VGh0TVlVUCtGRGczc05NK3pzbUxIOTlDSEM5aXpTcnRYSStnMUpXUS9aaUdWQkl3KzZUcDNDemIzTGhGN1ZXMjZMblV3YXlkek1MZndJc1VaOG1sYVAxMzkzYUdnN050dnd0SktJSUR5V2pwMlN3QmtZMExZbmc1d3Q5VnpnM3hKRjNpWWZjT0hwQ2ZseUtwd1pIVWtoOFl2dDZCU2F4aitPaWpMY2NpcmNyUm1DMFlYM2l1akN2UXN6dUlKTVJETTRETUdrL0JvVjZYckNDbDA5ZGdoUUVUL2MxZ3VPMEVPZzE1L0RObkZnaDc2Q0FiZE5PcFlBN2RqNEU0Um1IZHdvT3lLZGtsUC93MkdHNXljOThVcjc2MjI1eDJLTm1NaVRhLytaQTBidFQ5UW5Ib3pyZzZnV1JwQklsd1JyRklNd2xxWnpLVFVrTllHNzBwT2FRUDdoSkNaUVNCUEN5a3o5bFFNeDJ0RjBxZzl6S24zOE1RM3Rvb2VvZCt3bDJyNmJ4aXQ4QTlnbDgwRHZ6OUppYmdZMUc0cHNWSEhNNWFoclNiakNRZ1hsNkI4ZllObzlFZE1QRkhQZG1wMzZ2WWY0bWd4bTdKRmt4djduZzdUck8wQkRDT1p0ZnlyM0pGVVl3ZEpwSFZKTDUvWWwrS2pldG45b3I5bXY4Qjc3a3lyb0pZVk44ZVNGdVpIU2hvTkQ2eWg5L3lBZFdWTEp2VnlKNjJnbVRTakxyR3hjWXFZYTZYU243b2FpRUljK2ZpSHh1elJ5ZW80SktieWk5elJaNTZOdWxqajBaL2V4QlZBV1dSQm40VjV6dThDT3lkZWV4bjdDN3luMmU1TDlrdU5QMzVtRGRHdS9ORXYzSEtDYnVJV2dRUG9DQUhYNHpqNjI2aXAxUkJzSlNZVUJGemxocWJodC8wRGFZbFNqWitXRVFOeEFHQlU3QlVBcXRJbjlqVFppRklUYVBYRnFaQVc3d2lhR1IxRXBpVEVwa1lQVlR5eEpWRXhiTHNINjMxcFNLZnU1L1VNcisvb1BMbC9aMzdkOFIyVmZaK0dZQi9SUHRKQXZQT2krSmtjZnVTOWgrNVd1TCsvR1phSVlQa0h5NC9XRzdxR2Q0MVV6ZDNmWjZPNUdkODNpd2w5N0xIYnF4SFp6OFRlWWV1VUhmR2VPWHkycUpHZHorczZTZDR5MGxlTGsvTVpLQ0lFZmQxUFFUbVZJdnorL045SHZIM3QvNks1OUxLYzBCVnlBOWY1YVRtVUtUMzZRZEhxKzdoSUV2VExYK29Kd2JrekxnZFFBTTJUaXJ1Qlh4N2lsTjd3ZnQzVHV5SWYzRG5DbThDM2Ywb2QvMGMwT1lvanZtRnFTKzg0V0thWEFjR25aKzdDVVNtQ3U3cVFDKzhPZW9RVTJRL3FXQXBPbEJJYS9vaS85bUxGU1puSVNjejdoRURkQXAvNE1FYTdLckEvRlBYS3ZnZkVCNjBsWTA3TnREeTQ0K0xMRk40NGduRU1RbHIvUHo5dDhFdzEwdnR6RGZXSGpjMGRqZGt5K245NUtxbXo0TXAwaUlhL1kvNHFVS2s2T3QwdU1uZTBWR2ZuZkV5TlhZaWlPcENZM015bTVNUVBJelU5T2JsS2NuTEU0YTQvUmgxR0toN3FNNmsvdXZYZnNUdlRlZmJ1SHRvMVJKajRDNGc1bThLejlyNmtYOFlmM0RMSkdBYXp4KzVlZ3VGWGdaaTBSeUYzc2pkRVpwKzlCUS9jL281M3RxRGp6Mnh2WFJ1LzVVKys3ZnphM2Q3M2JmK09FSGUwSEl2MWlXS1dUUTU0cCtlUkFUcTRHT1Y5MHNpR3RHczVoNG5EcDhXMXZCMGtOUGhTcjRRTkU3T2dyUzllNjRvZGlPWWFhSEgxU1YvejhnQWp1Mkh2R1V6SmJsL0dVVENGYmRQNldBQm8zRFYxZCtaNngyc2NQdVJ6a3RkQUxaTysrMWhUN1FpTFNlbTdVS2pGNiswYnQ1ZllkVXQyNURkcTVTR2Z4ZW5HanRpT2VkNjBYb1YzYWFzZEc3VVM4ZENxMndpOG8zdHlsL1g3U0x1M3pLYkczT3Z4NGZwWm1lOWpjZTFMQWQ0eGJJRzdGd2lJb2JRVnV6MG1hVXJSQldLOXQ3VUIwSWhabjBtTElZY1VXUEJJQmVnNWF1a0hvN0JmdDJ6czNsT1crakxUN0xwSXprM2VsaWxpRHlCa0pHclR2ZVBjVGVZTzJ0Yk5maGx6YUFRSmdTZ0NBMnNnWk85U3kzZTRHYlV0bnZ5VlphNlFQdFpFemR5YVNocjVIQktuMzZvczRmdG1LOFBNUlBEYVZOTWVjWGNMdCtOZGpuU0lXMm1oaFJCZEpNYVozb1hCZzdmQkNoL1lDTyt1dS9zWDBxS3hFK2krK2liOWhXeVFxWHp6UUlVRkJ5N243SDZESFFkWDg3eWRmSFF2NzRuMjdtQ0VLcVFLYXZ5bmhwcHJFa09jVDh2Sjhuc2FsUXQ0eVNDM3pOSWZ3WW9DOGVzalVCd05lZjRPUTU0VzBOOWhjNzJrTXV2Q1dBMWR6V0FqNVdzTHU0UEtBVUI1WTVtcjB1MVZYYzBOTGt5Y1FMbFRIaHd5WHdWVDRReUYvb0VHbGx4MmsxM2c4VUsvbStWUkFxQ0xkZ1JmSERBZ2NIbG92ZHJsVnlsSkxNN20rUVBYNkd6MzU2VUlOOEJMR1JzaVEyaFNzZnlpazV1Zm5xMEt6b0ZWWFYxVVBSU0xOV1Y1RzhBRHFsa2EzR2dpRzFjVWVGYTlFOExoVlFjaHRjcTJFUEVYcUQ1SDY1cFpBQU1qZE9TRmRHTjhpcEpYR0FQSG1CNVVqVEJmU3VHeWdDSEo0WDBUdUJOWHJna3AzdWxBMU4xMmdhS2ZtVDgwdlVMSGE0eFpxVUx6WUdVTS9oZ2pweFFIVkh3Q2RCT3FCYXkrRGF2STMrTUtxcXhFWldvbjlZU3lEc09wQ1ZBTmVOUnhVaVZaVnp3cFBmUXRSRDVOWEdxclF5QnZST1RBM2oxeGtRZlFSVUlWQzZIMjFwOUcxa2lpNHNWRU5ON3U4WG4rOUd2WTFCMXNhZkNxSUo1Ly93OFpKQWlPSVYyUEVaS1BtcWZXdUFBclU3UW03Nm4ycTIrVnBRdTZXRDRhL3I3aTZzcnh5ZHFHYVhJLzFJQUZnZkRUMHJMazUyRnlvMGdzOVlxU0Vra2E4NzhPdExsNkowR0ZQODJpdzZQcGdFM2FKM1NXQy9wQXl4SlZQTVJ1QTFGeldLdytTbnBBY3ZzSzF3dC9VMHNTNnFLS0hvUm5WK3p4dThDUTM4WnRsSGdQV1VDSjhncFlTL0tDKzBlTUtOSzVVQzRsbFlmRjRkd0tlMGppbjVOb1F0NW83UGpSQkFCT3BLWjZ0RmFJVnFBOVVPV3ZMcXlwckZxckZwWmdBczZVRjNLZlM4bnlUVlJMb01LTEdndHNmV2dxMkFjWUFia09xUXFBTlQwQjFCZHdxWGp5U1R1R1h4ZURaNERNQWZtbHpzS0haMWFUeTJnUndnSzhuYXArczh2R0tXb0dxdG9ROFNZWUw5WHY0L0Y1c1NFakw4OGJveDhZNGtxZStnVm1VWFUxVjZkd2FyaVhQTXVpRzM0dEkwdFJVSVdhUXdHd29EQTVGSlZpVE9CcWxFZGRLQms4cmpIU1RqV05wZkNBZURNOHJoa1JCN1lmTGx0cFJic0VNdFRLNFRDMllPblU2akhIT3F1cmExQTRnQ1BPcVppKzZxM3llbHFvZUJERmtmVW5kWFhkcDFZdHF5aGNrYjFKU1hEb1hhS1NrWDZuTnJxb3RMMGJoTHFvdHI5Q3E2aExaTGEycXJOU0k3QmVWbDgzVEJyVXBLYThzU3dySVFzMmN1dHF5cXZ1U0k0ZFFVWHovb2ppTm1rSHcwUGRhNkoremFsNTU2ZndrK0ZtOWRuK3BSbnhyWUgyZGM1R3p1dXIrK1l0cTV6dVRTU2hXWDF4V1ZqMVVmUXBGeHVycmFyU2g0WXRyYXU0ckcxUmZnZmFWaWppRVFDZ1VvQ0VFQVI2dTVPM2lZZnkwZ3BCNk8weFRBMlJYcGxYT0h5eXVLUU1rUk94OUJ2MlpMc3lwclhVeTdTUWpsV0lRakFVTjNIQnhvejhFNDdGeGFGL3VEL3RVY05BR1R6aGhscnRVejBod0NURERzZlFENDZjV3VLZkVIZ3RKdmpEMldBaEN3TWs0Z1VUSk5sa0pwb2h6SWRheXRCZml3bTMwdnB1VW9uYm44MzlDTXZhWjZJQ05RcGcrVUpoVGJzNi9PWDFPTUVSV2VsQUl6TUZQU0NodUNmdUN6ZjRma3JHMlVDMXhoV0FsQUxPSnN6bTRZbVZlOGxxT0Q2YW1TOGlzS0pxOEh6TlRYVjdJQWhuZjhodUREWmZBLzM4MTBQN2pWV2ovWDRPSjNMR0pFVi9YNG4yVXVDY3FpTlVPSGFqOGNCM3gzOG5qLzk0UUNOTGw3UlhEZXhxQ1lUOWJuOUVsK1JYRDQrMTViaFZ2QWJ6OGdKdEt1a0NDZFdZNFdCOXM1SXVoeTRNblc3N3ZJQUZ5cGVCM1FBRHlweHNQbUtWZ200cDNBbjRyQ2NKV3B3bFgxTGlEQ2JVc1hSb2srN3pMRHk2M3U5a1RDcW5obFVzOVY0S2tKVUFZaDcwb29BazJ3bGFIemFya0pzSEw0VDgySndNT0J0dnM4Wkw3Q3k4amNHcWU4SExZcktrdEFiTDVRcDR1ajM5NlhTVGRaMTZKRGVQRmtmSGQ2TGNQOUdySks4ZGdrSi9mRFlyQVk1bHdNQWo3bnNCbFRabGVWOWpWcURJcFhLRVptd3dSTDh6RDc2THgrakQ4MnZreGRqZHA3aHI2V3YwSDYraWJ2MjJQeWdwdVpuUVR2UWNaUC8zT1p2aHdmSjhUcFVlNEw1dm9IY2g0OXpEZXU2eTB5d3FtKzliTENyOXJHVDhWeHNYRmhZc1hnNTFRZmhGK2taYysrSjJ6ZnVqMVU3S0FCOGJHWHd4NER6VlBuNEsrZlFIeEFzVE1EbG01QWUvamhYZ0h4RXFJRDBJTVFGd0ZjUlBFelJCZmdiZ2Q0ajZJcHlCK0FmRUN4TXpIQUI1aVBzUTdJRlpDZkJCaUFPSXFpSnNnYm9iNENzVHRFUGRCUEFYeEM0Z1g4TjdkalFBUE1SL3ZvSVZZQ2ZGQmlBR0lxeUJ1Z3JnWjRpc1F0MFBjQi9FVXhDOGdYc0I3WnpjQi9LWWhaRFM3dExSUXpaMWRXVGRCblpaZmdGZHAvODh2RWVqOTJxTHdjUWEvSFJ2dE1JdlpKZHJuUE9pejhZN3FjYVQ5R0J0di96ZTdxYjIrdDRIYUlRK2pCWDV2T09KK0IrS0FPMWN4SE03Z2pXU3lQa0ZpR01PUXc4OG9mZzZZVFNKZXNhdUlsZEkzaUxJQ2N5SndKTStEQkc1Q3paZ3dDWmJ4d0pCc3Rmb0RZVUUySzdqRTMyS0ZFa21UZmdvMTBsMDFERkRCQzlPOG9FaEZ2azU2SGlqSk9adHBsVlFNSGlkZlR4dktnZ1h2MVFSVWVMZmhzOERtT0htaTFJc3RKakZVMGdyQUlrOW03U1g4QXhRNWJ3SEpLZElJQk02bmRUYnBLTEl5aGVZY1VqWmltWXA0eGJGWkVtNkU1WnRwM1VqSmhEZ0xiaVYxT1JMK3laSThqYlpVQllzYlNWalRaUEZCU05qa3Y1QWVSVXlGTFl5ZnhTQXZlWmFidEZhRWRELzAyNVFoWTF0eERVTEtwZEpPNkloY3dtVWhIc0JybmVVYTZYVVVYaVh2MTZ2SWV4WHYxeFRrM2Ntd1NrZVF2M3Q0dnpJUlhUV2w3eERFendtVkJkSXRhZkE3UHlieGUxRjZVS1RLYnVsSmhQQndqdkVhYU5sYncyU0dsMTNMRFpTU1Rib0trZmhvemlGTlFwNzhiaVl6TkZGNUNaZlpXZVR3SVpyTEVjUWZpYWpjc0ZTTDZKcGpuY0pjaUN0WGZBdXlXZklhNlFHRWJlWDhQSUR5WE1YNUdZWjFxM2xmMzhmY0k0d2ZRVHlNK09SMUZPOWEzbGZibDVnMVZ3NnJNS05wWW01WUlRalhYUEVOV3JwbE1iRlNPUTE2ZzVFWXJ5Ulkza0lidG9qNHJsb3hWMG40bmFlNW5IT09nNnU1RXVrUnpoZEFwYzF5Z3pRSmVMWGtZQTRialFLOVdLNTNTTXgySzFBVFpuRWQ1QjJXc2JUdDZIWEd0bU5vVzBXd3pMWWkxY3hES0dIclRmWUFmbGh2N3daeUp2c3pBQ2ZhYjRNU3lmNFNXcGY5RG1UTmZnZlVXdXgrcUxYYVY2Ri8ydi9SaWhmeVozNU9rTXkwZDZQcjJwMEtPcmlDQXZnS0tyS3NKZEpNcUxBMi9KdVpjaklPY3o3OEVBVXREZi9XMWVyUHMxRHBud1JnNjVKYm1UWGdwMDNXaDZaWnFQUWRUV2piS0tEaG1CcGVCbmlHWTlQaHV6SFZZK2FwMC9pSTRnaVZJWWVncFlJdFh3SmVabHJ2bEdxUWV2T2RGc3JMdFpnTGFZeVhZd0JpYmVHVzhFdWt2dHhwb2J3c2d0NWJWOUNjUS9wM2JQbkRkZ3UxVER0aStkSHpGbXFaZm16NThHOHMxSnUzSVpaSEtFNVZ3anRVcld0b2JwejBGdkJrZlpUbWNxVnF6RVZvYnJMVWlMbDFORGVWeW1VOWxjdDA2TmJkUUZIQnpyNERaTVpaaTZTcm9KL1d4ejlqSXY0WHpEMUJjN0xVZzdtbmVMZU9JM3RQY3dQdlFIVSt5d2VwaDVDOXpXK3dicUhKV0orbkpqTlNXb2U1RjZreVZHRGhBOEIrMVNGNFdQRC9BVEFwR1RMeWt5Ri9ScDZIeUJNSHNRd1pUY0dCK3FiS2k2dU1QRDdqRDJqNUovZ1pnYlpnSXEyZ1pMUUZuMmhoNmY5Z0lrUGJiYVJrTGp5dlFtL0tJSDdsYUxjTXRvMGtGakdjTkNIbm1Cbnl2UURqZUQ0QkVFb2ZoNElSdnlFOHNKS1hDRVdVZzNJT2tqOUgyN2YrclpTRnd2b1ZIYWNGQ1crWHRmNGRRcURJaWI3Ky9oeTFhcGlRd0ZGUVpWbm8rb0tZQzluSmx1blNyOUdqQ3Q1bXRvZ3dsbWwzbXltTWJUWnBOR01ZYVRRRkd3MzdJMkFITVBUVmJCeVRsQStySWMxbXdleG5VVkVxQ2o2N0g4ZU4wVUdzM0lQOFdiTnZ3cEl4MkR5N215ajBNYXhVS2VScTVIcjhaaXk1RHYzRm1wMk9iVzdhaGlXZmsvRXAyd05wOGVZZFdQSWFHYml5TjZHakZ4QjZKVEJzaTlOT1krV0hDR25PTGthVTA1R0RiTHczV3B5QklzNWVqcFczRUM2d0YrSk1wSkNOZjRraTNvYmtzMUhkNHF4Y2hZZ2RDMDRqeE8wL3htUUJvcnhqR1NhL1FlQTdTUkxIZExGb0RTYjdVWFRGcFBSSmJGQkNramdxaXFVNDNXZW5JWnRsQkc4ZmdtbUVLZnh2SGtTeVZNaEdzeEgvaTcxckFhNmpPczk3cjY3a2EwbCtxdGMyR0lSNE9IVUgrOHF5SGpIZ3ByWmxXUmJJa3BGbFFvQ3l2bys5ZHkrK0w5KzlWdzlqV3ZNWXNLa2haRUtMcDlEV29VbHdLQSsxUXpONFlLWnFReG8zcFJtM3Bha3owSTVMblk2VmtzR2RsdUkwSWZULy9uUE83dG1WZUdRNnROT1pySDExOXR2em45ZC8vdlB2N3ZuUG5yK2ZNN3NkdGQ3T0JmOEdhQWM0c3l0UW5TRTRRSWxodGlYTU44WFl2NE1USTlBTk1UeXZoM2R4YVgrRjAxRnU3Q1R5M2MxWG4wRE5idUxUcDlEWW0vbDBBWEs0bFROTG9vamIrZlJSbkZwOCtpQWFiek0vVGRRM3o4bndCaERleDZkdm9JZ0t0MjBTUmRTNEZUTzRPc2F0dUJPMGszd1ZPeCtIOS9OVmZNZ2N2b3RQSVhEaGczZFNUV0svaGhiZnkvbGVqcHJkQjJtSkZVSDdBRmZuWFZUOVFXN2JXZHlXcjN4OVByb01qeDJ4czNoYTZQb0t5SmJqeHJqeEdseUY4NGhJN3gwNHhlQ0tiT1BFY1JEc3dvTktMSVNydCtEaEpQWVV4Rkt3WUJVZUNQSjR4b2hkakh0eEZjOFZzUk80TFUwTzAwdlNNcWE2QjNlZ3UvRU1FQnRFMnZzaEZURzhYRVdPb09yTHZ3QjkyUmRDaTViamRoeE5ocmg4YkRWYlA0eWhIYnNSMHR1S3UzSHNEU3F1NGNvRVRvOWlJRzgvMGFqMFJReVAwUE51K0hhalVoV3hEbWpRd2RjYmxhYUkvUm1TN0g2clVhbStXRHN1M1BKZW85SndNZXpvT3UvMmhVMjQ4QXYwZDNHOFNTa2gzSXFXQUtvYldCZFQ0WExzQXZSNG9vOHYzSUJrZTl4a09PTzBGQVhOR2ZzR2FKUDdtcFFPamVGbGN0Nno5L0FGS0pOWUx4NU51cUdLWXBlaXZaL0c4T1hYeklZTnpOVDNvSSt1WVpHN0g3eTVGaHhiTVFqTmVORmZvK1Q2T25qWFdNcmF0SitmL1p2UXlTSHNtdEplTFpUYlU2bHk3aG83ZTMzY0VUZ0xsd3RyMThjNzR4M3RLYWNHWjBOdG0zZTFyWTkzZE1hdmdYMnVZNE1ST2lpeVdzbFpmYzNMcXBZdVpOTURQMXRXb1NXaHhRMUw2Vy9kd3BVTFZ5MXN3YnRIU3lqVTB0UjBiZE4xQk9vV0dIVUxjVHJRc3FFUjVWSGNBTDB5MTE5dURMUzBFMEhEVlVUUTFQUVpPcDFIcDFGeEdrVWV1QzV5bWIvSWFLS2dzWVZvTjlKYlVoTXdzbWxlcnBXMXdDdkxNQlpHdEpoRnF5bm1FblJvaks3K1lqTUlsdFFiQ0paK2lvTVdFVUUza01zWng1WnBlUzNyNW12TDViVjZnQlZkTHNHdk5JY3htUkJhUWcrRmRkR1YwVlZSZkp3MEMyTUxwTEFSeHowMjlPT0ZqZlEzSk9ZdGNzVmNOWjVDSDhmajdjNmtrN2JLVG51dG1Kc0FHR3RuUjFMdHlWelZhY2M4bVJPM1B3NnBnMFVBTGlsSFZHM01OenB1dXJLNElPZ2w4SmN3bm5JS1NZY0NPMUdaVld5MldHczMrMDFoSlhkamM0VEgyclA0SzY2MTE1d0srOFRLcGxKckVlWTZOL1NzZGZLSjFON3hSTVVTZnJMYStkMjVQVmRNNVd0cHE1M2VhTk5XUnFRM0NpeXRlRjBPOEMwNEF2aW9EK05sbTE3eFFxMXJXbHMvMnhxZVR3bm9LbDY5NnpybzRyWGhCbkVGNzhSMUYwdXlkSHJObXJYWHR0SzdVaWgwL1VjVTZJNFRXU0RlMXVzdUQxSHFrTWdacisxMUswSUNZMjRKY3psMGZpRGFISW5nTVliWVJtL1VuZXZOcW1HYW1Iam1rOHE0dVJlZVlFd3pqWWxSdnVhUk1VdE55SXFaU1ZVNUM3NkNPS2RLM09RMDhQMUNPZVZ6aFo0dWlwcHpKSnRtZisvdzBFM213T0JnWC8vbVFYTnIzNjdla1lHZG84TWpXakdaa3FnUmhNS3FPRWF0Nk9TeVdOVUVXVkJGT3JuOUZwM1hISXRTcFIydVM2cFVLMVl0SXBFU1phWXRKNFVVWEd0ekxKRVhmMnRJeVZKYVRsUVNCUUpGcDBweUpablQwY081RlJJVFp0R3kwbGJhekZSS0JVTmxpdklTMWFwZ1VpbVRFV3hBZmZnc21kL3JubE5OS1Y4MXlxZ2VUaWFYVHhXck1wS0xkQzh5MTBTYW1pTXlVcVNDTTFqU1FaVXBKZStBb3lESExsV3FiUzV2TUUxQzFjK1VTNDdNS092MlViV1NLRHFtVlV4TFJoQnZlZm9lckNuQXFjNWVYK000VFEyY2NDOFhhbFZyZ3EvNysyOWdhT2Z1VWJqYm9UeWtBRlZMSmsrQm0xcUJ0WnpidkNveFBwRlBTQkZMSytualNwaHV4ekYvd1lRVXNpdzcxUEhzMWlkWExIR0tkSzFRbUhSck16U01nS1BIcEljZ1R4Yk1jazYxaUZtbTVJVENmYlZFV29xNmJSRkRXQ1M0Ujd5S01hTk1PR3ZLRmJOdWlkdDJEdzZhdzd0SFJlczFTYW1XNUxDcWVBS1FxZVVsRDNnOHFUWW1FNVZLVHRMdHRTWmxIYVdNaTg2RGlIQWZxUm9YY2tWZlNUV1Q1N3VGTExBSWtNeWowM0daNThMbFZTa01MQWdrdlFtM0ZpekV0V3F5bHRIUytLV0txaTdvU0JrblpVdDRqQVJhSWdmRmVFNUlyVzhRVWxNcU5TRUxHdHZMS2JkM21QZG11WklyRWNNbjNheEx4WlFZU2dWU0I0NVZHZU1PMGx2alNWa21uOGc2Ym5Nc2xzWlVxWkRNRldjbDhuU1pmbG9vcGFYb0NpcEtRR0t2WXNVMU9ZSkl5eW1Xb1BJMjZUblRUaFRUZWFST2FmSkN6Q2hMWGVINGxCV0pNZzhKdnNOUmlJZWNYam1ScThTc2I4Zk8wYy9KUWFZNDRwUnpSWXdXZlRUdU1nYzM3eHAxZFlZY2FobkhCNmwxbGhrWTBxNGV5OVlTbGJUVXFmdmNXd0FwRTVkeEhwOVZEV1o3M1VvbXFKZjIxWEppc01yS0RmVU83OWc1MkRmYTUycUxsQnJ1T1F6UllpS1A5TnBvM3JvRlJMS1JxcjVxaUhnalF3aXl2MlAzMWF6S3BLeW5XSVRKUXhDMXB1enlWbEhkMmlSVHFNWmxDSmFtNnlyaktObmxUTUVzalJkWmthanE3ZWpiSVRTL3lFTW9YWldiMTdJTldnOE4zNkQxaDBoVTgrNnY3SEpOaU1nNGtlampRZDZmRkN0SCswYUdTTzN5NGxOUm5pZHBUcXBVUmtQcHNRbE5WZ3JNVTU1Wk5kVFVMVnR4MmJ2T25LcFNkM2c2V3VldWYwQVU2ZFNyVy8vUThFaWZxTmt1Yi9CbkVrNVZza1RjY0V2NVhHcFNqU2FwVERab0JjbWhURGRjZFJ2UmRCN2ZoLzFWa2lQWGUzelJkSnZiaHlrbDBmMmU4c0pOUzk2ODViT0d4MHUvS0FneHdIQ1JoYWdzakxneldhZ21raFJXS3lLMDFSbUxkdG1JRjB0Vks3NTV5OERhYWlKcnhPMkVZeHZ4OUdTUkVvcXdXakhpOURnYlY4WjdIWmdVVjdIeW9CTW41WHdWT2Vmb0wvckJpR2NJVUZTSm14MFhmeTJiK0FUV0lWMmlrRXNaOFZTMVJNOVI4YlFJN2tpaHpCSWxUem9FWVVtSC9NZlRWcktXTlVuaWlsbkxVYkJjUzZJZlhNeVBaNG8wbWF4WVl3cVJFRnZxWEZXQUFkcjRzWStWaHJDblluS2QvZXdhZnIrdGF0MExucEhuU1RyMmh4c1NmaHJWb1paWHdSOXR2YVNETFJhVHRIZ09qbWgwK01IM2JaT2tnNDEyaWs2bTZrVGFrT0g1MFlWLzBEcEpCNXZ1bmdaaHl3M1dyMTg4ZTVkQUIxdnNkbnJoSHRQcXBmejhZWEhmVHlVZGJMalRVV0ZMMXN2RmdaZTArVElOYk1Ebm84SUdyTGNEeHN5OFJnZWJjWFMrc0NWSFpQc1VYVTNtenpacGVtbVlhaFIyNWlEL3locmRTYUk3U1hSNzZ2eDArTjJwMGNISDh1cUZocEcrWm5aK2QydDBlRjA2MGkvNlBFajNnT0hKd1RUUlRSUGQwOW9xNERZWmZsN1NvVXJzVjNuRU1NN01tMDMzbXhyZG5oOVF2OTNpOXgrc3puOVAxZzEwN0lmNUZ1R0R1VjZqQS8rT2EvbmhxNWV1VzhYMVlIN1BhM1FiaVc3akI5QjlYYU9EejYrdHQ4NWR2NWMwT3F3VjJFNTBad04wK0UzTGVvSU9IblkyM1dZWVIrZlA1c3MzRGY5YU10QzlvR0VWOTUwQTNZWGJoRTlpZGFnMi9VT0FidWV2Q3AvU3dmeCtHS0NyRVYyaGVUYmRqd0owYitZTTQrbzV4aHVNdFRyZGdyMkc4ZTRjZEMwQnVrakI3MnRhOGJrdDVLM3J3TEdDNkFZMS9xbDFIMWlUb1EwSEl6MDJkLzJVTEt2anpBR1MxeVpoVjcvTzhQVEwvRUIrZXc0WnhtYzBnZm13ZFgvUWx3YW5GMVRRaXdLTGtsZTdXSlFBUFNld2FEWDBtY0JDMnRVYWtqcnBEWHpheFdLQW5YZXhxQ0QwamNDQ1VkQXJBb3VCZTlMRndnUDQ2b2NWRmgwUGZTQ3c4TTQ3N2VLRmpERytCUmFldVBmOFFHSGhKVFh0WXVHeHUrdGZGV2FQdlR6K0JCWjNsSzB1RmhLdzNjVmlSUTdHamNES0s3ZzQ2bnlhRW5oRkFGOFV3QmNIOE1vQXZpU0FMdzNnMWdDK0xJRGJBdmh5djR3Yi8vWitOSURCZ1VISi96RHgvOHBBUFB4c0svNkZpSDlZcHJIUnhTMEdacW9VLzBQRWZ4cStMajlEeEUvc20zRG9UWVVYR1ZpV3lBNFBHUzh6OWxOWTFzckhkbGJQZkVoOW5xQndnMVlmN0syL1NhdlAxd1AxZVNWUUgraHcrMXRlL2tGKy9Fc0F2eDNBN3did1R3TzRJZVRIU3dqZnA5b2ZYbVMwRXNZRzlNSmY5U0lEenlGd01hTXdKbWNuSDQ5RTRjZHRLZFVQSmhWc2ZyNHBJdUo3UXdGLzhJUlhUMFdpbUtBSGZUTGs5dytQSlRkcVBDeWhmM2VGL1A3aVAwLzRUNzRaaWVMWkFPbC9QK1QzSC85Q3lPOC8vcFdRMzMvODl3amYra2VSNkxnc0gxYWMrWVJISk1ZV2NMcC8rWWF3Mzc4OHJFZlRtdi91MXJEZjMzeEgyTzl2Zm5QWTcyOStWOWp2Yjk0aWpDMndGeHZDbnpzZXFMQnpKZ1lDK0xjLzdQZEhEN3ZmTVdyL1piSytqeEgrd205SG9xY2tmcEx3YzA5SG91dkRBdjhobmdmL3cvTVgvMUxZNzgvKzd3bi83Yk1SM2kwRzlQOFk5dnUzaDAzeURhMy9zWHBFNmNlbHBCL2g3dUp1clQ0dzBwN1UwbDlDK01UWEl0RjNaUHhxd3FjcGZqb2svYmZEWjdER3IwSENGelIrM2c1TDd4R3ZmeDNDZC8xeEpQcWxSU0kvTENXSlBCbUpYaVRiQzBmRUt6Ui84MC9WQ1gybzJuK2lUdmlZVnZndkNVOXI3Y05HOWdlbWxMOTU0Z2ZoVm1wZlN0Yi9QT0hWUnp6NXFLT0VHd2h2a3JpRjhIODlyOXJUYkxSR3ZQc0ZNT3ppMjRtK1Q3YS9oL0ROUnp4Lzh2MkVFNCtyL21rMmJpUnNVL3hyTWo1RmVJTHdTb2xyaEE4UkRzdnhkVC9oamM5NS9ma3dHcWFOVjZ4Qnc4YmRZZG4rSndtZmVTWVMzUzNwbnlNTVYwS0svZ1NkckpIM2s4V2tIK0IwQng3emxMeCtoL0FyR3YrK1N5ZndRZnQ4bzhqdmRjS1hmamtTM1I4UitQc1VIcVg2bnBiMUQ5TXRHMXVJQzNsZlpqUVRodi9DUnNuLzVZVFBhdm4vRXVIalJ6eC85dGZWZS9mWE5vcmZSdmhGcmY5dkpueFN3emJLZThmcmYreEFkNXJpNzVYeDk5Vjc5L09sZEQ5L2tQQTVpczlLL2o1TytBTGhiWkwrV1pRUC9rUkVmaS9EcVB1UWtoOTYvaVM4NGlHdmZDd3ErZlBubFh3M0cxaUFCQ2M0S24wOTZkSFZSUDliYXZ3UTdxYngrYnVTSGd1b05sRDhTWm4vVnNMYkNiOHA2VWNKSDZMOFB5UHBUY0kzUDZTd1laUUkyNFRmbHUyNW0vREVROTU0KzJLRHY3K3g4RW85WHl5aDU0c3A1RS8wTDBuNmFjS24zOUhrZy9EUmh6eDUvaTdoTTFyL25TVjhuT0pIWmZ4L0VuNVI0ODk4ZWtSN1ZhT0hZNEhYTkh3VjRaTkUzeTNwdXdsL2hlVDluMlY3TnhLRzJ5dWxQN0dBNEJWTlg5OUUrRFNsdjFhbXp5Qi9YUjRJUDNZOEVyMUN5aC9XSnB6VCtQUG9QRS9lRmxQK1h5TDhOM1QvK0FPcGYrRDU5WUxXbmxjQzczUllnSGxhNXdmaXYrL1Y5MjJzZ1h2WTAzZndOSEZRMDkvWUdBdGJ1cXZ4dHpUcXp4OUxJMVk4N0kyUFRzS250UEtVVVFjQlptSG9OSlhJNTgxc29WUTB4VllEcVVyVnFkWXlHVGI5OUk0T2o1aURBN3RHVFpQUVZoL3EyMjV1RzltOG84L2MwdGMvTU1TWHJ1OTE0OHZ4ZGZqYW9aeTNxbFk2M29GSnJwS1p6WmVTaWJ6Sk16cG1valpoOEl5TGF4ZmgwdnFHdG5xRktTQUtVZ2pGcUhNdjE1U2JLeVpOblRUYVp1ZnlDQXM1SjBVQkw1aW5zRlkyeS9oTWpwdVlka3BxRHJ4b1pka0tVaElKRFppdXBMbldjUGFiWXIyOWs4dUszUlUyYmVvZkhOalNhNjZubGxJVVRFaU9aV1N0YWptWDF1UE1yWjhiMnJ4am9OZHdxcFYwcmF4SGNTMU1xNWpDSkhjeTRWZzlYZUlURlI5UktaL1hjYjVFWFlacXpzNUpmbDRnVWRvQzgxRnNxdUFybGorOTlGVXhVemJ0Y1NOVHJ1U0sxWXdlZzIvcWZUaVRyem0yZnFYRzg4RDZGVEF0bjhQa0hERXRYOHJpczJ6RHJwYUsrZGsxNXRZYVhLN0orMktJcmpEbDNnYUdzOWNVMzR6QU1sZXBGRXVZcWs0RTJZOXB6MkxTRUovbStDb25lOXBnZzRrc0U5VHlTdzZkRnQrR3FJb1hhRkNVVW5xc1kxVWRmNzltbkZTaW1BblE1TmlLTnJ1ZDZFUzNlMlFiQ1VKY0lLMGxmN1dkYXJwVUMxNmg1dnVxVzh1WWJQb1FCUlN0Y1ZlYzBtNUptQnNPaUdOUWNweHFxU3hzZjRiVUFCbFVTaWNwVmt1MjQyOFQrbXVNa3BCdzBYOS9mcFc4bjdGTzNySjg4c2VkVHYyVmdzV1R1QzE2Mk1TSFRHQ0lhWmVjcXBrcmkzRXNMcHRtMG5Gay9XQk9Rb3lSVEtUMjRsdlRRaUpYZEQ5TncrUTc3UGVDMkVTY3IvbWlySndyYVRTZURiRVhoV2xOUUg2NFNoZzBDVjhQWUpwYVZtRDJNSUhzK0pxOFYwa1NGVllMNkFPZS9zNVFLYjd4VUxBS3FmS2tUOEQwV2ptVXdqOXNPNVR3WUtiYjN3Tm91T2hTZjhzS0NZZllsc1ZuYTA0MW1BeWJzSmd3VmpKM0ZWVnlNa2lIM1NEOHd6M055bzlZbXFpV2NqNUZNM3NZelJvMHBpVU1ZdjJEdzFzMkQ1ckQyN2J0NmhzMVJ6ZHZHZXd6NmY1ZytSVVY3S05RSmM0Y2pKSldHbUlrRFVSZk5jUm9DRnd5YzZ4b1dOL3o3ZzN5UEFORzZHd21FWU14Z0pRWkRTVldaZ0VUSW5iOG1FT3RRMTJwc2wyTk9GdDJoUG5IRlMxTmo1czBSc1MzWGo3NjY4Zk1FU3NML1ZYcHpTY2N4M0lNMlBMVmFLSjZwakpDNlVMVEJjUlNqQnlZc3BWYTllNzlkRU9GM1B1bGtOV2k0TXpQajAvNmlKUGtKb3J0bitobjBPdm82T25xNHJDanE5TVg0dWp1WEc5MHJPdnE2ZWpwNk96K05OR0pvRzNkUjJmOVB6OXFFTVMyTnFOWVNwYlNreDlNOTFIeC8wOFA3Qmt5MSs0MHY5elcwOTNWdWFEUjIvd2pHSThGcHZSdlFhUGFIMloyRmpZMlpsalFxRGFJbVl1QUZOeUNSbTJIbUZtVjZPN3NJUUt4UmN3Y3RleGUwRGpIL2pCZTVBZHNEa09SbmV1bzd2cmVNUDZNT3lrMnVET01Ga3VjOFc4TG95WHRXSWVzLzY5Nzl1TWRjdnhQMko5Z0dSOCsvcnZYRTNESGY4KzZEaHIvNnp1NmZqNysvMWVPWCs4YjNDWVd6NG9qTEsxaWJRK0tPWWhUdmVJNmRZZlJZS3cyV28yVmJPVkNYTmRCb3FIZnRDSHNxTENHNGIwZlZqT3NSK0IxQ2ZTRERhVkZ4aWw3SUIrd3crRUhzOUV5YVR0ZUxPTng3YXNVUnorNExUa1dFdlpteEdNdThXV0tmNW5pOElNdkIvd2FETSt1Q3dNS3IzZTRXemg4YnRQaWVLMXpQaTNXTmNlZEVqNEpWblpGbE4wL3RGdnlRdnhRTDlobVB4WGdIZWFnVndhdWdRNVd0NnNDMTY4d3hMb0JXT3lXeW12S1RBb2JEaXhabWxtWExYT0w1VG1zWHBpZmJaWHRVT3M1WUJOZGFIendNWmNOdEVHR2FGUGRIUEhCQXhaSXFETDBINng5NE5ORkFScE1DYUc3WUIyODJQamdBejdsZnZKQUpMcEZ6aVV1b0xENVVDVDZweExqczVKTENDTUV4cHpZR3NKWUN3SCs0WnVLalllOHVUVE1lUTBTL3BGTWZ5djliaU84VnNZL1JyKzhsdC9WOUR0QXVGblMzME8vSTFwK2grajNCT0ZuSmNhYzRUT0V5M0x1RWgrN3ZhemxCOXZkcTRTZmtmV2JwdDk5VDNselo3QkZ2VUh4N1hXQ0hyYTV0N1QwNE5WUEVDOHhobUh6WVcrdUU3YTFTd2gvVytKaCtxMDU3TTJ0d2thd2tmRFRzajBud0EvQ1J5WGVCSDRRL2gxWlAvenloRHRrZW95UkE0YzlXOElVK0hIWTY1OXZvYzZFNnlWK0hmd2dmTFdraDYvbGx3K0x0VWZBc0RXK1N2aDdFajlKdnpjSTJ4SmpEY3BiaEorUStPL1Fmc0xISkQ1RHY3TmY5T1pPOGZsTDg0TmVmK2p5M0lZL2dWY0p2SVJqT1Blb1dRakRLWXEzSDd4YldzVXhPVmRtbE1YRW1tbW1KaEo0T1U3a01hMlJycFhYeTNrWU5URWwzOHA1a1dSRnZnR0pSVnRpZ1ZjTjc3ZVloY21pc0dxbFNLOHlQSU5sWU0vTk1mbG1pR0pUNDJrdWZaeGVidVdMdFp4aTRkZGJ4R1VySEllWFFYNnZuYjF1TkRETElHYysrRDJhYTJwWDVLd1JnbG9PU2VhcXRTZ2RiN3BFTUlIbGpJYjc3aG52OU00Tjc1M01nTWI1K1Ard1VtS3VxMktuMnBCY2lhRDBtM05aRGwrNEdUZUV4TFVsdWR3Q2FLZlBTcnlZY2RoSVNBRjRrWFIrd3lveDF1cEoyYTRqakhVdFhRaXBnQTBJYWN4dFJFakN0QWtoS2J5dENHRmZRRWhLZEJBaEthK2RDS2tHb3doSjJkMk1rQlRmYlFoSktlOUJTRFZJSXlTRmF5T2tpdVVSa3FJdUl5UUJyU0lrUlRtQmtKVGhBWVNrTkE4aUpBVjVIMEs2Q1J4Q1NBcjlDRUpTcG84Z0pHWHdLRUs2b1J4RlNFci9DWVIwWXppR2tKVC9seEhTVGVjNFFob0F6eUNrbThBVVFocmNMeUNrRzQvWU0vb2NUTDJQblBzeC9UMTNQN1htTDc3eGZ2ZHFvbmgvMVpxdkNudkMrNnZBT1g3eW16bUREMkJXZ1lNMjRtWk9NUVluYmZZN09zMFlITFZ4SzVxWllnek8yaGlLTThjWWc4TTJ2bldkZVlReE9HMURlbVlPTWdiSGJaakdaOHFNd1hrYjZtZG1EMlAwZ0wwZGVDZGo5SVM5RTNnVFkvU0lqZVZVTStzWW8yZnNQY0J0ak5GRE5obzBzNWd4ZXNyRzByd1ovc0JuRlhyTW5nQStqNDIvVjZIbjdJUGNmc2JvUWZzUXQ1OHhldEoraE52UEdEMXFIK1gyTTBiUDJzZTQvWXpSdy9aeGJqOWo5TFE5eGUxbmpCNjNYK1QyTTBiUDI5UGNmc2FRQVBza3Q1OHhKTUUreGUxbkRJbXdUM1A3R1VNeTdEUGNmc2FRRVBzY3Q1OHhKTVUreisxbkRJbXhMM0Q3M3dPZTR2NFBvZjJNWCtEK0J6NzFudGpicHVPSHR4LytwM3ZQbnQ4NU9tSlBrVzYyWDZNYitJMDMyWHNlamtUUC9YZDcxeDRjVjNYZTc2NkVzWVhBTW40VWF3aFpYQU9Xa2F6ZHUzZGZkMjF3SE51WTRnVEhObzhXQ0YwOWJNbm9GZTJ1TVF3UEVWc3VzaERSQkR0RE0yUXdKREdsVFFkSzdFS0xUUlJnVEQwMFUrTkpLV0hTeEZCbXZLNDBKRTFBdkZHL3h6bjNuSE4zSmV6K1FkcnBucG03KzkzdmZPZjluZStjdlh2dTcwTjNLZThNakNOdTlUcUpXLzBxS1BEZzl0MXcweitTQzA2d283T0I4V0VSV0RjSDUxWkRTZjNIOGxjT3pwME8xR0FRUFV3TjVTNjJobFpVZmg4NUUrZUttS3IrSS9uL2ZBYVhXUkJCOVBTMkdtQVhzSDNiWDZ4NUJrM0M5ekd6Z2JHYlhoamFLblNmYnZDb2kzWE5NN2lESUNha240dHcrL2MraGtxTm1WejZDV1BaZy9UdzBIN2EzaFdsUi8reGVBaEYrbWJZNG5tUS9kNm4wak1BUmFCVFVCSHp3S2NDeFA5OThpZERUbVRwRTUzU256SGFDUFdVOTI1K0xwT0hFUjhmaVFscjlKeUJjWTgrUERDdSthajloYWp4eUVEL2J3bC8vN2ZrQnVYQ1Fib2xIMndGS28xdnE0WHo3dm5EV2g0SFJCNUNVdFFydHhhUjZRL2dYZUUvUHZKS0dhTlN4cWlVMllOMFM2Vnd0bFEza2Vqck10dTMySFBCeEFFa0NvbVBSVjQ0d2poODFtN28rVmU0Qkp3SzFtZ1Mrb01TWUlVS1d6OVJDZERoYmR0Y1RMQlhUM0Rtd0RnTlBPT3FieC9iTnJocWVsK3lNVitGZmhOSFRsNUh3MVZObzFKNHlXdkxxakVTVzVMZklIMEJUK1RIQ2k5cDlWdEN2aVoybzMvVnNjSUZIMHNIRGVpdkhCaG5meXl3L3NlZ0RBUy9vTXFjUEFrZm9OOVlZRDNXOUdKUklMbWpIRmdGODRNOGwwNDdpZHNZY20vcG9nUEJiMzBvNnpVaW5Kdm1wa0dDdyt3WEcwdDhweTJ5VzB4UExQNDV5amRFVG1ydlhZZWNPOWdCOThESTl2Y25jdTdncWdjdnNtQ3VMN1BBb09VdmhkdnR4NWYzajZBN0VxQkErL016aVFvQWRjYm9XYWlEMkpMUittR3FYM0MweG9QRFgvWE95VFVUUEloUXpCNnQ2NCtvT1VZK0NjQjZZM2ZGY0NrdVZIOG9QUnhzQ1JRdWgxUXN1K0dlc1kwQmRMYnd6OUxCd3FycVFlazEvczdwZ2J0bktXMTVaSUt5R0g2cGYwVDRhNkM1Z2pmcFZkUHZPT01rQWlieC9TMUhLekdqeXBxK1pNUE1mdlF4N2VPajM0SCtId05uRjMzZXUrcTl2a05JOU9TMkN1THV1VXkwek54Qmk4QmZjSG5Nek9iT1lpS2ZXekRhTTBSNVQvakxHQ0NuVGFOTlBMK0tSU2FjbXNJL2NQK05McHMwRDNRcE0zckJNUGNRTm5wVTY1TDdwVEhoeENmZlJwc3lQcmhuaEoycTFCMGQ2RDlJRXhrL1FZbG5iRCtFZGJMeVdoNS9JazFWTllzTmpQejBlSEQ1dXNKZnYrOU45UDNBZnFuL1JURkV3NE5FcGtuNmp1Q293L2UzdkZZNU9MU2ZTak9iVURsZjFtK0lCTUZ3SFJKNW9CRG5Ya2tiUHFvRTNrK0VDNWQ5N0pWUC9rN0kvWjZWSnp0eDZ4NVFxY2ZmMDFScTdIMHMrRFd5cWV4OUJHc1h1T3NHTk1GWTdTMmhJVEpxNndxQkR5amQ0VlVuTEhLYU5IM2lBSFpLWVQ0MXVCcG4zVHBteVJTLzVxNFkzTFBmWXc0RVI4L2grMEVhNW9IZzlrT2t3ek4zeEFQc3VUWFl0aE9yYWF0Ky9DZXFHSDVPY0R1R1VlQ05jWjVENUF2bEoyaVhmak9PemZncmtzYlBpZHdjSnF6Y0pXeFk4R2NjbVpWSE1JZUg5Unp3bE9MQWVPRWo0QlgyVVVZL29veCtSQm5OWnNMS1hjd1pYUzNzNFJPWXozVjZQakhLaC8xajN6WHVkYlZWdUhCYzYvYzU2aVpZT0ZQZVROOWlUUnpBZGhiZVVxeUFZTDJpV0VIQmVrNnkwSk9sdFdXaWNDY3pDbnZlUllVYzZIK0dtdkJMcXZsR3RNU0hvTDRUQjVCUitOcDdYZ2NmSmJHakpOWkFUbW93WWR0UFNCalpoUjN2ZXA1V21OSE1KYkVrRDN2YkMzczh1N1ZSeWtNR3BKams5cWJ3TXkrYnR1UFljMTk0Vi9XYzU3N1Y4OWZ4Sy9nQklMd2JiNmtvM1BPdThMaUdmcTcxd042Skt4K1pBL3VQWi9FRGJmYzhNRHBEQnkraDJXSDRCTG5waFJMN0VWWG1sblBKWGhVZUc1L1VUY2huK1FjUmJoTytuT202SkJlQ1g0MmhLNjVjV2N5OEJwaU4xcm92YlZ4alhaUnR2RWp6VVhEOW12YVcxbEJEYUYxdmR6UGloSzdPM05MYVc0L3VGalkwdDdYZjN0M1QyOXJWM2h5NnZpdS9yYlUzdEw0MTI1cUIzNm1oUmMxMUNEOXZWMVZkM1VQZUN0eXFobXdJZnNPMmQyMmVnWGtRUGloaXRtS3VWUTB0TTJhc3ozZUZNajBkN1h3WUk1VEpDc2g3UkR2SXRYYUdGblZUVHBtT3VxcUdmQWgrL2Q3Z3dxL3ltMlo4dVExZjFNSW1ORUxiNnNsdlFLYXJPOWNHOVFHNjEwallRNUQrV1BhTURabXRyUVR5ajM0MEJGT1hyVnExTFlPbmpWeHl0NUVOTGNDVEFTMmhoczVRZUVHb0FZaWVVSzQxbThOL09FSkxHbHMzYnc0MWRlZm9MN2FxS210MXZxTWoxSlBKdFVIM3R0NWlOYmEwYm0zc0FwN3MraUxHNnF2WFg5VVFNZTVzNjFZTDRibVhMYnVNdWgwclNKVloxOTd5MVh3bnVwZW9ZdjhWT0l6c0JHUlMxTlBRUG9YeDZNZTNQS2pGQlJGWEU2NEYrQndMcmhWd3JZZXJDYTVldUw0SjE3ZmhlaFN1cCtCNkhxNWpjTDBKMSsvZ0NnNUFlcmdXd0dYanN5YTQxc1BWQkZjdlhOK0U2OXR3UFFyWFUzQTlEOWN4dU42RTYzZHdCWGRCK2wzeXZEby9IOERucHZpekJKK3RQdm1BaVNkNmNBZmppZDRvOEVUeEdVTXBQTkdGKy9pTWFrM0F4Qk45Y1NmamllN2Z5WGlpbUU3SEU4M3ROUEZFRiswOGZUeFJmcXp4cHZYM0YzQytDQks1Y2hlL0F5QnBmTmE1Vk1qakQrUStRZmRxOUgwYS9heEcvMTZqRWFwTDB2ZG85REdOL2tTajY0T0t2bGFqNzlib3Y5VG8vUnI5cnhwOVRvV2lJeHA5clViM2FmVGpGZng4RnNNTEdvM2gwUkwwakVxV2FiNFdBU3VaL3MwTkFXdHRwVXJicE5HM1ZYNTJuam85Sk9SZmcrL0RsVmpQbDRwa1hpZCtpT2ovSXZwQ29sRVIrK2pwcTJWOWdXaCtheU5LTkwvMWRSWFIvQTlEaHVnSTBkdUlac3pTWWFLalJEOUd0RVAwQ05FeG9sOGpPczUxSURySi9ZTk9NeTErMFhBQjBXbWlWeEM5ak9qcmliNk02QzZpTHlkNkI5SExpZjR1MFY4aSt1K0lYa0gwRWFMNXo2SmZFNzJTNkhHaTJhMUZOWjR0dFZZVHZaQm9kdnFSSm5vTjBSdUp2cExvZHFMWlg4YS9FUDAxb2s4UXpkNG84UGxkbjhWT09TNGdtdDFBcElqbS8zR3VJZnBhb2p1SjVqZnkrb20rZ2VpSGlmNDYwVThUemFieVowVHp2Nk1uaU80Z09vQmVnYTF2RUYxTE5MKzhHeU9hSFMyc0kzb3JsMHMwLzM5NEw5RzNFLzFEb3U4aytoRFJmVVMvU3ZSMkhrZWlkeENOL3l2MzBWdWZsblV4MGJ1SVhsN0Yrdm55N29DVkUvUnFNRllQVmFrNWhVSHE2akdOWDN1VzBzbHJ6MUw4UDYxV09wWW5taTNRODlWcXJEK3NWbU02NzJ3MUZvOFQvV2ZjYjJlcnZxMDhSK1gvaTNOVWYzNUFOQ083ZjJXbTZxc3VvdThoZXB6b25VUTdOVWpmVjlRdW5aWnpkaGEwZFMzSmY1Rk1iUlBSeVlCZi90WWFaUk4yQ2JycGl5b2Z2L3hETmFYNVJ5ai9xNmFzMjlwWktNUHZxMzFybHVyL244OVNlWjRRZE95bmJNZWUxK29wNlYxYUhZWTBtWWMwR1grZlNQNzdzOVJZL051NW1xMmVyZVpqY3JacXkyYWlDYjdSZW5DMm1sOHZ6MVpqUFcyT0d1dkxpYzV3bllsdUl2cUpPYXFzRytjcStvdy9VdlJIR3QxN0h0Si9XOVFXbmY3T2Vjb0d6cGlQZElMb0MrY3JHNWlhcjJ6Z0JxTGRvbnc2NStOL1Mrb2Z6aGFMMTkvdDg1bGVDdnVMSDJ2MC84ZDFXZXJQQ3hyOWovT1ZIaDRWOUkwTmxxRzNUUnA5bTBZdkZMUmNyeVZmNmlxdXVXamZrSmIyRFdtMGIyOW81ZjVlMFBpT2o5d0R5Q0RITjFpcjdKWE8xK256YXRXNlhFLzBZcUtYRTgyblVqYldLcjFxcjFWcjZOMjF5alkrVUt2bXptTzF5alkrVjZ2V25WZHJ1WjRyVHNENDFxcCtQbkorYWJzOUdkMTNBWjQ1dUpCMDhuNmc5NElXNDE3eVVVSExzd1VyeFo2RTZRWGlEV0NrLzFqc1VQanN3aVdDUmoxdmhqemxleHlFRlpmdGJXNXN5cmQzdERRNllTY1diVUM4dU1ZVjExeTVkcVdIWkdZdmNSREpyTkhhM054c0k3eFFEN292V0FMWjVOemNvbkI5cEc1WkwzMmxHK3lJazNDUzBiaVRUSHRrSW0waDNnK0oyaXhxMTZYRDZZZ05NUkt2aVdLakhCdWRQQ01kcFltU09KekVnUXoxQUhmUmhCZEVNVVdKWTV3NGRpcUpqWXJHNjVZdHo4YWRkQy9SNlhBa1hDcWt3NGxTSVQwSjZoVGxuTkJ5VGhUVkt6SkpoaDRZRnVXUnhEd2ljY29qQ1gwWnRSUHhaQm8vUGRHaWNsTmFtaFNPRHA3V2k2VXREWWFPeHpxTWdrbVNBenJkRUxHVFBKSUdaQjNMUmpUWkNHWnF4eURMVFIzZEdhRTR0cWM1RHNSYUxkMzVKdmdSVGxGUkx5cUpVZFJiZXJ6anhVZHNGT0RYaGJaNURZckE0R2FUdmEyWkRwZkU2a0d2N0hSN1oyYXp1SS9heUZBSnRXckZSZDV4VWJnVTBjdFBDQmtZSk9nMlRhaW9wa2toQ1VOaFV6TnZ2aGtuWEs2OTYrYXRtWnZ4VlJLV2d5RllqSE1EZXBpL0NPQlJZRFRTVk16ZTF0blUzWUdBa2FjemRVbUVJZ1g2bzRjaE9RVzg1S2xpWTJwVjNOU2F5ZVY3L1Z4STJOamMwcnBKc1BGbEtvTlhHckN5dDdXbExaTVQ5YldYcE9MRllKV01PQWhkbDBRRFJEYkFRNU1EcmlPNG9IZ0tDSS80TnZGVHpHWjFjZEQwcUN4d0NJbnJFRGRXcDJHNEVUOUcvRVNkQjZoSDNEaHg0M1VlRmhaeEUxeU5jSjFDZmlKK1VxdWVRRmNpZm9yNFNTbnU4U05oVlcrQm84VjgwVTZaUUVYWXFrMEMvWXY1VVZYUHZCSGhhTTNpRnpPWWo4MTFhRm9zcG1aS3lEMk9UVkFzZDFLNzdBdlVldXBXQ2NMRjNKVGlFcTRoRDBpWXVGUlJSbXhqZGtRSkM3Z3c1dHVLVDNCV3pPVldFYmREWXpza1RIWHU4ZXBoeDFTZlpUMUZBbjVjOFJudmp0a0pWVUVKOXNrUlNkVjJsYm5XU0laVlpBM2pWa1lqYUpjSWs5UEZXMmhNcGhjSk1uajBQZVZxaEF0bldsbzBXQ2pTbGdkZ3lzVTRxZ25OT3A4SE1Sb1hWZ2JqR1F1Vm94T3EreFJtSDBjbGxSNWwvWEVwbFV3QXVmSEVDU3UrUUxWamZzVEg5N3JIc1ZXOUJaZ2s4Nk9LVDNoNHpOVmE2VUVxY2t4TVRSTVBsNVJqNHFwc2lVckhFUWwvaERmQVRsS3BqOEt5NDZpVVVnb2RkcEFOUkZncGhrSkE1YWlJbms3aG9IS2tyU2tVb3lVeVA2cjRBb1dQK2F6ZU51V21jRVk1THFhYXBlSGJjVnhjV1RZSjE4Z1JDVzFtU1BoQWp2SFU0SCtDY0h5cUFNb0dDcUM3Y1ZHRXRwZFp4NCtXcVMvcTZXTHNQVWlacWhjempkRmxYZW9LVHFEd0hIMTdBUlBBRTVxZG90VWloY3ZEWXZpQzN0NldMWW55NlZwK0pGZXFBbTVDb25FRGwxR3Z1WUVRYU5SRkIrdDF1UmRndG5PTUR0MHFFcVhpTWxGM2p5d0JkbWJNOUlBdVhWb3J3WkRMd25VZ1k1a3FaZnNpWGQ2Y2dOMTF0Qmd0UHpzVzUrNHpRUWlwKytMVWZhQm5KdG91eFNVb0R0UXFHN0VsUXFaTDQ4YW1UVU1WZFdra1JBK2tTK0FTVTRZcHloQVhTbFFZZWpIYzFCTURXSk9TUkx5OWd3LzNsMk41OUhIRnpOcU9qc2hxanFKQXEvV05vSURSTk9vdWNSdDk0OWFwTng0SGppeDdDZHhTcnBiRDFZcHhRejJjeHRLTlpUeFpUcWpXTnovZUk4K1lCT3FyN2NFVG02T2g4S2xGUWJKSkhyaXlhS3BzbFE5a1VzUjZldW1IR3BieFVqMEZRcmRmTVJYQXA0Z1JpcG0yaXRwRWJVNXlaeVhxU3NLZHNneHJEbTVFMEdKSWFHZHprTTFDcGNrb3hxaGxzK0h0eW9xd2p6bWVOY3NtelFwN01LcG1oMnZZc3I0ZVZ4aXVQa1ZTOEtobWI2ZExJeGR6WFZpZGJLRk9aanQ5eWlSU2VNdUhnUElGYmlSUzd5M3VqSWZNVEZ0Yk51UW1Ya0xjRjRQZVQ3Rk8wTThiV2l5a3NBYjhpbVZGcVFMd1pmTXc2bk5TakNFaG9ic29BeDJmZHdqTTJPVmFTaEZFZkNZSlIrM01ZTk1WVGRPdVNmU0hXakVrRkM1VWdNdm40dEdpQWQvbG5XbTlNcmc1THA0MWlQZHZDc0tjTW9sU0pnNW1FdmN5Z1lWZWFvV1JDU2dFWmFKMXJ2UUdVT1FlSUlUcmFRSXIyYXBBZXQxd3ZZa3A3a2JxZFZoaTE2NDNZSURkYUgwSnFHYlhxUytCRSs3RzZrdWlwN3Z4K3NtZ2t0MUVVUklGbU84bTYwdmpBcnVwK3JSc25xMDFUNkJFYTAweU1IdWhiV2tkaFJlVktFSDlEMThPTHZud0RiTmlrOXdSbVY0QldEek80Z2tobml3U0Z5alNMSjFpYVZ5alNCelhuMDNpNTM0UnlpOG5vVVVJdjZNeWpWTlVSaEZXc1VnYUUwbmpNbWxpa3FRZWlMUkltQlFKVXlJaG1zYVNDYzNPSUxPSDM3Wk1GNTBrbmRFclpJSHdPeWFUeFNmckZuemRYUXgwUXRoTzFWK2l1K1IwSys0VjBTbmVFbTNXUlZURnM3SlVsdGo5U0FPTENOQXNtSlIxVFdoV1ZnZnJGdFdFTHN6RzRpWmlPdVVRbFVxQXZ3bGhYMW5LNTRIcmJURVlxSjBUMnZKSG5OY1FnZjN2V3lZOFRHbVhmL3A1clJBZUN5VGJXNUpsTDBTMVpkZ2JZZFoydFJEcjNhYnZEMzNvMVhLVmpzbTlqdWxrUWtZbmswV3BjOTNlWWhzdVNxc2lZN1ptWFRmbDVRTy9hTExFTURxUmVQRkFhVXFGUDhOcHg4NkkrdHdaRG5kM1JLMGpIdDYrRlBBR2doRDVmY05RN0tQQnQycnJvUEQrM1RzNzFPQnllSHBFL1p0NHRSemcyTkFpUVlvdDlWVHQwSFdQSTZMQmNWNHMyUjJJMk5GN1dSTUxwYVI1QTIzMm1zcjlpckZKWTZsc2lLUkZWMklQaExWaXBZVVZWdER4SmdEK3dQWmNyTkFxR0tOVk1JNnJ0SU0rTVZ3aDUvMDBFRjRPWEpCQ1ExQmFTbFdSS3dOYUJvdDNHSFdHVjE3MWhDMHFuc2dsNnpTSE1jUlBlWnZtSy9SSGNsSDlrZHdWK3JPM3FQYXp3bnp4eTcyQ2N6cWQ1N2Z0M1kySXlvTC8yUGllcXhLWEYvcHVQME9JNGFNVTVpQWxiNzBIUHhGK1RKckVBYmEwWjNyRXd5MnplblpuTXc4YXE1N2NSWW1IUmxwN2J1Y3dFMXFwUDdXTE1kZXVzOVREdVRqellNT29IaHdtdUJnWUJlTnBTNUxZVG9MWTJrT2RGUFBqZFovOWhJSDdCcjlROCtQOGVDQ1p6ZUd6VEplYks5V21KOU1TY1dsa1VXa2k4VFJDQ25WMXU5eFlNVzJCaDYxMnViRnl3Z0tYbXUxeWErVThCVGEwMGVXbVNSTUt6TTJDcWV3bk1IdTFHdUhVbFhXeVJaM1FISEtsNUs5dzNHTUtPd2hjMFVVdTk0dzBoQlNCMkNBdTk2UzBoY0RQb0VLNHJBYjFqaU1zVDc0TFZaWTZBcFpNSnlrYjBxbEx4eUsyTG0wTDZaZ2p5MncycEJOeFhUb3FwT05obzBoSHNwMnd6bzVKZGtKc3ZuRXM0dzZQSm02NlUvRXBSMU5iMmY4WGphZmpMVy9hZU9KMkg4Y1RKSXZIVTQyYk5wNUpIamhPa0psaWhDSkZJOVE1eFFqWjVnajV4OU0zUWxGemhGUXZ4MEEvRTJGSFByQ21TYmlhVFNHZXgzVjdjRGNUOFI1TjQ4cExMTjVHNGx3MWZIL2pQMEo0NWpnY1RrUWpvVVhyVzF0Q2F6SzUwRnFjN2FIRWtnZ0pOS1FTbjJPcTVPZVk2dk9zSVpRbEQ4SGlJYXR3WkVrWVR6UCtvWGgvU1A4alJKNktFeExUOXdpNUhmSDhrbVRKQVFsOVpFVTdNazFVSmM4cENkYmZPbzN3ZWZnUFFYZUtsWm9jWHJyL0VEeVRmU01RZng2YzJuOEludUUrQ0JHM2FBQUFrdFQ5aCtEWjYwWFRMRHFoSnN1VkdCNjYveEE4czUyYnh2Z0lVL2tQd1RQZis2ZHhmZlIyK1AySDRCbnhGNmZ4MmZGS2EzTC9JWGhHL2VkbldnWUt2c3hYOXdzeUJuTG8yajBjTk9YdzZ0UGtFS01sVkdWWnc1cS9CZmxPL1U1TkRzL0VQem5iTXREeFpibjNXVW9Qam9QY2NaQUxhZVdHeFBkdVMvblRJRnlXZWFvc1BiL3Zhbkw0am0zTnZOTCtPWDZneWVGck1IUG1sZmIzOFRlYTNQa2dkLzRrY2s5cGNuaVdmeUhJUGVpVHcrdHBTL2t0SWZ5WWVZd2Q0L2RiTW1JcHJCcDhTV2lINmNyQTA3L0RsdklmSXVWMEx3V3lmaTliSm40Rnl2MmdTdWtDeXVFWnJWY3NFNWRsMFFLTDNndndsL3U2TDc5ZkxiZXMyMHZNRDhRcDFpQ0JyZXRYV05xcFdTWG45OC94MWdwOGFieFlUdXFLREgxclFFZk9aUHlhcGRiay9qbjJYZzF6UmxPRVV0ZzBNcHl1ZjQ0YmZmNDUwRjd3UFkrcWZDZEQrdWZJZWZmY00vdTllOWFzRjcxN25sZzRiL21lUWIzR3ZIdjJ6eEh5L0hYd0tUdWNiM3pQL2ptT2UvY0NyV2VmNloranhydm5HVFhIdStmVGVlZDc5NHdjdE5DN1o0dDkwTHRuL3h5b2gzdy8xM2YvK2Z2bjBNY1ovVDFnRDYzY0pkK1JxYVljNUQzNm03alVKMitYU04ranBjZFRsOVAzS2Y4WitHYkMrZDc5dVlTWlU2M0YzNkNseC9Md0JIK05GMTlEcCt5UGF2R0lXWU9BQWVkWjdJOERiY3B4TFI3dFdNMmd1bi9DeUcrbWRjaFM0eG1BOFN6Wm5nZFVlMTdXN2pHL04rRDdQQzA5bHJmM2djbkxlOXRTNzNKaCt6L3l0YS9VZUR5cGxUOGpVQndmR2xUeE0zM3g4d0ltcHROaUg2YlQwb0NKNmZUVmdOTFhXYUN2MS9rd25yYmh2dUgreXVsMUZ1T2IzK1hEZkVKL0hNZkZPMTQxTUorK0V6QXhvTkJQaDQ0QjlXekF4SUI2T1dCaVFQMTd3TVNBZWh2dVIrNnJuUDZOQUplUHZwSHdUQzJlaHowM1dHMTlHakF4b21xQ3lqNmdmNHA1UVJNemFsSFF4SXh5Zzl5ZkQ0djhWd1pORENuRS9kY3hwRzRMbWhoUzl3Vk5ES252QlUwTUtmVEhGdkw4WlZSYlR3ZE5US2tqUVdVUFpzSDQ0Vmx3eFBMNFpTWEx2eDQwTWFmZUM1cVlVNFNybzJGT3pVY1R2RS81UTFoWW9mUUovUmtzcmpBeHFaWldtSmhVMTFlWW1GUWRGU1ltMVIwVkppYlZjSVdKU2JXM3dzU2tRbDkwY3J3V3dIZ2RxRERiZTdCQzJjOVpZRCtQVlpnWVZtL0MvVjVOL2tTRmlXbjFRWVdKYVhWV3BZbHBoZjQzZEV5cnhrb1QwK3F5U3RWZmlPZC9WYVdKY1hXVHRrYUc4RU1EenZjZHBmYmo2SXNUMmhxY2ZnK0IvZW9nK3A4TmtGOENaaCtMRjVENS9BZkRFdHZBMGFlSC9VeHU2dTdGZ3dQZDB1ZW9DZWRmQ2pyL1ZFSDRPK2xocG5pbUtkR3lmRERnelcwR01QZ1V5UGdsZ2JFTUhQZHNablBycExqMURDQm1JRUovTnBJOVk1QVpoU0I4bUpFazM5R0Jid1dMeHgwQ1djeW9BUDJzUEJXMCtHWjY3N243MXE3SjBNdW1SbnNYeUdBbURuZHJzMUgvRW1EdlFoZUxNZGwxUEhVQ0w1c1NOQjJ4MlB5RE95azZ1c1EzOTZPVm0vaHVXc3lTcUljTTU4Y2o5K3ZQclQ0dEs4SWk5d0dRMDdDZFBzSTRJOFQ1ME5sOW9PSUNYODVVTVI5eWVCRmtuTlpOMldKZ2VCTS9yeHpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6S29SektvUnpLb1J6K2I0VC9CamZwQ0V3QUdBRUEiOw0KDQoNCg0KJGJhY2tfY29ubmVjdF9jPSJmMFZNUmdFQkFRQUFBQUFBQUFBQUFBSUFBd0FCQUFBQTJJVUVDRFFBQUFCTURBQUFBQUFBQURRQUlBQUhBQ2dBSEFBWkFBWUFBQUEwQUFBQU5JQUVDRFNBQkFqZ0FBQUE0QUFBQUFVQUFBQUVBQUFBQXdBQUFCUUJBQUFVZ1FRSUZJRUVDQk1BQUFBVEFBQUFCQUFBQUFFQUFBQUJBQUFBQUFBQUFBQ0FCQWdBZ0FRSUxBa0FBQ3dKQUFBRkFBQUFBQkFBQUFFQUFBQXNDUUFBTEprRUNDeVpCQWc0QVFBQVBBRUFBQVlBQUFBQUVBQUFBZ0FBQUVBSkFBQkFtUVFJUUprRUNNZ0FBQURJQUFBQUJnQUFBQVFBQUFBRUFBQUFLQUVBQUNpQkJBZ29nUVFJSUFBQUFDQUFBQUFFQUFBQUJBQUFBRkhsZEdRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFFQUFBQUwyeHBZaTlzWkMxc2FXNTFlQzV6Ynk0eUFBQUVBQUFBRUFBQUFBRUFBQUJIVGxVQUFBQUFBQUlBQUFBQ0FBQUFCUUFBQUJFQUFBQVVBQUFBQUFBQUFBQUFBQUFSQUFBQUVnQUFBQWNBQUFBS0FBQUFDd0FBQUFnQUFBQVBBQUFBQXdBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFFd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFCZ0FBQUFBQUFBQUJBQUFBQUFBQUFBa0FBQUFBQUFBQURBQUFBQUFBQUFBQUFBQUFEUUFBQUE0QUFBQUNBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBMkFBQUFBQUFBQUJ3QkFBQVNBQUFBckFBQUFBQUFBQUJ4QUFBQUVnQUFBRHdBQUFBQUFBQUFDd0lBQUJJQUFBQklBQUFBQUFBQUFIMEFBQUFTQUFBQWpBQUFBQUFBQUFDc0FRQUFFZ0FBQUtVQUFBQUFBQUFBcndBQUFCSUFBQUJqQUFBQUFBQUFBQ2NBQUFBU0FBQUFrd0FBQUFBQUFBRGRBQUFBRWdBQUFFTUFBQUFBQUFBQU9nQUFBQklBQUFCY0FBQUFBQUFBQUtvQkFBQVNBQUFBVmdBQUFBQUFBQUEyQUFBQUVnQUFBSE1BQUFBQUFBQUEyUUFBQUJJQUFBQjRBQUFBQUFBQUFDZ0FBQUFTQUFBQWJRQUFBQUFBQUFBT0FBQUFFZ0FBQUM0QUFBQUFBQUFBZUFBQUFCSUFBQUI5QUFBQThJZ0VDQVFBQUFBUkFBNEFUd0FBQUFBQUFBQTVBQUFBRWdBQUFBRUFBQUFBQUFBQUFBQUFBQ0FBQUFBVkFBQUFBQUFBQUFBQUFBQWdBQUFBQUY5S2RsOVNaV2RwYzNSbGNrTnNZWE56WlhNQVgxOW5iVzl1WDNOMFlYSjBYMThBYkdsaVl5NXpieTQyQUdOdmJtNWxZM1FBWlhobFkyd0FjR1Z5Y205eUFHUjFjRElBYzNsemRHVnRBSE52WTJ0bGRBQmllbVZ5YndCemRISmpZWFFBYVc1bGRGOWhaR1J5QUdoMGIyNXpBR1Y0YVhRQVlYUnZhUUJmU1U5ZmMzUmthVzVmZFhObFpBQmtZV1Z0YjI0QVgxOXNhV0pqWDNOMFlYSjBYMjFoYVc0QWMzUnliR1Z1QUdOc2IzTmxBRWRNU1VKRFh6SXVNQUFBQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBRUFBZ0FBQUFBQUFRQUJBQ1FBQUFBUUFBQUFBQUFBQUJCcGFRMEFBQUlBc2dBQUFBQUFBQUFJbWdRSUJoTUFBQmlhQkFnSEFRQUFISm9FQ0FjQ0FBQWdtZ1FJQndNQUFDU2FCQWdIQkFBQUtKb0VDQWNGQUFBc21nUUlCd1lBQURDYUJBZ0hCd0FBTkpvRUNBY0lBQUE0bWdRSUJ3a0FBRHlhQkFnSENnQUFRSm9FQ0FjTEFBQkVtZ1FJQnd3QUFFaWFCQWdIRFFBQVRKb0VDQWNPQUFCUW1nUUlCdzhBQUZTYUJBZ0hFUUFBVllubGcrd0k2RUVCQUFEb2xBRUFBT2puQXdBQXljTUEvelVRbWdRSS95VVVtZ1FJQUFBQUFQOGxHSm9FQ0dnQUFBQUE2ZUQvLy8vL0pSeWFCQWhvQ0FBQUFPblEvLy8vL3lVZ21nUUlhQkFBQUFEcHdQLy8vLzhsSkpvRUNHZ1lBQUFBNmJELy8vLy9KU2lhQkFob0lBQUFBT21nLy8vLy95VXNtZ1FJYUNnQUFBRHBrUC8vLy84bE1Kb0VDR2d3QUFBQTZZRC8vLy8vSlRTYUJBaG9PQUFBQU9sdy8vLy8veVU0bWdRSWFFQUFBQURwWVAvLy8vOGxQSm9FQ0doSUFBQUE2VkQvLy8vL0pVQ2FCQWhvVUFBQUFPbEEvLy8vL3lWRW1nUUlhRmdBQUFEcE1QLy8vLzhsU0pvRUNHaGdBQUFBNlNELy8vLy9KVXlhQkFob2FBQUFBT2tRLy8vLy95VlFtZ1FJYUhBQUFBRHBBUC8vLy84bFZKb0VDR2g0QUFBQTZmRCsvLzh4N1Y2SjRZUGs4RkJVVW1ob2lBUUlhQlNJQkFoUlZtaUFoZ1FJNkUvLy8vLzBrSkJWaWVWVDZBQUFBQUJiZ2NNSEZBQUFVb3VEL1AvLy80WEFkQUwvMEZoYnljT1FrSkJWaWVXRDdBaUFQV1NhQkFnQWRBL3JINDEyQUlQQUJLTmdtZ1FJLzlLaFlKb0VDSXNRaGRKMTY4WUZaSm9FQ0FISnc0bjJWWW5sZyt3SW9UeVpCQWlGd0hRWnVBQUFBQUNGd0hRUWcrd01hRHlaQkFqLzBJUEVFSTEyQU1uRGtKQlZpZVZYVmxPRDdFeUQ1UEM0QUFBQUFJUEFENFBBRDhIb0JNSGdCQ25Falgyb3Z2U0lCQWo4dVFjQUFBRHpwSTE5ci95NURnQUFBTEFBODZxRDdBaHFBR29CNkZEKy8vK0R4QkJteDBYSUFnQ0Q3QXlMUlF5RHdBai9NT2kzL3YvL2c4UVFEN2ZBZyt3TVVPaTQvdi8vZzhRUVpvbEZ5b1BzREl0RkRJUEFCUDh3NkRIKy8vK0R4QkNKUmN5RDdBaUxSUXlEd0FTRDdBVC9NT2dJL3YvL2c4UUlpY09MUlF5RHdBaUQ3QVQvTU9qei9mLy9nOFFJalFRRFFGQ0xSUXlEd0FUL01PZ3Uvdi8vZzhRUWcrd0VhZ1pxQVdvQzZHMysvLytEeEJDSlJlU0Q3QVJxRUkxRnlGRC9kZVRvUnY3Ly80UEVFSVhBZVJxRDdBeG9DWWtFQ09oeS9mLy9nOFFRZyt3TWFnRG85ZjMvLzRQc0NJdEZEUDh3alVXb1VPakUvZi8vZzhRUWcrd01qVVdvVU9oVi9mLy9nOFFRZyt3SWFnRC9kZVRvbGYzLy80UEVFSVBzQ0dvQi8zWGs2SVg5Ly8rRHhCQ0Q3QWhxQXY5MTVPaDEvZi8vZzhRUWcrd0VhZ0JvRjRrRUNHZ2RpUVFJNk43OC8vK0R4QkNEN0F6L2RlVG80UHovLzRQRUVJMWw5RnRlWDhuRGtGV0o1VmRXVTRQc0RPZ0FBQUFBVzRIRDZoRUFBT2lDL1AvL2pZTWcvLy8valpNZy8vLy9pVVh3S2RBeDlzSDRBam5HY3hhSjE0bjIveFN5aTAzd0tmbEd3ZmtDT2M2SituTHVnOFFNVzE1ZnljT0o5bFdKNVZkV1UrZ0FBQUFBVzRIRG1SRUFBSTJESVAvLy80MjdJUC8vL3luNHdmZ0NnK3dNalhELzZ3V1EveFMzVG9QKy8zWDM2QzRBQUFDRHhBeGJYbC9KdzVDUVZZbmxVMUs3TEprRUNLRXNtUVFJNndxTmRnQ0Q2d1QvMElzRGcvai9kZlJZVzhuRFZZbmxVK2dBQUFBQVc0SERNeEVBQUZEb092My8vMWxieWNNQUFBTUFBQUFCQUFJQWNtMGdMV1lnQUFBQUFBQUFBQUFBQUFBQUFBQUFXeTFkSUdOdmJtNWxZM1FvS1FCemFDQXRhUUF2WW1sdUwzTm9BQUFBQUFBQUFBRC8vLy8vQUFBQUFQLy8vLzhBQUFBQUFBQUFBQUVBQUFBa0FBQUFEQUFBQUxDRUJBZ05BQUFBMElnRUNBUUFBQUJJZ1FRSUJRQUFBQ1NEQkFnR0FBQUE1SUVFQ0FvQUFBQzhBQUFBQ3dBQUFCQUFBQUFWQUFBQUFBQUFBQU1BQUFBTW1nUUlBZ0FBQUlBQUFBQVVBQUFBRVFBQUFCY0FBQUF3aEFRSUVRQUFBQ2lFQkFnU0FBQUFDQUFBQUJNQUFBQUlBQUFBL3YvL2J3aUVCQWovLy85dkFRQUFBUEQvLzIvZ2d3UUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ1pCQWdBQUFBQUFBQUFBTjZFQkFqdWhBUUkvb1FFQ0E2RkJBZ2VoUVFJTG9VRUNENkZCQWhPaFFRSVhvVUVDRzZGQkFoK2hRUUlqb1VFQ0o2RkJBaXVoUVFJdm9VRUNNNkZCQWdBQUFBQUFBQUFBRGlaQkFnQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQVIwTkRPaUFvUjA1VktTQXpMalF1TlNBeU1EQTFNVEl3TVNBb1VtVmtJRWhoZENBekxqUXVOUzB5S1FBQUxuTjViWFJoWWdBdWMzUnlkR0ZpQUM1emFITjBjblJoWWdBdWFXNTBaWEp3QUM1dWIzUmxMa0ZDU1MxMFlXY0FMbWhoYzJnQUxtUjVibk41YlFBdVpIbHVjM1J5QUM1bmJuVXVkbVZ5YzJsdmJnQXVaMjUxTG5abGNuTnBiMjVmY2dBdWNtVnNMbVI1YmdBdWNtVnNMbkJzZEFBdWFXNXBkQUF1ZEdWNGRBQXVabWx1YVFBdWNtOWtZWFJoQUM1bGFGOW1jbUZ0WlFBdVkzUnZjbk1BTG1SMGIzSnpBQzVxWTNJQUxtUjVibUZ0YVdNQUxtZHZkQUF1WjI5MExuQnNkQUF1WkdGMFlRQXVZbk56QUM1amIyMXRaVzUwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiQUFBQUFRQUFBQUlBQUFBVWdRUUlGQUVBQUJNQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUl3QUFBQWNBQUFBQ0FBQUFLSUVFQ0NnQkFBQWdBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBREVBQUFBRkFBQUFBZ0FBQUVpQkJBaElBUUFBbkFBQUFBUUFBQUFBQUFBQUJBQUFBQVFBQUFBM0FBQUFDd0FBQUFJQUFBRGtnUVFJNUFFQUFFQUJBQUFGQUFBQUFRQUFBQVFBQUFBUUFBQUFQd0FBQUFNQUFBQUNBQUFBSklNRUNDUURBQUM4QUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUVjQUFBRC8vLzl2QWdBQUFPQ0RCQWpnQXdBQUtBQUFBQVFBQUFBQUFBQUFBZ0FBQUFJQUFBQlVBQUFBL3YvL2J3SUFBQUFJaEFRSUNBUUFBQ0FBQUFBRkFBQUFBUUFBQUFRQUFBQUFBQUFBWXdBQUFBa0FBQUFDQUFBQUtJUUVDQ2dFQUFBSUFBQUFCQUFBQUFBQUFBQUVBQUFBQ0FBQUFHd0FBQUFKQUFBQUFnQUFBRENFQkFnd0JBQUFnQUFBQUFRQUFBQUxBQUFBQkFBQUFBZ0FBQUIxQUFBQUFRQUFBQVlBQUFDd2hBUUlzQVFBQUJjQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQWNBQUFBQUVBQUFBR0FBQUF5SVFFQ01nRUFBQVFBUUFBQUFBQUFBQUFBQUFFQUFBQUJBQUFBSHNBQUFBQkFBQUFCZ0FBQU5pRkJBallCUUFBK0FJQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFDQkFBQUFBUUFBQUFZQUFBRFFpQVFJMEFnQUFCb0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFod0FBQUFFQUFBQUNBQUFBN0lnRUNPd0lBQUE1QUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUk4QUFBQUJBQUFBQWdBQUFDaUpCQWdvQ1FBQUJBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ1pBQUFBQVFBQUFBTUFBQUFzbVFRSUxBa0FBQWdBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBb0FBQUFBRUFBQUFEQUFBQU5Ka0VDRFFKQUFBSUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFLY0FBQUFCQUFBQUF3QUFBRHlaQkFnOENRQUFCQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUNzQUFBQUJnQUFBQU1BQUFCQW1RUUlRQWtBQU1nQUFBQUZBQUFBQUFBQUFBUUFBQUFJQUFBQXRRQUFBQUVBQUFBREFBQUFDSm9FQ0FnS0FBQUVBQUFBQUFBQUFBQUFBQUFFQUFBQUJBQUFBTG9BQUFBQkFBQUFBd0FBQUF5YUJBZ01DZ0FBVEFBQUFBQUFBQUFBQUFBQUJBQUFBQVFBQUFEREFBQUFBUUFBQUFNQUFBQlltZ1FJV0FvQUFBd0FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUF5UUFBQUFnQUFBQURBQUFBWkpvRUNHUUtBQUFFQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQU00QUFBQUJBQUFBQUFBQUFBQUFBQUJrQ2dBQURnRUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQVJBQUFBQXdBQUFBQUFBQUFBQUFBQWNnc0FBTmNBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBSUFBQUFBQUFBQUFBQUFBS3dRQUFCQUJRQUFHd0FBQUN3QUFBQUVBQUFBRUFBQUFBa0FBQUFEQUFBQUFBQUFBQUFBQUFEc0ZRQUFMQU1BQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJTQkJBZ0FBQUFBQXdBQkFBQUFBQUFvZ1FRSUFBQUFBQU1BQWdBQUFBQUFTSUVFQ0FBQUFBQURBQU1BQUFBQUFPU0JCQWdBQUFBQUF3QUVBQUFBQUFBa2d3UUlBQUFBQUFNQUJRQUFBQUFBNElNRUNBQUFBQUFEQUFZQUFBQUFBQWlFQkFnQUFBQUFBd0FIQUFBQUFBQW9oQVFJQUFBQUFBTUFDQUFBQUFBQU1JUUVDQUFBQUFBREFBa0FBQUFBQUxDRUJBZ0FBQUFBQXdBS0FBQUFBQURJaEFRSUFBQUFBQU1BQ3dBQUFBQUEySVVFQ0FBQUFBQURBQXdBQUFBQUFOQ0lCQWdBQUFBQUF3QU5BQUFBQUFEc2lBUUlBQUFBQUFNQURnQUFBQUFBS0lrRUNBQUFBQUFEQUE4QUFBQUFBQ3laQkFnQUFBQUFBd0FRQUFBQUFBQTBtUVFJQUFBQUFBTUFFUUFBQUFBQVBKa0VDQUFBQUFBREFCSUFBQUFBQUVDWkJBZ0FBQUFBQXdBVEFBQUFBQUFJbWdRSUFBQUFBQU1BRkFBQUFBQUFESm9FQ0FBQUFBQURBQlVBQUFBQUFGaWFCQWdBQUFBQUF3QVdBQUFBQUFCa21nUUlBQUFBQUFNQUZ3QUFBQUFBQUFBQUFBQUFBQUFEQUJnQUFBQUFBQUFBQUFBQUFBQUFBd0FaQUFBQUFBQUFBQUFBQUFBQUFBTUFHZ0FBQUFBQUFBQUFBQUFBQUFBREFCc0FBUUFBQVB5RkJBZ0FBQUFBQWdBTUFCRUFBQUFBQUFBQUFBQUFBQVFBOGY4Y0FBQUFMSmtFQ0FBQUFBQUJBQkFBS2dBQUFEU1pCQWdBQUFBQUFRQVJBRGdBQUFBOG1RUUlBQUFBQUFFQUVnQkZBQUFBWUpvRUNBQUFBQUFCQUJZQVNRQUFBR1NhQkFnQkFBQUFBUUFYQUZVQUFBQWdoZ1FJQUFBQUFBSUFEQUJyQUFBQVZJWUVDQUFBQUFBQ0FBd0FFUUFBQUFBQUFBQUFBQUFBQkFEeC8zY0FBQUF3bVFRSUFBQUFBQUVBRUFDRUFBQUFPSmtFQ0FBQUFBQUJBQkVBa1FBQUFDaUpCQWdBQUFBQUFRQVBBSjhBQUFBOG1RUUlBQUFBQUFFQUVnQ3JBQUFBcklnRUNBQUFBQUFDQUF3QXdRQUFBQUFBQUFBQUFBQUFCQUR4LzhnQUFBQUFBQUFBSEFFQUFCSUFBQURaQUFBQVFKa0VDQUFBQUFBUkFCTUE0Z0FBQUFBQUFBQnhBQUFBRWdBQUFQTUFBQURzaUFRSUJBQUFBQkVBRGdENkFBQUFBQUFBQUFzQ0FBQVNBQUFBREFFQUFDeVpCQWdBQUFBQUVBTHgveDBCQUFCY21nUUlBQUFBQUJFQ0ZnQXFBUUFBYUlnRUNFSUFBQUFTQUF3QU9nRUFBQUFBQUFCOUFBQUFFZ0FBQUV3QkFBQ3doQVFJQUFBQUFCSUFDZ0JTQVFBQUFBQUFBS3dCQUFBU0FBQUFaQUVBQU5pRkJBZ0FBQUFBRWdBTUFHc0JBQUFBQUFBQXJ3QUFBQklBQUFCOUFRQUFMSmtFQ0FBQUFBQVFBdkgva0FFQUFCU0lCQWhTQUFBQUVnQU1BS0FCQUFBQUFBQUFKd0FBQUJJQUFBQzFBUUFBWkpvRUNBQUFBQUFRQVBIL3dRRUFBSUNHQkFpVEFRQUFFZ0FNQU1ZQkFBQUFBQUFBM1FBQUFCSUFBQURqQVFBQUxKa0VDQUFBQUFBUUF2SC85QUVBQUFBQUFBQTZBQUFBRWdBQUFBUUNBQUFBQUFBQXFnRUFBQklBQUFBV0FnQUFXSm9FQ0FBQUFBQWdBQllBSVFJQUFOQ0lCQWdBQUFBQUVnQU5BQ2NDQUFBc21RUUlBQUFBQUJBQzhmODdBZ0FBQUFBQUFEWUFBQUFTQUFBQVRBSUFBQUFBQUFEWkFBQUFFZ0FBQUZ3Q0FBQUFBQUFBS0FBQUFCSUFBQUJzQWdBQVpKb0VDQUFBQUFBUUFQSC9jd0lBQUF5YUJBZ0FBQUFBRVFBVkFJa0NBQUJvbWdRSUFBQUFBQkFBOGYrT0FnQUFBQUFBQUE0QUFBQVNBQUFBbndJQUFBQUFBQUI0QUFBQUVnQUFBTElDQUFBc21RUUlBQUFBQUJBQzhmL0ZBZ0FBOElnRUNBUUFBQUFSQUE0QTFBSUFBRmlhQkFnQUFBQUFFQUFXQU9FQ0FBQUFBQUFBT1FBQUFCSUFBQUR6QWdBQUFBQUFBQUFBQUFBZ0FBQUFCd01BQUN5WkJBZ0FBQUFBRUFMeC94MERBQUFBQUFBQUFBQUFBQ0FBQUFBQVkyRnNiRjluYlc5dVgzTjBZWEowQUdOeWRITjBkV1ptTG1NQVgxOURWRTlTWDB4SlUxUmZYd0JmWDBSVVQxSmZURWxUVkY5ZkFGOWZTa05TWDB4SlUxUmZYd0J3TGpBQVkyOXRjR3hsZEdWa0xqRUFYMTlrYjE5bmJHOWlZV3hmWkhSdmNuTmZZWFY0QUdaeVlXMWxYMlIxYlcxNUFGOWZRMVJQVWw5RlRrUmZYd0JmWDBSVVQxSmZSVTVFWDE4QVgxOUdVa0ZOUlY5RlRrUmZYd0JmWDBwRFVsOUZUa1JmWHdCZlgyUnZYMmRzYjJKaGJGOWpkRzl5YzE5aGRYZ0FZbUZqYXk1akFHVjRaV05zUUVCSFRFbENRMTh5TGpBQVgwUlpUa0ZOU1VNQVkyeHZjMlZBUUVkTVNVSkRYekl1TUFCZlpuQmZhSGNBY0dWeWNtOXlRRUJIVEVsQ1ExOHlMakFBWDE5bWFXNXBYMkZ5Y21GNVgyVnVaQUJmWDJSemIxOW9ZVzVrYkdVQVgxOXNhV0pqWDJOemRWOW1hVzVwQUhONWMzUmxiVUJBUjB4SlFrTmZNaTR3QUY5cGJtbDBBR1JoWlcxdmJrQkFSMHhKUWtOZk1pNHdBRjl6ZEdGeWRBQnpkSEpzWlc1QVFFZE1TVUpEWHpJdU1BQmZYMlpwYm1sZllYSnlZWGxmYzNSaGNuUUFYMTlzYVdKalgyTnpkVjlwYm1sMEFHbHVaWFJmWVdSa2NrQkFSMHhKUWtOZk1pNHdBRjlmWW5OelgzTjBZWEowQUcxaGFXNEFYMTlzYVdKalgzTjBZWEowWDIxaGFXNUFRRWRNU1VKRFh6SXVNQUJmWDJsdWFYUmZZWEp5WVhsZlpXNWtBR1IxY0RKQVFFZE1TVUpEWHpJdU1BQnpkSEpqWVhSQVFFZE1TVUpEWHpJdU1BQmtZWFJoWDNOMFlYSjBBRjltYVc1cEFGOWZjSEpsYVc1cGRGOWhjbkpoZVY5bGJtUUFZbnBsY205QVFFZE1TVUpEWHpJdU1BQmxlR2wwUUVCSFRFbENRMTh5TGpBQVlYUnZhVUJBUjB4SlFrTmZNaTR3QUY5bFpHRjBZUUJmUjB4UFFrRk1YMDlHUmxORlZGOVVRVUpNUlY4QVgyVnVaQUJvZEc5dWMwQkFSMHhKUWtOZk1pNHdBR052Ym01bFkzUkFRRWRNU1VKRFh6SXVNQUJmWDJsdWFYUmZZWEp5WVhsZmMzUmhjblFBWDBsUFgzTjBaR2x1WDNWelpXUUFYMTlrWVhSaFgzTjBZWEowQUhOdlkydGxkRUJBUjB4SlFrTmZNaTR3QUY5S2RsOVNaV2RwYzNSbGNrTnNZWE56WlhNQVgxOXdjbVZwYm1sMFgyRnljbUY1WDNOMFlYSjBBRjlmWjIxdmJsOXpkR0Z5ZEY5ZkFBPT0iOw0KDQoNCg0KJGJhY2tfY29ubmVjdD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHTnRaRDBnSW14NWJuZ2lPdzBLSkhONWMzUmxiVDBnSjJWamFHOGdJbUIxYm1GdFpTQXRZV0FpT3ljN0RRb2tjM2x6ZEdWdE1UMGdKMlZqYUc4Z0ltQnBaR0FpT3ljN0RRb2tjM2x6ZEdWdE1qMGdKMlZqYUc4Z0ltQndkMlJnSWpzbk93MEtKSE41YzNSbGJUTTlJQ2RsWTJodklDSmdkMmh2WVcxcFlFQmdhRzl6ZEc1aGJXVmdPbjRnUGlJN0p6c05DaVJ6ZVhOMFpXMDBQU0FuTDJKcGJpOXphQ2M3RFFva01EMGtZMjFrT3cwS0pIUmhjbWRsZEQwa1FWSkhWbHN3WFRzTkNpUndiM0owUFNSQlVrZFdXekZkT3cwS0pHbGhaR1J5UFdsdVpYUmZZWFJ2Ymlna2RHRnlaMlYwS1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUW9rY0dGa1pISTljMjlqYTJGa1pISmZhVzRvSkhCdmNuUXNJQ1JwWVdSa2Npa2dmSHdnWkdsbEtDSkZjbkp2Y2pvZ0pDRmNiaUlwT3cwS0pIQnliM1J2UFdkbGRIQnliM1J2WW5sdVlXMWxLQ2QwWTNBbktUc05Dbk52WTJ0bGRDaFRUME5MUlZRc0lGQkdYMGxPUlZRc0lGTlBRMHRmVTFSU1JVRk5MQ0FrY0hKdmRHOHBJSHg4SUdScFpTZ2lSWEp5YjNJNklDUWhYRzRpS1RzTkNtTnZibTVsWTNRb1UwOURTMFZVTENBa2NHRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DbTl3Wlc0b1UxUkVTVTRzSUNJK0psTlBRMHRGVkNJcE93MEtiM0JsYmloVFZFUlBWVlFzSUNJK0psTlBRMHRGVkNJcE93MEtiM0JsYmloVFZFUkZVbElzSUNJK0psTlBRMHRGVkNJcE93MEtjSEpwYm5RZ0lseHVYRzQ2T2lCM05HTnJNVzVuTFhOb1pXeHNJQ2hRY21sMllYUmxJRUoxYVd4a0lIWXdMak1wSUhKbGRtVnljMlVnYzJobGJHd2dPanBjYmx4dUlqc05DbkJ5YVc1MElDSmNibE41YzNSbGJTQkpibVp2T2lBaU95QU5Dbk41YzNSbGJTZ2tjM2x6ZEdWdEtUc05DbkJ5YVc1MElDSmNibGx2ZFhJZ1NVUTZJQ0k3SUEwS2MzbHpkR1Z0S0NSemVYTjBaVzB4S1RzTkNuQnlhVzUwSUNKY2JrTjFjbkpsYm5RZ1JHbHlaV04wYjNKNU9pQWlPeUFOQ25ONWMzUmxiU2drYzNsemRHVnRNaWs3RFFwd2NtbHVkQ0FpWEc0aU93MEtjM2x6ZEdWdEtDUnplWE4wWlcwektUc2djM2x6ZEdWdEtDUnplWE4wWlcwMEtUc05DbU5zYjNObEtGTlVSRWxPS1RzTkNtTnNiM05sS0ZOVVJFOVZWQ2s3RFFwamJHOXpaU2hUVkVSRlVsSXBPdz09IjsNCg0KDQoNCiRiYWNrZG9vcj0iZjBWTVJnRUJBUUFBQUFBQUFBQUFBQUlBQXdBQkFBQUFvSVVFQ0RRQUFBRDRFZ0FBQUFBQUFEUUFJQUFIQUNnQUlnQWZBQVlBQUFBMEFBQUFOSUFFQ0RTQUJBamdBQUFBNEFBQUFBVUFBQUFFQUFBQUF3QUFBQlFCQUFBVWdRUUlGSUVFQ0JNQUFBQVRBQUFBQkFBQUFBRUFBQUFCQUFBQUFBQUFBQUNBQkFnQWdBUUlyQWtBQUt3SkFBQUZBQUFBQUJBQUFBRUFBQUNzQ1FBQXJKa0VDS3laQkFnMEFRQUFPQUVBQUFZQUFBQUFFQUFBQWdBQUFNQUpBQURBbVFRSXdKa0VDTWdBQUFESUFBQUFCZ0FBQUFRQUFBQUVBQUFBS0FFQUFDaUJCQWdvZ1FRSUlBQUFBQ0FBQUFBRUFBQUFCQUFBQUZIbGRHUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQUFBRUFBQUFMMnhwWWk5c1pDMXNhVzUxZUM1emJ5NHlBQUFFQUFBQUVBQUFBQUVBQUFCSFRsVUFBQUFBQUFJQUFBQUNBQUFBQUFBQUFCRUFBQUFUQUFBQUFBQUFBQUFBQUFBUUFBQUFFUUFBQUFBQUFBQUFBQUFBQ1FBQUFBZ0FBQUFGQUFBQUF3QUFBQTBBQUFBQUFBQUFBQUFBQUE4QUFBQUtBQUFBRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFBQUFCQUFBQUFBQUFBQWNBQUFBTEFBQUFBQUFBQUFRQUFBQU1BQUFBRGdBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUM0QUFBQUFBQUFBZFFFQUFCSUFBQUNnQUFBQUFBQUFBSEVBQUFBU0FBQUFOQUFBQUFBQUFBRE1BQUFBRWdBQUFHb0FBQUFBQUFBQVdnQUFBQklBQUFCTUFBQUFBQUFBQUhnQUFBQVNBQUFBWXdBQUFBQUFBQUE1QUFBQUVnQUFBRmdBQUFBQUFBQUFPUUFBQUJJQUFBQ09BQUFBQUFBQUFPWUFBQUFTQUFBQU93QUFBQUFBQUFBNkFBQUFFZ0FBQUZNQUFBQUFBQUFBT1FBQUFCSUFBQUIxQUFBQUFBQUFBTGtBQUFBU0FBQUFlZ0FBQUFBQUFBQXJBQUFBRWdBQUFFY0FBQUFBQUFBQWVBQUFBQklBQUFCdkFBQUFBQUFBQUE0QUFBQVNBQUFBZndBQUFFaUpCQWdFQUFBQUVRQU9BRUFBQUFBQUFBQUFPUUFBQUJJQUFBQUJBQUFBQUFBQUFBQUFBQUFnQUFBQUZRQUFBQUFBQUFBQUFBQUFJQUFBQUFCZlNuWmZVbVZuYVhOMFpYSkRiR0Z6YzJWekFGOWZaMjF2Ymw5emRHRnlkRjlmQUd4cFltTXVjMjh1TmdCbGVHVmpiQUJ3WlhKeWIzSUFaSFZ3TWdCemIyTnJaWFFBYzJWdVpBQmhZMk5sY0hRQVltbHVaQUJ6WlhSemIyTnJiM0IwQUd4cGMzUmxiZ0JtYjNKckFHaDBiMjV6QUdWNGFYUUFZWFJ2YVFCZlNVOWZjM1JrYVc1ZmRYTmxaQUJmWDJ4cFltTmZjM1JoY25SZmJXRnBiZ0JqYkc5elpRQkhURWxDUTE4eUxqQUFBQUFDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQVFBQ0FBQUFBQUFBQUFFQUFRQWtBQUFBRUFBQUFBQUFBQUFRYVdrTkFBQUNBS1lBQUFBQUFBQUFpSm9FQ0FZU0FBQ1ltZ1FJQndFQUFKeWFCQWdIQWdBQW9Kb0VDQWNEQUFDa21nUUlCd1FBQUtpYUJBZ0hCUUFBckpvRUNBY0dBQUN3bWdRSUJ3Y0FBTFNhQkFnSENBQUF1Sm9FQ0FjSkFBQzhtZ1FJQndvQUFNQ2FCQWdIQ3dBQXhKb0VDQWNNQUFESW1nUUlCdzBBQU15YUJBZ0hEZ0FBMEpvRUNBY1FBQUJWaWVXRDdBam9NUUVBQU9pREFRQUE2RnNFQUFESnd3RC9OWkNhQkFqL0paU2FCQWdBQUFBQS95V1ltZ1FJYUFBQUFBRHA0UC8vLy84bG5Kb0VDR2dJQUFBQTZkRC8vLy8vSmFDYUJBaG9FQUFBQU9uQS8vLy8veVdrbWdRSWFCZ0FBQURwc1AvLy8vOGxxSm9FQ0dnZ0FBQUE2YUQvLy8vL0pheWFCQWhvS0FBQUFPbVEvLy8vL3lXd21nUUlhREFBQUFEcGdQLy8vLzhsdEpvRUNHZzRBQUFBNlhELy8vLy9KYmlhQkFob1FBQUFBT2xnLy8vLy95VzhtZ1FJYUVnQUFBRHBVUC8vLy84bHdKb0VDR2hRQUFBQTZVRC8vLy8vSmNTYUJBaG9XQUFBQU9rdy8vLy8veVhJbWdRSWFHQUFBQURwSVAvLy8vOGx6Sm9FQ0dob0FBQUE2UkQvLy8vL0pkQ2FCQWhvY0FBQUFPa0EvLy8vTWUxZWllR0Q1UEJRVkZKb3JZZ0VDR2hjaUFRSVVWWm9RSVlFQ09oZi8vLy85SkNRVllubFUrZ2JBQUFBZ2NPL0ZBQUFnK3dFaTRQOC8vLy9oY0IwQXYvUWc4UUVXMTNEaXh3a3cxV0o1WVBzQ0lBOTRKb0VDQUIwRE9zY2c4QUVvOXlhQkFqLzBxSGNtZ1FJaXhDRjBuWHJ4Z1hnbWdRSUFjbkRWWW5sZyt3SW9ieVpCQWlGd0hRU3VBQUFBQUNGd0hRSnh3UWt2SmtFQ1AvUXljT1FrRldKNVZlRDdHU0Q1UEM0QUFBQUFJUEFENFBBRDhIb0JNSGdCQ25FeDBYa0FRQUFBTWRGK0V5SkJBakhSQ1FJQUFBQUFNZEVKQVFCQUFBQXh3UWtBZ0FBQU9nSi8vLy9pVVh3ZzMzd0FIa1l4d1FraklrRUNPZzAvdi8veHdRa0FRQUFBT2lvL3YvL1pzZEYxQUlBeDBYWUFBQUFBSXRGRElQQUJJc0FpUVFrNkp2Ky8vOFB0OENKQkNUb3NQNy8vMmFKUmRiSFJDUVFCQUFBQUkxRjVJbEVKQXpIUkNRSUFnQUFBTWRFSkFRQkFBQUFpMFh3aVFRazZCTCsvLytOUmRUSFJDUUlFQUFBQUlsRUpBU0xSZkNKQkNUb0tQNy8vNFhBZVJqSEJDU1RpUVFJNktqOS8vL0hCQ1FCQUFBQTZCeisvLy9IUkNRRUNBQUFBSXRGOElrRUpPaTUvZi8vaGNCNUdNY0VKSmlKQkFqb2VmMy8vOGNFSkFFQUFBRG83ZjMvLzhkRjZCQUFBQUNOUmVpTlZjU0pSQ1FJaVZRa0JJdEY4SWtFSk9odC9mLy9pVVgwZzMzMEFIa014d1FraklrRUNPZzQvZi8vNkVQOS8vK0Z3QStFcHdBQUFJdEYrTG4vLy8vL2lVVzR1QUFBQUFEOGkzMjQ4cTZKeVBmUWcrZ0J4MFFrREFBQUFBQ0pSQ1FJaTBYNGlVUWtCSXRGOUlrRUpPaVEvZi8veDBRa0JBQUFBQUNMUmZTSkJDVG9QZjMvLzhkRUpBUUJBQUFBaTBYMGlRUWs2Q3I5Ly8vSFJDUUVBZ0FBQUl0RjlJa0VKT2dYL2YvL3gwUWtDQUFBQUFESFJDUUVuNGtFQ01jRUpKK0pCQWpvZS96Ly80dEY4SWtFSk9pQS9QLy94d1FrQUFBQUFPZ0UvZi8vaTBYMGlRUWs2R244Ly8vcER2Ly8vMVdKNVZkV01mWlQ2SC85Ly8rQnd5TVNBQUNEN0F6b0Vmei8vNDJESVAvLy80MlRJUC8vLzRsRjhDblF3ZmdDT2NaekZvblgveFN5aTBYd2c4WUJLZmlKK3NINEFqbkdjdXlEeEF4YlhsOWR3MVdKNVlQc0dJbGQ5T2d0L2YvL2djUFJFUUFBaVhYNGlYMzhqYk1nLy8vL2pic2cvLy8vS2Y3Qi9nTHJBLzhVdDRQdUFZUCsvM1gxNkRvQUFBQ0xYZlNMZGZpTGZmeUo3RjNEa0ZXSjVWT0Q3QVNockprRUNJUDQvM1FTdTZ5WkJBai8wSXREL0lQckJJUDQvM1h6ZzhRRVcxM0RrSkNRVllubFUraTcvUC8vZ2NOZkVRQUFnK3dFNkxIOC8vK0R4QVJiWGNNQUFBQURBQUFBQVFBQ0FEbzZJSGMwWTJzeGJtY3RjMmhsYkd3Z0tGQnlhWFpoZEdVZ1FuVnBiR1FnZGpBdU15a2dZbWx1WkNCemFHVnNiQ0JpWVdOclpHOXZjaUE2T2lBS0NnQnpiMk5yWlhRQVltbHVaQUJzYVhOMFpXNEFMMkpwYmk5emFBQUFBQUFBQVAvLy8vOEFBQUFBLy8vLy93QUFBQUFBQUFBQUFRQUFBQ1FBQUFBTUFBQUFpSVFFQ0EwQUFBQWtpUVFJQkFBQUFFaUJCQWdGQUFBQUVJTUVDQVlBQUFEZ2dRUUlDZ0FBQUxBQUFBQUxBQUFBRUFBQUFCVUFBQUFBQUFBQUF3QUFBSXlhQkFnQ0FBQUFlQUFBQUJRQUFBQVJBQUFBRndBQUFCQ0VCQWdSQUFBQUNJUUVDQklBQUFBSUFBQUFFd0FBQUFnQUFBRCsvLzl2NklNRUNQLy8vMjhCQUFBQThQLy9iOENEQkFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0prRUNBQUFBQUFBQUFBQXRvUUVDTWFFQkFqV2hBUUk1b1FFQ1BhRUJBZ0doUVFJRm9VRUNDYUZCQWcyaFFRSVJvVUVDRmFGQkFobWhRUUlkb1VFQ0lhRkJBaVdoUVFJQUFBQUFBQUFBQUM0bVFRSUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUVkRFF6b2dLRWRPVlNrZ015NDBMallnS0ZWaWRXNTBkU0F6TGpRdU5pMHhkV0oxYm5SMU1pa0FBRWREUXpvZ0tFZE9WU2tnTkM0d0xqTWdLRlZpZFc1MGRTQTBMakF1TXkweGRXSjFiblIxTlNrQUFFZERRem9nS0VkT1ZTa2dOQzR3TGpNZ0tGVmlkVzUwZFNBMExqQXVNeTB4ZFdKMWJuUjFOU2tBQUVkRFF6b2dLRWRPVlNrZ015NDBMallnS0ZWaWRXNTBkU0F6TGpRdU5pMHhkV0oxYm5SMU1pa0FBRWREUXpvZ0tFZE9WU2tnTkM0d0xqTWdLRlZpZFc1MGRTQTBMakF1TXkweGRXSjFiblIxTlNrQUFFZERRem9nS0VkT1ZTa2dNeTQwTGpZZ0tGVmlkVzUwZFNBekxqUXVOaTB4ZFdKMWJuUjFNaWtBQUFBY0FBQUFBZ0FBQUFBQUJBQUFBQUFBb0lVRUNDSUFBQUFBQUFBQUFBQUFBRFFBQUFBQ0FBc0JBQUFFQUFBQUFBRG9oUVFJQkFBQUFDU0pCQWdTQUFBQWlJUUVDQXNBQUFERWhRUUlKQUFBQUFBQUFBQUFBQUFBTEFBQUFBSUFtd0VBQUFRQUFBQUFBT2lGQkFnRUFBQUFPNGtFQ0FZQUFBQ2RoQVFJQWdBQUFBQUFBQUFBQUFBQUlRQUFBQUlBZWdBQUFKRUFBQUI1QUFBQVgwbFBYM04wWkdsdVgzVnpaV1FBQUFBQUFIWUFBQUFDQUFBQUFBQUVBUUFBQUFDZ2hRUUl3b1VFQ0M0dUwzTjVjMlJsY0hNdmFUTTROaTlsYkdZdmMzUmhjblF1VXdBdlluVnBiR1F2WW5WcGJHUmtMMmRzYVdKakxUSXVNeTQyTDJKMWFXeGtMWFJ5WldVdloyeHBZbU10TWk0ekxqWXZZM04xQUVkT1ZTQkJVeUF5TGpFMkxqa3hBQUdBalFBQUFBSUFGQUFBQUFRQld3QUFBTVNGQkFqRWhRUUlZZ0FBQUFFQUFBQUFFUUFBQUFLUUFBQUFCQWNDVkFBQUFBRUlBcDBBQUFBQ0J3S0xBQUFBQkFjQ1ZnQUFBQUVHQWdjQUFBQUNCUU5wYm5RQUJBVUNSZ0FBQUFnRkFvWUFBQUFJQndKTEFBQUFCQVVDa0FBQUFBUUhBbDBBQUFBQkJnU3dBQUFBQVJtTEFBQUFBUVVEU0lrRUNBVlBBQUFBQUl3QUFBQUNBRllBQUFBRUFZSUFBQUF2WW5WcGJHUXZZblZwYkdSa0wyZHNhV0pqTFRJdU15NDJMMkoxYVd4a0xYUnlaV1V2YVRNNE5pMXNhV0pqTDJOemRTOWpjblJwTGxNQUwySjFhV3hrTDJKMWFXeGtaQzluYkdsaVl5MHlMak11Tmk5aWRXbHNaQzEwY21WbEwyZHNhV0pqTFRJdU15NDJMMk56ZFFCSFRsVWdRVk1nTWk0eE5pNDVNUUFCZ0l3QUFBQUNBR1lBQUFBRUFTOEJBQUF2WW5WcGJHUXZZblZwYkdSa0wyZHNhV0pqTFRJdU15NDJMMkoxYVd4a0xYUnlaV1V2YVRNNE5pMXNhV0pqTDJOemRTOWpjblJ1TGxNQUwySjFhV3hrTDJKMWFXeGtaQzluYkdsaVl5MHlMak11Tmk5aWRXbHNaQzEwY21WbEwyZHNhV0pqTFRJdU15NDJMMk56ZFFCSFRsVWdRVk1nTWk0eE5pNDVNUUFCZ0FFUkFCQUdFUUVTQVFNSUd3Z2xDQk1GQUFBQUFSRUJFQVlTQVJFQkpRNFRDd01PR3c0QUFBSWtBQU1PQ3dzK0N3QUFBeVFBQXdnTEN6NExBQUFFTkFBRERqb0xPd3RKRXo4TUFnb0FBQVVtQUVrVEFBQUFBUkVBRUFZRENCc0lKUWdUQlFBQUFBRVJBQkFHQXdnYkNDVUlFd1VBQUFCWEFBQUFBZ0F5QUFBQUFRSDdEZzBBQVFFQkFRQUFBQUVBQUFFdUxpOXplWE5rWlhCekwya3pPRFl2Wld4bUFBQnpkR0Z5ZEM1VEFBRUFBQUFBQlFLZ2hRUUlBOEFBQVRNaE5EMGxJZ01ZSUZsYUlTSmNXd0lCQUFFQkl3QUFBQUlBSFFBQUFBRUIrdzROQUFFQkFRRUFBQUFCQUFBQkFHbHVhWFF1WXdBQUFBQUFxUUFBQUFJQVVBQUFBQUVCK3c0TkFBRUJBUUVBQUFBQkFBQUJMMkoxYVd4a0wySjFhV3hrWkM5bmJHbGlZeTB5TGpNdU5pOWlkV2xzWkMxMGNtVmxMMmt6T0RZdGJHbGlZeTlqYzNVQUFHTnlkR2t1VXdBQkFBQUFBQVVDNklVRUNBUEFBQUU5QWdFQUFRRUFCUUlraVFRSUF5NEJJUzhoV1djQ0F3QUJBUUFGQW9pRUJBZ0RId0VoTHowQ0JRQUJBUUFGQXNTRkJBZ0RDZ0VoTHlGWlp6MW5MeTh3UFNFaEFnRUFBUUdJQUFBQUFnQlFBQUFBQVFIN0RnMEFBUUVCQVFBQUFBRUFBQUV2WW5WcGJHUXZZblZwYkdSa0wyZHNhV0pqTFRJdU15NDJMMkoxYVd4a0xYUnlaV1V2YVRNNE5pMXNhV0pqTDJOemRRQUFZM0owYmk1VEFBRUFBQUFBQlFMb2hRUUlBeUVCUFFJQkFBRUJBQVVDTzRrRUNBTVNBVDBoSVFJQkFBRUJBQVVDbllRRUNBTUpBU0VDQVFBQkFXbHVhWFF1WXdCemFHOXlkQ0JwYm5RQUwySjFhV3hrTDJKMWFXeGtaQzluYkdsaVl5MHlMak11Tmk5aWRXbHNaQzEwY21WbEwyZHNhV0pqTFRJdU15NDJMMk56ZFFCc2IyNW5JR3h2Ym1jZ2FXNTBBSFZ1YzJsbmJtVmtJR05vWVhJQVIwNVZJRU1nTXk0MExqWWdLRlZpZFc1MGRTQXpMalF1TmkweGRXSjFiblIxTWlrQWJHOXVaeUJzYjI1bklIVnVjMmxuYm1Wa0lHbHVkQUJ6YUc5eWRDQjFibk5wWjI1bFpDQnBiblFBWDBsUFgzTjBaR2x1WDNWelpXUUFBQzV6ZVcxMFlXSUFMbk4wY25SaFlnQXVjMmh6ZEhKMFlXSUFMbWx1ZEdWeWNBQXVibTkwWlM1QlFra3RkR0ZuQUM1b1lYTm9BQzVrZVc1emVXMEFMbVI1Ym5OMGNnQXVaMjUxTG5abGNuTnBiMjRBTG1kdWRTNTJaWEp6YVc5dVgzSUFMbkpsYkM1a2VXNEFMbkpsYkM1d2JIUUFMbWx1YVhRQUxuUmxlSFFBTG1acGJta0FMbkp2WkdGMFlRQXVaV2hmWm5KaGJXVUFMbU4wYjNKekFDNWtkRzl5Y3dBdWFtTnlBQzVrZVc1aGJXbGpBQzVuYjNRQUxtZHZkQzV3YkhRQUxtUmhkR0VBTG1KemN3QXVZMjl0YldWdWRBQXVaR1ZpZFdkZllYSmhibWRsY3dBdVpHVmlkV2RmY0hWaWJtRnRaWE1BTG1SbFluVm5YMmx1Wm04QUxtUmxZblZuWDJGaVluSmxkZ0F1WkdWaWRXZGZiR2x1WlFBdVpHVmlkV2RmYzNSeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3dBQUFBRUFBQUFDQUFBQUZJRUVDQlFCQUFBVEFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFDTUFBQUFIQUFBQUFnQUFBQ2lCQkFnb0FRQUFJQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUF4QUFBQUJRQUFBQUlBQUFCSWdRUUlTQUVBQUpnQUFBQUVBQUFBQUFBQUFBUUFBQUFFQUFBQU53QUFBQXNBQUFBQ0FBQUE0SUVFQ09BQkFBQXdBUUFBQlFBQUFBRUFBQUFFQUFBQUVBQUFBRDhBQUFBREFBQUFBZ0FBQUJDREJBZ1FBd0FBc0FBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFCSEFBQUEvLy8vYndJQUFBREFnd1FJd0FNQUFDWUFBQUFFQUFBQUFBQUFBQUlBQUFBQ0FBQUFWQUFBQVA3Ly8yOENBQUFBNklNRUNPZ0RBQUFnQUFBQUJRQUFBQUVBQUFBRUFBQUFBQUFBQUdNQUFBQUpBQUFBQWdBQUFBaUVCQWdJQkFBQUNBQUFBQVFBQUFBQUFBQUFCQUFBQUFnQUFBQnNBQUFBQ1FBQUFBSUFBQUFRaEFRSUVBUUFBSGdBQUFBRUFBQUFDd0FBQUFRQUFBQUlBQUFBZFFBQUFBRUFBQUFHQUFBQWlJUUVDSWdFQUFBWEFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFIQUFBQUFCQUFBQUJnQUFBS0NFQkFpZ0JBQUFBQUVBQUFBQUFBQUFBQUFBQkFBQUFBUUFBQUI3QUFBQUFRQUFBQVlBQUFDZ2hRUUlvQVVBQUlRREFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQWdRQUFBQUVBQUFBR0FBQUFKSWtFQ0NRSkFBQWRBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBSWNBQUFBQkFBQUFBZ0FBQUVTSkJBaEVDUUFBWXdBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFDUEFBQUFBUUFBQUFJQUFBQ29pUVFJcUFrQUFBUUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFtUUFBQUFFQUFBQURBQUFBckprRUNLd0pBQUFJQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUtBQUFBQUJBQUFBQXdBQUFMU1pCQWkwQ1FBQUNBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQ25BQUFBQVFBQUFBTUFBQUM4bVFRSXZBa0FBQVFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBckFBQUFBWUFBQUFEQUFBQXdKa0VDTUFKQUFESUFBQUFCUUFBQUFBQUFBQUVBQUFBQ0FBQUFMVUFBQUFCQUFBQUF3QUFBSWlhQkFpSUNnQUFCQUFBQUFBQUFBQUFBQUFBQkFBQUFBUUFBQUM2QUFBQUFRQUFBQU1BQUFDTW1nUUlqQW9BQUVnQUFBQUFBQUFBQUFBQUFBUUFBQUFFQUFBQXd3QUFBQUVBQUFBREFBQUExSm9FQ05RS0FBQU1BQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBTWtBQUFBSUFBQUFBd0FBQU9DYUJBamdDZ0FBQkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFET0FBQUFBUUFBQUFBQUFBQUFBQUFBNEFvQUFDWUJBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUExd0FBQUFFQUFBQUFBQUFBQUFBQUFBZ01BQUNJQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQU9ZQUFBQUJBQUFBQUFBQUFBQUFBQUNRREFBQUpRQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBRDJBQUFBQVFBQUFBQUFBQUFBQUFBQXRRd0FBQ3NDQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdFQUFBRUFBQUFBQUFBQUFBQUFBT0FPQUFCMkFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFCQUJBQUFCQUFBQUFBQUFBQUFBQUFCV0R3QUF1d0VBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFjQVFBQUFRQUFBREFBQUFBQUFBQUFFUkVBQUw4QUFBQUFBQUFBQUFBQUFBRUFBQUFCQUFBQUVRQUFBQU1BQUFBQUFBQUFBQUFBQU5BUkFBQW5BUUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQ0FBQUFBQUFBQUFBQUFBQklHQUFBOEFVQUFDRUFBQUEvQUFBQUJBQUFBQkFBQUFBSkFBQUFBd0FBQUFBQUFBQUFBQUFBT0I0QUFMSURBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVZ1FRSUFBQUFBQU1BQVFBQUFBQUFLSUVFQ0FBQUFBQURBQUlBQUFBQUFFaUJCQWdBQUFBQUF3QURBQUFBQUFEZ2dRUUlBQUFBQUFNQUJBQUFBQUFBRUlNRUNBQUFBQUFEQUFVQUFBQUFBTUNEQkFnQUFBQUFBd0FHQUFBQUFBRG9nd1FJQUFBQUFBTUFCd0FBQUFBQUNJUUVDQUFBQUFBREFBZ0FBQUFBQUJDRUJBZ0FBQUFBQXdBSkFBQUFBQUNJaEFRSUFBQUFBQU1BQ2dBQUFBQUFvSVFFQ0FBQUFBQURBQXNBQUFBQUFLQ0ZCQWdBQUFBQUF3QU1BQUFBQUFBa2lRUUlBQUFBQUFNQURRQUFBQUFBUklrRUNBQUFBQUFEQUE0QUFBQUFBS2lKQkFnQUFBQUFBd0FQQUFBQUFBQ3NtUVFJQUFBQUFBTUFFQUFBQUFBQXRKa0VDQUFBQUFBREFCRUFBQUFBQUx5WkJBZ0FBQUFBQXdBU0FBQUFBQURBbVFRSUFBQUFBQU1BRXdBQUFBQUFpSm9FQ0FBQUFBQURBQlFBQUFBQUFJeWFCQWdBQUFBQUF3QVZBQUFBQUFEVW1nUUlBQUFBQUFNQUZnQUFBQUFBNEpvRUNBQUFBQUFEQUJjQUFBQUFBQUFBQUFBQUFBQUFBd0FZQUFBQUFBQUFBQUFBQUFBQUFBTUFHUUFBQUFBQUFBQUFBQUFBQUFBREFCb0FBQUFBQUFBQUFBQUFBQUFBQXdBYkFBQUFBQUFBQUFBQUFBQUFBQU1BSEFBQUFBQUFBQUFBQUFBQUFBQURBQjBBQUFBQUFBQUFBQUFBQUFBQUF3QWVBQUFBQUFBQUFBQUFBQUFBQUFNQUh3QUFBQUFBQUFBQUFBQUFBQUFEQUNBQUFBQUFBQUFBQUFBQUFBQUFBd0FoQUFFQUFBQUFBQUFBQUFBQUFBUUE4ZjhNQUFBQUFBQUFBQUFBQUFBRUFQSC9LQUFBQUFBQUFBQUFBQUFBQkFEeC95OEFBQUFBQUFBQUFBQUFBQVFBOGY4NkFBQUFBQUFBQUFBQUFBQUVBUEgvZEFBQUFNU0ZCQWdBQUFBQUFnQU1BSVFBQUFBQUFBQUFBQUFBQUFRQThmK1BBQUFBckprRUNBQUFBQUFCQUJBQW5RQUFBTFNaQkFnQUFBQUFBUUFSQUtzQUFBQzhtUVFJQUFBQUFBRUFFZ0M0QUFBQTRKb0VDQUVBQUFBQkFCY0F4d0FBQU55YUJBZ0FBQUFBQVFBV0FNNEFBQURzaFFRSUFBQUFBQUlBREFEa0FBQUFHNFlFQ0FBQUFBQUNBQXdBaEFBQUFBQUFBQUFBQUFBQUJBRHgvL0FBQUFDd21RUUlBQUFBQUFFQUVBRDlBQUFBdUprRUNBQUFBQUFCQUJFQUNnRUFBS2lKQkFnQUFBQUFBUUFQQUJnQkFBQzhtUVFJQUFBQUFBRUFFZ0FrQVFBQStJZ0VDQUFBQUFBQ0FBd0FMd0FBQUFBQUFBQUFBQUFBQkFEeC96b0JBQUFBQUFBQUFBQUFBQVFBOGY5MEFRQUFBQUFBQUFBQUFBQUVBUEgvZUFFQUFNQ1pCQWdBQUFBQUFRSVRBSUVCQUFDc21RUUlBQUFBQUFBQzhmK1NBUUFBckprRUNBQUFBQUFBQXZIL3BRRUFBS3laQkFnQUFBQUFBQUx4LzdZQkFBQ01tZ1FJQUFBQUFBRUNGUURNQVFBQXJKa0VDQUFBQUFBQUF2SC8zd0VBQUFBQUFBQjFBUUFBRWdBQUFQQUJBQUFBQUFBQWNRQUFBQklBQUFBQkFnQUFSSWtFQ0FRQUFBQVJBQTRBQ0FJQUFBQUFBQURNQUFBQUVnQUFBQm9DQUFBQUFBQUFXZ0FBQUJJQUFBQXFBZ0FBMkpvRUNBQUFBQUFSQWhZQU53SUFBSzJJQkFoS0FBQUFFZ0FNQUVjQ0FBQUFBQUFBZUFBQUFCSUFBQUJaQWdBQWlJUUVDQUFBQUFBU0FBb0FYd0lBQUFBQUFBQTVBQUFBRWdBQUFIRUNBQUFBQUFBQU9RQUFBQklBQUFDSEFnQUFvSVVFQ0FBQUFBQVNBQXdBamdJQUFGeUlCQWhSQUFBQUVnQU1BSjRDQUFEZ21nUUlBQUFBQUJBQThmK3FBZ0FBUUlZRUNCd0NBQUFTQUF3QXJ3SUFBQUFBQUFEbUFBQUFFZ0FBQU13Q0FBQUFBQUFBT2dBQUFCSUFBQURjQWdBQTFKb0VDQUFBQUFBZ0FCWUE1d0lBQUFBQUFBQTVBQUFBRWdBQUFQY0NBQUFraVFRSUFBQUFBQklBRFFEOUFnQUFBQUFBQUxrQUFBQVNBQUFBRFFNQUFBQUFBQUFyQUFBQUVnQUFBQjBEQUFEZ21nUUlBQUFBQUJBQThmOGtBd0FBNklVRUNBQUFBQUFTQWd3QU93TUFBT1NhQkFnQUFBQUFFQUR4LzBBREFBQUFBQUFBZUFBQUFCSUFBQUJRQXdBQUFBQUFBQTRBQUFBU0FBQUFZUU1BQUVpSkJBZ0VBQUFBRVFBT0FIQURBQURVbWdRSUFBQUFBQkFBRmdCOUF3QUFBQUFBQURrQUFBQVNBQUFBandNQUFBQUFBQUFBQUFBQUlBQUFBS01EQUFBQUFBQUFBQUFBQUNBQUFBQUFZV0pwTFc1dmRHVXVVd0F1TGk5emVYTmtaWEJ6TDJrek9EWXZaV3htTDNOMFlYSjBMbE1BYVc1cGRDNWpBR2x1YVhSbWFXNXBMbU1BTDJKMWFXeGtMMkoxYVd4a1pDOW5iR2xpWXkweUxqTXVOaTlpZFdsc1pDMTBjbVZsTDJrek9EWXRiR2xpWXk5amMzVXZZM0owYVM1VEFHTmhiR3hmWjIxdmJsOXpkR0Z5ZEFCamNuUnpkSFZtWmk1akFGOWZRMVJQVWw5TVNWTlVYMThBWDE5RVZFOVNYMHhKVTFSZlh3QmZYMHBEVWw5TVNWTlVYMThBWTI5dGNHeGxkR1ZrTGpRME5qTUFjQzQwTkRZeUFGOWZaRzlmWjJ4dlltRnNYMlIwYjNKelgyRjFlQUJtY21GdFpWOWtkVzF0ZVFCZlgwTlVUMUpmUlU1RVgxOEFYMTlFVkU5U1gwVk9SRjlmQUY5ZlJsSkJUVVZmUlU1RVgxOEFYMTlLUTFKZlJVNUVYMThBWDE5a2IxOW5iRzlpWVd4ZlkzUnZjbk5mWVhWNEFDOWlkV2xzWkM5aWRXbHNaR1F2WjJ4cFltTXRNaTR6TGpZdlluVnBiR1F0ZEhKbFpTOXBNemcyTFd4cFltTXZZM04xTDJOeWRHNHVVd0F4TG1NQVgwUlpUa0ZOU1VNQVgxOW1hVzVwWDJGeWNtRjVYMlZ1WkFCZlgyWnBibWxmWVhKeVlYbGZjM1JoY25RQVgxOXBibWwwWDJGeWNtRjVYMlZ1WkFCZlIweFBRa0ZNWDA5R1JsTkZWRjlVUVVKTVJWOEFYMTlwYm1sMFgyRnljbUY1WDNOMFlYSjBBR1Y0WldOc1FFQkhURWxDUTE4eUxqQUFZMnh2YzJWQVFFZE1TVUpEWHpJdU1BQmZabkJmYUhjQWNHVnljbTl5UUVCSFRFbENRMTh5TGpBQVptOXlhMEJBUjB4SlFrTmZNaTR3QUY5ZlpITnZYMmhoYm1Sc1pRQmZYMnhwWW1OZlkzTjFYMlpwYm1rQVlXTmpaWEIwUUVCSFRFbENRMTh5TGpBQVgybHVhWFFBYkdsemRHVnVRRUJIVEVsQ1ExOHlMakFBYzJWMGMyOWphMjl3ZEVCQVIweEpRa05mTWk0d0FGOXpkR0Z5ZEFCZlgyeHBZbU5mWTNOMVgybHVhWFFBWDE5aWMzTmZjM1JoY25RQWJXRnBiZ0JmWDJ4cFltTmZjM1JoY25SZmJXRnBia0JBUjB4SlFrTmZNaTR3QUdSMWNESkFRRWRNU1VKRFh6SXVNQUJrWVhSaFgzTjBZWEowQUdKcGJtUkFRRWRNU1VKRFh6SXVNQUJmWm1sdWFRQmxlR2wwUUVCSFRFbENRMTh5TGpBQVlYUnZhVUJBUjB4SlFrTmZNaTR3QUY5bFpHRjBZUUJmWDJrMk9EWXVaMlYwWDNCalgzUm9kVzVyTG1KNEFGOWxibVFBYzJWdVpFQkFSMHhKUWtOZk1pNHdBR2gwYjI1elFFQkhURWxDUTE4eUxqQUFYMGxQWDNOMFpHbHVYM1Z6WldRQVgxOWtZWFJoWDNOMFlYSjBBSE52WTJ0bGRFQkFSMHhKUWtOZk1pNHdBRjlLZGw5U1pXZHBjM1JsY2tOc1lYTnpaWE1BWDE5bmJXOXVYM04wWVhKMFgxOEEiOw0KDQoNCg0KZnVuY3Rpb24gY2hlY2twcm94eWhvc3QoKXsNCg0KJGhvc3QgPSBnZXRlbnYoIkhUVFBfSE9TVCIpOw0KDQokZmlsZW5hbWUgPSAnL3RtcC8uc2V0YW4veGgnOw0KDQppZiAoZmlsZV9leGlzdHMoJGZpbGVuYW1lKSkgew0KDQokX1BPU1RbJ3Byb3h5aG9zdG1zZyddPSI8L2JyPjwvYnI+PGNlbnRlcj48Zm9udCBjb2xvcj1ncmVlbiBzaXplPTM+PGI+U3VjY2VzcyE8L2I+PC9mb250PjwvYnI+PC9icj48YSBocmVmPSRob3N0OjY1NDM+JGhvc3Q6NjU0MzwvYT48L2JyPjwvYnI+PGI+Tm90ZTo8L2I+IElmICckaG9zdCcgaGF2ZSBhIGdvb2QgZmlyZXdhbGwgb3IgSURTICBpbnN0YWxsZWQgb24gdGhlaXIgc2VydmVyLCBpdCB3aWxsIHByb2JhYmx5IGNhdGNoIHRoaXMgb3Igc3RvcCBpdCBmcm9tIGV2ZXIgb3BlbmluZyBhIHBvcnQgYW5kIHlvdSB3b24ndCBiZSBhYmxlIHRvIGNvbm5lY3QgdG8gdGhpcyBwcm94eS48L2JyPjwvYnI+PC9jZW50ZXI+IjsNCg0KfSBlbHNlIHsNCg0KJF9QT1NUWydwcm94eWhvc3Rtc2cnXT0iPC9icj48L2JyPjxjZW50ZXI+PGZvbnQgY29sb3I9cmVkIHNpemU9Mz48Yj5GYWlsZWQhPC9iPjwvZm9udD48L2JyPjwvYnI+PGI+Tm90ZTo8L2I+IElmIGZvciBzb21lIHJlYXNvbiB3ZSB3b3VsZCBub3QgY3JlYXRlIGFuZCBleHRyYWN0IHRoZSBuZWVkIHByb3h5IGZpbGVzIGluICcvdG1wJyB0aGlzIHdpbGwgbWFrZSB0aGlzIGZhaWwuPC9icj48L2JyPjwvY2VudGVyPiI7DQoNCn0NCg0KfQ0KDQoNCg0KaWYgKCFlbXB0eSgkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09InNoYmQiKSkNCg0Kew0KDQokaXAgPSBnZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSk7DQoNCiRwb3IgPSAkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddOw0KDQppZihpc193cml0YWJsZSgiLiIpKXsNCg0KY2ZiKCJzaGJkIiwkYmFja2Rvb3IpOw0KDQpleCgiY2htb2QgNzc3IHNoYmQiKTsNCg0KJGNtZCA9ICIuL3NoYmQgJHBvciI7DQoNCmV4ZWMoIiRjbWQgPiAvZGV2L251bGwgJiIpOw0KDQokc2NhbiA9IG15c2hlbGxleGVjKCJwcyBhdXgiKTsNCg0KaWYoZXJlZ2koIi4vc2hiZCAkcG9yIiwkc2NhbikpeyAkZGF0YSA9ICgibjwvYnI+PC9icj5Qcm9jZXNzIGZvdW5kIHJ1bm5pbmcsIGJhY2tkb29yIHNldHVwIHN1Y2Nlc3NmdWxseS4iKTsgfWVsc2VpZihlcmVnaSgiLi9zaGJkICRwb3IiLCRzY2FuKSl7ICRkYXRhID0gKCJuPC9icj5Qcm9jZXNzIG5vdCBmb3VuZCBydW5uaW5nLCBiYWNrZG9vciBub3Qgc2V0dXAgc3VjY2Vzc2Z1bGx5LiIpOyB9DQoNCiRfUE9TVFsnYmFja2Njb25ubXNnJ109IlRvIGNvbm5lY3QsIHVzZSBuZXRjYXQgYW5kIGdpdmUgaXQgdGhlIGNvbW1hbmQgPGI+J25jICRpcCAkcG9yJzwvYj4uJGRhdGEiOw0KDQp9ZWxzZXsNCg0KY2ZiKCIvdG1wL3NoYmQiLCRiYWNrZG9vcik7DQoNCmV4KCJjaG1vZCA3NzcgL3RtcC9zaGJkIik7DQoNCiRjbWQgPSAiLi90bXAvc2hiZCAkcG9yIjsNCg0KZXhlYygiJGNtZCA+IC9kZXYvbnVsbCAmIik7DQoNCiRzY2FuID0gbXlzaGVsbGV4ZWMoInBzIGF1eCIpOw0KDQppZihlcmVnaSgiLi9zaGJkICRwb3IiLCRzY2FuKSl7ICRkYXRhID0gKCJuPC9icj48L2JyPlByb2Nlc3MgZm91bmQgcnVubmluZywgYmFja2Rvb3Igc2V0dXAgc3VjY2Vzc2Z1bGx5LiIpOyB9ZWxzZWlmKGVyZWdpKCIuL3NoYmQgJHBvciIsJHNjYW4pKXsgJGRhdGEgPSAoIm48L2JyPlByb2Nlc3Mgbm90IGZvdW5kIHJ1bm5pbmcsIGJhY2tkb29yIG5vdCBzZXR1cCBzdWNjZXNzZnVsbHkuIik7IH0NCg0KJF9QT1NUWydiYWNrY2Nvbm5tc2cnXT0iVG8gY29ubmVjdCwgdXNlIG5ldGNhdCBhbmQgZ2l2ZSBpdCB0aGUgY29tbWFuZCA8Yj4nbmMgJGlwICRwb3InPC9iPi4kZGF0YSI7DQoNCn0NCg0KfQ0KDQoNCg0KaWYgKCFlbXB0eSgkX1BPU1RbJ2JhY2tjb25uZWN0aXAnXSkgJiYgIWVtcHR5KCRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10pICYmICgkX1BPU1RbJ3VzZSddPT0iUGVybCIpKQ0KDQp7DQoNCmlmKGlzX3dyaXRhYmxlKCIuIikpew0KDQpjZigiYmFjayIsJGJhY2tfY29ubmVjdCk7DQoNCiRwMj13aGljaCgicGVybCIpOw0KDQokYmxhaCA9IGV4KCRwMi4iIGJhY2sgIi4kX1BPU1RbJ2JhY2tjb25uZWN0aXAnXS4iICIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iICYiKTsNCg0KJF9QT1NUWydiYWNrY2Nvbm5tc2cnXT0iVHJ5aW5nIHRvIGNvbm5lY3QgdG8gPGI+Ii4kX1BPU1RbJ2JhY2tjb25uZWN0aXAnXS4iPC9iPiBvbiBwb3J0IDxiPiIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iPC9iPi4iOw0KDQppZiAoZmlsZV9leGlzdHMoImJhY2siKSkgeyB1bmxpbmsoImJhY2siKTsgfQ0KDQp9ZWxzZXsNCg0KY2YoIi90bXAvYmFjayIsJGJhY2tfY29ubmVjdCk7DQoNCiRwMj13aGljaCgicGVybCIpOw0KDQokYmxhaCA9IGV4KCRwMi4iIC90bXAvYmFjayAiLiRfUE9TVFsnYmFja2Nvbm5lY3RpcCddLiIgIi4kX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddLiIgJiIpOw0KDQokX1BPU1RbJ2JhY2tjY29ubm1zZyddPSJUcnlpbmcgdG8gY29ubmVjdCB0byA8Yj4iLiRfUE9TVFsnYmFja2Nvbm5lY3RpcCddLiI8L2I+IG9uIHBvcnQgPGI+Ii4kX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddLiI8L2I+LiI7DQoNCmlmIChmaWxlX2V4aXN0cygiL3RtcC9iYWNrIikpIHsgdW5saW5rKCIvdG1wL2JhY2siKTsgfQ0KDQp9DQoNCn0NCg0KDQoNCmlmICghZW1wdHkoJF9QT1NUWydiYWNrY29ubmVjdGlwJ10pICYmICFlbXB0eSgkX1BPU1RbJ2JhY2tjb25uZWN0cG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IkMiKSkNCg0Kew0KDQppZihpc193cml0YWJsZSgiLiIpKXsNCg0KY2YoImJhY2tjIiwkYmFja19jb25uZWN0X2MpOw0KDQpleCgiY2htb2QgNzc3IGJhY2tjIik7DQoNCi8vJGJsYWggPSBleCgiZ2NjIGJhY2suYyAtbyBiYWNrYyIpOw0KDQokYmxhaCA9IGV4KCIuL2JhY2tjICIuJF9QT1NUWydiYWNrY29ubmVjdGlwJ10uIiAiLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIiAmIik7DQoNCiRfUE9TVFsnYmFja2Njb25ubXNnJ109IlRyeWluZyB0byBjb25uZWN0IHRvIDxiPiIuJF9QT1NUWydiYWNrY29ubmVjdGlwJ10uIjwvYj4gb24gcG9ydCA8Yj4iLiRfUE9TVFsnYmFja2Nvbm5lY3Rwb3J0J10uIjwvYj4uIjsNCg0KLy9pZiAoZmlsZV9leGlzdHMoImJhY2suYyIpKSB7IHVubGluaygiYmFjay5jIik7IH0NCg0KaWYgKGZpbGVfZXhpc3RzKCJiYWNrYyIpKSB7IHVubGluaygiYmFja2MiKTsgfQ0KDQp9ZWxzZXsNCg0KZXgoImNobW9kIDc3NyAvdG1wL2JhY2tjIik7DQoNCmNmKCIvdG1wL2JhY2tjIiwkYmFja19jb25uZWN0X2MpOw0KDQovLyRibGFoID0gZXgoImdjYyAtbyAvdG1wL2JhY2tjIC90bXAvYmFjay5jIik7DQoNCiRibGFoID0gZXgoIi90bXAvYmFja2MgIi4kX1BPU1RbJ2JhY2tjb25uZWN0aXAnXS4iICIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iICYiKTsNCg0KJF9QT1NUWydiYWNrY2Nvbm5tc2cnXT0iVHJ5aW5nIHRvIGNvbm5lY3QgdG8gPGI+Ii4kX1BPU1RbJ2JhY2tjb25uZWN0aXAnXS4iPC9iPiBvbiBwb3J0IDxiPiIuJF9QT1NUWydiYWNrY29ubmVjdHBvcnQnXS4iPC9iPi4iOw0KDQovL2lmIChmaWxlX2V4aXN0cygiYmFjay5jIikpIHsgdW5saW5rKCJiYWNrLmMiKTsgfQ0KDQppZiAoZmlsZV9leGlzdHMoIi90bXAvYmFja2MiKSkgeyB1bmxpbmsoIi90bXAvYmFja2MiKTsgfSB9DQoNCn0NCg0KDQoNCmZ1bmN0aW9uIGNmKCRmbmFtZSwkdGV4dCkNCg0Kew0KDQokd19maWxlPUBmb3BlbigkZm5hbWUsInciKSBvciBlcnIoKTsNCg0KaWYoJHdfZmlsZSkNCg0Kew0KDQpAZnB1dHMoJHdfZmlsZSxAYmFzZTY0X2RlY29kZSgkdGV4dCkpOw0KDQpAZmNsb3NlKCR3X2ZpbGUpOw0KDQp9DQoNCn0NCg0KDQoNCmZ1bmN0aW9uIGNmYigkZm5hbWUsJHRleHQpDQoNCnsNCg0KJHdfZmlsZT1AZm9wZW4oJGZuYW1lLCJ3Iikgb3IgYmJlcnIoKTsNCg0KaWYoJHdfZmlsZSkNCg0Kew0KDQpAZnB1dHMoJHdfZmlsZSxAYmFzZTY0X2RlY29kZSgkdGV4dCkpOw0KDQpAZmNsb3NlKCR3X2ZpbGUpOw0KDQp9DQoNCn0NCg0KDQoNCmZ1bmN0aW9uIGVycigpDQoNCnsNCg0KJF9QT1NUWydiYWNrY2Nvbm5tc2dlJ109IjwvYnI+PC9icj48Yj48Zm9udCBjb2xvcj1yZWQgc2l6ZT0zPkVycm9yOjwvZm9udD4gQ2FuJ3QgY29ubmVjdCE8L2I+IjsNCg0KfQ0KDQoNCg0KZnVuY3Rpb24gYmJlcnIoKQ0KDQp7DQoNCiRfUE9TVFsnYmFja2Njb25ubXNnZSddPSI8L2JyPjwvYnI+PGI+PGZvbnQgY29sb3I9cmVkIHNpemU9Mz5FcnJvcjo8L2ZvbnQ+IENhbid0IGJhY2tkb29yIGhvc3QhPC9iPiI7DQoNCn0NCg0KDQoNCmZ1bmN0aW9uIHdoaWNoKCRwcikNCg0Kew0KDQokcGF0aCA9IGV4KCJ3aGljaCAkcHIiKTsNCg0KaWYoIWVtcHR5KCRwYXRoKSkgeyByZXR1cm4gJHBhdGg7IH0gZWxzZSB7IHJldHVybiAkcHI7IH0NCg0KfQ0KDQpmdW5jdGlvbiBleCgkY2ZlKQ0KDQp7DQoNCiRyZXMgPSAnJzsNCg0KaWYgKCFlbXB0eSgkY2ZlKSkNCg0Kew0KDQogIGlmKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKQ0KDQogICB7DQoNCiAgICBAZXhlYygkY2ZlLCRyZXMpOw0KDQogICAgJHJlcyA9IGpvaW4oIm4iLCRyZXMpOw0KDQogICB9DQoNCiAgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKQ0KDQogICB7DQoNCiAgICAkcmVzID0gQHNoZWxsX2V4ZWMoJGNmZSk7DQoNCiAgIH0NCg0KICBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzeXN0ZW0nKSkNCg0KICAgew0KDQogICAgQG9iX3N0YXJ0KCk7DQoNCiAgICBAc3lzdGVtKCRjZmUpOw0KDQogICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCg0KICAgIEBvYl9lbmRfY2xlYW4oKTsNCg0KICAgfQ0KDQogIGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpDQoNCiAgIHsNCg0KICAgIEBvYl9zdGFydCgpOw0KDQogICAgQHBhc3N0aHJ1KCRjZmUpOw0KDQogICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsNCg0KICAgIEBvYl9lbmRfY2xlYW4oKTsNCg0KICAgfQ0KDQogIGVsc2VpZihAaXNfcmVzb3VyY2UoJGYgPSBAcG9wZW4oJGNmZSwiciIpKSkNCg0KICB7DQoNCiAgICRyZXMgPSAiIjsNCg0KICAgd2hpbGUoIUBmZW9mKCRmKSkgeyAkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTsgfQ0KDQogICBAcGNsb3NlKCRmKTsNCg0KICB9DQoNCn0NCg0KcmV0dXJuICRyZXM7DQoNCn0NCg0KLy9Fb1cNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCi8vU3RhcnQgRW51bWVyYXRlIGZ1bmN0aW9uDQoNCi8vZnVuY3Rpb24gRU5VTUVSQVRFKCkNCg0KDQoNCiRob3N0bmFtZV94PXBocF91bmFtZShuKTsNCg0KJGl0c2hvbWUgPSBnZXRjd2QoKTsNCg0KJGl0c2hvbWUgPSBzdHJfcmVwbGFjZSgiL2hvbWUvIiwifiIsJGl0c2hvbWUpOw0KDQokaXRzaG9tZSA9IHN0cl9yZXBsYWNlKCIvcHVibGljX2h0bWwiLCIveDIzMDAucGhwIiwkaXRzaG9tZSk7DQoNCiRlbnVtZXJhdGUgPSAiaHR0cDovLyIuJGhvc3RuYW1lX3guIi8iLiRpdHNob21lLiIiOw0KDQoNCg0KLy9FbmQgRW51bWVyYXRlIGZ1bmN0aW9uDQoNCg0KDQovL1N0YXJ0aW5nIGNhbGxzDQoNCmluaV9zZXQoIm1heF9leGVjdXRpb25fdGltZSIsMCk7DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJnZXRtaWNyb3RpbWUiKSkge2Z1bmN0aW9uIGdldG1pY3JvdGltZSgpIHtsaXN0KCR1c2VjLCAkc2VjKSA9IGV4cGxvZGUoIiAiLCBtaWNyb3RpbWUoKSk7IHJldHVybiAoKGZsb2F0KSR1c2VjICsgKGZsb2F0KSRzZWMpO319DQoNCmVycm9yX3JlcG9ydGluZyg1KTsNCg0KJGFkaXJlcz0iIjsNCg0KQGlnbm9yZV91c2VyX2Fib3J0KFRSVUUpOw0KDQpAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApOw0KDQokd2luID0gc3RydG9sb3dlcihzdWJzdHIoUEhQX09TLDAsMykpID09ICJ3aW4iOw0KDQpkZWZpbmUoInN0YXJ0dGltZSIsZ2V0bWljcm90aW1lKCkpOw0KDQppZiAoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkge2lmICghZnVuY3Rpb25fZXhpc3RzKCJzdHJpcHMiKSkge2Z1bmN0aW9uIHN0cmlwcygmJGFyciwkaz0iIikge2lmIChpc19hcnJheSgkYXJyKSkge2ZvcmVhY2goJGFyciBhcyAkaz0+JHYpIHtpZiAoc3RydG91cHBlcigkaykgIT0gIkdMT0JBTFMiKSB7c3RyaXBzKCRhcnJbIiRrIl0pO319fSBlbHNlIHskYXJyID0gc3RyaXBzbGFzaGVzKCRhcnIpO319fSBzdHJpcHMoJEdMT0JBTFMpO30NCg0KJF9SRVFVRVNUID0gYXJyYXlfbWVyZ2UoJF9DT09LSUUsJF9HRVQsJF9QT1NUKTsNCg0KZm9yZWFjaCgkX1JFUVVFU1QgYXMgJGs9PiR2KSB7aWYgKCFpc3NldCgkJGspKSB7JCRrID0gJHY7fX0NCg0KDQoNCiRzaHZlciA9ICIxLjBhIGJldGEiOyAvL0N1cnJlbnQgdmVyc2lvbg0KDQovL0NPTkZJR1VSQVRJT04gQU5EIFNFVFRJTkdTDQoNCmlmICghZW1wdHkoJHVuc2V0X3N1cmwpKSB7c2V0Y29va2llKCJjOTlzaF9zdXJsIik7ICRzdXJsID0gIiI7fQ0KDQplbHNlaWYgKCFlbXB0eSgkc2V0X3N1cmwpKSB7JHN1cmwgPSAkc2V0X3N1cmw7IHNldGNvb2tpZSgiYzk5c2hfc3VybCIsJHN1cmwpO30NCg0KZWxzZSB7JHN1cmwgPSAkX1JFUVVFU1RbImM5OXNoX3N1cmwiXTsgLy9TZXQgdGhpcyBjb29raWUgZm9yIG1hbnVhbCBTVVJMDQoNCn0NCg0KDQoNCiRzdXJsX2F1dG9maWxsX2luY2x1ZGUgPSBUUlVFOyAvL0lmIFRSVUUgdGhlbiBzZWFyY2ggdmFyaWFibGVzIHdpdGggZGVzY3JpcHRvcnMgKFVSTHMpIGFuZCBzYXZlIGl0IGluIFNVUkwuDQoNCg0KDQppZiAoJHN1cmxfYXV0b2ZpbGxfaW5jbHVkZSBhbmQgISRfUkVRVUVTVFsiYzk5c2hfc3VybCJdKSB7JGluY2x1ZGUgPSAiJiI7IGZvcmVhY2ggKGV4cGxvZGUoIiYiLGdldGVudigiUVVFUllfU1RSSU5HIikpIGFzICR2KSB7JHYgPSBleHBsb2RlKCI9Iiwkdik7ICRuYW1lID0gdXJsZGVjb2RlKCR2WzBdKTsgJHZhbHVlID0gdXJsZGVjb2RlKCR2WzFdKTsgZm9yZWFjaCAoYXJyYXkoImh0dHA6Ly8iLCJodHRwczovLyIsInNzbDovLyIsImZ0cDovLyIsIlxcIikgYXMgJG5lZWRsZSkge2lmIChzdHJwb3MoJHZhbHVlLCRuZWVkbGUpID09PSAwKSB7JGluY2x1ZGVzdHIgLj0gdXJsZW5jb2RlKCRuYW1lKS4iPSIudXJsZW5jb2RlKCR2YWx1ZSkuIiYiO319fSBpZiAoJF9SRVFVRVNUWyJzdXJsX2F1dG9maWxsX2luY2x1ZGUiXSkgeyRpbmNsdWRlc3RyIC49ICJzdXJsX2F1dG9maWxsX2luY2x1ZGU9MSYiO319DQoNCmlmIChlbXB0eSgkc3VybCkpDQoNCnsNCg0KJHN1cmwgPSAiPyIuJGluY2x1ZGVzdHI7IC8vU2VsZiB1cmwNCg0KfQ0KDQokc3VybCA9IGh0bWxzcGVjaWFsY2hhcnMoJHN1cmwpOw0KDQoNCg0KJHRpbWVsaW1pdCA9IDA7IC8vdGltZSBsaW1pdCBvZiBleGVjdXRpb24gdGhpcyBzY3JpcHQgb3ZlciBzZXJ2ZXIgcXVvdGUgKHNlY29uZHMpLCAwID0gdW5saW1pdGVkLg0KDQoNCg0KLy9BdXRoZW50aWNhdGlvbg0KDQokbG9naW4gPSAiIjsgLy9sb2dpbg0KDQovL0RPTidUIEZPUkdPVCBBQk9VVCBQQVNTV09SRCEhIQ0KDQokcGFzcyA9ICIiOyAvL3Bhc3N3b3JkDQoNCiRtZDVfcGFzcyA9ICIiOyAvL21kNS1jcnlwZWQgcGFzcy4gaWYgbnVsbCwgbWQ1KCRwYXNzKQ0KDQoNCg0KJGhvc3RfYWxsb3cgPSBhcnJheSgiKiIpOyAvL2FycmF5ICgie21hc2t9MSIsInttYXNrfTIiLC4uLiksIHttYXNrfSA9IElQIG9yIEhPU1QgZS5nLiBhcnJheSgiMTkyLjE2OC4wLioiLCIxMjcuMC4wLjEiKQ0KDQokbG9naW5fdHh0ID0gIlJlc3RyaWN0ZWQgYXJlYSI7IC8vaHR0cC1hdXRoIG1lc3NhZ2UuDQoNCiRhY2Nlc3NkZW5pZWRtZXNzID0gIjxhIGhyZWY9Imh0dHA6Ly9sb2N1czdzLmNvbSI+eDIzMDAgTG9jdXM3U2hlbGwgdi4iLiRzaHZlci4iPC9hPjogYWNjZXNzIGRlbmllZCI7DQoNCg0KDQokZ3ppcGVuY29kZSA9IFRSVUU7IC8vRW5jb2RlIHdpdGggZ3ppcD8NCg0KDQoNCiR1cGRhdGVub3cgPSBGQUxTRTsgLy9JZiBUUlVFLCB1cGRhdGUgbm93ICh0aGlzIHZhcmlhYmxlIHdpbGwgYmUgRkFMU0UpDQoNCg0KDQokYzk5c2hfdXBkYXRldXJsID0gImh0dHA6Ly9sb2N1czdzLmNvbS9maWxlcy9sc2hlbGxfdXBkYXRlLyI7IC8vVXBkYXRlIHNlcnZlcg0KDQokYzk5c2hfc291cmNlc3VybCA9ICJodHRwOi8vbG9jdXM3cy5jb20vIjsgLy9Tb3VyY2VzLXNlcnZlcg0KDQoNCg0KJGZpbGVzdGVhbHRoID0gVFJVRTsgLy9pZiBUUlVFLCBkb24ndCBjaGFuZ2UgbW9kaWZ5LSBhbmQgYWNjZXNzLXRpbWUNCg0KDQoNCiRkb25hdGVkX2h0bWwgPSAiPGNlbnRlcj48Yj54MjMwMCBMb2N1czdTaGVsbCBNb2RpZmllZCBieSAjIXBoeXN4XiA8L2I+PC9jZW50ZXI+IjsNCg0KLyogSWYgeW91IHB1Ymxpc2ggZnJlZSBzaGVsbCBhbmQgeW91IHdpc2gNCg0KYWRkIGxpbmsgdG8geW91ciBzaXRlIG9yIGFueSBvdGhlciBpbmZvcm1hdGlvbiwNCg0KcHV0IGhlcmUgeW91ciBodG1sLiAqLw0KDQokZG9uYXRlZF9hY3QgPSBhcnJheSgiIik7IC8vYXJyYXkgKCJhY3QxIiwiYWN0MiwiLi4uKSwgaWYgJGFjdCBpcyBpbiB0aGlzIGFycmF5LCBkaXNwbGF5ICRkb25hdGVkX2h0bWwuDQoNCg0KDQokY3VyZGlyID0gIi4vIjsgLy9zdGFydCBmb2xkZXINCg0KLy8kY3VyZGlyID0gZ2V0ZW52KCJET0NVTUVOVF9ST09UIik7DQoNCiR0bXBkaXIgPSAiIjsgLy9Gb2xkZXIgZm9yIHRlbXBvcnkgZmlsZXMuIElmIGVtcHR5LCBhdXRvLWZpbGwgKC90bXAgb3IgJVdJTkRJUi90ZW1wKQ0KDQokdG1wZGlyX2xvZyA9ICIuLyI7IC8vRGlyZWN0b3J5IGxvZ3Mgb2YgbG9uZyBwcm9jZXNzZXMgKGUuZy4gYnJ1dGUsIHNjYW4uLi4pDQoNCg0KDQokbG9nX2VtYWlsID0gInVzZXJAaG9zdC50bGQiOyAvL0RlZmF1bHQgZS1tYWlsIGZvciBzZW5kaW5nIGxvZ3MNCg0KDQoNCiRzb3J0X2RlZmF1bHQgPSAiMGEiOyAvL0RlZmF1bHQgc29ydGluZywgMCAtIG51bWJlciBvZiBjb2xvbW4sICJhInNjZW5kaW5nIG9yICJkImVzY2VuZGluZw0KDQokc29ydF9zYXZlID0gVFJVRTsgLy9JZiBUUlVFIHRoZW4gc2F2ZSBzb3J0aW5nLXBvc2l0aW9uIHVzaW5nIGNvb2tpZXMuDQoNCg0KDQovLyBSZWdpc3RlcmVkIGZpbGUtdHlwZXMuDQoNCi8vICBhcnJheSgNCg0KLy8gICAie2FjdGlvbjF9Ij0+YXJyYXkoImV4dDEiLCJleHQyIiwiZXh0MyIsLi4uKSwNCg0KLy8gICAie2FjdGlvbjJ9Ij0+YXJyYXkoImV4dDQiLCJleHQ1IiwiZXh0NiIsLi4uKSwNCg0KLy8gICAuLi4NCg0KLy8gICkNCg0KJGZ0eXBlcyAgPSBhcnJheSgNCg0KImh0bWwiPT5hcnJheSgiaHRtbCIsImh0bSIsInNodG1sIiksDQoNCiJ0eHQiPT5hcnJheSgidHh0IiwiY29uZiIsImJhdCIsInNoIiwianMiLCJiYWsiLCJkb2MiLCJsb2ciLCJzZmMiLCJjZmciLCJodGFjY2VzcyIpLA0KDQoiZXhlIj0+YXJyYXkoInNoIiwiaW5zdGFsbCIsImJhdCIsImNtZCIpLA0KDQoiaW5pIj0+YXJyYXkoImluaSIsImluZiIpLA0KDQoiY29kZSI9PmFycmF5KCJwaHAiLCJwaHRtbCIsInBocDMiLCJwaHA0IiwiaW5jIiwidGNsIiwiaCIsImMiLCJjcHAiLCJweSIsImNnaSIsInBsIiksDQoNCiJpbWciPT5hcnJheSgiZ2lmIiwicG5nIiwianBlZyIsImpmaWYiLCJqcGciLCJqcGUiLCJibXAiLCJpY28iLCJ0aWYiLCJ0aWZmIiwiYXZpIiwibXBnIiwibXBlZyIpLA0KDQoic2RiIj0+YXJyYXkoInNkYiIpLA0KDQoicGhwc2VzcyI9PmFycmF5KCJzZXNzIiksDQoNCiJkb3dubG9hZCI9PmFycmF5KCJleGUiLCJjb20iLCJwaWYiLCJzcmMiLCJsbmsiLCJ6aXAiLCJyYXIiLCJneiIsInRhciIpDQoNCik7DQoNCg0KDQovLyBSZWdpc3RlcmVkIGV4ZWN1dGFibGUgZmlsZS10eXBlcy4NCg0KLy8gIGFycmF5KA0KDQovLyAgIHN0cmluZyAiY29tbWFuZHtpfSI9PmFycmF5KCJleHQxIiwiZXh0MiIsImV4dDMiLC4uLiksDQoNCi8vICAgLi4uDQoNCi8vICApDQoNCi8vICAge2NvbW1hbmR9OiAlZiUgPSBmaWxlbmFtZQ0KDQokZGl6aW4gPSBzdHJfcmVwbGFjZSgiXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZGl6aW4pOw0KDQppZiAoZW1wdHkoJGRpemluKSkgeyRkaXppbiA9IHJlYWxwYXRoKCIuIik7fSBlbHNlaWYocmVhbHBhdGgoJGRpemluKSkgeyRkaXppbiA9IHJlYWxwYXRoKCRkaXppbik7fQ0KDQokZGl6aW4gPSBzdHJfcmVwbGFjZSgiXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZGl6aW4pOw0KDQppZiAoc3Vic3RyKCRkaXppbiwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkaXppbiAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCg0KJGRpemluID0gc3RyX3JlcGxhY2UoIlxcIiwiXCIsJGRpemluKTsNCg0KJGRpemluaXNwZCA9IGh0bWxzcGVjaWFsY2hhcnMoJGRpemluKTsNCg0KLypkaXppbiovDQoNCiRyZWFsID0gcmVhbHBhdGgoJGRpemluaXNwZCk7DQoNCiRwYXRoID0gYmFzZW5hbWUgKCRQSFBfU0VMRik7DQoNCmZ1bmN0aW9uIGRvc3lheWljZWsoJGxpbmssJGZpbGUpDQoNCnsNCg0KICAgJGZwID0gQGZvcGVuKCRsaW5rLCJyIik7DQoNCiAgIHdoaWxlKCFmZW9mKCRmcCkpDQoNCiAgIHsNCg0KICAgICAgICRjb250Lj0gZnJlYWQoJGZwLDEwMjQpOw0KDQogICB9DQoNCiAgIGZjbG9zZSgkZnApOw0KDQoNCg0KICAgJGZwMiA9IEBmb3BlbigkZmlsZSwidyIpOw0KDQogICBmd3JpdGUoJGZwMiwkY29udCk7DQoNCiAgIGZjbG9zZSgkZnAyKTsNCg0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KJGV4ZWZ0eXBlcyAgPSBhcnJheSgNCg0KZ2V0ZW52KCJQSFBSQyIpLiIgLXEgJWYlIiA9PiBhcnJheSgicGhwIiwicGhwMyIsInBocDQiKSwNCg0KInBlcmwgJWYlIiA9PiBhcnJheSgicGwiLCJjZ2kiKQ0KDQopOw0KDQoNCg0KLyogSGlnaGxpZ2h0ZWQgZmlsZXMuDQoNCiAgYXJyYXkoDQoNCiAgIGk9PmFycmF5KHtyZWdleHB9LHt0eXBlfSx7b3BlbnRhZ30se2Nsb3NldGFnfSx7YnJlYWt9KQ0KDQogICAuLi4NCg0KICApDQoNCiAgc3RyaW5nIHtyZWdleHB9IC0gcmVndWxhciBleHAuDQoNCiAgaW50IHt0eXBlfToNCg0KMCAtIGZpbGVzIGFuZCBmb2xkZXJzIChhcyBkZWZhdWx0KSwNCg0KMSAtIGZpbGVzIG9ubHksIDIgLSBmb2xkZXJzIG9ubHkNCg0KICBzdHJpbmcge29wZW50YWd9IC0gb3BlbiBodG1sLXRhZywgZS5nLiAiPGI+IiAoZGVmYXVsdCkNCg0KICBzdHJpbmcge2Nsb3NldGFnfSAtIGNsb3NlIGh0bWwtdGFnLCBlLmcuICI8L2I+IiAoZGVmYXVsdCkNCg0KICBib29sIHticmVha30gLSBpZiBUUlVFIGFuZCBmb3VuZCBtYXRjaCB0aGVuIGJyZWFrDQoNCiovDQoNCiRyZWd4cF9oaWdobGlnaHQgID0gYXJyYXkoDQoNCiAgYXJyYXkoYmFzZW5hbWUoJF9TRVJWRVJbIlBIUF9TRUxGIl0pLDEsIjxmb250IGNvbG9yPSJ5ZWxsb3ciPiIsIjwvZm9udD4iKSwgLy8gZXhhbXBsZQ0KDQogIGFycmF5KCJjb25maWcucGhwIiwxKSAvLyBleGFtcGxlDQoNCik7DQoNCg0KDQokc2FmZW1vZGVfZGlza2V0dGVzID0gYXJyYXkoImEiKTsgLy8gVGhpcyB2YXJpYWJsZSBmb3IgZGlzYWJsaW5nIGRpc2tldHQtZXJyb3JzLg0KDQovLyBhcnJheSAoaT0+e2xldHRlcn0gLi4uKTsgc3RyaW5nIHtsZXR0ZXJ9IC0gbGV0dGVyIG9mIGEgZHJpdmUNCg0KLy8kc2FmZW1vZGVfZGlza2V0dGVzID0gcmFuZ2UoImEiLCJ6Iik7DQoNCiRoZXhkdW1wX2xpbmVzID0gODsvLyBsaW5lcyBpbiBoZXggcHJldmlldyBmaWxlDQoNCiRoZXhkdW1wX3Jvd3MgPSAyNDsvLyAxNiwgMjQgb3IgMzIgYnl0ZXMgaW4gb25lIGxpbmUNCg0KDQoNCiRuaXhwd2RwZXJwYWdlID0gMTAwOyAvLyBHZXQgZmlyc3QgTiBsaW5lcyBmcm9tIC9ldGMvcGFzc3dkDQoNCg0KDQokYmluZHBvcnRfcGFzcyA9ICJjOTkiOyAgLy8gZGVmYXVsdCBwYXNzd29yZCBmb3IgYmluZGluZw0KDQokYmluZHBvcnRfcG9ydCA9ICIzMTM3MyI7IC8vIGRlZmF1bHQgcG9ydCBmb3IgYmluZGluZw0KDQokYmNfcG9ydCA9ICIzMTM3MyI7IC8vIGRlZmF1bHQgcG9ydCBmb3IgYmFjay1jb25uZWN0DQoNCiRkYXRhcGlwZV9sb2NhbHBvcnQgPSAiODA4MSI7IC8vIGRlZmF1bHQgcG9ydCBmb3IgZGF0YXBpcGUNCg0KJGJhY2tfY29ubmVjdD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHTnRaRDBnSW14NWJuZ2lPdzBLSkhONWMzUmxiVDBnSjJWamFHOGdJbUIxYm1GdFpTQXRZV0FpTzJWag0KDQphRzhnSW1CcFpHQWlPeTlpYVc0dmMyZ25PdzBLSkRBOUpHTnRaRHNOQ2lSMFlYSm5aWFE5SkVGU1IxWmJNRjA3RFFva2NHOXlkRDBrUVZKSFZsc3hYVHNOQ2lScFlXUmtjajFwYm1WMFgyRjBiMjRvSkhSDQoNCmhjbWRsZENrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSd2IzSjBMQ0FrYVdGa1pISXBJSHg4SUdScFpTZ2lSWEp5YjNJNklDUWhYRzRpS1QNCg0Kc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSQ0KDQprVnljbTl5T2lBa0lWeHVJaWs3RFFwamIyNXVaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcHZjR1Z1S0ZOVVJFbE9MQ0FpUGlaVFQwTkxSVlFpDQoNCktUc05DbTl3Wlc0b1UxUkVUMVZVTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVSVkpTTENBaVBpWlRUME5MUlZRaUtUc05Dbk41YzNSbGJTZ2tjM2x6ZEdWdEtUc05DbU5zYjNObEtGTlVSRWwNCg0KT0tUc05DbU5zYjNObEtGTlVSRTlWVkNrN0RRcGpiRzl6WlNoVFZFUkZVbElwT3c9PSI7DQoNCg0KDQovLyBDb21tYW5kLWFsaWFzZXMNCg0KaWYgKCEkd2luKQ0KDQp7DQoNCiRjbWRhbGlhc2VzID0gYXJyYXkoDQoNCiAgYXJyYXkoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiwgImxzIC1sYSIpLA0KDQogIGFycmF5KCJmaW5kIGFsbCBzdWlkIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMiKSwNCg0KICBhcnJheSgiZmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1wZXJtIC0wNDAwMCAtbHMiKSwNCg0KICBhcnJheSgiZmluZCBhbGwgc2dpZCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzIiksDQoNCiAgYXJyYXkoImZpbmQgc2dpZCBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzIiksDQoNCiAgYXJyYXkoImZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmluYy5waHAiKSwNCg0KICBhcnJheSgiZmluZCBjb25maWcqIGZpbGVzIiwgImZpbmQgLyAtdHlwZSBmIC1uYW1lICJjb25maWcqIiIpLA0KDQogIGFycmF5KCJmaW5kIGNvbmZpZyogZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgImNvbmZpZyoiIiksDQoNCiAgYXJyYXkoImZpbmQgYWxsIHdyaXRhYmxlIGZvbGRlcnMgYW5kIGZpbGVzIiwgImZpbmQgLyAtcGVybSAtMiAtbHMiKSwNCg0KICBhcnJheSgiZmluZCBhbGwgd3JpdGFibGUgZm9sZGVycyBhbmQgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC1wZXJtIC0yIC1scyIpLA0KDQogIGFycmF5KCJmaW5kIGFsbCBzZXJ2aWNlLnB3ZCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBzZXJ2aWNlLnB3ZCIpLA0KDQogIGFycmF5KCJmaW5kIHNlcnZpY2UucHdkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiwgImZpbmQgLiAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiksDQoNCiAgYXJyYXkoImZpbmQgYWxsIC5odHBhc3N3ZCBmaWxlcyIsICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiKSwNCg0KICBhcnJheSgiZmluZCAuaHRwYXNzd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIiksDQoNCiAgYXJyYXkoImZpbmQgYWxsIC5iYXNoX2hpc3RvcnkgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSIpLA0KDQogIGFycmF5KCJmaW5kIC5iYXNoX2hpc3RvcnkgZmlsZXMgaW4gY3VycmVudCBkaXIiLCAiZmluZCAuIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSIpLA0KDQogIGFycmF5KCJmaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMiLCAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmZldGNobWFpbHJjIiksDQoNCg0KDQogIGFycmF5KCJmaW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpciIsICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiKSwNCg0KICBhcnJheSgibGlzdCBmaWxlIGF0dHJpYnV0ZXMgb24gYSBMaW51eCBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0iLCAibHNhdHRyIC12YSIpLA0KDQogIGFycmF5KCJzaG93IG9wZW5lZCBwb3J0cyIsICJuZXRzdGF0IC1hbiB8IGdyZXAgLWkgbGlzdGVuIikNCg0KKTsNCg0KfQ0KDQplbHNlDQoNCnsNCg0KJGNtZGFsaWFzZXMgPSBhcnJheSgNCg0KICBhcnJheSgiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iLCAiZGlyIiksDQoNCiAgYXJyYXkoInNob3cgb3BlbmVkIHBvcnRzIiwgIm5ldHN0YXQgLWFuIikNCg0KKTsNCg0KfQ0KDQoNCg0KJHNlc3NfY29va2llID0gImM5OXNodmFycyI7IC8vIENvb2tpZS12YXJpYWJsZSBuYW1lDQoNCg0KDQokdXNlZnNidWZmID0gVFJVRTsgLy9CdWZmZXItZnVuY3Rpb24NCg0KJGNvcHlfdW5zZXQgPSBGQUxTRTsgLy9SZW1vdmUgY29waWVkIGZpbGVzIGZyb20gYnVmZmVyIGFmdGVyIHBhc3RpbmcNCg0KDQoNCi8vUXVpY2sgbGF1bmNoDQoNCiRxdWlja2xhdW5jaCA9IGFycmF5KA0KDQphcnJheSgiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPWhvbWUiIGFsdD0iSG9tZSIgaGVpZ2h0PSIyMCIgd2lkdGg9IjIwIiBib3JkZXI9IjAiPiIsJHN1cmwpLA0KDQphcnJheSgiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPWJhY2siIGFsdD0iQmFjayIgaGVpZ2h0PSIyMCIgd2lkdGg9IjIwIiBib3JkZXI9IjAiPiIsIiMiIG9uY2xpY2s9Imhpc3RvcnkuYmFjaygxKSIpLA0KDQphcnJheSgiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPWZvcndhcmQiIGFsdD0iRm9yd2FyZCIgaGVpZ2h0PSIyMCIgd2lkdGg9IjIwIiBib3JkZXI9IjAiPiIsIiMiIG9uY2xpY2s9Imhpc3RvcnkuZ28oMSkiKSwNCg0KYXJyYXkoIjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz11cCIgYWx0PSJVUERJUiIgaGVpZ2h0PSIyMCIgd2lkdGg9IjIwIiBib3JkZXI9IjAiPiIsJHN1cmwuImFjdD1scyZkPSV1cGQmc29ydD0lc29ydCIpLA0KDQphcnJheSgiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPXJlZnJlc2giIGFsdD0iUmVmcmVzaCIgaGVpZ2h0PSIyMCIgd2lkdGg9IjE3IiBib3JkZXI9IjAiPiIsIiIpLA0KDQphcnJheSgiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPXNlYXJjaCIgYWx0PSJTZWFyY2giIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgYm9yZGVyPSIwIj4iLCRzdXJsLiJhY3Q9c2VhcmNoJmQ9JWQiKSwNCg0KYXJyYXkoIjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1idWZmZXIiIGFsdD0iQnVmZmVyIiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIGJvcmRlcj0iMCI+Iiwkc3VybC4iYWN0PWZzYnVmZiZkPSVkIiksDQoNCmFycmF5KCI8YnI+PGNlbnRlcj48Yj5bRW51bWVyYXRlXTwvYj4iLCRlbnVtZXJhdGUpLA0KDQphcnJheSgiPGI+W0VuY29kZXJdPC9iPiIsJHN1cmwuImFjdD1lbmNvZGVyJmQ9JWQiKSwNCg0KYXJyYXkoIjxiPltUb29sc108L2I+Iiwkc3VybC4iYWN0PXRvb2xzJmQ9JWQiKSwNCg0KYXJyYXkoIjxiPltQcm9jLl08L2I+Iiwkc3VybC4iYWN0PXByb2Nlc3NlcyZkPSVkIiksDQoNCmFycmF5KCI8Yj5bRlRQIEJydXRlXTwvYj4iLCRzdXJsLiJhY3Q9ZnRwcXVpY2ticnV0ZSZkPSVkIiksDQoNCmFycmF5KCI8Yj5bU2VjLl08L2I+Iiwkc3VybC4iYWN0PXNlY3VyaXR5JmQ9JWQiKSwNCg0KYXJyYXkoIjxiPltTUUxdPC9iPiIsJHN1cmwuImFjdD1zcWwmZD0lZCIpLA0KDQphcnJheSgiPGI+W1BIUC1Db2RlXTwvYj4iLCRzdXJsLiJhY3Q9ZXZhbCZkPSVkIiksDQoNCmFycmF5KCI8Yj5bQmFja2Rvb3IgSG9zdF08L2I+Iiwkc3VybC4iYWN0PXNoYmQiKSwNCg0KYXJyYXkoIjxiPltCYWNrLUNvbm5lY3Rpb25dPC9iPiIsJHN1cmwuImFjdD1iYWNrYyIpLA0KDQphcnJheSgiPGI+W21pbHcwcm0gaXQhXTwvYj4iLCRtaWxsaW5rKSwNCg0KYXJyYXkoIjxiPltQSFAtUHJveHldPC9iPiIsJHBocHJveCksDQoNCmFycmF5KCI8Yj5bU2VsZiByZW1vdmVdPC9iPjwvY2VudGVyPiIsJHN1cmwuImFjdD1zZWxmcmVtb3ZlIikNCg0KKTsNCg0KDQoNCi8vSGlnaGxpZ2h0LWNvZGUgY29sb3JzDQoNCiRoaWdobGlnaHRfYmFja2dyb3VuZCA9ICIjYzBjMGMwIjsNCg0KJGhpZ2hsaWdodF9iZyA9ICIjRkZGRkZGIjsNCg0KJGhpZ2hsaWdodF9jb21tZW50ID0gIiM2QTZBNkEiOw0KDQokaGlnaGxpZ2h0X2RlZmF1bHQgPSAiIzAwMDBCQiI7DQoNCiRoaWdobGlnaHRfaHRtbCA9ICIjMTMwMEZGIjsNCg0KJGhpZ2hsaWdodF9rZXl3b3JkID0gIiMwMDc3MDAiOw0KDQokaGlnaGxpZ2h0X3N0cmluZyA9ICIjMDAwMDAwIjsNCg0KDQoNCkAkZiA9ICRfUkVRVUVTVFsiZiJdOw0KDQpAZXh0cmFjdCgkX1JFUVVFU1RbImM5OXNoY29vayJdKTsNCg0KDQoNCi8vRU5EIENPTkZJR1VSQVRJT04NCg0KDQoNCg0KDQovLyAvTmV4dCBjb2RlIGlzbid0IGZvciBlZGl0aW5nLw0KDQovKmZ1bmN0aW9uIGV4KCRjZmUpDQoNCnsNCg0KJHJlcyA9ICcnOw0KDQppZiAoIWVtcHR5KCRjZmUpKQ0KDQp7DQoNCiAgaWYoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpDQoNCiAgIHsNCg0KICAgIEBleGVjKCRjZmUsJHJlcyk7DQoNCiAgICAkcmVzID0gam9pbigibiIsJHJlcyk7DQoNCiAgIH0NCg0KICBlbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpDQoNCiAgIHsNCg0KICAgICRyZXMgPSBAc2hlbGxfZXhlYygkY2ZlKTsNCg0KICAgfQ0KDQogIGVsc2VpZihmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKQ0KDQogICB7DQoNCiAgICBAb2Jfc3RhcnQoKTsNCg0KICAgIEBzeXN0ZW0oJGNmZSk7DQoNCiAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOw0KDQogICAgQG9iX2VuZF9jbGVhbigpOw0KDQogICB9DQoNCiAgZWxzZWlmKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkNCg0KICAgew0KDQogICAgQG9iX3N0YXJ0KCk7DQoNCiAgICBAcGFzc3RocnUoJGNmZSk7DQoNCiAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOw0KDQogICAgQG9iX2VuZF9jbGVhbigpOw0KDQogICB9DQoNCiAgZWxzZWlmKEBpc19yZXNvdXJjZSgkZiA9IEBwb3BlbigkY2ZlLCJyIikpKQ0KDQogIHsNCg0KICAgJHJlcyA9ICIiOw0KDQogICB3aGlsZSghQGZlb2YoJGYpKSB7ICRyZXMgLj0gQGZyZWFkKCRmLDEwMjQpOyB9DQoNCiAgIEBwY2xvc2UoJGYpOw0KDQogIH0NCg0KfQ0KDQpyZXR1cm4gJHJlczsNCg0KfSovDQoNCi8qZnVuY3Rpb24gd2hpY2goJHByKQ0KDQp7DQoNCiRwYXRoID0gZXgoIndoaWNoICRwciIpOw0KDQppZighZW1wdHkoJHBhdGgpKSB7IHJldHVybiAkcGF0aDsgfSBlbHNlIHsgcmV0dXJuICRwcjsgfQ0KDQp9DQoNCg0KDQpmdW5jdGlvbiBjZigkZm5hbWUsJHRleHQpDQoNCnsNCg0KJHdfZmlsZT1AZm9wZW4oJGZuYW1lLCJ3Iikgb3IgZXJyKDApOw0KDQppZigkd19maWxlKQ0KDQp7DQoNCkBmcHV0cygkd19maWxlLEBiYXNlNjRfZGVjb2RlKCR0ZXh0KSk7DQoNCkBmY2xvc2UoJHdfZmlsZSk7DQoNCn0NCg0KfSovDQoNCi8qZnVuY3Rpb24gZXJyKCRuLCR0eHQ9JycpDQoNCnsNCg0KZWNobyAnPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wPjx0cj48dGQgYmdjb2xvcj0jMDAwMDAwPjxmb250IGNvbG9yPXJlZCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj4nOyAgICAgDQoNCmVjaG8gJEdMT0JBTFNbJ2xhbmcnXVskR0xPQkFMU1snbGFuZ3VhZ2UnXS4nX2VycicuJG5dOw0KDQppZighZW1wdHkoJHR4dCkpIHsgZWNobyAiICR0eHQiOyB9DQoNCmVjaG8gJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+JzsNCg0KcmV0dXJuIG51bGw7DQoNCn0qLw0KDQpAc2V0X3RpbWVfbGltaXQoMCk7DQoNCiR0bXAgPSBhcnJheSgpOw0KDQpmb3JlYWNoKCRob3N0X2FsbG93IGFzICRrPT4kdikgeyR0bXBbXSA9IHN0cl9yZXBsYWNlKCJcKiIsIi4qIixwcmVnX3F1b3RlKCR2KSk7fQ0KDQokcyA9ICIhXigiLmltcGxvZGUoInwiLCR0bXApLiIpJCFpIjsNCg0KaWYgKCFwcmVnX21hdGNoKCRzLGdldGVudigiUkVNT1RFX0FERFIiKSkgYW5kICFwcmVnX21hdGNoKCRzLGdldGhvc3RieWFkZHIoZ2V0ZW52KCJSRU1PVEVfQUREUiIpKSkpIHtleGl0KCI8YSBocmVmPSJodHRwOi8vbG9jdXM3cy5jb20vIj54MjMwMCBTaGVsbDwvYT46IEFjY2VzcyBEZW5pZWQgLSB5b3VyIGhvc3QgKCIuZ2V0ZW52KCJSRU1PVEVfQUREUiIpLiIpIG5vdCBhbGxvdyIpO30NCg0KaWYgKCFlbXB0eSgkbG9naW4pKQ0KDQp7DQoNCmlmIChlbXB0eSgkbWQ1X3Bhc3MpKSB7JG1kNV9wYXNzID0gbWQ1KCRwYXNzKTt9DQoNCmlmICgoJF9TRVJWRVJbIlBIUF9BVVRIX1VTRVIiXSAhPSAkbG9naW4pIG9yIChtZDUoJF9TRVJWRVJbIlBIUF9BVVRIX1BXIl0pICE9ICRtZDVfcGFzcykpDQoNCnsNCg0KICBpZiAoZW1wdHkoJGxvZ2luX3R4dCkpIHskbG9naW5fdHh0ID0gc3RyaXBfdGFncyhlcmVnX3JlcGxhY2UoIiZuYnNwO3w8YnI+IiwiICIsJGRvbmF0ZWRfaHRtbCkpO30NCg0KICBoZWFkZXIoIldXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPSJjOTlzaGVsbCAiLiRzaHZlci4iOiAiLiRsb2dpbl90eHQuIiIiKTsNCg0KICBoZWFkZXIoIkhUVFAvMS4wIDQwMSBVbmF1dGhvcml6ZWQiKTsNCg0KICBleGl0KCRhY2Nlc3NkZW5pZWRtZXNzKTsNCg0KfQ0KDQp9DQoNCmlmICgkYWN0ICE9ICJpbWciKQ0KDQp7DQoNCiRsYXN0ZGlyID0gcmVhbHBhdGgoIi4iKTsNCg0KY2hkaXIoJGN1cmRpcik7DQoNCmlmICgkc2VsZndyaXRlIG9yICR1cGRhdGVub3cpIHtAb2JfY2xlYW4oKTsgYzk5c2hfZ2V0dXBkYXRlKCRzZWxmd3JpdGUsMSk7IGV4aXQ7fQ0KDQokc2Vzc19kYXRhID0gdW5zZXJpYWxpemUoJF9DT09LSUVbIiRzZXNzX2Nvb2tpZSJdKTsNCg0KaWYgKCFpc19hcnJheSgkc2Vzc19kYXRhKSkgeyRzZXNzX2RhdGEgPSBhcnJheSgpO30NCg0KaWYgKCFpc19hcnJheSgkc2Vzc19kYXRhWyJjb3B5Il0pKSB7JHNlc3NfZGF0YVsiY29weSJdID0gYXJyYXkoKTt9DQoNCmlmICghaXNfYXJyYXkoJHNlc3NfZGF0YVsiY3V0Il0pKSB7JHNlc3NfZGF0YVsiY3V0Il0gPSBhcnJheSgpO30NCg0KDQoNCiRkaXNhYmxlZnVuYyA9IEBpbmlfZ2V0KCJkaXNhYmxlX2Z1bmN0aW9ucyIpOw0KDQppZiAoIWVtcHR5KCRkaXNhYmxlZnVuYykpDQoNCnsNCg0KJGRpc2FibGVmdW5jID0gc3RyX3JlcGxhY2UoIiAiLCIiLCRkaXNhYmxlZnVuYyk7DQoNCiRkaXNhYmxlZnVuYyA9IGV4cGxvZGUoIiwiLCRkaXNhYmxlZnVuYyk7DQoNCn0NCg0KDQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJjOTlfYnVmZl9wcmVwYXJlIikpDQoNCnsNCg0KZnVuY3Rpb24gYzk5X2J1ZmZfcHJlcGFyZSgpDQoNCnsNCg0KZ2xvYmFsICRzZXNzX2RhdGE7DQoNCmdsb2JhbCAkYWN0Ow0KDQpmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpIHskc2Vzc19kYXRhWyJjb3B5Il1bJGtdID0gc3RyX3JlcGxhY2UoIlwiLERJUkVDVE9SWV9TRVBBUkFUT1IscmVhbHBhdGgoJHYpKTt9DQoNCmZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7JHNlc3NfZGF0YVsiY3V0Il1bJGtdID0gc3RyX3JlcGxhY2UoIlwiLERJUkVDVE9SWV9TRVBBUkFUT1IscmVhbHBhdGgoJHYpKTt9DQoNCiRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5X3VuaXF1ZSgkc2Vzc19kYXRhWyJjb3B5Il0pOw0KDQokc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5X3VuaXF1ZSgkc2Vzc19kYXRhWyJjdXQiXSk7DQoNCnNvcnQoJHNlc3NfZGF0YVsiY29weSJdKTsNCg0Kc29ydCgkc2Vzc19kYXRhWyJjdXQiXSk7DQoNCmlmICgkYWN0ICE9ICJjb3B5Iikge2ZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7aWYgKCRzZXNzX2RhdGFbImNvcHkiXVska10gPT0gJHYpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTsgfX19DQoNCmVsc2Uge2ZvcmVhY2goJHNlc3NfZGF0YVsiY29weSJdIGFzICRrPT4kdikge2lmICgkc2Vzc19kYXRhWyJjdXQiXVska10gPT0gJHYpIHt1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pO319fQ0KDQp9DQoNCn0NCg0KYzk5X2J1ZmZfcHJlcGFyZSgpOw0KDQoNCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImM5OV9zZXNzX3B1dCIpKQ0KDQp7DQoNCmZ1bmN0aW9uIGM5OV9zZXNzX3B1dCgkZGF0YSkNCg0Kew0KDQpnbG9iYWwgJHNlc3NfY29va2llOw0KDQpnbG9iYWwgJHNlc3NfZGF0YTsNCg0KYzk5X2J1ZmZfcHJlcGFyZSgpOw0KDQokc2Vzc19kYXRhID0gJGRhdGE7DQoNCiRkYXRhID0gc2VyaWFsaXplKCRkYXRhKTsNCg0Kc2V0Y29va2llKCRzZXNzX2Nvb2tpZSwkZGF0YSk7DQoNCn0NCg0KfQ0KDQpmb3JlYWNoIChhcnJheSgic29ydCIsInNxbF9zb3J0IikgYXMgJHYpDQoNCnsNCg0KaWYgKCFlbXB0eSgkX0dFVFskdl0pKSB7JCR2ID0gJF9HRVRbJHZdO30NCg0KaWYgKCFlbXB0eSgkX1BPU1RbJHZdKSkgeyQkdiA9ICRfUE9TVFskdl07fQ0KDQp9DQoNCmlmICgkc29ydF9zYXZlKQ0KDQp7DQoNCmlmICghZW1wdHkoJHNvcnQpKSB7c2V0Y29va2llKCJzb3J0Iiwkc29ydCk7fQ0KDQppZiAoIWVtcHR5KCRzcWxfc29ydCkpIHtzZXRjb29raWUoInNxbF9zb3J0Iiwkc3FsX3NvcnQpO30NCg0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygic3RyMm1pbmkiKSkNCg0Kew0KDQpmdW5jdGlvbiBzdHIybWluaSgkY29udGVudCwkbGVuKQ0KDQp7DQoNCmlmIChzdHJsZW4oJGNvbnRlbnQpID4gJGxlbikNCg0Kew0KDQogICRsZW4gPSBjZWlsKCRsZW4vMikgLSAyOw0KDQogIHJldHVybiBzdWJzdHIoJGNvbnRlbnQsIDAsJGxlbikuIi4uLiIuc3Vic3RyKCRjb250ZW50LC0kbGVuKTsNCg0KfQ0KDQplbHNlIHtyZXR1cm4gJGNvbnRlbnQ7fQ0KDQp9DQoNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfc2l6ZSIpKQ0KDQp7DQoNCmZ1bmN0aW9uIHZpZXdfc2l6ZSgkc2l6ZSkNCg0Kew0KDQppZiAoIWlzX251bWVyaWMoJHNpemUpKSB7cmV0dXJuIEZBTFNFO30NCg0KZWxzZQ0KDQp7DQoNCiAgaWYgKCRzaXplID49IDEwNzM3NDE4MjQpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwNzM3NDE4MjQqMTAwKS8xMDAgLiIgR0IiO30NCg0KICBlbHNlaWYgKCRzaXplID49IDEwNDg1NzYpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwNDg1NzYqMTAwKS8xMDAgLiIgTUIiO30NCg0KICBlbHNlaWYgKCRzaXplID49IDEwMjQpIHskc2l6ZSA9IHJvdW5kKCRzaXplLzEwMjQqMTAwKS8xMDAgLiIgS0IiO30NCg0KICBlbHNlIHskc2l6ZSA9ICRzaXplIC4gIiBCIjt9DQoNCiAgcmV0dXJuICRzaXplOw0KDQp9DQoNCn0NCg0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfY29weV9kaXIiKSkNCg0Kew0KDQpmdW5jdGlvbiBmc19jb3B5X2RpcigkZCwkdCkNCg0Kew0KDQokZCA9IHN0cl9yZXBsYWNlKCJcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCg0KaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KDQokaCA9IG9wZW5kaXIoJGQpOw0KDQp3aGlsZSAoKCRvID0gcmVhZGRpcigkaCkpICE9PSBGQUxTRSkNCg0Kew0KDQogIGlmICgoJG8gIT0gIi4iKSBhbmQgKCRvICE9ICIuLiIpKQ0KDQogIHsNCg0KICAgaWYgKCFpc19kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gY29weSgkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCg0KICAgZWxzZSB7JHJldCA9IG1rZGlyKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pOyBmc19jb3B5X2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCg0KICAgaWYgKCEkcmV0KSB7cmV0dXJuICRyZXQ7fQ0KDQogIH0NCg0KfQ0KDQpjbG9zZWRpcigkaCk7DQoNCnJldHVybiBUUlVFOw0KDQp9DQoNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImZzX2NvcHlfb2JqIikpDQoNCnsNCg0KZnVuY3Rpb24gZnNfY29weV9vYmooJGQsJHQpDQoNCnsNCg0KJGQgPSBzdHJfcmVwbGFjZSgiXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkZCk7DQoNCiR0ID0gc3RyX3JlcGxhY2UoIlwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHQpOw0KDQppZiAoIWlzX2RpcihkaXJuYW1lKCR0KSkpIHtta2RpcihkaXJuYW1lKCR0KSk7fQ0KDQppZiAoaXNfZGlyKCRkKSkNCg0Kew0KDQogIGlmIChzdWJzdHIoJGQsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskZCAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCg0KICBpZiAoc3Vic3RyKCR0LC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JHQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQoNCiAgcmV0dXJuIGZzX2NvcHlfZGlyKCRkLCR0KTsNCg0KfQ0KDQplbHNlaWYgKGlzX2ZpbGUoJGQpKSB7cmV0dXJuIGNvcHkoJGQsJHQpO30NCg0KZWxzZSB7cmV0dXJuIEZBTFNFO30NCg0KfQ0KDQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19tb3ZlX2RpciIpKQ0KDQp7DQoNCmZ1bmN0aW9uIGZzX21vdmVfZGlyKCRkLCR0KQ0KDQp7DQoNCiRoID0gb3BlbmRpcigkZCk7DQoNCmlmICghaXNfZGlyKCR0KSkge21rZGlyKCR0KTt9DQoNCndoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkgIT09IEZBTFNFKQ0KDQp7DQoNCiAgaWYgKCgkbyAhPSAiLiIpIGFuZCAoJG8gIT0gIi4uIikpDQoNCiAgew0KDQogICAkcmV0ID0gVFJVRTsNCg0KICAgaWYgKCFpc19kaXIoJGQuRElSRUNUT1JZX1NFUEFSQVRPUi4kbykpIHskcmV0ID0gY29weSgkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pO30NCg0KICAgZWxzZSB7aWYgKG1rZGlyKCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pIGFuZCBmc19jb3B5X2RpcigkZC5ESVJFQ1RPUllfU0VQQVJBVE9SLiRvLCR0LkRJUkVDVE9SWV9TRVBBUkFUT1IuJG8pKSB7JHJldCA9IEZBTFNFO319DQoNCiAgIGlmICghJHJldCkge3JldHVybiAkcmV0O30NCg0KICB9DQoNCn0NCg0KY2xvc2VkaXIoJGgpOw0KDQpyZXR1cm4gVFJVRTsNCg0KfQ0KDQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19tb3ZlX29iaiIpKQ0KDQp7DQoNCmZ1bmN0aW9uIGZzX21vdmVfb2JqKCRkLCR0KQ0KDQp7DQoNCiRkID0gc3RyX3JlcGxhY2UoIlwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOw0KDQokdCA9IHN0cl9yZXBsYWNlKCJcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR0KTsNCg0KaWYgKGlzX2RpcigkZCkpDQoNCnsNCg0KICBpZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQoNCiAgaWYgKHN1YnN0cigkdCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR0IC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fQ0KDQogIHJldHVybiBmc19tb3ZlX2RpcigkZCwkdCk7DQoNCn0NCg0KZWxzZWlmIChpc19maWxlKCRkKSkNCg0Kew0KDQogIGlmKGNvcHkoJGQsJHQpKSB7cmV0dXJuIHVubGluaygkZCk7fQ0KDQogIGVsc2Uge3VubGluaygkdCk7IHJldHVybiBGQUxTRTt9DQoNCn0NCg0KZWxzZSB7cmV0dXJuIEZBTFNFO30NCg0KfQ0KDQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJmc19ybWRpciIpKQ0KDQp7DQoNCmZ1bmN0aW9uIGZzX3JtZGlyKCRkKQ0KDQp7DQoNCiRoID0gb3BlbmRpcigkZCk7DQoNCndoaWxlICgoJG8gPSByZWFkZGlyKCRoKSkgIT09IEZBTFNFKQ0KDQp7DQoNCiAgaWYgKCgkbyAhPSAiLiIpIGFuZCAoJG8gIT0gIi4uIikpDQoNCiAgew0KDQogICBpZiAoIWlzX2RpcigkZC4kbykpIHt1bmxpbmsoJGQuJG8pO30NCg0KICAgZWxzZSB7ZnNfcm1kaXIoJGQuJG8uRElSRUNUT1JZX1NFUEFSQVRPUik7IHJtZGlyKCRkLiRvKTt9DQoNCiAgfQ0KDQp9DQoNCmNsb3NlZGlyKCRoKTsNCg0Kcm1kaXIoJGQpOw0KDQpyZXR1cm4gIWlzX2RpcigkZCk7DQoNCn0NCg0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiZnNfcm1vYmoiKSkNCg0Kew0KDQpmdW5jdGlvbiBmc19ybW9iaigkbykNCg0Kew0KDQokbyA9IHN0cl9yZXBsYWNlKCJcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRvKTsNCg0KaWYgKGlzX2RpcigkbykpDQoNCnsNCg0KICBpZiAoc3Vic3RyKCRvLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JG8gLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQoNCiAgcmV0dXJuIGZzX3JtZGlyKCRvKTsNCg0KfQ0KDQplbHNlaWYgKGlzX2ZpbGUoJG8pKSB7cmV0dXJuIHVubGluaygkbyk7fQ0KDQplbHNlIHtyZXR1cm4gRkFMU0U7fQ0KDQp9DQoNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c2hlbGxleGVjIikpDQoNCnsNCg0KZnVuY3Rpb24gbXlzaGVsbGV4ZWMoJGNtZCkNCg0Kew0KDQpnbG9iYWwgJGRpc2FibGVmdW5jOw0KDQokcmVzdWx0ID0gIiI7DQoNCmlmICghZW1wdHkoJGNtZCkpDQoNCnsNCg0KICBpZiAoaXNfY2FsbGFibGUoImV4ZWMiKSBhbmQgIWluX2FycmF5KCJleGVjIiwkZGlzYWJsZWZ1bmMpKSB7ZXhlYygkY21kLCRyZXN1bHQpOyAkcmVzdWx0ID0gam9pbigibiIsJHJlc3VsdCk7fQ0KDQogIGVsc2VpZiAoKCRyZXN1bHQgPSBgJGNtZGApICE9PSBGQUxTRSkge30NCg0KICBlbHNlaWYgKGlzX2NhbGxhYmxlKCJzeXN0ZW0iKSBhbmQgIWluX2FycmF5KCJzeXN0ZW0iLCRkaXNhYmxlZnVuYykpIHskdiA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IHN5c3RlbSgkY21kKTsgJHJlc3VsdCA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IGVjaG8gJHY7fQ0KDQogIGVsc2VpZiAoaXNfY2FsbGFibGUoInBhc3N0aHJ1IikgYW5kICFpbl9hcnJheSgicGFzc3RocnUiLCRkaXNhYmxlZnVuYykpIHskdiA9IEBvYl9nZXRfY29udGVudHMoKTsgQG9iX2NsZWFuKCk7IHBhc3N0aHJ1KCRjbWQpOyAkcmVzdWx0ID0gQG9iX2dldF9jb250ZW50cygpOyBAb2JfY2xlYW4oKTsgZWNobyAkdjt9DQoNCiAgZWxzZWlmIChpc19yZXNvdXJjZSgkZnAgPSBwb3BlbigkY21kLCJyIikpKQ0KDQogIHsNCg0KICAgJHJlc3VsdCA9ICIiOw0KDQogICB3aGlsZSghZmVvZigkZnApKSB7JHJlc3VsdCAuPSBmcmVhZCgkZnAsMTAyNCk7fQ0KDQogICBwY2xvc2UoJGZwKTsNCg0KICB9DQoNCn0NCg0KcmV0dXJuICRyZXN1bHQ7DQoNCn0NCg0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygidGFic29ydCIpKSB7ZnVuY3Rpb24gdGFic29ydCgkYSwkYikge2dsb2JhbCAkdjsgcmV0dXJuIHN0cm5hdGNtcCgkYVskdl0sICRiWyR2XSk7fX0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInZpZXdfcGVybXMiKSkNCg0Kew0KDQpmdW5jdGlvbiB2aWV3X3Blcm1zKCRtb2RlKQ0KDQp7DQoNCmlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHskdHlwZSA9ICJzIjt9DQoNCmVsc2VpZiAoKCRtb2RlICYgMHg0MDAwKSA9PT0gMHg0MDAwKSB7JHR5cGUgPSAiZCI7fQ0KDQplbHNlaWYgKCgkbW9kZSAmIDB4QTAwMCkgPT09IDB4QTAwMCkgeyR0eXBlID0gImwiO30NCg0KZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHskdHlwZSA9ICItIjt9DQoNCmVsc2VpZiAoKCRtb2RlICYgMHg2MDAwKSA9PT0gMHg2MDAwKSB7JHR5cGUgPSAiYiI7fQ0KDQplbHNlaWYgKCgkbW9kZSAmIDB4MjAwMCkgPT09IDB4MjAwMCkgeyR0eXBlID0gImMiO30NCg0KZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHskdHlwZSA9ICJwIjt9DQoNCmVsc2UgeyR0eXBlID0gIj8iO30NCg0KDQoNCiRvd25lclsicmVhZCJdID0gKCRtb2RlICYgMDA0MDApPyJyIjoiLSI7DQoNCiRvd25lclsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMjAwKT8idyI6Ii0iOw0KDQokb3duZXJbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMTAwKT8ieCI6Ii0iOw0KDQokZ3JvdXBbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDQwKT8iciI6Ii0iOw0KDQokZ3JvdXBbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAyMCk/InciOiItIjsNCg0KJGdyb3VwWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDAxMCk/IngiOiItIjsNCg0KJHdvcmxkWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDAwNCk/InIiOiItIjsNCg0KJHdvcmxkWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMDIpPyAidyI6Ii0iOw0KDQokd29ybGRbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDAxKT8ieCI6Ii0iOw0KDQoNCg0KaWYgKCRtb2RlICYgMHg4MDApIHskb3duZXJbImV4ZWN1dGUiXSA9ICgkb3duZXJbImV4ZWN1dGUiXSA9PSAieCIpPyJzIjoiUyI7fQ0KDQppZiAoJG1vZGUgJiAweDQwMCkgeyRncm91cFsiZXhlY3V0ZSJdID0gKCRncm91cFsiZXhlY3V0ZSJdID09ICJ4Iik/InMiOiJTIjt9DQoNCmlmICgkbW9kZSAmIDB4MjAwKSB7JHdvcmxkWyJleGVjdXRlIl0gPSAoJHdvcmxkWyJleGVjdXRlIl0gPT0gIngiKT8idCI6IlQiO30NCg0KDQoNCnJldHVybiAkdHlwZS5qb2luKCIiLCRvd25lcikuam9pbigiIiwkZ3JvdXApLmpvaW4oIiIsJHdvcmxkKTsNCg0KfQ0KDQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRwd3VpZCIpIGFuZCAhaW5fYXJyYXkoInBvc2l4X2dldHB3dWlkIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfZ2V0cHd1aWQoJHVpZCkge3JldHVybiBGQUxTRTt9fQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygicG9zaXhfZ2V0Z3JnaWQiKSBhbmQgIWluX2FycmF5KCJwb3NpeF9nZXRncmdpZCIsJGRpc2FibGVmdW5jKSkge2Z1bmN0aW9uIHBvc2l4X2dldGdyZ2lkKCRnaWQpIHtyZXR1cm4gRkFMU0U7fX0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2tpbGwiKSBhbmQgIWluX2FycmF5KCJwb3NpeF9raWxsIiwkZGlzYWJsZWZ1bmMpKSB7ZnVuY3Rpb24gcG9zaXhfa2lsbCgkZ2lkKSB7cmV0dXJuIEZBTFNFO319DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJwYXJzZV9wZXJtcyIpKQ0KDQp7DQoNCmZ1bmN0aW9uIHBhcnNlX3Blcm1zKCRtb2RlKQ0KDQp7DQoNCmlmICgoJG1vZGUgJiAweEMwMDApID09PSAweEMwMDApIHskdCA9ICJzIjt9DQoNCmVsc2VpZiAoKCRtb2RlICYgMHg0MDAwKSA9PT0gMHg0MDAwKSB7JHQgPSAiZCI7fQ0KDQplbHNlaWYgKCgkbW9kZSAmIDB4QTAwMCkgPT09IDB4QTAwMCkgeyR0ID0gImwiO30NCg0KZWxzZWlmICgoJG1vZGUgJiAweDgwMDApID09PSAweDgwMDApIHskdCA9ICItIjt9DQoNCmVsc2VpZiAoKCRtb2RlICYgMHg2MDAwKSA9PT0gMHg2MDAwKSB7JHQgPSAiYiI7fQ0KDQplbHNlaWYgKCgkbW9kZSAmIDB4MjAwMCkgPT09IDB4MjAwMCkgeyR0ID0gImMiO30NCg0KZWxzZWlmICgoJG1vZGUgJiAweDEwMDApID09PSAweDEwMDApIHskdCA9ICJwIjt9DQoNCmVsc2UgeyR0ID0gIj8iO30NCg0KJG9bInIiXSA9ICgkbW9kZSAmIDAwNDAwKSA+IDA7ICRvWyJ3Il0gPSAoJG1vZGUgJiAwMDIwMCkgPiAwOyAkb1sieCJdID0gKCRtb2RlICYgMDAxMDApID4gMDsNCg0KJGdbInIiXSA9ICgkbW9kZSAmIDAwMDQwKSA+IDA7ICRnWyJ3Il0gPSAoJG1vZGUgJiAwMDAyMCkgPiAwOyAkZ1sieCJdID0gKCRtb2RlICYgMDAwMTApID4gMDsNCg0KJHdbInIiXSA9ICgkbW9kZSAmIDAwMDA0KSA+IDA7ICR3WyJ3Il0gPSAoJG1vZGUgJiAwMDAwMikgPiAwOyAkd1sieCJdID0gKCRtb2RlICYgMDAwMDEpID4gMDsNCg0KcmV0dXJuIGFycmF5KCJ0Ij0+JHQsIm8iPT4kbywiZyI9PiRnLCJ3Ij0+JHcpOw0KDQp9DQoNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBhcnNlc29ydCIpKQ0KDQp7DQoNCmZ1bmN0aW9uIHBhcnNlc29ydCgkc29ydCkNCg0Kew0KDQokb25lID0gaW50dmFsKCRzb3J0KTsNCg0KJHNlY29uZCA9IHN1YnN0cigkc29ydCwtMSk7DQoNCmlmICgkc2Vjb25kICE9ICJkIikgeyRzZWNvbmQgPSAiYSI7fQ0KDQpyZXR1cm4gYXJyYXkoJG9uZSwkc2Vjb25kKTsNCg0KfQ0KDQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3Blcm1zX2NvbG9yIikpDQoNCnsNCg0KZnVuY3Rpb24gdmlld19wZXJtc19jb2xvcigkbykNCg0Kew0KDQppZiAoIWlzX3JlYWRhYmxlKCRvKSkge3JldHVybiAiPGZvbnQgY29sb3I9cmVkPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fQ0KDQplbHNlaWYgKCFpc193cml0YWJsZSgkbykpIHtyZXR1cm4gIjxmb250IGNvbG9yPXdoaXRlPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fQ0KDQplbHNlIHtyZXR1cm4gIjxmb250IGNvbG9yPWdyZWVuPiIudmlld19wZXJtcyhmaWxlcGVybXMoJG8pKS4iPC9mb250PiI7fQ0KDQp9DQoNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImM5OWdldHNvdXJjZSIpKQ0KDQp7DQoNCmZ1bmN0aW9uIGM5OWdldHNvdXJjZSgkZm4pDQoNCnsNCg0KZ2xvYmFsICRjOTlzaF9zb3VyY2VzdXJsOw0KDQokYXJyYXkgPSBhcnJheSgNCg0KICAiYzk5c2hfYmluZHBvcnQucGwiID0+ICJjOTlzaF9iaW5kcG9ydF9wbC50eHQiLA0KDQogICJjOTlzaF9iaW5kcG9ydC5jIiA9PiAiYzk5c2hfYmluZHBvcnRfYy50eHQiLA0KDQogICJjOTlzaF9iYWNrY29ubi5wbCIgPT4gImM5OXNoX2JhY2tjb25uX3BsLnR4dCIsDQoNCiAgImM5OXNoX2JhY2tjb25uLmMiID0+ICJjOTlzaF9iYWNrY29ubl9jLnR4dCIsDQoNCiAgImM5OXNoX2RhdGFwaXBlLnBsIiA9PiAiYzk5c2hfZGF0YXBpcGVfcGwudHh0IiwNCg0KICAiYzk5c2hfZGF0YXBpcGUuYyIgPT4gImM5OXNoX2RhdGFwaXBlX2MudHh0IiwNCg0KKTsNCg0KJG5hbWUgPSAkYXJyYXlbJGZuXTsNCg0KaWYgKCRuYW1lKSB7cmV0dXJuIGZpbGVfZ2V0X2NvbnRlbnRzKCRjOTlzaF9zb3VyY2VzdXJsLiRuYW1lKTt9DQoNCmVsc2Uge3JldHVybiBGQUxTRTt9DQoNCn0NCg0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygiYzk5c2hfZ2V0dXBkYXRlIikpDQoNCnsNCg0KZnVuY3Rpb24gYzk5c2hfZ2V0dXBkYXRlKCR1cGRhdGUgPSBUUlVFKQ0KDQp7DQoNCiR1cmwgPSAkR0xPQkFMU1siYzk5c2hfdXBkYXRldXJsIl0uIj92ZXJzaW9uPSIudXJsZW5jb2RlKGJhc2U2NF9lbmNvZGUoJEdMT0JBTFNbInNodmVyIl0pKS4iJnVwZGF0ZW5vdz0iLigkdXBkYXRlbm93PyIxIjoiMCIpLiImIjsNCg0KJGRhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJHVybCk7DQoNCmlmICghJGRhdGEpIHtyZXR1cm4gIkNhbid0IGNvbm5lY3QgdG8gdXBkYXRlLXNlcnZlciEiO30NCg0KZWxzZQ0KDQp7DQoNCiAgJGRhdGEgPSBsdHJpbSgkZGF0YSk7DQoNCiAgJHN0cmluZyA9IHN1YnN0cigkZGF0YSwzLG9yZCgkZGF0YXsyfSkpOw0KDQogIGlmICgkZGF0YXswfSA9PSAieDk5IiBhbmQgJGRhdGF7MX0gPT0gIngwMSIpIHtyZXR1cm4gIkVycm9yOiAiLiRzdHJpbmc7IHJldHVybiBGQUxTRTt9DQoNCiAgaWYgKCRkYXRhezB9ID09ICJ4OTkiIGFuZCAkZGF0YXsxfSA9PSAieDAyIikge3JldHVybiAiWW91IGFyZSB1c2luZyBsYXRlc3QgdmVyc2lvbiEiO30NCg0KICBpZiAoJGRhdGF7MH0gPT0gIng5OSIgYW5kICRkYXRhezF9ID09ICJ4MDMiKQ0KDQogIHsNCg0KICAgJHN0cmluZyA9IGV4cGxvZGUoIngwMSIsJHN0cmluZyk7DQoNCiAgIGlmICgkdXBkYXRlKQ0KDQogICB7DQoNCiAgICAkY29uZnZhcnMgPSBhcnJheSgpOw0KDQogICAgJHNvdXJjZXVybCA9ICRzdHJpbmdbMF07DQoNCiAgICAkc291cmNlID0gZmlsZV9nZXRfY29udGVudHMoJHNvdXJjZXVybCk7DQoNCiAgICBpZiAoISRzb3VyY2UpIHtyZXR1cm4gIkNhbid0IGZldGNoIHVwZGF0ZSEiO30NCg0KICAgIGVsc2UNCg0KICAgIHsNCg0KICAgICAkZnAgPSBmb3BlbihfX0ZJTEVfXywidyIpOw0KDQogICAgIGlmICghJGZwKSB7cmV0dXJuICJMb2NhbCBlcnJvcjogY2FuJ3Qgd3JpdGUgdXBkYXRlIHRvICIuX19GSUxFX18uIiEgWW91IG1heSBkb3dubG9hZCBjOTlzaGVsbC5waHAgbWFudWFsbHkgPGEgaHJlZj0iIi4kc291cmNldXJsLiIiPjx1PmhlcmU8L3U+PC9hPi4iO30NCg0KICAgICBlbHNlIHtmd3JpdGUoJGZwLCRzb3VyY2UpOyBmY2xvc2UoJGZwKTsgcmV0dXJuICJUaGFua3MhIFVwZGF0ZWQgd2l0aCBzdWNjZXNzLiI7fQ0KDQogICAgfQ0KDQogICB9DQoNCiAgIGVsc2Uge3JldHVybiAiTmV3IHZlcnNpb24gYXJlIGF2YWlsYWJsZTogIi4kc3RyaW5nWzFdO30NCg0KICB9DQoNCiAgZWxzZWlmICgkZGF0YXswfSA9PSAieDk5IiBhbmQgJGRhdGF7MX0gPT0gIngwNCIpIHtldmFsKCRzdHJpbmcpOyByZXR1cm4gMTt9DQoNCiAgZWxzZSB7cmV0dXJuICJFcnJvciBpbiBwcm90b2NvbDogc2VnbWVudGF0aW9uIGZhaWxlZCEgKCIuJGRhdGEuIikgIjt9DQoNCn0NCg0KfQ0KDQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJteXNxbF9kdW1wIikpDQoNCnsNCg0KZnVuY3Rpb24gbXlzcWxfZHVtcCgkc2V0KQ0KDQp7DQoNCmdsb2JhbCAkc2h2ZXI7DQoNCiRzb2NrID0gJHNldFsic29jayJdOw0KDQokZGIgPSAkc2V0WyJkYiJdOw0KDQokcHJpbnQgPSAkc2V0WyJwcmludCJdOw0KDQokbmwyYnIgPSAkc2V0WyJubDJiciJdOw0KDQokZmlsZSA9ICRzZXRbImZpbGUiXTsNCg0KJGFkZF9kcm9wID0gJHNldFsiYWRkX2Ryb3AiXTsNCg0KJHRhYnMgPSAkc2V0WyJ0YWJzIl07DQoNCiRvbmx5dGFicyA9ICRzZXRbIm9ubHl0YWJzIl07DQoNCiRyZXQgPSBhcnJheSgpOw0KDQokcmV0WyJlcnIiXSA9IGFycmF5KCk7DQoNCmlmICghaXNfcmVzb3VyY2UoJHNvY2spKSB7ZWNobygiRXJyb3I6ICRzb2NrIGlzIG5vdCB2YWxpZCByZXNvdXJjZS4iKTt9DQoNCmlmIChlbXB0eSgkZGIpKSB7JGRiID0gImRiIjt9DQoNCmlmIChlbXB0eSgkcHJpbnQpKSB7JHByaW50ID0gMDt9DQoNCmlmIChlbXB0eSgkbmwyYnIpKSB7JG5sMmJyID0gMDt9DQoNCmlmIChlbXB0eSgkYWRkX2Ryb3ApKSB7JGFkZF9kcm9wID0gVFJVRTt9DQoNCmlmIChlbXB0eSgkZmlsZSkpDQoNCnsNCg0KICAkZmlsZSA9ICR0bXBkaXIuImR1bXBfIi5nZXRlbnYoIlNFUlZFUl9OQU1FIikuIl8iLiRkYi4iXyIuZGF0ZSgiZC1tLVktSC1pLXMiKS4iLnNxbCI7DQoNCn0NCg0KaWYgKCFpc19hcnJheSgkdGFicykpIHskdGFicyA9IGFycmF5KCk7fQ0KDQppZiAoZW1wdHkoJGFkZF9kcm9wKSkgeyRhZGRfZHJvcCA9IFRSVUU7fQ0KDQppZiAoc2l6ZW9mKCR0YWJzKSA9PSAwKQ0KDQp7DQoNCiAgLy8gcmV0cml2ZSB0YWJsZXMtbGlzdA0KDQogICRyZXMgPSBteXNxbF9xdWVyeSgiU0hPVyBUQUJMRVMgRlJPTSAiLiRkYiwgJHNvY2spOw0KDQogIGlmIChteXNxbF9udW1fcm93cygkcmVzKSA+IDApIHt3aGlsZSAoJHJvdyA9IG15c3FsX2ZldGNoX3JvdygkcmVzKSkgeyR0YWJzW10gPSAkcm93WzBdO319DQoNCn0NCg0KJG91dCA9ICIjIER1bXBlZCBieSBMb2NvdXM3U2hlbGwuU1FMIHYuICIuJHNodmVyLiINCg0KIyBIb21lIHBhZ2U6IGh0dHA6Ly93d3cuTG9jdXM3cy5jb20NCg0KIw0KDQojIEhvc3Qgc2V0dGluZ3M6DQoNCiMgTXlTUUwgdmVyc2lvbjogKCIubXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCkuIikgcnVubmluZyBvbiAiLmdldGVudigiU0VSVkVSX0FERFIiKS4iICgiLmdldGVudigiU0VSVkVSX05BTUUiKS4iKSIuIg0KDQojIERhdGU6ICIuZGF0ZSgiZC5tLlkgSDppOnMiKS4iDQoNCiMgREI6ICIiLiRkYi4iIg0KDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCiI7DQoNCiRjID0gY291bnQoJG9ubHl0YWJzKTsNCg0KZm9yZWFjaCgkdGFicyBhcyAkdGFiKQ0KDQp7DQoNCiAgaWYgKChpbl9hcnJheSgkdGFiLCRvbmx5dGFicykpIG9yICghJGMpKQ0KDQogIHsNCg0KICAgaWYgKCRhZGRfZHJvcCkgeyRvdXQgLj0gIkRST1AgVEFCTEUgSUYgRVhJU1RTIGAiLiR0YWIuImA7biI7fQ0KDQogICAvLyByZWNpZXZlIHF1ZXJ5IGZvciBjcmVhdGUgdGFibGUgc3RydWN0dXJlDQoNCiAgICRyZXMgPSBteXNxbF9xdWVyeSgiU0hPVyBDUkVBVEUgVEFCTEUgYCIuJHRhYi4iYCIsICRzb2NrKTsNCg0KICAgaWYgKCEkcmVzKSB7JHJldFsiZXJyIl1bXSA9IG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQoNCiAgIGVsc2UNCg0KICAgew0KDQogICAgJHJvdyA9IG15c3FsX2ZldGNoX3JvdygkcmVzKTsNCg0KICAgICRvdXQgLj0gJHJvd1siMSJdLiI7bm4iOw0KDQogICAgLy8gcmVjaWV2ZSB0YWJsZSB2YXJpYWJsZXMNCg0KICAgICRyZXMgPSBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSBgJHRhYmAiLCAkc29jayk7DQoNCiAgICBpZiAobXlzcWxfbnVtX3Jvd3MoJHJlcykgPiAwKQ0KDQogICAgew0KDQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHJlcykpDQoNCiAgICAgew0KDQogICAgICAka2V5cyA9IGltcGxvZGUoImAsIGAiLCBhcnJheV9rZXlzKCRyb3cpKTsNCg0KICAgICAgJHZhbHVlcyA9IGFycmF5X3ZhbHVlcygkcm93KTsNCg0KICAgICAgZm9yZWFjaCgkdmFsdWVzIGFzICRrPT4kdikgeyR2YWx1ZXNbJGtdID0gYWRkc2xhc2hlcygkdik7fQ0KDQogICAgICAkdmFsdWVzID0gaW1wbG9kZSgiJywgJyIsICR2YWx1ZXMpOw0KDQogICAgICAkc3FsID0gIklOU0VSVCBJTlRPIGAkdGFiYChgIi4ka2V5cy4iYCkgVkFMVUVTICgnIi4kdmFsdWVzLiInKTtuIjsNCg0KICAgICAgJG91dCAuPSAkc3FsOw0KDQogICAgIH0NCg0KICAgIH0NCg0KICAgfQ0KDQogIH0NCg0KfQ0KDQokb3V0IC49ICIjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tbm4iOw0KDQppZiAoJGZpbGUpDQoNCnsNCg0KICAkZnAgPSBmb3BlbigkZmlsZSwgInciKTsNCg0KICBpZiAoISRmcCkgeyRyZXRbImVyciJdW10gPSAyO30NCg0KICBlbHNlDQoNCiAgew0KDQogICBmd3JpdGUgKCRmcCwgJG91dCk7DQoNCiAgIGZjbG9zZSAoJGZwKTsNCg0KICB9DQoNCn0NCg0KaWYgKCRwcmludCkge2lmICgkbmwyYnIpIHtlY2hvIG5sMmJyKCRvdXQpO30gZWxzZSB7ZWNobyAkb3V0O319DQoNCnJldHVybiAkb3V0Ow0KDQp9DQoNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2J1aWxkd2hlcmUiKSkNCg0Kew0KDQpmdW5jdGlvbiBteXNxbF9idWlsZHdoZXJlKCRhcnJheSwkc2VwPSIgYW5kIiwkZnVuY3RzPWFycmF5KCkpDQoNCnsNCg0KaWYgKCFpc19hcnJheSgkYXJyYXkpKSB7JGFycmF5ID0gYXJyYXkoKTt9DQoNCiRyZXN1bHQgPSAiIjsNCg0KZm9yZWFjaCgkYXJyYXkgYXMgJGs9PiR2KQ0KDQp7DQoNCiAgJHZhbHVlID0gIiI7DQoNCiAgaWYgKCFlbXB0eSgkZnVuY3RzWyRrXSkpIHskdmFsdWUgLj0gJGZ1bmN0c1ska10uIigiO30NCg0KICAkdmFsdWUgLj0gIiciLmFkZHNsYXNoZXMoJHYpLiInIjsNCg0KICBpZiAoIWVtcHR5KCRmdW5jdHNbJGtdKSkgeyR2YWx1ZSAuPSAiKSI7fQ0KDQogICRyZXN1bHQgLj0gImAiLiRrLiJgID0gIi4kdmFsdWUuJHNlcDsNCg0KfQ0KDQokcmVzdWx0ID0gc3Vic3RyKCRyZXN1bHQsMCxzdHJsZW4oJHJlc3VsdCktc3RybGVuKCRzZXApKTsNCg0KcmV0dXJuICRyZXN1bHQ7DQoNCn0NCg0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfZmV0Y2hfYWxsIikpDQoNCnsNCg0KZnVuY3Rpb24gbXlzcWxfZmV0Y2hfYWxsKCRxdWVyeSwkc29jaykNCg0Kew0KDQppZiAoJHNvY2spIHskcmVzdWx0ID0gbXlzcWxfcXVlcnkoJHF1ZXJ5LCRzb2NrKTt9DQoNCmVsc2UgeyRyZXN1bHQgPSBteXNxbF9xdWVyeSgkcXVlcnkpO30NCg0KJGFycmF5ID0gYXJyYXkoKTsNCg0Kd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0KSkgeyRhcnJheVtdID0gJHJvdzt9DQoNCm15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KDQpyZXR1cm4gJGFycmF5Ow0KDQp9DQoNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX3NtYXJ0ZXJyb3IiKSkNCg0Kew0KDQpmdW5jdGlvbiBteXNxbF9zbWFydGVycm9yKCR0eXBlLCRzb2NrKQ0KDQp7DQoNCmlmICgkc29jaykgeyRlcnJvciA9IG15c3FsX2Vycm9yKCRzb2NrKTt9DQoNCmVsc2UgeyRlcnJvciA9IG15c3FsX2Vycm9yKCk7fQ0KDQokZXJyb3IgPSBodG1sc3BlY2lhbGNoYXJzKCRlcnJvcik7DQoNCnJldHVybiAkZXJyb3I7DQoNCn0NCg0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfZm9ybSIpKQ0KDQp7DQoNCmZ1bmN0aW9uIG15c3FsX3F1ZXJ5X2Zvcm0oKQ0KDQp7DQoNCmdsb2JhbCAkc3VibWl0LCRzcWxfYWN0LCRzcWxfcXVlcnksJHNxbF9xdWVyeV9yZXN1bHQsJHNxbF9jb25maXJtLCRzcWxfcXVlcnlfZXJyb3IsJHRibF9zdHJ1Y3Q7DQoNCmlmICgoJHN1Ym1pdCkgYW5kICghJHNxbF9xdWVyeV9yZXN1bHQpIGFuZCAoJHNxbF9jb25maXJtKSkge2lmICghJHNxbF9xdWVyeV9lcnJvcikgeyRzcWxfcXVlcnlfZXJyb3IgPSAiUXVlcnkgd2FzIGVtcHR5Ijt9IGVjaG8gIjxiPkVycm9yOjwvYj4gPGJyPiIuJHNxbF9xdWVyeV9lcnJvci4iPGJyPiI7fQ0KDQppZiAoJHNxbF9xdWVyeV9yZXN1bHQgb3IgKCEkc3FsX2NvbmZpcm0pKSB7JHNxbF9hY3QgPSAkc3FsX2dvdG87fQ0KDQppZiAoKCEkc3VibWl0KSBvciAoJHNxbF9hY3QpKQ0KDQp7DQoNCiAgZWNobyAiPHRhYmxlIGJvcmRlcj0wPjx0cj48dGQ+PGZvcm0gbmFtZT0iYzk5c2hfc3FscXVlcnkiIG1ldGhvZD1QT1NUPjxiPiI7IGlmICgoJHNxbF9xdWVyeSkgYW5kICghJHN1Ym1pdCkpIHtlY2hvICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8iO30gZWxzZSB7ZWNobyAiU1FMLVF1ZXJ5Ijt9IGVjaG8gIjo8L2I+PGJyPjxicj48dGV4dGFyZWEgbmFtZT1zcWxfcXVlcnkgY29scz0xMDAgcm93cz0xMD4iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9xdWVyeSkuIjwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9c3FsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXNxbF9hY3QgdmFsdWU9cXVlcnk+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9c3FsX3RibCB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1zdWJtaXQgdmFsdWU9IjEiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJzcWxfZ290byIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2dvdG8pLiIiPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXNxbF9jb25maXJtIHZhbHVlPSJZZXMiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iTm8iPjwvZm9ybT48L3RkPiI7DQoNCiAgaWYgKCR0Ymxfc3RydWN0KQ0KDQogIHsNCg0KICAgZWNobyAiPHRkIHZhbGlnbj0idG9wIj48Yj5GaWVsZHM6PC9iPjxicj4iOw0KDQogICBmb3JlYWNoICgkdGJsX3N0cnVjdCBhcyAkZmllbGQpIHskbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsgZWNobyAiKyA8YSBocmVmPSIjIiBvbmNsaWNrPSJkb2N1bWVudC5jOTlzaF9zcWxxdWVyeS5zcWxfcXVlcnkudmFsdWUrPSdgIi4kbmFtZS4iYCc7Ij48Yj4iLiRuYW1lLiI8L2I+PC9hPjxicj4iO30NCg0KICAgZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCg0KICB9DQoNCn0NCg0KaWYgKCRzcWxfcXVlcnlfcmVzdWx0IG9yICghJHNxbF9jb25maXJtKSkgeyRzcWxfcXVlcnkgPSAkc3FsX2xhc3RfcXVlcnk7fQ0KDQp9DQoNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoIm15c3FsX2NyZWF0ZV9kYiIpKQ0KDQp7DQoNCmZ1bmN0aW9uIG15c3FsX2NyZWF0ZV9kYigkZGIsJHNvY2s9IiIpDQoNCnsNCg0KJHNxbCA9ICJDUkVBVEUgREFUQUJBU0UgYCIuYWRkc2xhc2hlcygkZGIpLiJgOyI7DQoNCmlmICgkc29jaykge3JldHVybiBteXNxbF9xdWVyeSgkc3FsLCRzb2NrKTt9DQoNCmVsc2Uge3JldHVybiBteXNxbF9xdWVyeSgkc3FsKTt9DQoNCn0NCg0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygibXlzcWxfcXVlcnlfcGFyc2UiKSkNCg0Kew0KDQpmdW5jdGlvbiBteXNxbF9xdWVyeV9wYXJzZSgkcXVlcnkpDQoNCnsNCg0KJHF1ZXJ5ID0gdHJpbSgkcXVlcnkpOw0KDQokYXJyID0gZXhwbG9kZSAoIiAiLCRxdWVyeSk7DQoNCi8qYXJyYXkgYXJyYXkoKQ0KDQp7DQoNCiAgIk1FVEhPRCI9PmFycmF5KG91dHB1dF90eXBlKSwNCg0KICAiTUVUSE9EMSIuLi4NCg0KICAuLi4NCg0KfQ0KDQppZiBvdXRwdXRfdHlwZSA9PSAwLCBubyBvdXRwdXQsDQoNCmlmIG91dHB1dF90eXBlID09IDEsIG5vIG91dHB1dCBpZiBubyBlcnJvcg0KDQppZiBvdXRwdXRfdHlwZSA9PSAyLCBvdXRwdXQgd2l0aG91dCBjb250cm9sLWJ1dHRvbnMNCg0KaWYgb3V0cHV0X3R5cGUgPT0gMywgb3V0cHV0IHdpdGggY29udHJvbC1idXR0b25zDQoNCiovDQoNCiR0eXBlcyA9IGFycmF5KA0KDQogICJTRUxFQ1QiPT5hcnJheSgzLDEpLA0KDQogICJTSE9XIj0+YXJyYXkoMiwxKSwNCg0KICAiREVMRVRFIj0+YXJyYXkoMSksDQoNCiAgIkRST1AiPT5hcnJheSgxKQ0KDQopOw0KDQokcmVzdWx0ID0gYXJyYXkoKTsNCg0KJG9wID0gc3RydG91cHBlcigkYXJyWzBdKTsNCg0KaWYgKGlzX2FycmF5KCR0eXBlc1skb3BdKSkNCg0Kew0KDQogICRyZXN1bHRbInByb3BlcnRpb25zIl0gPSAkdHlwZXNbJG9wXTsNCg0KICAkcmVzdWx0WyJxdWVyeSJdICA9ICRxdWVyeTsNCg0KICBpZiAoJHR5cGVzWyRvcF0gPT0gMikNCg0KICB7DQoNCiAgIGZvcmVhY2goJGFyciBhcyAkaz0+JHYpDQoNCiAgIHsNCg0KICAgIGlmIChzdHJ0b3VwcGVyKCR2KSA9PSAiTElNSVQiKQ0KDQogICAgew0KDQogICAgICRyZXN1bHRbImxpbWl0Il0gPSAkYXJyWyRrKzFdOw0KDQogICAgICRyZXN1bHRbImxpbWl0Il0gPSBleHBsb2RlKCIsIiwkcmVzdWx0WyJsaW1pdCJdKTsNCg0KICAgICBpZiAoY291bnQoJHJlc3VsdFsibGltaXQiXSkgPT0gMSkgeyRyZXN1bHRbImxpbWl0Il0gPSBhcnJheSgwLCRyZXN1bHRbImxpbWl0Il1bMF0pO30NCg0KICAgICB1bnNldCgkYXJyWyRrXSwkYXJyWyRrKzFdKTsNCg0KICAgIH0NCg0KICAgfQ0KDQogIH0NCg0KfQ0KDQplbHNlIHtyZXR1cm4gRkFMU0U7fQ0KDQp9DQoNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoImM5OWZzZWFyY2giKSkNCg0Kew0KDQpmdW5jdGlvbiBjOTlmc2VhcmNoKCRkKQ0KDQp7DQoNCmdsb2JhbCAkZm91bmQ7DQoNCmdsb2JhbCAkZm91bmRfZDsNCg0KZ2xvYmFsICRmb3VuZF9mOw0KDQpnbG9iYWwgJHNlYXJjaF9pX2Y7DQoNCmdsb2JhbCAkc2VhcmNoX2lfZDsNCg0KZ2xvYmFsICRhOw0KDQppZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQoNCiRoID0gb3BlbmRpcigkZCk7DQoNCndoaWxlICgoJGYgPSByZWFkZGlyKCRoKSkgIT09IEZBTFNFKQ0KDQp7DQoNCiAgaWYoJGYgIT0gIi4iICYmICRmICE9ICIuLiIpDQoNCiAgew0KDQogICAkYm9vbCA9IChlbXB0eSgkYVsibmFtZV9yZWdleHAiXSkgYW5kIHN0cnBvcygkZiwkYVsibmFtZSJdKSAhPT0gRkFMU0UpIHx8ICgkYVsibmFtZV9yZWdleHAiXSBhbmQgZXJlZygkYVsibmFtZSJdLCRmKSk7DQoNCiAgIGlmIChpc19kaXIoJGQuJGYpKQ0KDQogICB7DQoNCiAgICAkc2VhcmNoX2lfZCsrOw0KDQogICAgaWYgKGVtcHR5KCRhWyJ0ZXh0Il0pIGFuZCAkYm9vbCkgeyRmb3VuZFtdID0gJGQuJGY7ICRmb3VuZF9kKys7fQ0KDQogICAgaWYgKCFpc19saW5rKCRkLiRmKSkge2M5OWZzZWFyY2goJGQuJGYpO30NCg0KICAgfQ0KDQogICBlbHNlDQoNCiAgIHsNCg0KICAgICRzZWFyY2hfaV9mKys7DQoNCiAgICBpZiAoJGJvb2wpDQoNCiAgICB7DQoNCiAgICAgaWYgKCFlbXB0eSgkYVsidGV4dCJdKSkNCg0KICAgICB7DQoNCiAgICAgICRyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKTsNCg0KICAgICAgaWYgKCRhWyJ0ZXh0X3d3byJdKSB7JGFbInRleHQiXSA9ICIgIi50cmltKCRhWyJ0ZXh0Il0pLiIgIjt9DQoNCiAgICAgIGlmICghJGFbInRleHRfY3MiXSkgeyRhWyJ0ZXh0Il0gPSBzdHJ0b2xvd2VyKCRhWyJ0ZXh0Il0pOyAkciA9IHN0cnRvbG93ZXIoJHIpO30NCg0KICAgICAgaWYgKCRhWyJ0ZXh0X3JlZ2V4cCJdKSB7JGJvb2wgPSBlcmVnKCRhWyJ0ZXh0Il0sJHIpO30NCg0KICAgICAgZWxzZSB7JGJvb2wgPSBzdHJwb3MoIiAiLiRyLCRhWyJ0ZXh0Il0sMSk7fQ0KDQogICAgICBpZiAoJGFbInRleHRfbm90Il0pIHskYm9vbCA9ICEkYm9vbDt9DQoNCiAgICAgIGlmICgkYm9vbCkgeyRmb3VuZFtdID0gJGQuJGY7ICRmb3VuZF9mKys7fQ0KDQogICAgIH0NCg0KICAgICBlbHNlIHskZm91bmRbXSA9ICRkLiRmOyAkZm91bmRfZisrO30NCg0KICAgIH0NCg0KICAgfQ0KDQogIH0NCg0KfQ0KDQpjbG9zZWRpcigkaCk7DQoNCn0NCg0KfQ0KDQppZiAoJGFjdCA9PSAiZ29maWxlIikge2lmIChpc19kaXIoJGYpKSB7JGFjdCA9ICJscyI7ICRkID0gJGY7fSBlbHNlIHskYWN0ID0gImYiOyAkZCA9IGRpcm5hbWUoJGYpOyAkZiA9IGJhc2VuYW1lKCRmKTt9fQ0KDQovL1NlbmRpbmcgaGVhZGVycw0KDQpAb2Jfc3RhcnQoKTsNCg0KQG9iX2ltcGxpY2l0X2ZsdXNoKDApOw0KDQpmdW5jdGlvbiBvbnBocHNodXRkb3duKCkNCg0Kew0KDQpnbG9iYWwgJGd6aXBlbmNvZGUsJGZ0Ow0KDQppZiAoIWhlYWRlcnNfc2VudCgpIGFuZCAkZ3ppcGVuY29kZSBhbmQgIWluX2FycmF5KCRmdCxhcnJheSgiaW1nIiwiZG93bmxvYWQiLCJub3RlcGFkIikpKQ0KDQp7DQoNCiAgJHYgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQoNCiAgQG9iX2VuZF9jbGVhbigpOw0KDQogIEBvYl9zdGFydCgib2JfZ3pIYW5kbGVyIik7DQoNCiAgZWNobyAkdjsNCg0KICBAb2JfZW5kX2ZsdXNoKCk7DQoNCn0NCg0KfQ0KDQpmdW5jdGlvbiBjOTlzaGV4aXQoKQ0KDQp7DQoNCm9ucGhwc2h1dGRvd24oKTsNCg0KZXhpdDsNCg0KfQ0KDQpoZWFkZXIoIkV4cGlyZXM6IE1vbiwgMjYgSnVsIDE5OTcgMDU6MDA6MDAgR01UIik7DQoNCmhlYWRlcigiTGFzdC1Nb2RpZmllZDogIi5nbWRhdGUoIkQsIGQgTSBZIEg6aTpzIikuIiBHTVQiKTsNCg0KaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSIpOw0KDQpoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAiLCBGQUxTRSk7DQoNCmhlYWRlcigiUHJhZ21hOiBuby1jYWNoZSIpOw0KDQppZiAoZW1wdHkoJHRtcGRpcikpDQoNCnsNCg0KJHRtcGRpciA9IGluaV9nZXQoInVwbG9hZF90bXBfZGlyIik7DQoNCmlmIChpc19kaXIoJHRtcGRpcikpIHskdG1wZGlyID0gIi90bXAvIjt9DQoNCn0NCg0KJHRtcGRpciA9IHJlYWxwYXRoKCR0bXBkaXIpOw0KDQokdG1wZGlyID0gc3RyX3JlcGxhY2UoIlwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJHRtcGRpcik7DQoNCmlmIChzdWJzdHIoJHRtcGRpciwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyR0bXBkaXIgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQoNCmlmIChlbXB0eSgkdG1wZGlyX2xvZ3MpKSB7JHRtcGRpcl9sb2dzID0gJHRtcGRpcjt9DQoNCmVsc2UgeyR0bXBkaXJfbG9ncyA9IHJlYWxwYXRoKCR0bXBkaXJfbG9ncyk7fQ0KDQppZiAoQGluaV9nZXQoInNhZmVfbW9kZSIpIG9yIHN0cnRvbG93ZXIoQGluaV9nZXQoInNhZmVfbW9kZSIpKSA9PSAib24iKQ0KDQp7DQoNCiRzYWZlbW9kZSA9IFRSVUU7DQoNCiRoc2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9cmVkPk9OIChzZWN1cmUpPC9mb250PiI7DQoNCn0NCg0KZWxzZSB7JHNhZmVtb2RlID0gRkFMU0U7ICRoc2FmZW1vZGUgPSAiPGZvbnQgY29sb3I9Z3JlZW4+T0ZGIChub3Qgc2VjdXJlKTwvZm9udD4iO30NCg0KJHYgPSBAaW5pX2dldCgib3Blbl9iYXNlZGlyIik7DQoNCmlmICgkdiBvciBzdHJ0b2xvd2VyKCR2KSA9PSAib24iKSB7JG9wZW5iYXNlZGlyID0gVFJVRTsgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1yZWQ+Ii4kdi4iPC9mb250PiI7fQ0KDQplbHNlIHskb3BlbmJhc2VkaXIgPSBGQUxTRTsgJGhvcGVuYmFzZWRpciA9ICI8Zm9udCBjb2xvcj1ncmVlbj5PRkYgKG5vdCBzZWN1cmUpPC9mb250PiI7fQ0KDQokc29ydCA9IGh0bWxzcGVjaWFsY2hhcnMoJHNvcnQpOw0KDQppZiAoZW1wdHkoJHNvcnQpKSB7JHNvcnQgPSAkc29ydF9kZWZhdWx0O30NCg0KJHNvcnRbMV0gPSBzdHJ0b2xvd2VyKCRzb3J0WzFdKTsNCg0KJERJU1BfU0VSVkVSX1NPRlRXQVJFID0gZ2V0ZW52KCJTRVJWRVJfU09GVFdBUkUiKTsNCg0KaWYgKCFlcmVnKCJQSFAvIi5waHB2ZXJzaW9uKCksJERJU1BfU0VSVkVSX1NPRlRXQVJFKSkgeyRESVNQX1NFUlZFUl9TT0ZUV0FSRSAuPSAiLiBQSFAvIi5waHB2ZXJzaW9uKCk7fQ0KDQokRElTUF9TRVJWRVJfU09GVFdBUkUgPSBzdHJfcmVwbGFjZSgiUEhQLyIucGhwdmVyc2lvbigpLCI8YSBocmVmPSIiLiRzdXJsLiJhY3Q9cGhwaW5mbyIgdGFyZ2V0PSJfYmxhbmsiPjxiPjx1PlBIUC8iLnBocHZlcnNpb24oKS4iPC91PjwvYj48L2E+IixodG1sc3BlY2lhbGNoYXJzKCRESVNQX1NFUlZFUl9TT0ZUV0FSRSkpOw0KDQpAaW5pX3NldCgiaGlnaGxpZ2h0LmJnIiwkaGlnaGxpZ2h0X2JnKTsgLy9GRkZGRkYNCg0KQGluaV9zZXQoImhpZ2hsaWdodC5jb21tZW50IiwkaGlnaGxpZ2h0X2NvbW1lbnQpOyAvLyNGRjgwMDANCg0KQGluaV9zZXQoImhpZ2hsaWdodC5kZWZhdWx0IiwkaGlnaGxpZ2h0X2RlZmF1bHQpOyAvLyMwMDAwQkINCg0KQGluaV9zZXQoImhpZ2hsaWdodC5odG1sIiwkaGlnaGxpZ2h0X2h0bWwpOyAvLyMwMDAwMDANCg0KQGluaV9zZXQoImhpZ2hsaWdodC5rZXl3b3JkIiwkaGlnaGxpZ2h0X2tleXdvcmQpOyAvLyMwMDc3MDANCg0KQGluaV9zZXQoImhpZ2hsaWdodC5zdHJpbmciLCRoaWdobGlnaHRfc3RyaW5nKTsgLy8jREQwMDAwDQoNCmlmICghaXNfYXJyYXkoJGFjdGJveCkpIHskYWN0Ym94ID0gYXJyYXkoKTt9DQoNCiRkc3BhY3QgPSAkYWN0ID0gaHRtbHNwZWNpYWxjaGFycygkYWN0KTsNCg0KJGRpc3BfZnVsbHBhdGggPSAkbHNfYXJyID0gJG5vdGxzID0gbnVsbDsNCg0KJHVkID0gdXJsZW5jb2RlKCRkKTsNCg0KPz4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4NCg0KPCEtLQ0KDQpNTD0iUDw+cGhUc210ci85OkN1ayBSSWM9alN3Lm8iOw0KDQpNST0iMUY9QUIwNUBGQT1ENDg4Mzw6OkdHR0hDOzszNDNIQ0k3Ojg+OT9IRTYyMTpGPUFCMDUyIjsNCg0KT1Q9IiI7DQoNCmZvcihqPTA7ajxNSS5sZW5ndGg7aisrKXsNCg0KT1QrPU1MLmNoYXJBdChNSS5jaGFyQ29kZUF0KGopLTQ4KTsNCg0KfWRvY3VtZW50LndyaXRlKE9UKTsNCg0KLy8gLS0+PC9zY3JpcHQ+DQoNCjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXdpbmRvd3MtMTI1MSI+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1MYW5ndWFnZSIgY29udGVudD0iZW4tdXMiPjx0aXRsZT48P3BocCBlY2hvIGdldGVudigiSFRUUF9IT1NUIik7ID8+IC0gTG9jdXM3U2hlbGw8L3RpdGxlPjxTVFlMRT5URCB7IEZPTlQtU0laRTogOHB0OyBDT0xPUjogIzAwOTkwMDsgRk9OVC1GQU1JTFk6IHZlcmRhbmE7fUJPRFkgeyBzY3JvbGxiYXItZmFjZS1jb2xvcjogIzAwOTkwMDsgc2Nyb2xsYmFyLXNoYWRvdy1jb2xvcjogIzAwMDAwMDsgc2Nyb2xsYmFyLWhpZ2hsaWdodC1jb2xvcjogIzAwQ0MwMDsgc2Nyb2xsYmFyLTNkbGlnaHQtY29sb3I6ICMwMENDMDA7IHNjcm9sbGJhci1kYXJrc2hhZG93LWNvbG9yOiAjMDA5OTAwOyBzY3JvbGxiYXItdHJhY2stY29sb3I6ICMxMDEwMTA7IHNjcm9sbGJhci1hcnJvdy1jb2xvcjogIzEwMTAxMDsgZm9udC1mYW1pbHk6IFZlcmRhbmE7fVRELmhlYWRlciB7IEZPTlQtV0VJR0hUOiBub3JtYWw7IEZPTlQtU0laRTogMTBwdDsgQkFDS0dST1VORDogIzAwMDAwMDsgQ09MT1I6IGdyZWVuOyBGT05ULUZBTUlMWTogdmVyZGFuYTt9QSB7IEZPTlQtV0VJR0hUOiBub3JtYWw7IENPTE9SOiAjMDA5OTAwOyBGT05ULUZBTUlMWTogdmVyZGFuYTsgVEVYVC1ERUNPUkFUSU9OOiBub25lO31BOnVua25vd24geyBGT05ULVdFSUdIVDogbm9ybWFsOyBDT0xPUjogI2Y4OTUyMTsgRk9OVC1GQU1JTFk6IHZlcmRhbmE7IFRFWFQtREVDT1JBVElPTjogbm9uZTt9QS5MaW5rcyB7IENPTE9SOiAjZjg5NTIxOyBURVhULURFQ09SQVRJT046IG5vbmU7fUEuTGlua3M6dW5rbm93biB7IEZPTlQtV0VJR0hUOiBub3JtYWw7IENPTE9SOiAjZjg5NTIxOyBURVhULURFQ09SQVRJT046IG5vbmU7fUE6aG92ZXIgeyBDT0xPUjogI2Y4OTUyMTsgVEVYVC1ERUNPUkFUSU9OOiBib2xkO30uc2tpbjB7cG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjIwMHB4OyBib3JkZXI6MnB4IHNvbGlkIGJsYWNrOyBiYWNrZ3JvdW5kLWNvbG9yOm1lbnU7IGZvbnQtZmFtaWx5OlZlcmRhbmE7IGxpbmUtaGVpZ2h0OjIwcHg7IGN1cnNvcjpkZWZhdWx0OyB2aXNpYmlsaXR5OmhpZGRlbjs7fS5za2luMXtjdXJzb3I6IGRlZmF1bHQ7IGZvbnQ6IG1lbnV0ZXh0OyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxNDVweDsgYmFja2dyb3VuZC1jb2xvcjogbWVudTsgYm9yZGVyOiAxIHNvbGlkIGJ1dHRvbmZhY2U7dmlzaWJpbGl0eTpoaWRkZW47IGJvcmRlcjogMiBvdXRzZXQgYnV0dG9uaGlnaGxpZ2h0OyBmb250LWZhbWlseTogVmVyZGFuYSxHZW5ldmEsIEFyaWFsOyBmb250LXNpemU6IDEwcHg7IGNvbG9yOiBibGFjazt9Lm1lbnVpdGVtc3twYWRkaW5nLWxlZnQ6MTVweDsgcGFkZGluZy1yaWdodDoxMHB4Ozt9aW5wdXR7YmFja2dyb3VuZC1jb2xvcjogIzAwOTkwMDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9dGV4dGFyZWF7YmFja2dyb3VuZC1jb2xvcjogIzAwOTkwMDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9YnV0dG9ue2JhY2tncm91bmQtY29sb3I6ICMwMDk5MDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fXNlbGVjdHtiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5OTAwOyBmb250LXNpemU6IDhwdDsgY29sb3I6ICNGRkZGRkY7IGZvbnQtZmFtaWx5OiBUYWhvbWE7IGJvcmRlcjogMSBzb2xpZCAjNjY2NjY2O31vcHRpb24ge2JhY2tncm91bmQtY29sb3I6ICMwMDk5MDA7IGZvbnQtc2l6ZTogOHB0OyBjb2xvcjogI0ZGRkZGRjsgZm9udC1mYW1pbHk6IFRhaG9tYTsgYm9yZGVyOiAxIHNvbGlkICM2NjY2NjY7fWlmcmFtZSB7YmFja2dyb3VuZC1jb2xvcjogIzAwOTkwMDsgZm9udC1zaXplOiA4cHQ7IGNvbG9yOiAjRkZGRkZGOyBmb250LWZhbWlseTogVGFob21hOyBib3JkZXI6IDEgc29saWQgIzY2NjY2Njt9cCB7TUFSR0lOLVRPUDogMHB4OyBNQVJHSU4tQk9UVE9NOiAwcHg7IExJTkUtSEVJR0hUOiAxNTAlfWJsb2NrcXVvdGV7IGZvbnQtc2l6ZTogOHB0OyBmb250LWZhbWlseTogQ291cmllciwgRml4ZWQsIEFyaWFsOyBib3JkZXIgOiA4cHggc29saWQgIzAwOTkwMDsgcGFkZGluZzogMWVtOyBtYXJnaW4tdG9wOiAxZW07IG1hcmdpbi1ib3R0b206IDVlbTsgbWFyZ2luLXJpZ2h0OiAzZW07IG1hcmdpbi1sZWZ0OiA0ZW07IGJhY2tncm91bmQtY29sb3I6ICMwMDk5MDA7fWJvZHksdGQsdGggeyBmb250LWZhbWlseTogdmVyZGFuYTsgY29sb3I6ICNkOWQ5ZDk7IGZvbnQtc2l6ZTogMTFweDt9Ym9keSB7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7fTwvc3R5bGU+PC9oZWFkPjxCT0RZIHRleHQ9I2ZmZmZmZiBib3R0b21NYXJnaW49MCBiZ0NvbG9yPSMwMDAwMDAgbGVmdE1hcmdpbj0wIHRvcE1hcmdpbj0wIHJpZ2h0TWFyZ2luPTAgbWFyZ2luaGVpZ2h0PTAgbWFyZ2lud2lkdGg9MD48Y2VudGVyPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgaGVpZ2h0PTEgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xIGJvcmRlcmNvbG9yPSIjQzBDMEMwIj48dHI+PHRoIHdpZHRoPSIxMDElIiBoZWlnaHQ9IjE1IiBub3dyYXAgYm9yZGVyY29sb3I9IiNDMEMwQzAiIHZhbGlnbj0idG9wIiBjb2xzcGFuPSIyIj48cD48Y2VudGVyPjxpbWcgc3JjPSJodHRwOi8vaW1nMjQ0LmltYWdlc2hhY2sudXMvaW1nMjQ0LzY2NjMvbG9jdXM3c2dtOC5qcGciPjwvcD48L2NlbnRlcj48L3RoPjwvdHI+PHRyPjx0ZD48cCBhbGlnbj0ibGVmdCI+PGI+U29mdHdhcmU6Jm5ic3A7PD9waHAgZWNobyAkRElTUF9TRVJWRVJfU09GVFdBUkU7ID8+PC9iPiZuYnNwOzwvcD48cCBhbGlnbj0ibGVmdCI+PGI+dW5hbWUgLWE6Jm5ic3A7PD9waHAgZWNobyB3b3Jkd3JhcChwaHBfdW5hbWUoKSw5MCwiPGJyPiIsMSk7ID8+PC9iPiZuYnNwOzwvcD48cCBhbGlnbj0ibGVmdCI+PGI+PD9waHAgaWYgKCEkd2luKSB7ZWNobyB3b3Jkd3JhcChteXNoZWxsZXhlYygiaWQiKSw5MCwiPGJyPiIsMSk7fSBlbHNlIHtlY2hvIGdldF9jdXJyZW50X3VzZXIoKTt9ID8+PC9iPiZuYnNwOzwvcD48cCBhbGlnbj0ibGVmdCI+PGI+U2FmZS1tb2RlOiZuYnNwOzw/cGhwIGVjaG8gJGhzYWZlbW9kZTsgPz48L2I+PC9wPjxwIGFsaWduPSJsZWZ0Ij48P3BocA0KDQokZCA9IHN0cl9yZXBsYWNlKCJcIixESVJFQ1RPUllfU0VQQVJBVE9SLCRkKTsNCg0KaWYgKGVtcHR5KCRkKSkgeyRkID0gcmVhbHBhdGgoIi4iKTt9IGVsc2VpZihyZWFscGF0aCgkZCkpIHskZCA9IHJlYWxwYXRoKCRkKTt9DQoNCiRkID0gc3RyX3JlcGxhY2UoIlwiLERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOw0KDQppZiAoc3Vic3RyKCRkLC0xKSAhPSBESVJFQ1RPUllfU0VQQVJBVE9SKSB7JGQgLj0gRElSRUNUT1JZX1NFUEFSQVRPUjt9DQoNCiRkID0gc3RyX3JlcGxhY2UoIlxcIiwiXCIsJGQpOw0KDQokZGlzcGQgPSBodG1sc3BlY2lhbGNoYXJzKCRkKTsNCg0KJHBkID0gJGUgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1Isc3Vic3RyKCRkLDAsLTEpKTsNCg0KJGkgPSAwOw0KDQpmb3JlYWNoKCRwZCBhcyAkYikNCg0Kew0KDQokdCA9ICIiOw0KDQokaiA9IDA7DQoNCmZvcmVhY2ggKCRlIGFzICRyKQ0KDQp7DQoNCiAgJHQuPSAkci5ESVJFQ1RPUllfU0VQQVJBVE9SOw0KDQogIGlmICgkaiA9PSAkaSkge2JyZWFrO30NCg0KICAkaisrOw0KDQp9DQoNCmVjaG8gIjxhIGhyZWY9IiIuJHN1cmwuImFjdD1scyZkPSIudXJsZW5jb2RlKCR0KS4iJnNvcnQ9Ii4kc29ydC4iIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJGIpLkRJUkVDVE9SWV9TRVBBUkFUT1IuIjwvYj48L2E+IjsNCg0KJGkrKzsNCg0KfQ0KDQplY2hvICImbmJzcDsmbmJzcDsmbmJzcDsiOw0KDQppZiAoaXNfd3JpdGFibGUoJGQpKQ0KDQp7DQoNCiR3ZCA9IFRSVUU7DQoNCiR3ZHQgPSAiPGZvbnQgY29sb3I9Z3JlZW4+WyBvayBdPC9mb250PiI7DQoNCmVjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPiIudmlld19wZXJtcyhmaWxlcGVybXMoJGQpKS4iPC9mb250PjwvYj4iOw0KDQp9DQoNCmVsc2UNCg0Kew0KDQokd2QgPSBGQUxTRTsNCg0KJHdkdCA9ICI8Zm9udCBjb2xvcj1yZWQ+WyBSZWFkLU9ubHkgXTwvZm9udD4iOw0KDQplY2hvICI8Yj4iLnZpZXdfcGVybXNfY29sb3IoJGQpLiI8L2I+IjsNCg0KfQ0KDQppZiAoaXNfY2FsbGFibGUoImRpc2tfZnJlZV9zcGFjZSIpKQ0KDQp7DQoNCiRmcmVlID0gZGlza19mcmVlX3NwYWNlKCRkKTsNCg0KJHRvdGFsID0gZGlza190b3RhbF9zcGFjZSgkZCk7DQoNCmlmICgkZnJlZSA9PT0gRkFMU0UpIHskZnJlZSA9IDA7fQ0KDQppZiAoJHRvdGFsID09PSBGQUxTRSkgeyR0b3RhbCA9IDA7fQ0KDQppZiAoJGZyZWUgPCAwKSB7JGZyZWUgPSAwO30NCg0KaWYgKCR0b3RhbCA8IDApIHskdG90YWwgPSAwO30NCg0KJHVzZWQgPSAkdG90YWwtJGZyZWU7DQoNCiRmcmVlX3BlcmNlbnQgPSByb3VuZCgxMDAvKCR0b3RhbC8kZnJlZSksMik7DQoNCmVjaG8gIjxicj48Yj5GcmVlICIudmlld19zaXplKCRmcmVlKS4iIG9mICIudmlld19zaXplKCR0b3RhbCkuIiAoIi4kZnJlZV9wZXJjZW50LiIlKTwvYj4iOw0KDQp9DQoNCmVjaG8gIjxicj4iOw0KDQplY2hvICI8Yj5Zb3VyIGlwOiA8YSBocmVmPWh0dHA6Ly93aG9pcy5kb21haW50b29scy5jb20vIi4kX1NFUlZFUlsiUkVNT1RFX0FERFIiXS4iPiIuJF9TRVJWRVJbIlJFTU9URV9BRERSIl0uIjwvYT4gLSBTZXJ2ZXIgaXA6IDxhIGhyZWY9aHR0cDovL3dob2lzLmRvbWFpbnRvb2xzLmNvbS8iLmdldGhvc3RieW5hbWUoJF9TRVJWRVJbIkhUVFBfSE9TVCJdKS4iPiIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pLiI8L2E+PC9iPjxici8+IjsNCg0KJGxldHRlcnMgPSAiIjsNCg0KaWYgKCR3aW4pDQoNCnsNCg0KJHYgPSBleHBsb2RlKCJcIiwkZCk7DQoNCiR2ID0gJHZbMF07DQoNCmZvcmVhY2ggKHJhbmdlKCJhIiwieiIpIGFzICRsZXR0ZXIpDQoNCnsNCg0KICAkYm9vbCA9ICRpc2Rpc2tldHRlID0gaW5fYXJyYXkoJGxldHRlciwkc2FmZW1vZGVfZGlza2V0dGVzKTsNCg0KICBpZiAoISRib29sKSB7JGJvb2wgPSBpc19kaXIoJGxldHRlci4iOlwiKTt9DQoNCiAgaWYgKCRib29sKQ0KDQogIHsNCg0KICAgJGxldHRlcnMgLj0gIjxhIGhyZWY9IiIuJHN1cmwuImFjdD1scyZkPSIudXJsZW5jb2RlKCRsZXR0ZXIuIjpcIikuIiIiLigkaXNkaXNrZXR0ZT8iIG9uY2xpY2s9InJldHVybiBjb25maXJtKCdNYWtlIHN1cmUgdGhhdCB0aGUgZGlza2V0dGUgaXMgaW5zZXJ0ZWQgcHJvcGVybHksIG90aGVyd2lzZSBhbiBlcnJvciBtYXkgb2NjdXIuJykiIjoiIikuIj5bICI7DQoNCiAgIGlmICgkbGV0dGVyLiI6IiAhPSAkdikgeyRsZXR0ZXJzIC49ICRsZXR0ZXI7fQ0KDQogICBlbHNlIHskbGV0dGVycyAuPSAiPGZvbnQgY29sb3I9Z3JlZW4+Ii4kbGV0dGVyLiI8L2ZvbnQ+Ijt9DQoNCiAgICRsZXR0ZXJzIC49ICIgXTwvYT4gIjsNCg0KICB9DQoNCn0NCg0KaWYgKCFlbXB0eSgkbGV0dGVycykpIHtlY2hvICI8Yj5EZXRlY3RlZCBkcml2ZXM8L2I+OiAiLiRsZXR0ZXJzLiI8YnI+Ijt9DQoNCn0NCg0KaWYgKGNvdW50KCRxdWlja2xhdW5jaCkgPiAwKQ0KDQp7DQoNCmZvcmVhY2goJHF1aWNrbGF1bmNoIGFzICRpdGVtKQ0KDQp7DQoNCiAgJGl0ZW1bMV0gPSBzdHJfcmVwbGFjZSgiJWQiLHVybGVuY29kZSgkZCksJGl0ZW1bMV0pOw0KDQogICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiVzb3J0Iiwkc29ydCwkaXRlbVsxXSk7DQoNCiAgJHYgPSByZWFscGF0aCgkZC4iLi4iKTsNCg0KICBpZiAoZW1wdHkoJHYpKSB7JGEgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsJGQpOyB1bnNldCgkYVtjb3VudCgkYSktMl0pOyAkdiA9IGpvaW4oRElSRUNUT1JZX1NFUEFSQVRPUiwkYSk7fQ0KDQogICRpdGVtWzFdID0gc3RyX3JlcGxhY2UoIiV1cGQiLHVybGVuY29kZSgkdiksJGl0ZW1bMV0pOw0KDQogIGVjaG8gIjxhIGhyZWY9IiIuJGl0ZW1bMV0uIiI+Ii4kaXRlbVswXS4iPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyI7DQoNCn0NCg0KfQ0KDQplY2hvICI8L3A+PC90ZD48L3RyPjwvdGFibGU+PGJyPiI7DQoNCmlmICgoIWVtcHR5KCRkb25hdGVkX2h0bWwpKSBhbmQgKGluX2FycmF5KCRhY3QsJGRvbmF0ZWRfYWN0KSkpIHtlY2hvICI8VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD0iMTAwJSIgYmdjb2xvcj0jMDAwMDAwIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPSIxMDAlIiB2YWxpZ249InRvcCI+Ii4kZG9uYXRlZF9odG1sLiI8L3RkPjwvdHI+PC90YWJsZT48YnI+Ijt9DQoNCmVjaG8gIjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQgd2lkdGg9IjEwMCUiIHZhbGlnbj0idG9wIj4iOw0KDQppZiAoJGFjdCA9PSAiIikgeyRhY3QgPSAkZHNwYWN0ID0gImxzIjt9DQoNCmlmICgkYWN0ID09ICJzcWwiKQ0KDQp7DQoNCiRzcWxfc3VybCA9ICRzdXJsLiJhY3Q9c3FsIjsNCg0KaWYgKCRzcWxfbG9naW4pICB7JHNxbF9zdXJsIC49ICImc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTt9DQoNCmlmICgkc3FsX3Bhc3N3ZCkgeyRzcWxfc3VybCAuPSAiJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTt9DQoNCmlmICgkc3FsX3NlcnZlcikgeyRzcWxfc3VybCAuPSAiJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTt9DQoNCmlmICgkc3FsX3BvcnQpICAgeyRzcWxfc3VybCAuPSAiJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpO30NCg0KaWYgKCRzcWxfZGIpICAgICB7JHNxbF9zdXJsIC49ICImc3FsX2RiPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTt9DQoNCiRzcWxfc3VybCAuPSAiJiI7DQoNCj8+PGgzPkF0dGVudGlvbiEgU1FMLU1hbmFnZXIgaXMgPHU+Tk9UPC91PiByZWFkeSBtb2R1bGUhIERvbid0IHJlcG9ydHMgYnVncy48L2gzPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgaGVpZ2h0PTEgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xIGJvcmRlcmNvbG9yPSIjQzBDMEMwIj48dHI+PHRkIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiIGNvbHNwYW49IjIiIHZhbGlnbj0idG9wIj48Y2VudGVyPjw/cGhwDQoNCmlmICgkc3FsX3NlcnZlcikNCg0Kew0KDQogICRzcWxfc29jayA9IG15c3FsX2Nvbm5lY3QoJHNxbF9zZXJ2ZXIuIjoiLiRzcWxfcG9ydCwgJHNxbF9sb2dpbiwgJHNxbF9wYXNzd2QpOw0KDQogICRlcnIgPSBteXNxbF9zbWFydGVycm9yKCk7DQoNCiAgQG15c3FsX3NlbGVjdF9kYigkc3FsX2RiLCRzcWxfc29jayk7DQoNCiAgaWYgKCRzcWxfcXVlcnkgYW5kICRzdWJtaXQpIHskc3FsX3F1ZXJ5X3Jlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnksJHNxbF9zb2NrKTsgJHNxbF9xdWVyeV9lcnJvciA9IG15c3FsX3NtYXJ0ZXJyb3IoKTt9DQoNCn0NCg0KZWxzZSB7JHNxbF9zb2NrID0gRkFMU0U7fQ0KDQplY2hvICI8Yj5TUUwgTWFuYWdlcjo8L2I+PGJyPiI7DQoNCmlmICghJHNxbF9zb2NrKQ0KDQp7DQoNCiAgaWYgKCEkc3FsX3NlcnZlcikge2VjaG8gIk5PIENPTk5FQ1RJT04iO30NCg0KICBlbHNlIHtlY2hvICI8Y2VudGVyPjxiPkNhbid0IGNvbm5lY3Q8L2I+PC9jZW50ZXI+IjsgZWNobyAiPGI+Ii4kZXJyLiI8L2I+Ijt9DQoNCn0NCg0KZWxzZQ0KDQp7DQoNCiAgJHNxbHF1aWNrbGF1bmNoID0gYXJyYXkoKTsNCg0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJJbmRleCIsJHN1cmwuImFjdD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImIik7DQoNCiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiUXVlcnkiLCRzcWxfc3VybC4ic3FsX2FjdD1xdWVyeSZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKSk7DQoNCiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiU2VydmVyLXN0YXR1cyIsJHN1cmwuImFjdD1zcWwmc3FsX2xvZ2luPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iJnNxbF9wYXNzd2Q9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iJnNxbF9zZXJ2ZXI9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iJnNxbF9wb3J0PSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiImc3FsX2FjdD1zZXJ2ZXJzdGF0dXMiKTsNCg0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJTZXJ2ZXIgdmFyaWFibGVzIiwkc3VybC4iYWN0PXNxbCZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpLiImc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiImc3FsX3BvcnQ9Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiZzcWxfYWN0PXNlcnZlcnZhcnMiKTsNCg0KICAkc3FscXVpY2tsYXVuY2hbXSA9IGFycmF5KCJQcm9jZXNzZXMiLCRzdXJsLiJhY3Q9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJnNxbF9hY3Q9cHJvY2Vzc2VzIik7DQoNCiAgJHNxbHF1aWNrbGF1bmNoW10gPSBhcnJheSgiTG9nb3V0Iiwkc3VybC4iYWN0PXNxbCIpOw0KDQogIGVjaG8gIjxjZW50ZXI+PGI+TXlTUUwgIi5teXNxbF9nZXRfc2VydmVyX2luZm8oKS4iIChwcm90byB2LiIubXlzcWxfZ2V0X3Byb3RvX2luZm8gKCkuIikgcnVubmluZyBpbiAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiI6Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCkuIiBhcyAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIkAiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpLiIgKHBhc3N3b3JkIC0gIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiIpPC9iPjxicj4iOw0KDQogIGlmIChjb3VudCgkc3FscXVpY2tsYXVuY2gpID4gMCkge2ZvcmVhY2goJHNxbHF1aWNrbGF1bmNoIGFzICRpdGVtKSB7ZWNobyAiWyA8YSBocmVmPSIiLiRpdGVtWzFdLiIiPjxiPiIuJGl0ZW1bMF0uIjwvYj48L2E+IF0gIjt9fQ0KDQogIGVjaG8gIjwvY2VudGVyPiI7DQoNCn0NCg0KZWNobyAiPC90ZD48L3RyPjx0cj4iOw0KDQppZiAoISRzcWxfc29jaykgez8+PHRkIHdpZHRoPSIyOCUiIGhlaWdodD0iMTAwIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Zm9udCBzaXplPSI1Ij4gaSA8L2ZvbnQ+PC9jZW50ZXI+PGxpPklmIGxvZ2luIGlzIG51bGwsIGxvZ2luIGlzIG93bmVyIG9mIHByb2Nlc3MuPGxpPklmIGhvc3QgaXMgbnVsbCwgaG9zdCBpcyBsb2NhbGhvc3Q8L2I+PGxpPklmIHBvcnQgaXMgbnVsbCwgcG9ydCBpcyAzMzA2IChkZWZhdWx0KTwvdGQ+PHRkIHdpZHRoPSI5MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxUQUJMRSBoZWlnaHQ9MSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgd2lkdGg9IjEwMCUiIGJvcmRlcj0wPjx0cj48dGQ+Jm5ic3A7PGI+UGxlYXNlLCBmaWxsIHRoZSBmb3JtOjwvYj48dGFibGU+PHRyPjx0ZD48Yj5Vc2VybmFtZTwvYj48L3RkPjx0ZD48Yj5QYXNzd29yZDwvYj4mbmJzcDs8L3RkPjx0ZD48Yj5EYXRhYmFzZTwvYj4mbmJzcDs8L3RkPjwvdHI+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiIgbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPjx0cj48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9InJvb3QiIG1heGxlbmd0aD0iNjQiPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9IiIgbWF4bGVuZ3RoPSI2NCI+PC90ZD48dGQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9kYiIgdmFsdWU9IiIgbWF4bGVuZ3RoPSI2NCI+PC90ZD48L3RyPjx0cj48dGQ+PGI+SG9zdDwvYj48L3RkPjx0ZD48Yj5QT1JUPC9iPjwvdGQ+PC90cj48dHI+PHRkIGFsaWduPXJpZ2h0PjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0ibG9jYWxob3N0IiBtYXhsZW5ndGg9IjY0Ij48L3RkPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSIzMzA2IiBtYXhsZW5ndGg9IjYiIHNpemU9IjMiPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDb25uZWN0Ij48L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+PC90ZD48P3BocCB9DQoNCmVsc2UNCg0Kew0KDQogIC8vU3RhcnQgbGVmdCBwYW5lbA0KDQogIGlmICghZW1wdHkoJHNxbF9kYikpDQoNCiAgew0KDQogICA/Pjx0ZCB3aWR0aD0iMjUlIiBoZWlnaHQ9IjEwMCUiIHZhbGlnbj0idG9wIj48YSBocmVmPSI8P3BocCBlY2hvICRzdXJsLiJhY3Q9c3FsJnNxbF9sb2dpbj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbikuIiZzcWxfcGFzc3dkPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCkuIiZzcWxfc2VydmVyPSIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcikuIiZzcWxfcG9ydD0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KS4iJiI7ID8+Ij48Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0iMSIgbm9zaGFkZT48P3BocA0KDQogICAkcmVzdWx0ID0gbXlzcWxfbGlzdF90YWJsZXMoJHNxbF9kYik7DQoNCiAgIGlmICghJHJlc3VsdCkge2VjaG8gbXlzcWxfc21hcnRlcnJvcigpO30NCg0KICAgZWxzZQ0KDQogICB7DQoNCiAgICBlY2hvICItLS1bIDxhIGhyZWY9IiIuJHNxbF9zdXJsLiImIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIjwvYj48L2E+IF0tLS08YnI+IjsNCg0KICAgICRjID0gMDsNCg0KICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHskY291bnQgPSBteXNxbF9xdWVyeSAoIlNFTEVDVCBDT1VOVCgqKSBGUk9NICIuJHJvd1swXSk7ICRjb3VudF9yb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkY291bnQpOyBlY2hvICI8Yj4rJm5ic3A7PGEgaHJlZj0iIi4kc3FsX3N1cmwuInNxbF9kYj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIiZzcWxfdGJsPSIuaHRtbHNwZWNpYWxjaGFycygkcm93WzBdKS4iIj48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJHJvd1swXSkuIjwvYj48L2E+ICgiLiRjb3VudF9yb3dbMF0uIik8L2JyPjwvYj4iOyBteXNxbF9mcmVlX3Jlc3VsdCgkY291bnQpOyAkYysrO30NCg0KICAgIGlmICghJGMpIHtlY2hvICJObyB0YWJsZXMgZm91bmQgaW4gZGF0YWJhc2UuIjt9DQoNCiAgIH0NCg0KICB9DQoNCiAgZWxzZQ0KDQogIHsNCg0KICAgPz48dGQgd2lkdGg9IjEiIGhlaWdodD0iMTAwIiB2YWxpZ249InRvcCI+PGEgaHJlZj0iPD9waHAgZWNobyAkc3FsX3N1cmw7ID8+Ij48Yj5Ib21lPC9iPjwvYT48aHIgc2l6ZT0iMSIgbm9zaGFkZT48P3BocA0KDQogICAkcmVzdWx0ID0gbXlzcWxfbGlzdF9kYnMoJHNxbF9zb2NrKTsNCg0KICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQ0KDQogICBlbHNlDQoNCiAgIHsNCg0KICAgID8+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxzZWxlY3QgbmFtZT0ic3FsX2RiIj48P3BocA0KDQogICAgJGMgPSAwOw0KDQogICAgJGRicyA9ICIiOw0KDQogICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlc3VsdCkpIHskZGJzIC49ICI8b3B0aW9uIHZhbHVlPSIiLiRyb3dbMF0uIiIiOyBpZiAoJHNxbF9kYiA9PSAkcm93WzBdKSB7JGRicyAuPSAiIHNlbGVjdGVkIjt9ICRkYnMgLj0gIj4iLiRyb3dbMF0uIjwvb3B0aW9uPiI7ICRjKys7fQ0KDQogICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0iIj5EYXRhYmFzZXMgKCIuJGMuIik8L29wdGlvbj4iOw0KDQogICAgZWNobyAkZGJzOw0KDQogICB9DQoNCiAgID8+PC9zZWxlY3Q+PGhyIHNpemU9IjEiIG5vc2hhZGU+UGxlYXNlLCBzZWxlY3QgZGF0YWJhc2U8aHIgc2l6ZT0iMSIgbm9zaGFkZT48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR28iPjwvZm9ybT48P3BocA0KDQogIH0NCg0KICAvL0VuZCBsZWZ0IHBhbmVsDQoNCiAgZWNobyAiPC90ZD48dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPiI7DQoNCiAgLy9TdGFydCBjZW50ZXIgcGFuZWwNCg0KICAkZGlwbGF5ID0gVFJVRTsNCg0KICBpZiAoJHNxbF9kYikNCg0KICB7DQoNCiAgIGlmICghaXNfbnVtZXJpYygkYykpIHskYyA9IDA7fQ0KDQogICBpZiAoJGMgPT0gMCkgeyRjID0gIm5vIjt9DQoNCiAgIGVjaG8gIjxociBzaXplPSIxIiBub3NoYWRlPjxjZW50ZXI+PGI+VGhlcmUgYXJlICIuJGMuIiB0YWJsZShzKSBpbiB0aGlzIERCICgiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYikuIikuPGJyPiI7DQoNCiAgIGlmIChjb3VudCgkZGJxdWlja2xhdW5jaCkgPiAwKSB7Zm9yZWFjaCgkZGJzcWxxdWlja2xhdW5jaCBhcyAkaXRlbSkge2VjaG8gIlsgPGEgaHJlZj0iIi4kaXRlbVsxXS4iIj4iLiRpdGVtWzBdLiI8L2E+IF0gIjt9fQ0KDQogICBlY2hvICI8L2I+PC9jZW50ZXI+IjsNCg0KICAgJGFjdHMgPSBhcnJheSgiIiwiZHVtcCIpOw0KDQogICBpZiAoJHNxbF9hY3QgPT0gInRibGRyb3AiKSB7JHNxbF9xdWVyeSA9ICJEUk9QIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAibmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF9hY3QgPSAicXVlcnkiO30NCg0KICAgZWxzZWlmICgkc3FsX2FjdCA9PSAidGJsZW1wdHkiKSB7JHNxbF9xdWVyeSA9ICIiOyBmb3JlYWNoKCRib3h0YmwgYXMgJHYpIHskc3FsX3F1ZXJ5IC49ICJERUxFVEUgRlJPTSBgIi4kdi4iYCBuIjt9ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9DQoNCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibGR1bXAiKSB7aWYgKGNvdW50KCRib3h0YmwpID4gMCkgeyRkbXB0YmxzID0gJGJveHRibDt9IGVsc2VpZigkdGhpc3RibCkgeyRkbXB0YmxzID0gYXJyYXkoJHNxbF90YmwpO30gJHNxbF9hY3QgPSAiZHVtcCI7fQ0KDQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJ0YmxjaGVjayIpIHskc3FsX3F1ZXJ5ID0gIkNIRUNLIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAibmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF9hY3QgPSAicXVlcnkiO30NCg0KICAgZWxzZWlmICgkc3FsX2FjdCA9PSAidGJsb3B0aW1pemUiKSB7JHNxbF9xdWVyeSA9ICJPUFRJTUlaRSBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIm5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9DQoNCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibHJlcGFpciIpIHskc3FsX3F1ZXJ5ID0gIlJFUEFJUiBUQUJMRSI7IGZvcmVhY2goJGJveHRibCBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIm5gIi4kdi4iYCAsIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKS4iOyI7ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9DQoNCiAgIGVsc2VpZiAoJHNxbF9hY3QgPT0gInRibGFuYWx5emUiKSB7JHNxbF9xdWVyeSA9ICJBTkFMWVpFIFRBQkxFIjsgZm9yZWFjaCgkYm94dGJsIGFzICR2KSB7JHNxbF9xdWVyeSAuPSAibmAiLiR2LiJgICwiO30gJHNxbF9xdWVyeSA9IHN1YnN0cigkc3FsX3F1ZXJ5LDAsLTEpLiI7IjsgJHNxbF9hY3QgPSAicXVlcnkiO30NCg0KICAgZWxzZWlmICgkc3FsX2FjdCA9PSAiZGVsZXRlcm93IikgeyRzcWxfcXVlcnkgPSAiIjsgaWYgKCFlbXB0eSgkYm94cm93X2FsbCkpIHskc3FsX3F1ZXJ5ID0gIkRFTEVURSAqIEZST00gYCIuJHNxbF90YmwuImA7Ijt9IGVsc2Uge2ZvcmVhY2goJGJveHJvdyBhcyAkdikgeyRzcWxfcXVlcnkgLj0gIkRFTEVURSAqIEZST00gYCIuJHNxbF90YmwuImAgV0hFUkUiLiR2LiIgTElNSVQgMTtuIjt9ICRzcWxfcXVlcnkgPSBzdWJzdHIoJHNxbF9xdWVyeSwwLC0xKTt9ICRzcWxfYWN0ID0gInF1ZXJ5Ijt9DQoNCiAgIGVsc2VpZiAoJHNxbF90YmxfYWN0ID09ICJpbnNlcnQiKQ0KDQogICB7DQoNCiAgICBpZiAoJHNxbF90YmxfaW5zZXJ0X3JhZGlvID09IDEpDQoNCiAgICB7DQoNCiAgICAgJGtleXMgPSAiIjsNCg0KICAgICAkYWtleXMgPSBhcnJheV9rZXlzKCRzcWxfdGJsX2luc2VydCk7DQoNCiAgICAgZm9yZWFjaCAoJGFrZXlzIGFzICR2KSB7JGtleXMgLj0gImAiLmFkZHNsYXNoZXMoJHYpLiJgLCAiO30NCg0KICAgICBpZiAoIWVtcHR5KCRrZXlzKSkgeyRrZXlzID0gc3Vic3RyKCRrZXlzLDAsc3RybGVuKCRrZXlzKS0yKTt9DQoNCiAgICAgJHZhbHVlcyA9ICIiOw0KDQogICAgICRpID0gMDsNCg0KICAgICBmb3JlYWNoIChhcnJheV92YWx1ZXMoJHNxbF90YmxfaW5zZXJ0KSBhcyAkdikge2lmICgkZnVuY3QgPSAkc3FsX3RibF9pbnNlcnRfZnVuY3RzWyRha2V5c1skaV1dKSB7JHZhbHVlcyAuPSAkZnVuY3QuIiAoIjt9ICR2YWx1ZXMgLj0gIiciLmFkZHNsYXNoZXMoJHYpLiInIjsgaWYgKCRmdW5jdCkgeyR2YWx1ZXMgLj0gIikiO30gJHZhbHVlcyAuPSAiLCAiOyAkaSsrO30NCg0KICAgICBpZiAoIWVtcHR5KCR2YWx1ZXMpKSB7JHZhbHVlcyA9IHN1YnN0cigkdmFsdWVzLDAsc3RybGVuKCR2YWx1ZXMpLTIpO30NCg0KICAgICAkc3FsX3F1ZXJ5ID0gIklOU0VSVCBJTlRPIGAiLiRzcWxfdGJsLiJgICggIi4ka2V5cy4iICkgVkFMVUVTICggIi4kdmFsdWVzLiIgKTsiOw0KDQogICAgICRzcWxfYWN0ID0gInF1ZXJ5IjsNCg0KICAgICAkc3FsX3RibF9hY3QgPSAiYnJvd3NlIjsNCg0KICAgIH0NCg0KICAgIGVsc2VpZiAoJHNxbF90YmxfaW5zZXJ0X3JhZGlvID09IDIpDQoNCiAgICB7DQoNCiAgICAgJHNldCA9IG15c3FsX2J1aWxkd2hlcmUoJHNxbF90YmxfaW5zZXJ0LCIsICIsJHNxbF90YmxfaW5zZXJ0X2Z1bmN0cyk7DQoNCiAgICAgJHNxbF9xdWVyeSA9ICJVUERBVEUgYCIuJHNxbF90YmwuImAgU0VUICIuJHNldC4iIFdIRVJFICIuJHNxbF90YmxfaW5zZXJ0X3EuIiBMSU1JVCAxOyI7DQoNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRzcWxfcXVlcnkpIG9yIHByaW50KG15c3FsX3NtYXJ0ZXJyb3IoKSk7DQoNCiAgICAgJHJlc3VsdCA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXN1bHQsIE1ZU1FMX0FTU09DKTsNCg0KICAgICAkc3FsX2FjdCA9ICJxdWVyeSI7DQoNCiAgICAgJHNxbF90YmxfYWN0ID0gImJyb3dzZSI7DQoNCiAgICB9DQoNCiAgIH0NCg0KICAgaWYgKCRzcWxfYWN0ID09ICJxdWVyeSIpDQoNCiAgIHsNCg0KICAgIGVjaG8gIjxociBzaXplPSIxIiBub3NoYWRlPiI7DQoNCiAgICBpZiAoKCRzdWJtaXQpIGFuZCAoISRzcWxfcXVlcnlfcmVzdWx0KSBhbmQgKCRzcWxfY29uZmlybSkpIHtpZiAoISRzcWxfcXVlcnlfZXJyb3IpIHskc3FsX3F1ZXJ5X2Vycm9yID0gIlF1ZXJ5IHdhcyBlbXB0eSI7fSBlY2hvICI8Yj5FcnJvcjo8L2I+IDxicj4iLiRzcWxfcXVlcnlfZXJyb3IuIjxicj4iO30NCg0KICAgIGlmICgkc3FsX3F1ZXJ5X3Jlc3VsdCBvciAoISRzcWxfY29uZmlybSkpIHskc3FsX2FjdCA9ICRzcWxfZ290bzt9DQoNCiAgICBpZiAoKCEkc3VibWl0KSBvciAoJHNxbF9hY3QpKSB7ZWNobyAiPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSI+PHRyPjx0ZD48Zm9ybSBhY3Rpb249IiIuJHNxbF9zdXJsLiIiIG1ldGhvZD0iUE9TVCI+PGI+IjsgaWYgKCgkc3FsX3F1ZXJ5KSBhbmQgKCEkc3VibWl0KSkge2VjaG8gIkRvIHlvdSByZWFsbHkgd2FudCB0bzoiO30gZWxzZSB7ZWNobyAiU1FMLVF1ZXJ5IDoiO30gZWNobyAiPC9iPjxicj48YnI+PHRleHRhcmVhIG5hbWU9InNxbF9xdWVyeSIgY29scz0iMTAwIiByb3dzPSIxMCI+Ii5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcXVlcnkpLiI8L3RleHRhcmVhPjxicj48YnI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2FjdCIgdmFsdWU9InF1ZXJ5Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfdGJsIiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfdGJsKS4iIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzdWJtaXQiIHZhbHVlPSIxIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfZ290byIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2dvdG8pLiIiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InNxbF9jb25maXJtIiB2YWx1ZT0iWWVzIj4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iTm8iPjwvZm9ybT48L3RkPjwvdHI+PC90YWJsZT4iO30NCg0KICAgfQ0KDQogICBpZiAoaW5fYXJyYXkoJHNxbF9hY3QsJGFjdHMpKQ0KDQogICB7DQoNCiAgICA/Pjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEiPjx0cj48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5DcmVhdGUgbmV3IHRhYmxlOjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9hY3QiIHZhbHVlPSJuZXd0YmwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9kYiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2RiKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9uZXd0YmwiIHNpemU9IjIwIj4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQ3JlYXRlIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48Yj5EdW1wIERCOjwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzcWwiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9hY3QiIHZhbHVlPSJkdW1wIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfZGIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kYik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfbG9naW4iIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9sb2dpbik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9zZXJ2ZXIiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9zZXJ2ZXIpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3BvcnQiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wb3J0KTsgPz4iPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkdW1wX2ZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyAiZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJHNxbF9kYi4iXyIuZGF0ZSgiZC1tLVktSC1pLXMiKS4iLnNxbCI7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJEdW1wIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJsZT48P3BocA0KDQogICAgaWYgKCFlbXB0eSgkc3FsX2FjdCkpIHtlY2hvICI8aHIgc2l6ZT0iMSIgbm9zaGFkZT4iO30NCg0KICAgIGlmICgkc3FsX2FjdCA9PSAibmV3dGJsIikNCg0KICAgIHsNCg0KDQoNCiAgICAgZWNobyAiPGI+IjsNCg0KICAgICBpZiAoKG15c3FsX2NyZWF0ZV9kYiAoJHNxbF9uZXdkYikpIGFuZCAoIWVtcHR5KCRzcWxfbmV3ZGIpKSkge2VjaG8gIkRCICIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIiIgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHN1Y2Nlc3MhPC9iPjxicj4iOw0KDQogICAgfQ0KDQogICAgZWxzZSB7ZWNobyAiQ2FuJ3QgY3JlYXRlIERCICIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIiIuPGJyPlJlYXNvbjo8L2I+ICIubXlzcWxfc21hcnRlcnJvcigpO30NCg0KICAgfQ0KDQogICBlbHNlaWYgKCRzcWxfYWN0ID09ICJkdW1wIikNCg0KICAgew0KDQogICAgaWYgKGVtcHR5KCRzdWJtaXQpKQ0KDQogICAgew0KDQogICAgICRkaXBsYXkgPSBGQUxTRTsNCg0KICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9IkdFVCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfYWN0IiB2YWx1ZT0iZHVtcCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiIiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiIiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF90YmwiIHZhbHVlPSIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiIiPjxiPlNRTC1EdW1wOjwvYj48YnI+PGJyPiI7DQoNCiAgICAgZWNobyAiPGI+REI6PC9iPiZuYnNwOzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfZGIiIHZhbHVlPSIiLnVybGVuY29kZSgkc3FsX2RiKS4iIj48YnI+PGJyPiI7DQoNCiAgICAgJHYgPSBqb2luICgiOyIsJGRtcHRibHMpOw0KDQogICAgIGVjaG8gIjxiPk9ubHkgdGFibGVzIChleHBsb2RlICI7IikmbmJzcDs8Yj48c3VwPjE8L3N1cD48L2I+OjwvYj4mbmJzcDs8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZG1wdGJscyIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkdikuIiIgc2l6ZT0iIi4oc3RybGVuKCR2KSs1KS4iIj48YnI+PGJyPiI7DQoNCiAgICAgaWYgKCRkdW1wX2ZpbGUpIHskdG1wID0gJGR1bXBfZmlsZTt9DQoNCiAgICAgZWxzZSB7JHRtcCA9IGh0bWxzcGVjaWFsY2hhcnMoIi4vZHVtcF8iLmdldGVudigiU0VSVkVSX05BTUUiKS4iXyIuJHNxbF9kYi4iXyIuZGF0ZSgiZC1tLVktSC1pLXMiKS4iLnNxbCIpO30NCg0KICAgICBlY2hvICI8Yj5GaWxlOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX2R1bXBfZmlsZSIgdmFsdWU9IiIuJHRtcC4iIiBzaXplPSIiLihzdHJsZW4oJHRtcCkrc3RybGVuKCR0bXApICUgMzApLiIiPjxicj48YnI+IjsNCg0KICAgICBlY2hvICI8Yj5Eb3dubG9hZDogPC9iPiZuYnNwOzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic3FsX2R1bXBfZG93bmxvYWQiIHZhbHVlPSIxIiBjaGVja2VkPjxicj48YnI+IjsNCg0KICAgICBlY2hvICI8Yj5TYXZlIHRvIGZpbGU6IDwvYj4mbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNxbF9kdW1wX3NhdmV0b2ZpbGUiIHZhbHVlPSIxIiBjaGVja2VkPiI7DQoNCiAgICAgZWNobyAiPGJyPjxicj48aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXQiIHZhbHVlPSJEdW1wIj48YnI+PGJyPjxiPjxzdXA+MTwvc3VwPjwvYj4gLSBhbGwsIGlmIGVtcHR5IjsNCg0KICAgICBlY2hvICI8L2Zvcm0+IjsNCg0KICAgIH0NCg0KICAgIGVsc2UNCg0KICAgIHsNCg0KICAgICAkZGlwbGF5ID0gVFJVRTsNCg0KICAgICAkc2V0ID0gYXJyYXkoKTsNCg0KICAgICAkc2V0WyJzb2NrIl0gPSAkc3FsX3NvY2s7DQoNCiAgICAgJHNldFsiZGIiXSA9ICRzcWxfZGI7DQoNCiAgICAgJGR1bXBfb3V0ID0gImRvd25sb2FkIjsNCg0KICAgICAkc2V0WyJwcmludCJdID0gMDsNCg0KICAgICAkc2V0WyJubDJiciJdID0gMDsNCg0KICAgICAkc2V0WyIiXSA9IDA7DQoNCiAgICAgJHNldFsiZmlsZSJdID0gJGR1bXBfZmlsZTsNCg0KICAgICAkc2V0WyJhZGRfZHJvcCJdID0gVFJVRTsNCg0KICAgICAkc2V0WyJvbmx5dGFicyJdID0gYXJyYXkoKTsNCg0KICAgICBpZiAoIWVtcHR5KCRkbXB0YmxzKSkgeyRzZXRbIm9ubHl0YWJzIl0gPSBleHBsb2RlKCI7IiwkZG1wdGJscyk7fQ0KDQogICAgICRyZXQgPSBteXNxbF9kdW1wKCRzZXQpOw0KDQogICAgIGlmICgkc3FsX2R1bXBfZG93bmxvYWQpDQoNCiAgICAgew0KDQogICAgICBAb2JfY2xlYW4oKTsNCg0KICAgICAgaGVhZGVyKCJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOw0KDQogICAgICBoZWFkZXIoIkNvbnRlbnQtbGVuZ3RoOiAiLnN0cmxlbigkcmV0KSk7DQoNCiAgICAgIGhlYWRlcigiQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9IiIuYmFzZW5hbWUoJHNxbF9kdW1wX2ZpbGUpLiIiOyIpOw0KDQogICAgICBlY2hvICRyZXQ7DQoNCiAgICAgIGV4aXQ7DQoNCiAgICAgfQ0KDQogICAgIGVsc2VpZiAoJHNxbF9kdW1wX3NhdmV0b2ZpbGUpDQoNCiAgICAgew0KDQogICAgICAkZnAgPSBmb3Blbigkc3FsX2R1bXBfZmlsZSwidyIpOw0KDQogICAgICBpZiAoISRmcCkge2VjaG8gIjxiPkR1bXAgZXJyb3IhIENhbid0IHdyaXRlIHRvICIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9kdW1wX2ZpbGUpLiIiISI7fQ0KDQogICAgICBlbHNlDQoNCiAgICAgIHsNCg0KICAgICAgIGZ3cml0ZSgkZnAsJHJldCk7DQoNCiAgICAgICBmY2xvc2UoJGZwKTsNCg0KICAgICAgIGVjaG8gIjxiPkR1bXBlZCEgRHVtcCBoYXMgYmVlbiB3cml0ZWQgdG8gIiIuaHRtbHNwZWNpYWxjaGFycyhyZWFscGF0aCgkc3FsX2R1bXBfZmlsZSkpLiIiICgiLnZpZXdfc2l6ZShmaWxlc2l6ZSgkc3FsX2R1bXBfZmlsZSkpLiIpPC9iPi4iOw0KDQogICAgICB9DQoNCiAgICAgfQ0KDQogICAgIGVsc2Uge2VjaG8gIjxiPkR1bXA6IG5vdGhpbmcgdG8gZG8hPC9iPiI7fQ0KDQogICAgfQ0KDQogICB9DQoNCiAgIGlmICgkZGlwbGF5KQ0KDQogICB7DQoNCiAgICBpZiAoIWVtcHR5KCRzcWxfdGJsKSkNCg0KICAgIHsNCg0KICAgICBpZiAoZW1wdHkoJHNxbF90YmxfYWN0KSkgeyRzcWxfdGJsX2FjdCA9ICJicm93c2UiO30NCg0KICAgICAkY291bnQgPSBteXNxbF9xdWVyeSgiU0VMRUNUIENPVU5UKCopIEZST00gYCIuJHNxbF90YmwuImA7Iik7DQoNCiAgICAgJGNvdW50X3JvdyA9IG15c3FsX2ZldGNoX2FycmF5KCRjb3VudCk7DQoNCiAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJGNvdW50KTsNCg0KICAgICAkdGJsX3N0cnVjdF9yZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBGSUVMRFMgRlJPTSBgIi4kc3FsX3RibC4iYDsiKTsNCg0KICAgICAkdGJsX3N0cnVjdF9maWVsZHMgPSBhcnJheSgpOw0KDQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXNzb2MoJHRibF9zdHJ1Y3RfcmVzdWx0KSkgeyR0Ymxfc3RydWN0X2ZpZWxkc1tdID0gJHJvdzt9DQoNCiAgICAgaWYgKCRzcWxfbHMgPiAkc3FsX2xlKSB7JHNxbF9sZSA9ICRzcWxfbHMgKyAkcGVycGFnZTt9DQoNCiAgICAgaWYgKGVtcHR5KCRzcWxfdGJsX3BhZ2UpKSB7JHNxbF90YmxfcGFnZSA9IDA7fQ0KDQogICAgIGlmIChlbXB0eSgkc3FsX3RibF9scykpIHskc3FsX3RibF9scyA9IDA7fQ0KDQogICAgIGlmIChlbXB0eSgkc3FsX3RibF9sZSkpIHskc3FsX3RibF9sZSA9IDMwO30NCg0KICAgICAkcGVycGFnZSA9ICRzcWxfdGJsX2xlIC0gJHNxbF90YmxfbHM7DQoNCiAgICAgaWYgKCFpc19udW1lcmljKCRwZXJwYWdlKSkgeyRwZXJwYWdlID0gMTA7fQ0KDQogICAgICRudW1wYWdlcyA9ICRjb3VudF9yb3dbMF0vJHBlcnBhZ2U7DQoNCiAgICAgJGUgPSBleHBsb2RlKCIgIiwkc3FsX29yZGVyKTsNCg0KICAgICBpZiAoY291bnQoJGUpID09IDIpDQoNCiAgICAgew0KDQogICAgICBpZiAoJGVbMF0gPT0gImQiKSB7JGFzY19kZXNjID0gIkRFU0MiO30NCg0KICAgICAgZWxzZSB7JGFzY19kZXNjID0gIkFTQyI7fQ0KDQogICAgICAkdiA9ICJPUkRFUiBCWSBgIi4kZVsxXS4iYCAiLiRhc2NfZGVzYy4iICI7DQoNCiAgICAgfQ0KDQogICAgIGVsc2UgeyR2ID0gIiI7fQ0KDQogICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIGAiLiRzcWxfdGJsLiJgICIuJHYuIkxJTUlUICIuJHNxbF90YmxfbHMuIiAsICIuJHBlcnBhZ2UuIiI7DQoNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSkgb3IgcHJpbnQobXlzcWxfc21hcnRlcnJvcigpKTsNCg0KICAgICBlY2hvICI8aHIgc2l6ZT0iMSIgbm9zaGFkZT48Y2VudGVyPjxiPlRhYmxlICIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibCkuIiAoIi5teXNxbF9udW1fZmllbGRzKCRyZXN1bHQpLiIgY29scyBhbmQgIi4kY291bnRfcm93WzBdLiIgcm93cyk8L2I+PC9jZW50ZXI+IjsNCg0KICAgICBlY2hvICI8YSBocmVmPSIiLiRzcWxfc3VybC4ic3FsX3RibD0iLnVybGVuY29kZSgkc3FsX3RibCkuIiZzcWxfdGJsX2FjdD1zdHJ1Y3R1cmUiPlsmbmJzcDs8Yj5TdHJ1Y3R1cmU8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KDQogICAgIGVjaG8gIjxhIGhyZWY9IiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfYWN0PWJyb3dzZSI+WyZuYnNwOzxiPkJyb3dzZTwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQoNCiAgICAgZWNobyAiPGEgaHJlZj0iIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHNxbF90YmwpLiImc3FsX2FjdD10YmxkdW1wJnRoaXN0Ymw9MSI+WyZuYnNwOzxiPkR1bXA8L2I+Jm5ic3A7XTwvYT4mbmJzcDsmbmJzcDsmbmJzcDsiOw0KDQogICAgIGVjaG8gIjxhIGhyZWY9IiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfYWN0PWluc2VydCI+WyZuYnNwOzxiPkluc2VydDwvYj4mbmJzcDtdPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyI7DQoNCiAgICAgaWYgKCRzcWxfdGJsX2FjdCA9PSAic3RydWN0dXJlIikge2VjaG8gIjxicj48YnI+PGI+Q29taW5nIHNvb29uITwvYj4iO30NCg0KICAgICBpZiAoJHNxbF90YmxfYWN0ID09ICJpbnNlcnQiKQ0KDQogICAgIHsNCg0KICAgICAgaWYgKCFpc19hcnJheSgkc3FsX3RibF9pbnNlcnQpKSB7JHNxbF90YmxfaW5zZXJ0ID0gYXJyYXkoKTt9DQoNCiAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3JhZGlvKSkNCg0KICAgICAgew0KDQoNCg0KICAgICAgfQ0KDQogICAgICBlbHNlDQoNCiAgICAgIHsNCg0KICAgICAgIGVjaG8gIjxicj48YnI+PGI+SW5zZXJ0aW5nIHJvdyBpbnRvIHRhYmxlOjwvYj48YnI+IjsNCg0KICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKQ0KDQogICAgICAgew0KDQogICAgICAgICRzcWxfcXVlcnkgPSAiU0VMRUNUICogRlJPTSBgIi4kc3FsX3RibC4iYCI7DQoNCiAgICAgICAgJHNxbF9xdWVyeSAuPSAiIFdIRVJFIi4kc3FsX3RibF9pbnNlcnRfcTsNCg0KICAgICAgICAkc3FsX3F1ZXJ5IC49ICIgTElNSVQgMTsiOw0KDQogICAgICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgkc3FsX3F1ZXJ5LCRzcWxfc29jaykgb3IgcHJpbnQoIjxicj48YnI+Ii5teXNxbF9zbWFydGVycm9yKCkpOw0KDQogICAgICAgICR2YWx1ZXMgPSBteXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KTsNCg0KICAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCg0KICAgICAgIH0NCg0KICAgICAgIGVsc2UgeyR2YWx1ZXMgPSBhcnJheSgpO30NCg0KICAgICAgIGVjaG8gIjxmb3JtIG1ldGhvZD0iUE9TVCI+PFRBQkxFIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSB3aWR0aD0iMSUiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZD48Yj5GaWVsZDwvYj48L3RkPjx0ZD48Yj5UeXBlPC9iPjwvdGQ+PHRkPjxiPkZ1bmN0aW9uPC9iPjwvdGQ+PHRkPjxiPlZhbHVlPC9iPjwvdGQ+PC90cj4iOw0KDQogICAgICAgZm9yZWFjaCAoJHRibF9zdHJ1Y3RfZmllbGRzIGFzICRmaWVsZCkNCg0KICAgICAgIHsNCg0KICAgICAgICAkbmFtZSA9ICRmaWVsZFsiRmllbGQiXTsNCg0KICAgICAgICBpZiAoZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7JHYgPSAiIjt9DQoNCiAgICAgICAgZWNobyAiPHRyPjx0ZD48Yj4iLmh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpLiI8L2I+PC90ZD48dGQ+Ii4kZmllbGRbIlR5cGUiXS4iPC90ZD48dGQ+PHNlbGVjdCBuYW1lPSJzcWxfdGJsX2luc2VydF9mdW5jdHNbIi5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iXSI+PG9wdGlvbiB2YWx1ZT0iIj48L29wdGlvbj48b3B0aW9uPlBBU1NXT1JEPC9vcHRpb24+PG9wdGlvbj5NRDU8L29wdGlvbj48b3B0aW9uPkVOQ1JZUFQ8L29wdGlvbj48b3B0aW9uPkFTQ0lJPC9vcHRpb24+PG9wdGlvbj5DSEFSPC9vcHRpb24+PG9wdGlvbj5SQU5EPC9vcHRpb24+PG9wdGlvbj5MQVNUX0lOU0VSVF9JRDwvb3B0aW9uPjxvcHRpb24+Q09VTlQ8L29wdGlvbj48b3B0aW9uPkFWRzwvb3B0aW9uPjxvcHRpb24+U1VNPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iIj4tLS0tLS0tLTwvb3B0aW9uPjxvcHRpb24+U09VTkRFWDwvb3B0aW9uPjxvcHRpb24+TENBU0U8L29wdGlvbj48b3B0aW9uPlVDQVNFPC9vcHRpb24+PG9wdGlvbj5OT1c8L29wdGlvbj48b3B0aW9uPkNVUkRBVEU8L29wdGlvbj48b3B0aW9uPkNVUlRJTUU8L29wdGlvbj48b3B0aW9uPkZST01fREFZUzwvb3B0aW9uPjxvcHRpb24+RlJPTV9VTklYVElNRTwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0FERDwvb3B0aW9uPjxvcHRpb24+UEVSSU9EX0RJRkY8L29wdGlvbj48b3B0aW9uPlRPX0RBWVM8L29wdGlvbj48b3B0aW9uPlVOSVhfVElNRVNUQU1QPC9vcHRpb24+PG9wdGlvbj5VU0VSPC9vcHRpb24+PG9wdGlvbj5XRUVLREFZPC9vcHRpb24+PG9wdGlvbj5DT05DQVQ8L29wdGlvbj48L3NlbGVjdD48L3RkPjx0ZD48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX3RibF9pbnNlcnRbIi5odG1sc3BlY2lhbGNoYXJzKCRuYW1lKS4iXSIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkdmFsdWVzWyRuYW1lXSkuIiIgc2l6ZT01MD48L3RkPjwvdHI+IjsNCg0KICAgICAgICAkaSsrOw0KDQogICAgICAgfQ0KDQogICAgICAgZWNobyAiPC90YWJsZT48YnI+IjsNCg0KICAgICAgIGVjaG8gIjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ic3FsX3RibF9pbnNlcnRfcmFkaW8iIHZhbHVlPSIxIiI7IGlmIChlbXB0eSgkc3FsX3RibF9pbnNlcnRfcSkpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PGI+SW5zZXJ0IGFzIG5ldyByb3c8L2I+IjsNCg0KICAgICAgIGlmICghZW1wdHkoJHNxbF90YmxfaW5zZXJ0X3EpKSB7ZWNobyAiIG9yIDxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ic3FsX3RibF9pbnNlcnRfcmFkaW8iIHZhbHVlPSIyIiBjaGVja2VkPjxiPlNhdmU8L2I+IjsgZWNobyAiPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3RibF9pbnNlcnRfcSIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3RibF9pbnNlcnRfcSkuIiI+Ijt9DQoNCiAgICAgICBlY2hvICI8YnI+PGJyPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDb25maXJtIj48L2Zvcm0+IjsNCg0KICAgICAgfQ0KDQogICAgIH0NCg0KICAgICBpZiAoJHNxbF90YmxfYWN0ID09ICJicm93c2UiKQ0KDQogICAgIHsNCg0KICAgICAgJHNxbF90YmxfbHMgPSBhYnMoJHNxbF90YmxfbHMpOw0KDQogICAgICAkc3FsX3RibF9sZSA9IGFicygkc3FsX3RibF9sZSk7DQoNCiAgICAgIGVjaG8gIjxociBzaXplPSIxIiBub3NoYWRlPiI7DQoNCiAgICAgIGVjaG8gIjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1tdWx0aXBhZ2UiIGhlaWdodD0iMTIiIHdpZHRoPSIxMCIgYWx0PSJQYWdlcyI+Jm5ic3A7IjsNCg0KICAgICAgJGIgPSAwOw0KDQogICAgICBmb3IoJGk9MDskaTwkbnVtcGFnZXM7JGkrKykNCg0KICAgICAgew0KDQogICAgICAgaWYgKCgkaSokcGVycGFnZSAhPSAkc3FsX3RibF9scykgb3IgKCRpKiRwZXJwYWdlKyRwZXJwYWdlICE9ICRzcWxfdGJsX2xlKSkge2VjaG8gIjxhIGhyZWY9IiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF9vcmRlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9vcmRlcikuIiZzcWxfdGJsX2xzPSIuKCRpKiRwZXJwYWdlKS4iJnNxbF90YmxfbGU9Ii4oJGkqJHBlcnBhZ2UrJHBlcnBhZ2UpLiIiPjx1PiI7fQ0KDQogICAgICAgZWNobyAkaTsNCg0KICAgICAgIGlmICgoJGkqJHBlcnBhZ2UgIT0gJHNxbF90YmxfbHMpIG9yICgkaSokcGVycGFnZSskcGVycGFnZSAhPSAkc3FsX3RibF9sZSkpIHtlY2hvICI8L3U+PC9hPiI7fQ0KDQogICAgICAgaWYgKCgkaS8zMCA9PSByb3VuZCgkaS8zMCkpIGFuZCAoJGkgPiAwKSkge2VjaG8gIjxicj4iO30NCg0KICAgICAgIGVsc2Uge2VjaG8gIiZuYnNwOyI7fQ0KDQogICAgICB9DQoNCiAgICAgIGlmICgkaSA9PSAwKSB7ZWNobyAiZW1wdHkiO30NCg0KICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPSJHRVQiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InNxbCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2RiIiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfZGIpLiIiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKS4iIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcGFzc3dkIiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfcGFzc3dkKS4iIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKS4iIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpLiIiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF90YmwiIHZhbHVlPSIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF90YmwpLiIiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9vcmRlciIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX29yZGVyKS4iIj48Yj5Gcm9tOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX3RibF9scyIgdmFsdWU9IiIuJHNxbF90YmxfbHMuIiI+Jm5ic3A7PGI+VG86PC9iPiZuYnNwOzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzcWxfdGJsX2xlIiB2YWx1ZT0iIi4kc3FsX3RibF9sZS4iIj4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVmlldyI+PC9mb3JtPiI7DQoNCiAgICAgIGVjaG8gIjxicj48Zm9ybSBtZXRob2Q9IlBPU1QiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9IjElIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPiI7DQoNCiAgICAgIGVjaG8gIjx0cj4iOw0KDQogICAgICBlY2hvICI8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJib3hyb3dfYWxsIiB2YWx1ZT0iMSI+PC90ZD4iOw0KDQogICAgICBmb3IgKCRpPTA7JGk8bXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTskaSsrKQ0KDQogICAgICB7DQoNCiAgICAgICAkdiA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7DQoNCiAgICAgICBpZiAoJGVbMF0gPT0gImEiKSB7JHMgPSAiZCI7ICRtID0gImFzYyI7fQ0KDQogICAgICAgZWxzZSB7JHMgPSAiYSI7ICRtID0gImRlc2MiO30NCg0KICAgICAgIGVjaG8gIjx0ZD4iOw0KDQogICAgICAgaWYgKGVtcHR5KCRlWzBdKSkgeyRlWzBdID0gImEiO30NCg0KICAgICAgIGlmICgkZVsxXSAhPSAkdikge2VjaG8gIjxhIGhyZWY9IiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4kZVswXS4iJTIwIi4kdi4iIj48Yj4iLiR2LiI8L2I+PC9hPiI7fQ0KDQogICAgICAgZWxzZSB7ZWNobyAiPGI+Ii4kdi4iPC9iPjxhIGhyZWY9IiIuJHNxbF9zdXJsLiJzcWxfdGJsPSIuJHNxbF90YmwuIiZzcWxfdGJsX2xlPSIuJHNxbF90YmxfbGUuIiZzcWxfdGJsX2xzPSIuJHNxbF90YmxfbHMuIiZzcWxfb3JkZXI9Ii4kcy4iJTIwIi4kdi4iIj48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF8iLiRtLiIiIGhlaWdodD0iOSIgd2lkdGg9IjE0IiBhbHQ9IiIuJG0uIiI+PC9hPiI7fQ0KDQogICAgICAgZWNobyAiPC90ZD4iOw0KDQogICAgICB9DQoNCiAgICAgIGVjaG8gIjx0ZD48Zm9udCBjb2xvcj0iZ3JlZW4iPjxiPkFjdGlvbjwvYj48L2ZvbnQ+PC90ZD4iOw0KDQogICAgICBlY2hvICI8L3RyPiI7DQoNCiAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKQ0KDQogICAgICB7DQoNCiAgICAgICBlY2hvICI8dHI+IjsNCg0KICAgICAgICR3ID0gIiI7DQoNCiAgICAgICAkaSA9IDA7DQoNCiAgICAgICBmb3JlYWNoICgkcm93IGFzICRrPT4kdikgeyRuYW1lID0gbXlzcWxfZmllbGRfbmFtZSgkcmVzdWx0LCRpKTsgJHcgLj0gIiBgIi4kbmFtZS4iYCA9ICciLmFkZHNsYXNoZXMoJHYpLiInIEFORCI7ICRpKys7fQ0KDQogICAgICAgaWYgKGNvdW50KCRyb3cpID4gMCkgeyR3ID0gc3Vic3RyKCR3LDAsc3RybGVuKCR3KS0zKTt9DQoNCiAgICAgICBlY2hvICI8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJib3hyb3dbXSIgdmFsdWU9IiIuJHcuIiI+PC90ZD4iOw0KDQogICAgICAgJGkgPSAwOw0KDQogICAgICAgZm9yZWFjaCAoJHJvdyBhcyAkaz0+JHYpDQoNCiAgICAgICB7DQoNCiAgICAgICAgJHYgPSBodG1sc3BlY2lhbGNoYXJzKCR2KTsNCg0KICAgICAgICBpZiAoJHYgPT0gIiIpIHskdiA9ICI8Zm9udCBjb2xvcj0iZ3JlZW4iPk5VTEw8L2ZvbnQ+Ijt9DQoNCiAgICAgICAgZWNobyAiPHRkPiIuJHYuIjwvdGQ+IjsNCg0KICAgICAgICAkaSsrOw0KDQogICAgICAgfQ0KDQogICAgICAgZWNobyAiPHRkPiI7DQoNCiAgICAgICBlY2hvICI8YSBocmVmPSIiLiRzcWxfc3VybC4ic3FsX2FjdD1xdWVyeSZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF9xdWVyeT0iLnVybGVuY29kZSgiREVMRVRFIEZST00gYCIuJHNxbF90YmwuImAgV0hFUkUiLiR3LiIgTElNSVQgMTsiKS4iIj48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9c3FsX2J1dHRvbl9kcm9wIiBhbHQ9IkRlbGV0ZSIgaGVpZ2h0PSIxMyIgd2lkdGg9IjExIiBib3JkZXI9IjAiPjwvYT4mbmJzcDsiOw0KDQogICAgICAgZWNobyAiPGEgaHJlZj0iIi4kc3FsX3N1cmwuInNxbF90YmxfYWN0PWluc2VydCZzcWxfdGJsPSIudXJsZW5jb2RlKCRzcWxfdGJsKS4iJnNxbF90YmxfbHM9Ii4kc3FsX3RibF9scy4iJnNxbF90YmxfbGU9Ii4kc3FsX3RibF9sZS4iJnNxbF90YmxfaW5zZXJ0X3E9Ii51cmxlbmNvZGUoJHcpLiIiPjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1jaGFuZ2UiIGFsdD0iRWRpdCIgaGVpZ2h0PSIxNCIgd2lkdGg9IjE0IiBib3JkZXI9IjAiPjwvYT4mbmJzcDsiOw0KDQogICAgICAgZWNobyAiPC90ZD4iOw0KDQogICAgICAgZWNobyAiPC90cj4iOw0KDQogICAgICB9DQoNCiAgICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KDQogICAgICBlY2hvICI8L3RhYmxlPjxociBzaXplPSIxIiBub3NoYWRlPjxwIGFsaWduPSJsZWZ0Ij48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9YXJyb3dfbHRyIiBib3JkZXI9IjAiPjxzZWxlY3QgbmFtZT0ic3FsX2FjdCI+IjsNCg0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0iIj5XaXRoIHNlbGVjdGVkOjwvb3B0aW9uPiI7DQoNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9ImRlbGV0ZXJvdyI+RGVsZXRlPC9vcHRpb24+IjsNCg0KICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNvbmZpcm0iPjwvZm9ybT48L3A+IjsNCg0KICAgICB9DQoNCiAgICB9DQoNCiAgICBlbHNlDQoNCiAgICB7DQoNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFRBQkxFIFNUQVRVUyIsICRzcWxfc29jayk7DQoNCiAgICAgaWYgKCEkcmVzdWx0KSB7ZWNobyBteXNxbF9zbWFydGVycm9yKCk7fQ0KDQogICAgIGVsc2UNCg0KICAgICB7DQoNCiAgICAgIGVjaG8gIjxicj48Zm9ybSBtZXRob2Q9IlBPU1QiPjxUQUJMRSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9IjEwMCUiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImJveHRibF9hbGwiIHZhbHVlPSIxIj48L3RkPjx0ZD48Y2VudGVyPjxiPlRhYmxlPC9iPjwvY2VudGVyPjwvdGQ+PHRkPjxiPlJvd3M8L2I+PC90ZD48dGQ+PGI+VHlwZTwvYj48L3RkPjx0ZD48Yj5DcmVhdGVkPC9iPjwvdGQ+PHRkPjxiPk1vZGlmaWVkPC9iPjwvdGQ+PHRkPjxiPlNpemU8L2I+PC90ZD48dGQ+PGI+QWN0aW9uPC9iPjwvdGQ+PC90cj4iOw0KDQogICAgICAkaSA9IDA7DQoNCiAgICAgICR0c2l6ZSA9ICR0cm93cyA9IDA7DQoNCiAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKQ0KDQogICAgICB7DQoNCiAgICAgICAkdHNpemUgKz0gJHJvd1siRGF0YV9sZW5ndGgiXTsNCg0KICAgICAgICR0cm93cyArPSAkcm93WyJSb3dzIl07DQoNCiAgICAgICAkc2l6ZSA9IHZpZXdfc2l6ZSgkcm93WyJEYXRhX2xlbmd0aCJdKTsNCg0KICAgICAgIGVjaG8gIjx0cj4iOw0KDQogICAgICAgZWNobyAiPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iYm94dGJsW10iIHZhbHVlPSIiLiRyb3dbIk5hbWUiXS4iIj48L3RkPiI7DQoNCiAgICAgICBlY2hvICI8dGQ+Jm5ic3A7PGEgaHJlZj0iIi4kc3FsX3N1cmwuInNxbF90Ymw9Ii51cmxlbmNvZGUoJHJvd1siTmFtZSJdKS4iIj48Yj4iLiRyb3dbIk5hbWUiXS4iPC9iPjwvYT4mbmJzcDs8L3RkPiI7DQoNCiAgICAgICBlY2hvICI8dGQ+Ii4kcm93WyJSb3dzIl0uIjwvdGQ+IjsNCg0KICAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbIlR5cGUiXS4iPC90ZD4iOw0KDQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siQ3JlYXRlX3RpbWUiXS4iPC90ZD4iOw0KDQogICAgICAgZWNobyAiPHRkPiIuJHJvd1siVXBkYXRlX3RpbWUiXS4iPC90ZD4iOw0KDQogICAgICAgZWNobyAiPHRkPiIuJHNpemUuIjwvdGQ+IjsNCg0KICAgICAgIGVjaG8gIjx0ZD4mbmJzcDs8YSBocmVmPSIiLiRzcWxfc3VybC4ic3FsX2FjdD1xdWVyeSZzcWxfcXVlcnk9Ii51cmxlbmNvZGUoIkRFTEVURSBGUk9NIGAiLiRyb3dbIk5hbWUiXS4iYCIpLiIiPjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zcWxfYnV0dG9uX2VtcHR5IiBhbHQ9IkVtcHR5IiBoZWlnaHQ9IjEzIiB3aWR0aD0iMTEiIGJvcmRlcj0iMCI+PC9hPiZuYnNwOyZuYnNwOzxhIGhyZWY9IiIuJHNxbF9zdXJsLiJzcWxfYWN0PXF1ZXJ5JnNxbF9xdWVyeT0iLnVybGVuY29kZSgiRFJPUCBUQUJMRSBgIi4kcm93WyJOYW1lIl0uImAiKS4iIj48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9c3FsX2J1dHRvbl9kcm9wIiBhbHQ9IkRyb3AiIGhlaWdodD0iMTMiIHdpZHRoPSIxMSIgYm9yZGVyPSIwIj48L2E+Jm5ic3A7PGEgaHJlZj0iIi4kc3FsX3N1cmwuInNxbF90YmxfYWN0PWluc2VydCZzcWxfdGJsPSIuJHJvd1siTmFtZSJdLiIiPjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zcWxfYnV0dG9uX2luc2VydCIgYWx0PSJJbnNlcnQiIGhlaWdodD0iMTMiIHdpZHRoPSIxMSIgYm9yZGVyPSIwIj48L2E+Jm5ic3A7PC90ZD4iOw0KDQogICAgICAgZWNobyAiPC90cj4iOw0KDQogICAgICAgJGkrKzsNCg0KICAgICAgfQ0KDQogICAgICBlY2hvICI8dHIgYmdjb2xvcj0iMDAwMDAwIj4iOw0KDQogICAgICBlY2hvICI8dGQ+PGNlbnRlcj48Yj4rPC9iPjwvY2VudGVyPjwvdGQ+IjsNCg0KICAgICAgZWNobyAiPHRkPjxjZW50ZXI+PGI+Ii4kaS4iIHRhYmxlKHMpPC9iPjwvY2VudGVyPjwvdGQ+IjsNCg0KICAgICAgZWNobyAiPHRkPjxiPiIuJHRyb3dzLiI8L2I+PC90ZD4iOw0KDQogICAgICBlY2hvICI8dGQ+Ii4kcm93WzFdLiI8L3RkPiI7DQoNCiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMTBdLiI8L3RkPiI7DQoNCiAgICAgIGVjaG8gIjx0ZD4iLiRyb3dbMTFdLiI8L3RkPiI7DQoNCiAgICAgIGVjaG8gIjx0ZD48Yj4iLnZpZXdfc2l6ZSgkdHNpemUpLiI8L2I+PC90ZD4iOw0KDQogICAgICBlY2hvICI8dGQ+PC90ZD4iOw0KDQogICAgICBlY2hvICI8L3RyPiI7DQoNCiAgICAgIGVjaG8gIjwvdGFibGU+PGhyIHNpemU9IjEiIG5vc2hhZGU+PHAgYWxpZ249InJpZ2h0Ij48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9YXJyb3dfbHRyIiBib3JkZXI9IjAiPjxzZWxlY3QgbmFtZT0ic3FsX2FjdCI+IjsNCg0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0iIj5XaXRoIHNlbGVjdGVkOjwvb3B0aW9uPiI7DQoNCiAgICAgIGVjaG8gIjxvcHRpb24gdmFsdWU9InRibGRyb3AiPkRyb3A8L29wdGlvbj4iOw0KDQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSJ0YmxlbXB0eSI+RW1wdHk8L29wdGlvbj4iOw0KDQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSJ0YmxkdW1wIj5EdW1wPC9vcHRpb24+IjsNCg0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0idGJsY2hlY2siPkNoZWNrIHRhYmxlPC9vcHRpb24+IjsNCg0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0idGJsb3B0aW1pemUiPk9wdGltaXplIHRhYmxlPC9vcHRpb24+IjsNCg0KICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0idGJscmVwYWlyIj5SZXBhaXIgdGFibGU8L29wdGlvbj4iOw0KDQogICAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSJ0YmxhbmFseXplIj5BbmFseXplIHRhYmxlPC9vcHRpb24+IjsNCg0KICAgICAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkNvbmZpcm0iPjwvZm9ybT48L3A+IjsNCg0KICAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQoNCiAgICAgfQ0KDQogICAgfQ0KDQogICB9DQoNCiAgIH0NCg0KICB9DQoNCiAgZWxzZQ0KDQogIHsNCg0KICAgJGFjdHMgPSBhcnJheSgiIiwibmV3ZGIiLCJzZXJ2ZXJzdGF0dXMiLCJzZXJ2ZXJ2YXJzIiwicHJvY2Vzc2VzIiwiZ2V0ZmlsZSIpOw0KDQogICBpZiAoaW5fYXJyYXkoJHNxbF9hY3QsJGFjdHMpKSB7Pz48dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxIj48dHI+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PGI+Q3JlYXRlIG5ldyBEQjo8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfYWN0IiB2YWx1ZT0ibmV3ZGIiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9sb2dpbiIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX2xvZ2luKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wYXNzd2QiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHNxbF9wYXNzd2QpOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3NlcnZlciIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3NlcnZlcik7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfcG9ydCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3BvcnQpOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNxbF9uZXdkYiIgc2l6ZT0iMjAiPiZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDcmVhdGUiPjwvZm9ybT48L3RkPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjxiPlZpZXcgRmlsZTo8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3FsIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfYWN0IiB2YWx1ZT0iZ2V0ZmlsZSI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX2xvZ2luIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfbG9naW4pOyA/PiI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ic3FsX3Bhc3N3ZCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3FsX3Bhc3N3ZCk7ID8+Ij48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzcWxfc2VydmVyIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfc2VydmVyKTsgPz4iPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InNxbF9wb3J0IiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfcG9ydCk7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic3FsX2dldGZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iPD9waHAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzcWxfZ2V0ZmlsZSk7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iR2V0Ij48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PHRyPjx0ZCB3aWR0aD0iMzAlIiBoZWlnaHQ9IjEiPjwvdGQ+PHRkIHdpZHRoPSIzMCUiIGhlaWdodD0iMSI+PC90ZD48dGQgd2lkdGg9IjMwJSIgaGVpZ2h0PSIxIj48L3RkPjwvdHI+PC90YWJsZT48P3BocCB9DQoNCiAgIGlmICghZW1wdHkoJHNxbF9hY3QpKQ0KDQogICB7DQoNCiAgICBlY2hvICI8aHIgc2l6ZT0iMSIgbm9zaGFkZT4iOw0KDQogICAgaWYgKCRzcWxfYWN0ID09ICJuZXdkYiIpDQoNCiAgICB7DQoNCiAgICAgZWNobyAiPGI+IjsNCg0KICAgICBpZiAoKG15c3FsX2NyZWF0ZV9kYiAoJHNxbF9uZXdkYikpIGFuZCAoIWVtcHR5KCRzcWxfbmV3ZGIpKSkge2VjaG8gIkRCICIiLmh0bWxzcGVjaWFsY2hhcnMoJHNxbF9uZXdkYikuIiIgaGFzIGJlZW4gY3JlYXRlZCB3aXRoIHN1Y2Nlc3MhPC9iPjxicj4iO30NCg0KICAgICBlbHNlIHtlY2hvICJDYW4ndCBjcmVhdGUgREIgIiIuaHRtbHNwZWNpYWxjaGFycygkc3FsX25ld2RiKS4iIi48YnI+UmVhc29uOjwvYj4gIi5teXNxbF9zbWFydGVycm9yKCk7fQ0KDQogICAgfQ0KDQogICAgaWYgKCRzcWxfYWN0ID09ICJzZXJ2ZXJzdGF0dXMiKQ0KDQogICAgew0KDQogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBTVEFUVVMiLCAkc3FsX3NvY2spOw0KDQogICAgIGVjaG8gIjxjZW50ZXI+PGI+U2VydmVyLXN0YXR1cyB2YXJpYWJsZXM6PC9iPjxicj48YnI+IjsNCg0KICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0wIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPk5hbWU8L2I+PC90ZD48dGQ+PGI+VmFsdWU8L2I+PC90ZD48L3RyPiI7DQoNCiAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9OVU0pKSB7ZWNobyAiPHRyPjx0ZD4iLiRyb3dbMF0uIjwvdGQ+PHRkPiIuJHJvd1sxXS4iPC90ZD48L3RyPiI7fQ0KDQogICAgIGVjaG8gIjwvdGFibGU+PC9jZW50ZXI+IjsNCg0KICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCg0KICAgIH0NCg0KICAgIGlmICgkc3FsX2FjdCA9PSAic2VydmVydmFycyIpDQoNCiAgICB7DQoNCiAgICAgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCJTSE9XIFZBUklBQkxFUyIsICRzcWxfc29jayk7DQoNCiAgICAgZWNobyAiPGNlbnRlcj48Yj5TZXJ2ZXIgdmFyaWFibGVzOjwvYj48YnI+PGJyPiI7DQoNCiAgICAgZWNobyAiPFRBQkxFIGNlbGxTcGFjaW5nPTAgY2VsbFBhZGRpbmc9MCBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jMzMzMzMzIGJvcmRlcj0xPjx0ZD48Yj5OYW1lPC9iPjwvdGQ+PHRkPjxiPlZhbHVlPC9iPjwvdGQ+PC90cj4iOw0KDQogICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfTlVNKSkge2VjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PC90cj4iO30NCg0KICAgICBlY2hvICI8L3RhYmxlPiI7DQoNCiAgICAgbXlzcWxfZnJlZV9yZXN1bHQoJHJlc3VsdCk7DQoNCiAgICB9DQoNCiAgICBpZiAoJHNxbF9hY3QgPT0gInByb2Nlc3NlcyIpDQoNCiAgICB7DQoNCiAgICAgaWYgKCFlbXB0eSgka2lsbCkpIHskcXVlcnkgPSAiS0lMTCAiLiRraWxsLiI7IjsgJHJlc3VsdCA9IG15c3FsX3F1ZXJ5KCRxdWVyeSwgJHNxbF9zb2NrKTsgZWNobyAiPGI+S2lsbGluZyBwcm9jZXNzICMiLiRraWxsLiIuLi4gb2suIGhlIGlzIGRlYWQsIGFtZW4uPC9iPiI7fQ0KDQogICAgICRyZXN1bHQgPSBteXNxbF9xdWVyeSgiU0hPVyBQUk9DRVNTTElTVCIsICRzcWxfc29jayk7DQoNCiAgICAgZWNobyAiPGNlbnRlcj48Yj5Qcm9jZXNzZXM6PC9iPjxicj48YnI+IjsNCg0KICAgICBlY2hvICI8VEFCTEUgY2VsbFNwYWNpbmc9MCBjZWxsUGFkZGluZz0yIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSMzMzMzMzMgYm9yZGVyPTE+PHRkPjxiPklEPC9iPjwvdGQ+PHRkPjxiPlVTRVI8L2I+PC90ZD48dGQ+PGI+SE9TVDwvYj48L3RkPjx0ZD48Yj5EQjwvYj48L3RkPjx0ZD48Yj5DT01NQU5EPC9iPjwvdGQ+PHRkPjxiPlRJTUU8L2I+PC90ZD48dGQ+PGI+U1RBVEU8L2I+PC90ZD48dGQ+PGI+SU5GTzwvYj48L3RkPjx0ZD48Yj5BY3Rpb248L2I+PC90ZD48L3RyPiI7DQoNCiAgICAgd2hpbGUgKCRyb3cgPSBteXNxbF9mZXRjaF9hcnJheSgkcmVzdWx0LCBNWVNRTF9OVU0pKSB7IGVjaG8gIjx0cj48dGQ+Ii4kcm93WzBdLiI8L3RkPjx0ZD4iLiRyb3dbMV0uIjwvdGQ+PHRkPiIuJHJvd1syXS4iPC90ZD48dGQ+Ii4kcm93WzNdLiI8L3RkPjx0ZD4iLiRyb3dbNF0uIjwvdGQ+PHRkPiIuJHJvd1s1XS4iPC90ZD48dGQ+Ii4kcm93WzZdLiI8L3RkPjx0ZD4iLiRyb3dbN10uIjwvdGQ+PHRkPjxhIGhyZWY9IiIuJHNxbF9zdXJsLiJzcWxfYWN0PXByb2Nlc3NlcyZraWxsPSIuJHJvd1swXS4iIj48dT5LaWxsPC91PjwvYT48L3RkPjwvdHI+Ijt9DQoNCiAgICAgZWNobyAiPC90YWJsZT4iOw0KDQogICAgIG15c3FsX2ZyZWVfcmVzdWx0KCRyZXN1bHQpOw0KDQogICAgfQ0KDQogICAgaWYgKCRzcWxfYWN0ID09ICJnZXRmaWxlIikNCg0KICAgIHsNCg0KICAgICAkdG1wZGIgPSAkc3FsX2xvZ2luLiJfdG1wZGIiOw0KDQogICAgICRzZWxlY3QgPSBteXNxbF9zZWxlY3RfZGIoJHRtcGRiKTsNCg0KICAgICBpZiAoISRzZWxlY3QpIHtteXNxbF9jcmVhdGVfZGIoJHRtcGRiKTsgJHNlbGVjdCA9IG15c3FsX3NlbGVjdF9kYigkdG1wZGIpOyAkY3JlYXRlZCA9ICEhJHNlbGVjdDt9DQoNCiAgICAgaWYgKCRzZWxlY3QpDQoNCiAgICAgew0KDQogICAgICAkY3JlYXRlZCA9IEZBTFNFOw0KDQogICAgICBteXNxbF9xdWVyeSgiQ1JFQVRFIFRBQkxFIGB0bXBfZmlsZWAgKCBgVmlld2luZyB0aGUgZmlsZSBpbiBzYWZlX21vZGUrb3Blbl9iYXNlZGlyYCBMT05HQkxPQiBOT1QgTlVMTCApOyIpOw0KDQogICAgICBteXNxbF9xdWVyeSgiTE9BRCBEQVRBIElORklMRSAiIi5hZGRzbGFzaGVzKCRzcWxfZ2V0ZmlsZSkuIiIgSU5UTyBUQUJMRSB0bXBfZmlsZSIpOw0KDQogICAgICAkcmVzdWx0ID0gbXlzcWxfcXVlcnkoIlNFTEVDVCAqIEZST00gdG1wX2ZpbGU7Iik7DQoNCiAgICAgIGlmICghJHJlc3VsdCkge2VjaG8gIjxiPkVycm9yIGluIHJlYWRpbmcgZmlsZSAocGVybWlzaW9uIGRlbmllZCkhPC9iPiI7fQ0KDQogICAgICBlbHNlDQoNCiAgICAgIHsNCg0KICAgICAgIGZvciAoJGk9MDskaTxteXNxbF9udW1fZmllbGRzKCRyZXN1bHQpOyRpKyspIHskbmFtZSA9IG15c3FsX2ZpZWxkX25hbWUoJHJlc3VsdCwkaSk7fQ0KDQogICAgICAgJGYgPSAiIjsNCg0KICAgICAgIHdoaWxlICgkcm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCwgTVlTUUxfQVNTT0MpKSB7JGYgLj0gam9pbiAoInJuIiwkcm93KTt9DQoNCiAgICAgICBpZiAoZW1wdHkoJGYpKSB7ZWNobyAiPGI+RmlsZSAiIi4kc3FsX2dldGZpbGUuIiIgZG9lcyBub3QgZXhpc3RzIG9yIGVtcHR5ITwvYj48YnI+Ijt9DQoNCiAgICAgICBlbHNlIHtlY2hvICI8Yj5GaWxlICIiLiRzcWxfZ2V0ZmlsZS4iIjo8L2I+PGJyPiIubmwyYnIoaHRtbHNwZWNpYWxjaGFycygkZikpLiI8YnI+Ijt9DQoNCiAgICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsNCg0KICAgICAgIG15c3FsX3F1ZXJ5KCJEUk9QIFRBQkxFIHRtcF9maWxlOyIpOw0KDQogICAgICB9DQoNCiAgICAgfQ0KDQogICAgIG15c3FsX2Ryb3BfZGIoJHRtcGRiKTsgLy9jb21tZW50IGl0IGlmIHlvdSB3YW50IHRvIGxlYXZlIGRhdGFiYXNlDQoNCiAgICB9DQoNCiAgIH0NCg0KICB9DQoNCn0NCg0KZWNobyAiPC90ZD48L3RyPjwvdGFibGU+IjsNCg0KaWYgKCRzcWxfc29jaykNCg0Kew0KDQogICRhZmZlY3RlZCA9IEBteXNxbF9hZmZlY3RlZF9yb3dzKCRzcWxfc29jayk7DQoNCiAgaWYgKCghaXNfbnVtZXJpYygkYWZmZWN0ZWQpKSBvciAoJGFmZmVjdGVkIDwgMCkpeyRhZmZlY3RlZCA9IDA7fQ0KDQogIGVjaG8gIjx0cj48dGQ+PGNlbnRlcj48Yj5BZmZlY3RlZCByb3dzOiAiLiRhZmZlY3RlZC4iPC9jZW50ZXI+PC90ZD48L3RyPiI7DQoNCn0NCg0KZWNobyAiPC90YWJsZT4iOw0KDQp9DQoNCmlmICgkYWN0ID09ICJta2RpciIpDQoNCnsNCg0KaWYgKCRta2RpciAhPSAkZCkNCg0Kew0KDQogIGlmIChmaWxlX2V4aXN0cygkbWtkaXIpKSB7ZWNobyAiPGI+TWFrZSBEaXIgIiIuaHRtbHNwZWNpYWxjaGFycygkbWtkaXIpLiIiPC9iPjogb2JqZWN0IGFscmVkeSBleGlzdHMiO30NCg0KICBlbHNlaWYgKCFta2RpcigkbWtkaXIpKSB7ZWNobyAiPGI+TWFrZSBEaXIgIiIuaHRtbHNwZWNpYWxjaGFycygkbWtkaXIpLiIiPC9iPjogYWNjZXNzIGRlbmllZCI7fQ0KDQogIGVjaG8gIjxicj48YnI+IjsNCg0KfQ0KDQokYWN0ID0gJGRzcGFjdCA9ICJscyI7DQoNCn0NCg0KaWYgKCRhY3QgPT0gImZ0cHF1aWNrYnJ1dGUiKQ0KDQp7DQoNCmVjaG8gIjxiPkZ0cCBRdWljayBicnV0ZTo8L2I+PGJyPiI7DQoNCmlmICghd2luKSB7ZWNobyAiVGhpcyBmdW5jdGlvbnMgbm90IHdvcmsgaW4gV2luZG93cyE8YnI+PGJyPiI7fQ0KDQplbHNlDQoNCnsNCg0KICBmdW5jdGlvbiBjOTlmdHBicnV0ZWNoZWNrKCRob3N0LCRwb3J0LCR0aW1lb3V0LCRsb2dpbiwkcGFzcywkc2gsJGZxYl9vbmx5d2l0aHNoKQ0KDQogIHsNCg0KICAgaWYgKCRmcWJfb25seXdpdGhzaCkgeyRUUlVFID0gKCFpbl9hcnJheSgkc2gsYXJyYXkoIi9iaW4vRkFMU0UiLCIvc2Jpbi9ub2xvZ2luIikpKTt9DQoNCiAgIGVsc2UgeyRUUlVFID0gVFJVRTt9DQoNCiAgIGlmICgkVFJVRSkNCg0KICAgew0KDQogICAgJHNvY2sgPSBAZnRwX2Nvbm5lY3QoJGhvc3QsJHBvcnQsJHRpbWVvdXQpOw0KDQogICAgaWYgKEBmdHBfbG9naW4oJHNvY2ssJGxvZ2luLCRwYXNzKSkNCg0KICAgIHsNCg0KICAgICBlY2hvICI8YSBocmVmPSJmdHA6Ly8iLiRsb2dpbi4iOiIuJHBhc3MuIkAiLiRob3N0LiIiIHRhcmdldD0iX2JsYW5rIj48Yj5Db25uZWN0ZWQgdG8gIi4kaG9zdC4iIHdpdGggbG9naW4gIiIuJGxvZ2luLiIiIGFuZCBwYXNzd29yZCAiIi4kcGFzcy4iIjwvYj48L2E+Ljxicj4iOw0KDQogICAgIG9iX2ZsdXNoKCk7DQoNCiAgICAgcmV0dXJuIFRSVUU7DQoNCiAgICB9DQoNCiAgIH0NCg0KICB9DQoNCiAgaWYgKCFlbXB0eSgkc3VibWl0KSkNCg0KICB7DQoNCiAgIGlmICghaXNfbnVtZXJpYygkZnFiX2xlbmdodCkpIHskZnFiX2xlbmdodCA9ICRuaXhwd2RwZXJwYWdlO30NCg0KICAgJGZwID0gZm9wZW4oIi9ldGMvcGFzc3dkIiwiciIpOw0KDQogICBpZiAoISRmcCkge2VjaG8gIkNhbid0IGdldCAvZXRjL3Bhc3N3ZCBmb3IgcGFzc3dvcmQtbGlzdC4iO30NCg0KICAgZWxzZQ0KDQogICB7DQoNCiAgICBpZiAoJGZxYl9sb2dnaW5nKQ0KDQogICAgew0KDQogICAgIGlmICgkZnFiX2xvZ2ZpbGUpIHskZnFiX2xvZ2ZwID0gZm9wZW4oJGZxYl9sb2dmaWxlLCJ3Iik7fQ0KDQogICAgIGVsc2UgeyRmcWJfbG9nZnAgPSBGQUxTRTt9DQoNCiAgICAgJGZxYl9sb2cgPSAiRlRQIFF1aWNrIEJydXRlIChjYWxsZWQgYzk5c2hlbGwgdi4gIi4kc2h2ZXIuIikgc3RhcnRlZCBhdCAiLmRhdGUoImQubS5ZIEg6aTpzIikuInJucm4iOw0KDQogICAgIGlmICgkZnFiX2xvZ2ZpbGUpIHtmd3JpdGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxzdHJsZW4oJGZxYl9sb2cpKTt9DQoNCiAgICB9DQoNCiAgICBvYl9mbHVzaCgpOw0KDQogICAgJGkgPSAkc3VjY2VzcyA9IDA7DQoNCiAgICAkZnRwcXVpY2tfc3QgPSBnZXRtaWNyb3RpbWUoKTsNCg0KICAgIHdoaWxlKCFmZW9mKCRmcCkpDQoNCiAgICB7DQoNCiAgICAgJHN0ciA9IGV4cGxvZGUoIjoiLGZnZXRzKCRmcCwyMDQ4KSk7DQoNCiAgICAgaWYgKGM5OWZ0cGJydXRlY2hlY2soImxvY2FsaG9zdCIsMjEsMSwkc3RyWzBdLCRzdHJbMF0sJHN0cls2XSwkZnFiX29ubHl3aXRoc2gpKQ0KDQogICAgIHsNCg0KICAgICAgZWNobyAiPGI+Q29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiAiIi4kc3RyWzBdLiIiIGFuZCBwYXNzd29yZCAiIi4kc3RyWzBdLiIiPC9iPjxicj4iOw0KDQogICAgICAkZnFiX2xvZyAuPSAiQ29ubmVjdGVkIHRvICIuZ2V0ZW52KCJTRVJWRVJfTkFNRSIpLiIgd2l0aCBsb2dpbiAiIi4kc3RyWzBdLiIiIGFuZCBwYXNzd29yZCAiIi4kc3RyWzBdLiIiLCBhdCAiLmRhdGUoImQubS5ZIEg6aTpzIikuInJuIjsNCg0KICAgICAgaWYgKCRmcWJfbG9nZnApIHtmc2VlaygkZnFiX2xvZ2ZwLDApOyBmd3JpdGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxzdHJsZW4oJGZxYl9sb2cpKTt9DQoNCiAgICAgICRzdWNjZXNzKys7DQoNCiAgICAgIG9iX2ZsdXNoKCk7DQoNCiAgICAgfQ0KDQogICAgIGlmICgkaSA+ICRmcWJfbGVuZ2h0KSB7YnJlYWs7fQ0KDQogICAgICRpKys7DQoNCiAgICB9DQoNCiAgICBpZiAoJHN1Y2Nlc3MgPT0gMCkge2VjaG8gIk5vIHN1Y2Nlc3MuIGNvbm5lY3Rpb25zISI7ICRmcWJfbG9nIC49ICJObyBzdWNjZXNzLiBjb25uZWN0aW9ucyFybiI7fQ0KDQogICAgJGZ0cHF1aWNrX3QgPSByb3VuZChnZXRtaWNyb3RpbWUoKS0kZnRwcXVpY2tfc3QsNCk7DQoNCiAgICBlY2hvICI8aHIgc2l6ZT0iMSIgbm9zaGFkZT48Yj5Eb25lITwvYj48YnI+VG90YWwgdGltZSAoc2Vjcy4pOiAiLiRmdHBxdWlja190LiI8YnI+VG90YWwgY29ubmVjdGlvbnM6ICIuJGkuIjxicj5TdWNjZXNzLjogPGZvbnQgY29sb3I9Z3JlZW4+PGI+Ii4kc3VjY2Vzcy4iPC9iPjwvZm9udD48YnI+VW5zdWNjZXNzLjoiLigkaS0kc3VjY2VzcykuIjwvYj48YnI+Q29ubmVjdHMgcGVyIHNlY29uZDogIi5yb3VuZCgkaS8kZnRwcXVpY2tfdCwyKS4iPGJyPiI7DQoNCiAgICAkZnFiX2xvZyAuPSAicm4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1ybkRvbmUhcm5Ub3RhbCB0aW1lIChzZWNzLik6ICIuJGZ0cHF1aWNrX3QuInJuVG90YWwgY29ubmVjdGlvbnM6ICIuJGkuInJuU3VjY2Vzcy46ICIuJHN1Y2Nlc3MuInJuVW5zdWNjZXNzLjoiLigkaS0kc3VjY2VzcykuInJuQ29ubmVjdHMgcGVyIHNlY29uZDogIi5yb3VuZCgkaS8kZnRwcXVpY2tfdCwyKS4icm4iOw0KDQogICAgaWYgKCRmcWJfbG9nZnApIHtmc2VlaygkZnFiX2xvZ2ZwLDApOyBmd3JpdGUoJGZxYl9sb2dmcCwkZnFiX2xvZyxzdHJsZW4oJGZxYl9sb2cpKTt9DQoNCiAgICBpZiAoJGZxYl9sb2dlbWFpbCkge0BtYWlsKCRmcWJfbG9nZW1haWwsImM5OXNoZWxsIHYuICIuJHNodmVyLiIgcmVwb3J0IiwkZnFiX2xvZyk7fQ0KDQogICAgZmNsb3NlKCRmcWJfbG9nZnApOw0KDQogICB9DQoNCiAgfQ0KDQogIGVsc2UNCg0KICB7DQoNCiAgICRsb2dmaWxlID0gJHRtcGRpcl9sb2dzLiJjOTlzaF9mdHBxdWlja2JydXRlXyIuZGF0ZSgiZC5tLllfSF9pX3MiKS4iLmxvZyI7DQoNCiAgICRsb2dmaWxlID0gc3RyX3JlcGxhY2UoIi8vIixESVJFQ1RPUllfU0VQQVJBVE9SLCRsb2dmaWxlKTsNCg0KICAgZWNobyAiPGZvcm0gYWN0aW9uPSIiLiRzdXJsLiIiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iZnRwcXVpY2ticnV0ZSI+PGJyPlJlYWQgZmlyc3Q6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT0iZnFiX2xlbmdodCIgdmFsdWU9IiIuJG5peHB3ZHBlcnBhZ2UuIiI+PGJyPjxicj5Vc2VycyBvbmx5IHdpdGggc2hlbGw/Jm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmcWJfb25seXdpdGhzaCIgdmFsdWU9IjEiPjxicj48YnI+TG9nZ2luZz8mbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZxYl9sb2dnaW5nIiB2YWx1ZT0iMSIgY2hlY2tlZD48YnI+TG9nZ2luZyB0byBmaWxlPyZuYnNwOzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmcWJfbG9nZmlsZSIgdmFsdWU9IiIuJGxvZ2ZpbGUuIiIgc2l6ZT0iIi4oc3RybGVuKCRsb2dmaWxlKSsyKihzdHJsZW4oJGxvZ2ZpbGUpLzEwKSkuIiI+PGJyPkxvZ2dpbmcgdG8gZS1tYWlsPyZuYnNwOzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmcWJfbG9nZW1haWwiIHZhbHVlPSIiLiRsb2dfZW1haWwuIiIgc2l6ZT0iIi4oc3RybGVuKCRsb2dlbWFpbCkrMiooc3RybGVuKCRsb2dlbWFpbCkvMTApKS4iIj48YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iQnJ1dGUiPjwvZm9ybT4iOw0KDQogIH0NCg0KfQ0KDQp9DQoNCmlmICgkYWN0ID09ICJkIikNCg0Kew0KDQppZiAoIWlzX2RpcigkZCkpIHtlY2hvICI8Y2VudGVyPjxiPlBlcm1pc2lvbiBkZW5pZWQhPC9iPjwvY2VudGVyPiI7fQ0KDQplbHNlDQoNCnsNCg0KICBlY2hvICI8Yj5EaXJlY3RvcnkgaW5mb3JtYXRpb246PC9iPjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTI+IjsNCg0KICBpZiAoISR3aW4pDQoNCiAgew0KDQogICBlY2hvICI8dHI+PHRkPjxiPk93bmVyL0dyb3VwPC9iPjwvdGQ+PHRkPiAiOw0KDQogICAkb3cgPSBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJGQpKTsNCg0KICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkKSk7DQoNCiAgICRyb3dbXSA9ICgkb3dbIm5hbWUiXT8kb3dbIm5hbWUiXTpmaWxlb3duZXIoJGQpKS4iLyIuKCRnclsibmFtZSJdPyRnclsibmFtZSJdOmZpbGVncm91cCgkZCkpOw0KDQogIH0NCg0KICBlY2hvICI8dHI+PHRkPjxiPlBlcm1zPC9iPjwvdGQ+PHRkPjxhIGhyZWY9IiIuJHN1cmwuImFjdD1jaG1vZCZkPSIudXJsZW5jb2RlKCRkKS4iIj48Yj4iLnZpZXdfcGVybXNfY29sb3IoJGQpLiI8L2I+PC9hPjx0cj48dGQ+PGI+Q3JlYXRlIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVjdGltZSgkZCkpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5BY2Nlc3MgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZWF0aW1lKCRkKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1PRElGWSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlbXRpbWUoJGQpKS4iPC90ZD48L3RyPjwvdGFibGU+PGJyPiI7DQoNCn0NCg0KfQ0KDQppZiAoJGFjdCA9PSAicGhwaW5mbyIpIHtAb2JfY2xlYW4oKTsgcGhwaW5mbygpOyBjOTlzaGV4aXQoKTt9DQoNCmlmICgkYWN0ID09ICJzZWN1cml0eSIpDQoNCnsNCg0KZWNobyAiPGNlbnRlcj48Yj5TZXJ2ZXIgc2VjdXJpdHkgaW5mb3JtYXRpb246PC9iPjwvY2VudGVyPjxiPk9wZW4gYmFzZSBkaXI6ICIuJGhvcGVuYmFzZWRpci4iPC9iPjxicj4iOw0KDQppZiAoISR3aW4pDQoNCnsNCg0KICBpZiAoJG5peHBhc3N3ZCkNCg0KICB7DQoNCiAgIGlmICgkbml4cGFzc3dkID09IDEpIHskbml4cGFzc3dkID0gMDt9DQoNCiAgIGVjaG8gIjxiPipuaXggL2V0Yy9wYXNzd2Q6PC9iPjxicj4iOw0KDQogICBpZiAoIWlzX251bWVyaWMoJG5peHB3ZF9zKSkgeyRuaXhwd2RfcyA9IDA7fQ0KDQogICBpZiAoIWlzX251bWVyaWMoJG5peHB3ZF9lKSkgeyRuaXhwd2RfZSA9ICRuaXhwd2RwZXJwYWdlO30NCg0KICAgZWNobyAiPGZvcm0gYWN0aW9uPSIiLiRzdXJsLiIiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ic2VjdXJpdHkiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJuaXhwYXNzd2QiIHZhbHVlPSIxIj48Yj5Gcm9tOjwvYj4mbmJzcDs8aW5wdXQgdHlwZT0idGV4dD0iIG5hbWU9Im5peHB3ZF9zIiB2YWx1ZT0iIi4kbml4cHdkX3MuIiI+Jm5ic3A7PGI+VG86PC9iPiZuYnNwOzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJuaXhwd2RfZSIgdmFsdWU9IiIuJG5peHB3ZF9lLiIiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iVmlldyI+PC9mb3JtPjxicj4iOw0KDQogICAkaSA9ICRuaXhwd2RfczsNCg0KICAgd2hpbGUgKCRpIDwgJG5peHB3ZF9lKQ0KDQogICB7DQoNCiAgICAkdWlkID0gcG9zaXhfZ2V0cHd1aWQoJGkpOw0KDQogICAgaWYgKCR1aWQpDQoNCiAgICB7DQoNCiAgICAgJHVpZFsiZGlyIl0gPSAiPGEgaHJlZj0iIi4kc3VybC4iYWN0PWxzJmQ9Ii51cmxlbmNvZGUoJHVpZFsiZGlyIl0pLiIiPiIuJHVpZFsiZGlyIl0uIjwvYT4iOw0KDQogICAgIGVjaG8gam9pbigiOiIsJHVpZCkuIjxicj4iOw0KDQogICAgfQ0KDQogICAgJGkrKzsNCg0KICAgfQ0KDQogIH0NCg0KICBlbHNlIHtlY2hvICI8YnI+PGEgaHJlZj0iIi4kc3VybC4iYWN0PXNlY3VyaXR5Jm5peHBhc3N3ZD0xJmQ9Ii4kdWQuIiI+PGI+PHU+R2V0IC9ldGMvcGFzc3dkPC91PjwvYj48L2E+PGJyPiI7fQ0KDQp9DQoNCmVsc2UNCg0Kew0KDQogICR2ID0gJF9TRVJWRVJbIldJTkRJUiJdLiJyZXBhaXJzYW0iOw0KDQogIGlmIChmaWxlX2dldF9jb250ZW50cygkdikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1yZWQ+WW91IGNhbid0IGNyYWNrIHdpbm50IHBhc3N3b3JkcygiLiR2LiIpIDwvZm9udD48L2I+PGJyPiI7fQ0KDQogIGVsc2Uge2VjaG8gIjxiPjxmb250IGNvbG9yPWdyZWVuPllvdSBjYW4gY3JhY2sgd2lubnQgcGFzc3dvcmRzLiA8YSBocmVmPSIiLiRzdXJsLiJhY3Q9ZiZmPXNhbSZkPSIuJF9TRVJWRVJbIldJTkRJUiJdLiJccmVwYWlyJmZ0PWRvd25sb2FkIj48dT48Yj5Eb3dubG9hZDwvYj48L3U+PC9hPiwgYW5kIHVzZSBsY3AuY3JhY2srID8uPC9mb250PjwvYj48YnI+Ijt9DQoNCn0NCg0KaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL3VzZXJkb21haW5zIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPSIiLiRzdXJsLiJhY3Q9ZiZmPXVzZXJkb21haW5zJmQ9Ii51cmxlbmNvZGUoIi9ldGMiKS4iJmZ0PXR4dCI+PHU+PGI+VmlldyBjcGFuZWwgdXNlci1kb21haW5zIGxvZ3M8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCg0KaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCIvdmFyL2NwYW5lbC9hY2NvdW50aW5nLmxvZyIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj1hY2NvdW50aW5nLmxvZyZkPSIudXJsZW5jb2RlKCIvdmFyL2NwYW5lbC8iKS4iIiZmdD10eHQ+PHU+PGI+VmlldyBjcGFuZWwgbG9nczwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQ0KDQppZiAoZmlsZV9nZXRfY29udGVudHMoIi91c3IvbG9jYWwvYXBhY2hlL2NvbmYvaHR0cGQuY29uZiIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj1odHRwZC5jb25mJmQ9Ii51cmxlbmNvZGUoIi91c3IvbG9jYWwvYXBhY2hlL2NvbmYiKS4iJmZ0PXR4dCI+PHU+PGI+QXBhY2hlIGNvbmZpZ3VyYXRpb24gKGh0dHBkLmNvbmYpPC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+Ijt9DQoNCmlmIChmaWxlX2dldF9jb250ZW50cygiL2V0Yy9odHRwZC5jb25mIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPSIiLiRzdXJsLiJhY3Q9ZiZmPWh0dHBkLmNvbmYmZD0iLnVybGVuY29kZSgiL2V0YyIpLiImZnQ9dHh0Ij48dT48Yj5BcGFjaGUgY29uZmlndXJhdGlvbiAoaHR0cGQuY29uZik8L2I+PC91PjwvYT48L2ZvbnQ+PC9iPjxicj4iO30NCg0KaWYgKGZpbGVfZ2V0X2NvbnRlbnRzKCIvZXRjL3N5c2xvZy5jb25mIikpIHtlY2hvICI8Yj48Zm9udCBjb2xvcj1ncmVlbj48YSBocmVmPSIiLiRzdXJsLiJhY3Q9ZiZmPXN5c2xvZy5jb25mJmQ9Ii51cmxlbmNvZGUoIi9ldGMiKS4iJmZ0PXR4dCI+PHU+PGI+U3lzbG9nIGNvbmZpZ3VyYXRpb24gKHN5c2xvZy5jb25mKTwvYj48L3U+PC9hPjwvZm9udD48L2I+PGJyPiI7fQ0KDQppZiAoZmlsZV9nZXRfY29udGVudHMoIi9ldGMvbW90ZCIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj1tb3RkJmQ9Ii51cmxlbmNvZGUoIi9ldGMiKS4iJmZ0PXR4dCI+PHU+PGI+TWVzc2FnZSBPZiBUaGUgRGF5PC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+Ijt9DQoNCmlmIChmaWxlX2dldF9jb250ZW50cygiL2V0Yy9ob3N0cyIpKSB7ZWNobyAiPGI+PGZvbnQgY29sb3I9Z3JlZW4+PGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj1ob3N0cyZkPSIudXJsZW5jb2RlKCIvZXRjIikuIiZmdD10eHQiPjx1PjxiPkhvc3RzPC9iPjwvdT48L2E+PC9mb250PjwvYj48YnI+Ijt9DQoNCmZ1bmN0aW9uIGRpc3BsYXlzZWNpbmZvKCRuYW1lLCR2YWx1ZSkge2lmICghZW1wdHkoJHZhbHVlKSkge2lmICghZW1wdHkoJG5hbWUpKSB7JG5hbWUgPSAiPGI+Ii4kbmFtZS4iIC0gPC9iPiI7fSBlY2hvICRuYW1lLm5sMmJyKCR2YWx1ZSkuIjxicj4iO319DQoNCmRpc3BsYXlzZWNpbmZvKCJPUyBWZXJzaW9uPyIsbXlzaGVsbGV4ZWMoImNhdCAvcHJvYy92ZXJzaW9uIikpOw0KDQpkaXNwbGF5c2VjaW5mbygiS2VybmVsIHZlcnNpb24/IixteXNoZWxsZXhlYygic3lzY3RsIC1hIHwgZ3JlcCB2ZXJzaW9uIikpOw0KDQpkaXNwbGF5c2VjaW5mbygiRGlzdHJpYiBuYW1lIixteXNoZWxsZXhlYygiY2F0IC9ldGMvaXNzdWUubmV0IikpOw0KDQpkaXNwbGF5c2VjaW5mbygiRGlzdHJpYiBuYW1lICgyKSIsbXlzaGVsbGV4ZWMoImNhdCAvZXRjLyotcmVhbGlzZSIpKTsNCg0KZGlzcGxheXNlY2luZm8oIkNQVT8iLG15c2hlbGxleGVjKCJjYXQgL3Byb2MvY3B1aW5mbyIpKTsNCg0KZGlzcGxheXNlY2luZm8oIlJBTSIsbXlzaGVsbGV4ZWMoImZyZWUgLW0iKSk7DQoNCmRpc3BsYXlzZWNpbmZvKCJIREQgc3BhY2UiLG15c2hlbGxleGVjKCJkZiAtaCIpKTsNCg0KZGlzcGxheXNlY2luZm8oIkxpc3Qgb2YgQXR0cmlidXRlcyIsbXlzaGVsbGV4ZWMoImxzYXR0ciAtYSIpKTsNCg0KZGlzcGxheXNlY2luZm8oIk1vdW50IG9wdGlvbnMgIixteXNoZWxsZXhlYygiY2F0IC9ldGMvZnN0YWIiKSk7DQoNCmRpc3BsYXlzZWNpbmZvKCJJcyBjVVJMIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBjdXJsIikpOw0KDQpkaXNwbGF5c2VjaW5mbygiSXMgbHlueCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggbHlueCIpKTsNCg0KZGlzcGxheXNlY2luZm8oIklzIGxpbmtzIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBsaW5rcyIpKTsNCg0KZGlzcGxheXNlY2luZm8oIklzIGZldGNoIGluc3RhbGxlZD8iLG15c2hlbGxleGVjKCJ3aGljaCBmZXRjaCIpKTsNCg0KZGlzcGxheXNlY2luZm8oIklzIEdFVCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggR0VUIikpOw0KDQpkaXNwbGF5c2VjaW5mbygiSXMgcGVybCBpbnN0YWxsZWQ/IixteXNoZWxsZXhlYygid2hpY2ggcGVybCIpKTsNCg0KZGlzcGxheXNlY2luZm8oIldoZXJlIGlzIGFwYWNoZSIsbXlzaGVsbGV4ZWMoIndoZXJlaXMgYXBhY2hlIikpOw0KDQpkaXNwbGF5c2VjaW5mbygiV2hlcmUgaXMgcGVybD8iLG15c2hlbGxleGVjKCJ3aGVyZWlzIHBlcmwiKSk7DQoNCmRpc3BsYXlzZWNpbmZvKCJsb2NhdGUgcHJvZnRwZC5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHByb2Z0cGQuY29uZiIpKTsNCg0KZGlzcGxheXNlY2luZm8oImxvY2F0ZSBodHRwZC5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIGh0dHBkLmNvbmYiKSk7DQoNCmRpc3BsYXlzZWNpbmZvKCJsb2NhdGUgbXkuY29uZiIsbXlzaGVsbGV4ZWMoImxvY2F0ZSBteS5jb25mIikpOw0KDQpkaXNwbGF5c2VjaW5mbygibG9jYXRlIHBzeWJuYy5jb25mIixteXNoZWxsZXhlYygibG9jYXRlIHBzeWJuYy5jb25mIikpOw0KDQp9DQoNCmlmICgkYWN0ID09ICJta2ZpbGUiKQ0KDQp7DQoNCmlmICgkbWtmaWxlICE9ICRkKQ0KDQp7DQoNCiAgaWYgKGZpbGVfZXhpc3RzKCRta2ZpbGUpKSB7ZWNobyAiPGI+TWFrZSBGaWxlICIiLmh0bWxzcGVjaWFsY2hhcnMoJG1rZmlsZSkuIiI8L2I+OiBvYmplY3QgYWxyZWR5IGV4aXN0cyI7fQ0KDQogIGVsc2VpZiAoIWZvcGVuKCRta2ZpbGUsInciKSkge2VjaG8gIjxiPk1ha2UgRmlsZSAiIi5odG1sc3BlY2lhbGNoYXJzKCRta2ZpbGUpLiIiPC9iPjogYWNjZXNzIGRlbmllZCI7fQ0KDQogIGVsc2UgeyRhY3QgPSAiZiI7ICRkID0gZGlybmFtZSgkbWtmaWxlKTsgaWYgKHN1YnN0cigkZCwtMSkgIT0gRElSRUNUT1JZX1NFUEFSQVRPUikgeyRkIC49IERJUkVDVE9SWV9TRVBBUkFUT1I7fSAkZiA9IGJhc2VuYW1lKCRta2ZpbGUpO30NCg0KfQ0KDQplbHNlIHskYWN0ID0gJGRzcGFjdCA9ICJscyI7fQ0KDQp9DQoNCmlmICgkYWN0ID09ICJlbmNvZGVyIikNCg0Kew0KDQplY2hvICI8c2NyaXB0PmZ1bmN0aW9uIHNldF9lbmNvZGVyX2lucHV0KHRleHQpIHtkb2N1bWVudC5mb3Jtcy5lbmNvZGVyLmlucHV0LnZhbHVlID0gdGV4dDt9PC9zY3JpcHQ+PGNlbnRlcj48Yj5FbmNvZGVyOjwvYj48L2NlbnRlcj48Zm9ybSBuYW1lPSJlbmNvZGVyIiBhY3Rpb249IiIuJHN1cmwuIiIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWVuY29kZXI+PGI+SW5wdXQ6PC9iPjxjZW50ZXI+PHRleHRhcmVhIG5hbWU9ImVuY29kZXJfaW5wdXQiIGlkPSJpbnB1dCIgY29scz01MCByb3dzPTU+Ii5AaHRtbHNwZWNpYWxjaGFycygkZW5jb2Rlcl9pbnB1dCkuIjwvdGV4dGFyZWE+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9ImNhbGN1bGF0ZSI+PGJyPjxicj48L2NlbnRlcj48Yj5IYXNoZXM8L2I+Ojxicj48Y2VudGVyPiI7DQoNCmZvcmVhY2goYXJyYXkoIm1kNSIsImNyeXB0Iiwic2hhMSIsImNyYzMyIikgYXMgJHYpDQoNCnsNCg0KICBlY2hvICR2LiIgLSA8aW5wdXQgdHlwZT10ZXh0IHNpemU9NTAgb25Gb2N1cz0idGhpcy5zZWxlY3QoKSIgb25Nb3VzZW92ZXI9InRoaXMuc2VsZWN0KCkiIG9uTW91c2VvdXQ9InRoaXMuc2VsZWN0KCkiIHZhbHVlPSIiLiR2KCRlbmNvZGVyX2lucHV0KS4iIiByZWFkb25seT48YnI+IjsNCg0KfQ0KDQplY2hvICI8L2NlbnRlcj48Yj5Vcmw6PC9iPjxjZW50ZXI+PGJyPnVybGVuY29kZSAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPSJ0aGlzLnNlbGVjdCgpIiBvbk1vdXNlb3Zlcj0idGhpcy5zZWxlY3QoKSIgb25Nb3VzZW91dD0idGhpcy5zZWxlY3QoKSIgdmFsdWU9IiIudXJsZW5jb2RlKCRlbmNvZGVyX2lucHV0KS4iIiByZWFkb25seT4NCg0KPGJyPnVybGRlY29kZSAtIDxpbnB1dCB0eXBlPXRleHQgc2l6ZT0zNSBvbkZvY3VzPSJ0aGlzLnNlbGVjdCgpIiBvbk1vdXNlb3Zlcj0idGhpcy5zZWxlY3QoKSIgb25Nb3VzZW91dD0idGhpcy5zZWxlY3QoKSIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycyh1cmxkZWNvZGUoJGVuY29kZXJfaW5wdXQpKS4iIiByZWFkb25seT4NCg0KPGJyPjwvY2VudGVyPjxiPkJhc2U2NDo8L2I+PGNlbnRlcj5iYXNlNjRfZW5jb2RlIC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9InRoaXMuc2VsZWN0KCkiIG9uTW91c2VvdmVyPSJ0aGlzLnNlbGVjdCgpIiBvbk1vdXNlb3V0PSJ0aGlzLnNlbGVjdCgpIiB2YWx1ZT0iIi5iYXNlNjRfZW5jb2RlKCRlbmNvZGVyX2lucHV0KS4iIiByZWFkb25seT48L2NlbnRlcj4iOw0KDQplY2hvICI8Y2VudGVyPmJhc2U2NF9kZWNvZGUgLSAiOw0KDQppZiAoYmFzZTY0X2VuY29kZShiYXNlNjRfZGVjb2RlKCRlbmNvZGVyX2lucHV0KSkgIT0gJGVuY29kZXJfaW5wdXQpIHtlY2hvICI8aW5wdXQgdHlwZT10ZXh0IHNpemU9MzUgdmFsdWU9ImZhaWxlZCIgZGlzYWJsZWQgcmVhZG9ubHk+Ijt9DQoNCmVsc2UNCg0Kew0KDQogICRkZWJhc2U2NCA9IGJhc2U2NF9kZWNvZGUoJGVuY29kZXJfaW5wdXQpOw0KDQogICRkZWJhc2U2NCA9IHN0cl9yZXBsYWNlKCIAIiwiWzBdIiwkZGViYXNlNjQpOw0KDQogICRhID0gZXhwbG9kZSgicm4iLCRkZWJhc2U2NCk7DQoNCiAgJHJvd3MgPSBjb3VudCgkYSk7DQoNCiAgJGRlYmFzZTY0ID0gaHRtbHNwZWNpYWxjaGFycygkZGViYXNlNjQpOw0KDQogIGlmICgkcm93cyA9PSAxKSB7ZWNobyAiPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9InRoaXMuc2VsZWN0KCkiIG9uTW91c2VvdmVyPSJ0aGlzLnNlbGVjdCgpIiBvbk1vdXNlb3V0PSJ0aGlzLnNlbGVjdCgpIiB2YWx1ZT0iIi4kZGViYXNlNjQuIiIgaWQ9ImRlYmFzZTY0IiByZWFkb25seT4iO30NCg0KICBlbHNlIHskcm93cysrOyBlY2hvICI8dGV4dGFyZWEgY29scz0iNDAiIHJvd3M9IiIuJHJvd3MuIiIgb25Gb2N1cz0idGhpcy5zZWxlY3QoKSIgb25Nb3VzZW92ZXI9InRoaXMuc2VsZWN0KCkiIG9uTW91c2VvdXQ9InRoaXMuc2VsZWN0KCkiIGlkPSJkZWJhc2U2NCIgcmVhZG9ubHk+Ii4kZGViYXNlNjQuIjwvdGV4dGFyZWE+Ijt9DQoNCiAgZWNobyAiJm5ic3A7PGEgaHJlZj0iIyIgb25jbGljaz0ic2V0X2VuY29kZXJfaW5wdXQoZG9jdW1lbnQuZm9ybXMuZW5jb2Rlci5kZWJhc2U2NC52YWx1ZSkiPjxiPl48L2I+PC9hPiI7DQoNCn0NCg0KZWNobyAiPC9jZW50ZXI+PGJyPjxiPkJhc2UgY29udmVydGF0aW9uczwvYj46PGNlbnRlcj5kZWMyaGV4IC0gPGlucHV0IHR5cGU9dGV4dCBzaXplPTM1IG9uRm9jdXM9InRoaXMuc2VsZWN0KCkiIG9uTW91c2VvdmVyPSJ0aGlzLnNlbGVjdCgpIiBvbk1vdXNlb3V0PSJ0aGlzLnNlbGVjdCgpIiB2YWx1ZT0iIjsNCg0KJGMgPSBzdHJsZW4oJGVuY29kZXJfaW5wdXQpOw0KDQpmb3IoJGk9MDskaTwkYzskaSsrKQ0KDQp7DQoNCiAgJGhleCA9IGRlY2hleChvcmQoJGVuY29kZXJfaW5wdXRbJGldKSk7DQoNCiAgaWYgKCRlbmNvZGVyX2lucHV0WyRpXSA9PSAiJiIpIHtlY2hvICRlbmNvZGVyX2lucHV0WyRpXTt9DQoNCiAgZWxzZWlmICgkZW5jb2Rlcl9pbnB1dFskaV0gIT0gIlwiKSB7ZWNobyAiJSIuJGhleDt9DQoNCn0NCg0KZWNobyAiIiByZWFkb25seT48YnI+PC9jZW50ZXI+PC9mb3JtPiI7DQoNCn0NCg0KaWYgKCRhY3QgPT0gImZzYnVmZiIpDQoNCnsNCg0KJGFycl9jb3B5ID0gJHNlc3NfZGF0YVsiY29weSJdOw0KDQokYXJyX2N1dCA9ICRzZXNzX2RhdGFbImN1dCJdOw0KDQokYXJyID0gYXJyYXlfbWVyZ2UoJGFycl9jb3B5LCRhcnJfY3V0KTsNCg0KaWYgKGNvdW50KCRhcnIpID09IDApIHtlY2hvICI8Y2VudGVyPjxiPkJ1ZmZlciBpcyBlbXB0eSE8L2I+PC9jZW50ZXI+Ijt9DQoNCmVsc2Uge2VjaG8gIjxiPkZpbGUtU3lzdGVtIGJ1ZmZlcjwvYj48YnI+PGJyPiI7ICRsc19hcnIgPSAkYXJyOyAkZGlzcF9mdWxscGF0aCA9IFRSVUU7ICRhY3QgPSAibHMiO30NCg0KfQ0KDQppZiAoJGFjdCA9PSAic2VsZnJlbW92ZSIpDQoNCnsNCg0KaWYgKCgkc3VibWl0ID09ICRybmRjb2RlKSBhbmQgKCRzdWJtaXQgIT0gIiIpKQ0KDQp7DQoNCiAgaWYgKHVubGluayhfX0ZJTEVfXykpIHtAb2JfY2xlYW4oKTsgZWNobyAiVGhhbmtzIGZvciB1c2luZyBjOTlzaGVsbCB2LiIuJHNodmVyLiIhIjsgYzk5c2hleGl0KCk7IH0NCg0KICBlbHNlIHtlY2hvICI8Y2VudGVyPjxiPkNhbid0IGRlbGV0ZSAiLl9fRklMRV9fLiIhPC9iPjwvY2VudGVyPiI7fQ0KDQp9DQoNCmVsc2UNCg0Kew0KDQogIGlmICghZW1wdHkoJHJuZGNvZGUpKSB7ZWNobyAiPGI+RXJyb3I6IGluY29ycmVjdCBjb25maW1hdGlvbiE8L2I+Ijt9DQoNCiAgJHJuZCA9IHJhbmQoMCw5KS5yYW5kKDAsOSkucmFuZCgwLDkpOw0KDQogIGVjaG8gIjxmb3JtIGFjdGlvbj0iIi4kc3VybC4iIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9c2VsZnJlbW92ZT48Yj5TZWxmLXJlbW92ZTogIi5fX0ZJTEVfXy4iIDxicj48Yj5BcmUgeW91IHN1cmU/PGJyPkZvciBjb25maXJtYXRpb24sIGVudGVyICIiLiRybmQuIiI8L2I+OiZuYnNwOzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXJuZGNvZGUgdmFsdWU9IiIuJHJuZC4iIj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3VibWl0PiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iWUVTIj48L2Zvcm0+IjsNCg0KfQ0KDQp9DQoNCmlmICgkYWN0ID09ICJ1cGRhdGUiKSB7JHJldCA9IGM5OXNoX2dldHVwZGF0ZSghISRjb25maXJtdXBkYXRlKTsgZWNobyAiPGI+Ii4kcmV0LiI8L2I+IjsgaWYgKHN0cmlzdHIoJHJldCwibmV3IHZlcnNpb24iKSkge2VjaG8gIjxicj48YnI+PGlucHV0IHR5cGU9YnV0dG9uIG9uY2xpY2s9ImxvY2F0aW9uLmhyZWY9JyIuJHN1cmwuImFjdD11cGRhdGUmY29uZmlybXVwZGF0ZT0xJzsiIHZhbHVlPSJVcGRhdGUgbm93Ij4iO319DQoNCmlmICgkYWN0ID09ICJmZWVkYmFjayIpDQoNCnsNCg0KJHN1cHBtYWlsID0gYmFzZTY0X2RlY29kZSgiWXprNWMyaGxiR3hBWTJOMFpXRnRMbkoxIik7DQoNCmlmICghZW1wdHkoJHN1Ym1pdCkpDQoNCnsNCg0KICAkdGlja2V0ID0gc3Vic3RyKG1kNShtaWNyb3RpbWUoKStyYW5kKDEsMTAwMCkpLDAsNik7DQoNCiAgJGJvZHkgPSAiYzk5c2hlbGwgdi4iLiRzaHZlci4iIGZlZWRiYWNrICMiLiR0aWNrZXQuIm5OYW1lOiAiLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfbmFtZSkuIm5FLW1haWw6ICIuaHRtbHNwZWNpYWxjaGFycygkZmRia19lbWFpbCkuIm5NZXNzYWdlOm4iLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfYm9keSkuIm5uSVA6ICIuJFJFTU9URV9BRERSOw0KDQogIGlmICghZW1wdHkoJGZkYmtfcmVmKSkNCg0KICB7DQoNCiAgICR0bXAgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7DQoNCiAgIG9iX2NsZWFuKCk7DQoNCiAgIHBocGluZm8oKTsNCg0KICAgJHBocGluZm8gPSBiYXNlNjRfZW5jb2RlKG9iX2dldF9jb250ZW50cygpKTsNCg0KICAgb2JfY2xlYW4oKTsNCg0KICAgZWNobyAkdG1wOw0KDQogICAkYm9keSAuPSAibiIuInBocGluZm8oKTogIi4kcGhwaW5mby4ibiIuIiRHTE9CQUxTPSIuYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJEdMT0JBTFMpKS4ibiI7DQoNCiAgfQ0KDQogIG1haWwoJHN1cHBtYWlsLCJjOTlzaGVsbCB2LiIuJHNodmVyLiIgZmVlZGJhY2sgIyIuJHRpY2tldCwkYm9keSwiRlJPTTogIi4kc3VwcG1haWwpOw0KDQogIGVjaG8gIjxjZW50ZXI+PGI+VGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrISBZb3VyIHRpY2tldCBJRDogIi4kdGlja2V0LiIuPC9iPjwvY2VudGVyPiI7DQoNCn0NCg0KZWxzZSB7ZWNobyAiPGZvcm0gYWN0aW9uPSIiLiRzdXJsLiIiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1mZWVkYmFjaz48Yj5GZWVkYmFjayBvciByZXBvcnQgYnVnICgiLnN0cl9yZXBsYWNlKGFycmF5KCJAIiwiLiIpLGFycmF5KCJbYXRdIiwiW2RvdF0iKSwkc3VwcG1haWwpLiIpOjxicj48YnI+WW91ciBuYW1lOiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmRia19uYW1lIiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRmZGJrX25hbWUpLiIiPjxicj48YnI+WW91ciBlLW1haWw6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmZGJrX2VtYWlsIiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRmZGJrX2VtYWlsKS4iIj48YnI+PGJyPk1lc3NhZ2U6PGJyPjx0ZXh0YXJlYSBuYW1lPSJmZGJrX2JvZHkiIGNvbHM9ODAgcm93cz0xMD4iLmh0bWxzcGVjaWFsY2hhcnMoJGZkYmtfYm9keSkuIjwvdGV4dGFyZWE+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmRia19yZWYiIHZhbHVlPSIiLnVybGVuY29kZSgkSFRUUF9SRUZFUkVSKS4iIj48YnI+PGJyPkF0dGFjaCBzZXJ2ZXItaW5mbyAqIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmRia19zZXJ2aW5mIiB2YWx1ZT0iMSIgY2hlY2tlZD48YnI+PGJyPlRoZXJlIGFyZSBubyBjaGVja2luZyBpbiB0aGUgZm9ybS48YnI+PGJyPiogLSBzdHJvbmdseSByZWNvbW1lbmRlZCwgaWYgeW91IHJlcG9ydCBidWcsIGJlY2F1c2Ugd2UgbmVlZCBpdCBmb3IgYnVnLWZpeC48YnI+PGJyPldlIHVuZGVyc3RhbmQgbGFuZ3VhZ2VzOiBFbmdsaXNoLCBSdXNzaWFuLjxicj48YnI+PGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iU2VuZCI+PC9mb3JtPiI7fQ0KDQp9DQoNCmlmICgkYWN0ID09ICJzZWFyY2giKQ0KDQp7DQoNCmVjaG8gIjxiPlNlYXJjaCBpbiBmaWxlLXN5c3RlbTo8L2I+PGJyPiI7DQoNCmlmIChlbXB0eSgkc2VhcmNoX2luKSkgeyRzZWFyY2hfaW4gPSAkZDt9DQoNCmlmIChlbXB0eSgkc2VhcmNoX25hbWUpKSB7JHNlYXJjaF9uYW1lID0gIiguKikiOyAkc2VhcmNoX25hbWVfcmVnZXhwID0gMTt9DQoNCmlmIChlbXB0eSgkc2VhcmNoX3RleHRfd3dvKSkgeyRzZWFyY2hfdGV4dF9yZWdleHAgPSAwO30NCg0KaWYgKCFlbXB0eSgkc3VibWl0KSkNCg0Kew0KDQogICRmb3VuZCA9IGFycmF5KCk7DQoNCiAgJGZvdW5kX2QgPSAwOw0KDQogICRmb3VuZF9mID0gMDsNCg0KICAkc2VhcmNoX2lfZiA9IDA7DQoNCiAgJHNlYXJjaF9pX2QgPSAwOw0KDQogICRhID0gYXJyYXkNCg0KICAoDQoNCiAgICJuYW1lIj0+JHNlYXJjaF9uYW1lLCAibmFtZV9yZWdleHAiPT4kc2VhcmNoX25hbWVfcmVnZXhwLA0KDQogICAidGV4dCI9PiRzZWFyY2hfdGV4dCwgInRleHRfcmVnZXhwIj0+JHNlYXJjaF90ZXh0X3JlZ3hwLA0KDQogICAidGV4dF93d28iPT4kc2VhcmNoX3RleHRfd3dvLA0KDQogICAidGV4dF9jcyI9PiRzZWFyY2hfdGV4dF9jcywNCg0KICAgInRleHRfbm90Ij0+JHNlYXJjaF90ZXh0X25vdA0KDQogICk7DQoNCiAgJHNlYXJjaHRpbWUgPSBnZXRtaWNyb3RpbWUoKTsNCg0KICAkaW4gPSBhcnJheV91bmlxdWUoZXhwbG9kZSgiOyIsJHNlYXJjaF9pbikpOw0KDQogIGZvcmVhY2goJGluIGFzICR2KSB7Yzk5ZnNlYXJjaCgkdik7fQ0KDQogICRzZWFyY2h0aW1lID0gcm91bmQoZ2V0bWljcm90aW1lKCktJHNlYXJjaHRpbWUsNCk7DQoNCiAgaWYgKGNvdW50KCRmb3VuZCkgPT0gMCkge2VjaG8gIjxiPk5vIGZpbGVzIGZvdW5kITwvYj4iO30NCg0KICBlbHNlDQoNCiAgew0KDQogICAkbHNfYXJyID0gJGZvdW5kOw0KDQogICAkZGlzcF9mdWxscGF0aCA9IFRSVUU7DQoNCiAgICRhY3QgPSAibHMiOw0KDQogIH0NCg0KfQ0KDQplY2hvICI8Zm9ybSBtZXRob2Q9UE9TVD4NCg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSIiLiRkaXNwZC4iIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9IiIuJGRzcGFjdC4iIj4NCg0KPGI+U2VhcmNoIGZvciAoZmlsZS9mb2xkZXIgbmFtZSk6IDwvYj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2VhcmNoX25hbWUiIHNpemU9IiIucm91bmQoc3RybGVuKCRzZWFyY2hfbmFtZSkrMjUpLiIiIHZhbHVlPSIiLmh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaF9uYW1lKS4iIj4mbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNlYXJjaF9uYW1lX3JlZ2V4cCIgdmFsdWU9IjEiICIuKCRzZWFyY2hfbmFtZV9yZWdleHAgPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIHJlZ2V4cA0KDQo8YnI+PGI+U2VhcmNoIGluIChleHBsb2RlICI7Iik6IDwvYj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2VhcmNoX2luIiBzaXplPSIiLnJvdW5kKHN0cmxlbigkc2VhcmNoX2luKSsyNSkuIiIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkc2VhcmNoX2luKS4iIj4NCg0KPGJyPjxicj48Yj5UZXh0OjwvYj48YnI+PHRleHRhcmVhIG5hbWU9InNlYXJjaF90ZXh0IiBjb2xzPSIxMjIiIHJvd3M9IjEwIj4iLmh0bWxzcGVjaWFsY2hhcnMoJHNlYXJjaF90ZXh0KS4iPC90ZXh0YXJlYT4NCg0KPGJyPjxicj48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNlYXJjaF90ZXh0X3JlZ2V4cCIgdmFsdWU9IjEiICIuKCRzZWFyY2hfdGV4dF9yZWdleHAgPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIHJlZ2V4cA0KDQombmJzcDsmbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNlYXJjaF90ZXh0X3d3byIgdmFsdWU9IjEiICIuKCRzZWFyY2hfdGV4dF93d28gPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIDx1Pnc8L3U+aG9sZSB3b3JkcyBvbmx5DQoNCiZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic2VhcmNoX3RleHRfY3MiIHZhbHVlPSIxIiAiLigkc2VhcmNoX3RleHRfY3MgPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIGNhczx1PmU8L3U+IHNlbnNpdGl2ZQ0KDQombmJzcDsmbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InNlYXJjaF90ZXh0X25vdCIgdmFsdWU9IjEiICIuKCRzZWFyY2hfdGV4dF9ub3QgPT0gMT8iIGNoZWNrZWQiOiIiKS4iPiAtIGZpbmQgZmlsZXMgPHU+Tk9UPC91PiBjb250YWluaW5nIHRoZSB0ZXh0DQoNCjxicj48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJTZWFyY2giPjwvZm9ybT4iOw0KDQppZiAoJGFjdCA9PSAibHMiKSB7JGRzcGFjdCA9ICRhY3Q7IGVjaG8gIjxociBzaXplPSIxIiBub3NoYWRlPjxiPlNlYXJjaCB0b29rICIuJHNlYXJjaHRpbWUuIiBzZWNzICgiLiRzZWFyY2hfaV9mLiIgZmlsZXMgYW5kICIuJHNlYXJjaF9pX2QuIiBmb2xkZXJzLCAiLnJvdW5kKCgkc2VhcmNoX2lfZiskc2VhcmNoX2lfZCkvJHNlYXJjaHRpbWUsNCkuIiBvYmplY3RzIHBlciBzZWNvbmQpLjwvYj48YnI+PGJyPiI7fQ0KDQp9DQoNCmlmICgkYWN0ID09ICJjaG1vZCIpDQoNCnsNCg0KJG1vZGUgPSBmaWxlcGVybXMoJGQuJGYpOw0KDQppZiAoISRtb2RlKSB7ZWNobyAiPGI+Q2hhbmdlIGZpbGUtbW9kZSB3aXRoIGVycm9yOjwvYj4gY2FuJ3QgZ2V0IGN1cnJlbnQgdmFsdWUuIjt9DQoNCmVsc2UNCg0Kew0KDQogICRmb3JtID0gVFJVRTsNCg0KICBpZiAoJGNobW9kX3N1Ym1pdCkNCg0KICB7DQoNCiAgICRvY3RldCA9ICIwIi5iYXNlX2NvbnZlcnQoKCRjaG1vZF9vWyJyIl0/MTowKS4oJGNobW9kX29bInciXT8xOjApLigkY2htb2Rfb1sieCJdPzE6MCkuKCRjaG1vZF9nWyJyIl0/MTowKS4oJGNobW9kX2dbInciXT8xOjApLigkY2htb2RfZ1sieCJdPzE6MCkuKCRjaG1vZF93WyJyIl0/MTowKS4oJGNobW9kX3dbInciXT8xOjApLigkY2htb2Rfd1sieCJdPzE6MCksMiw4KTsNCg0KICAgaWYgKGNobW9kKCRkLiRmLCRvY3RldCkpIHskYWN0ID0gImxzIjsgJGZvcm0gPSBGQUxTRTsgJGVyciA9ICIiO30NCg0KICAgZWxzZSB7JGVyciA9ICJDYW4ndCBjaG1vZCB0byAiLiRvY3RldC4iLiI7fQ0KDQogIH0NCg0KICBpZiAoJGZvcm0pDQoNCiAgew0KDQogICAkcGVybXMgPSBwYXJzZV9wZXJtcygkbW9kZSk7DQoNCiAgIGVjaG8gIjxiPkNoYW5naW5nIGZpbGUtbW9kZSAoIi4kZC4kZi4iKSwgIi52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iICgiLnN1YnN0cihkZWNvY3QoZmlsZXBlcm1zKCRkLiRmKSksLTQsNCkuIik8L2I+PGJyPiIuKCRlcnI/IjxiPkVycm9yOjwvYj4gIi4kZXJyOiIiKS4iPGZvcm0gYWN0aW9uPSIiLiRzdXJsLiIiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWQgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkZCkuIiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRmKS4iIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9Y2htb2Q+PHRhYmxlIGFsaWduPWxlZnQgd2lkdGg9MzAwIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9NT48dHI+PHRkPjxiPk93bmVyPC9iPjxicj48YnI+PGlucHV0IHR5cGU9Y2hlY2tib3ggTkFNRT1jaG1vZF9vW3JdIHZhbHVlPTEiLigkcGVybXNbIm8iXVsiciJdPyIgY2hlY2tlZCI6IiIpLiI+Jm5ic3A7UmVhZDxicj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPWNobW9kX29bd10gdmFsdWU9MSIuKCRwZXJtc1sibyJdWyJ3Il0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtXcml0ZTxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX29beF0gdmFsdWU9MSIuKCRwZXJtc1sibyJdWyJ4Il0/IiBjaGVja2VkIjoiIikuIj5lWGVjdXRlPC90ZD48dGQ+PGI+R3JvdXA8L2I+PGJyPjxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX2dbcl0gdmFsdWU9MSIuKCRwZXJtc1siZyJdWyJyIl0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtSZWFkPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2RfZ1t3XSB2YWx1ZT0xIi4oJHBlcm1zWyJnIl1bInciXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1dyaXRlPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2RfZ1t4XSB2YWx1ZT0xIi4oJHBlcm1zWyJnIl1bIngiXT8iIGNoZWNrZWQiOiIiKS4iPmVYZWN1dGU8L2ZvbnQ+PC90ZD48dGQ+PGI+V29ybGQ8L2I+PGJyPjxicj48aW5wdXQgdHlwZT1jaGVja2JveCBOQU1FPWNobW9kX3dbcl0gdmFsdWU9MSIuKCRwZXJtc1sidyJdWyJyIl0/IiBjaGVja2VkIjoiIikuIj4mbmJzcDtSZWFkPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfd1t3XSB2YWx1ZT0xIi4oJHBlcm1zWyJ3Il1bInciXT8iIGNoZWNrZWQiOiIiKS4iPiZuYnNwO1dyaXRlPGJyPjxpbnB1dCB0eXBlPWNoZWNrYm94IE5BTUU9Y2htb2Rfd1t4XSB2YWx1ZT0xIi4oJHBlcm1zWyJ3Il1bIngiXT8iIGNoZWNrZWQiOiIiKS4iPmVYZWN1dGU8L2ZvbnQ+PC90ZD48L3RyPjx0cj48dGQ+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9Y2htb2Rfc3VibWl0IHZhbHVlPSJTYXZlIj48L3RkPjwvdHI+PC90YWJsZT48L2Zvcm0+IjsNCg0KICB9DQoNCn0NCg0KfQ0KDQppZiAoJGFjdCA9PSAidXBsb2FkIikNCg0Kew0KDQokdXBsb2FkbWVzcyA9ICIiOw0KDQokdXBsb2FkcGF0aCA9IHN0cl9yZXBsYWNlKCJcIixESVJFQ1RPUllfU0VQQVJBVE9SLCR1cGxvYWRwYXRoKTsNCg0KaWYgKGVtcHR5KCR1cGxvYWRwYXRoKSkgeyR1cGxvYWRwYXRoID0gJGQ7fQ0KDQplbHNlaWYgKHN1YnN0cigkdXBsb2FkcGF0aCwtMSkgIT0gIi8iKSB7JHVwbG9hZHBhdGggLj0gIi8iO30NCg0KaWYgKCFlbXB0eSgkc3VibWl0KSkNCg0Kew0KDQogIGdsb2JhbCAkSFRUUF9QT1NUX0ZJTEVTOw0KDQogICR1cGxvYWRmaWxlID0gJEhUVFBfUE9TVF9GSUxFU1sidXBsb2FkZmlsZSJdOw0KDQogIGlmICghZW1wdHkoJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0pKQ0KDQogIHsNCg0KICAgaWYgKGVtcHR5KCR1cGxvYWRmaWxlbmFtZSkpIHskZGVzdGluID0gJHVwbG9hZGZpbGVbIm5hbWUiXTt9DQoNCiAgIGVsc2UgeyRkZXN0aW4gPSAkdXNlcmZpbGVuYW1lO30NCg0KICAgaWYgKCFtb3ZlX3VwbG9hZGVkX2ZpbGUoJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0sJHVwbG9hZHBhdGguJGRlc3RpbikpIHskdXBsb2FkbWVzcyAuPSAiRXJyb3IgdXBsb2FkaW5nIGZpbGUgIi4kdXBsb2FkZmlsZVsibmFtZSJdLiIgKGNhbid0IGNvcHkgIiIuJHVwbG9hZGZpbGVbInRtcF9uYW1lIl0uIiIgdG8gIiIuJHVwbG9hZHBhdGguJGRlc3Rpbi4iIiE8YnI+Ijt9DQoNCiAgfQ0KDQogIGVsc2VpZiAoIWVtcHR5KCR1cGxvYWR1cmwpKQ0KDQogIHsNCg0KICAgaWYgKCFlbXB0eSgkdXBsb2FkZmlsZW5hbWUpKSB7JGRlc3RpbiA9ICR1cGxvYWRmaWxlbmFtZTt9DQoNCiAgIGVsc2UNCg0KICAgew0KDQogICAgJGRlc3RpbiA9IGV4cGxvZGUoIi8iLCRkZXN0aW4pOw0KDQogICAgJGRlc3RpbiA9ICRkZXN0aW5bY291bnQoJGRlc3RpbiktMV07DQoNCiAgICBpZiAoZW1wdHkoJGRlc3RpbikpDQoNCiAgICB7DQoNCiAgICAgJGkgPSAwOw0KDQogICAgICRiID0gIiI7DQoNCiAgICAgd2hpbGUoZmlsZV9leGlzdHMoJHVwbG9hZHBhdGguJGRlc3RpbikpIHtpZiAoJGkgPiAwKSB7JGIgPSAiXyIuJGk7fSAkZGVzdGluID0gImluZGV4Ii4kYi4iLmh0bWwiOyAkaSsrO319DQoNCiAgIH0NCg0KICAgaWYgKCghZXJlZ2koImh0dHA6Ly8iLCR1cGxvYWR1cmwpKSBhbmQgKCFlcmVnaSgiaHR0cHM6Ly8iLCR1cGxvYWR1cmwpKSBhbmQgKCFlcmVnaSgiZnRwOi8vIiwkdXBsb2FkdXJsKSkpIHtlY2hvICI8Yj5JbmNvcmVjdCB1cmwhPC9iPjxicj4iO30NCg0KICAgZWxzZQ0KDQogICB7DQoNCiAgICAkc3QgPSBnZXRtaWNyb3RpbWUoKTsNCg0KICAgICRjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCR1cGxvYWR1cmwpOw0KDQogICAgJGR0ID0gcm91bmQoZ2V0bWljcm90aW1lKCktJHN0LDQpOw0KDQogICAgaWYgKCEkY29udGVudCkgeyR1cGxvYWRtZXNzIC49ICAiQ2FuJ3QgZG93bmxvYWQgZmlsZSE8YnI+Ijt9DQoNCiAgICBlbHNlDQoNCiAgICB7DQoNCiAgICAgaWYgKCRmaWxlc3RlYWx0aCkgeyRzdGF0ID0gc3RhdCgkdXBsb2FkcGF0aC4kZGVzdGluKTt9DQoNCiAgICAgJGZwID0gZm9wZW4oJHVwbG9hZHBhdGguJGRlc3RpbiwidyIpOw0KDQogICAgIGlmICghJGZwKSB7JHVwbG9hZG1lc3MgLj0gIkVycm9yIHdyaXRpbmcgdG8gZmlsZSAiLmh0bWxzcGVjaWFsY2hhcnMoJGRlc3RpbikuIiE8YnI+Ijt9DQoNCiAgICAgZWxzZQ0KDQogICAgIHsNCg0KICAgICAgZndyaXRlKCRmcCwkY29udGVudCxzdHJsZW4oJGNvbnRlbnQpKTsNCg0KICAgICAgZmNsb3NlKCRmcCk7DQoNCiAgICAgIGlmICgkZmlsZXN0ZWFsdGgpIHt0b3VjaCgkdXBsb2FkcGF0aC4kZGVzdGluLCRzdGF0WzldLCRzdGF0WzhdKTt9DQoNCiAgICAgfQ0KDQogICAgfQ0KDQogICB9DQoNCiAgfQ0KDQp9DQoNCmlmICgkbWluaWZvcm0pDQoNCnsNCg0KICBlY2hvICI8Yj4iLiR1cGxvYWRtZXNzLiI8L2I+IjsNCg0KICAkYWN0ID0gImxzIjsNCg0KfQ0KDQplbHNlDQoNCnsNCg0KICBlY2hvICI8Yj5GaWxlIHVwbG9hZDo8L2I+PGJyPjxiPiIuJHVwbG9hZG1lc3MuIjwvYj48Zm9ybSBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249IiIuJHN1cmwuImFjdD11cGxvYWQmZD0iLnVybGVuY29kZSgkZCkuIiIgbWV0aG9kPVBPU1Q+DQoNClNlbGVjdCBmaWxlIG9uIHlvdXIgbG9jYWwgY29tcHV0ZXI6IDxpbnB1dCBuYW1lPSJ1cGxvYWRmaWxlIiB0eXBlPSJmaWxlIj48YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7b3I8YnI+DQoNCklucHV0IFVSTDogPGlucHV0IG5hbWU9InVwbG9hZHVybCIgdHlwZT0idGV4dCIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkdXBsb2FkdXJsKS4iIiBzaXplPSI3MCI+PGJyPjxicj4NCg0KU2F2ZSB0aGlzIGZpbGUgZGlyOiA8aW5wdXQgbmFtZT0idXBsb2FkcGF0aCIgc2l6ZT0iNzAiIHZhbHVlPSIiLiRkaXNwZC4iIj48YnI+PGJyPg0KDQpGaWxlLW5hbWUgKGF1dG8tZmlsbCk6IDxpbnB1dCBuYW1lPXVwbG9hZGZpbGVuYW1lIHNpemU9MjU+PGJyPjxicj4NCg0KPGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT11cGxvYWRhdXRvbmFtZSB2YWx1ZT0xIGlkPWRmND4mbmJzcDtjb252ZXJ0IGZpbGUgbmFtZSB0byBsb3ZlcmNhc2U8YnI+PGJyPg0KDQo8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IlVwbG9hZCI+DQoNCjwvZm9ybT4iOw0KDQp9DQoNCn0NCg0KaWYgKCRhY3QgPT0gImRlbGV0ZSIpDQoNCnsNCg0KJGRlbGVyciA9ICIiOw0KDQpmb3JlYWNoICgkYWN0Ym94IGFzICR2KQ0KDQp7DQoNCiAgJHJlc3VsdCA9IEZBTFNFOw0KDQogICRyZXN1bHQgPSBmc19ybW9iaigkdik7DQoNCiAgaWYgKCEkcmVzdWx0KSB7JGRlbGVyciAuPSAiQ2FuJ3QgZGVsZXRlICIuaHRtbHNwZWNpYWxjaGFycygkdikuIjxicj4iO30NCg0KfQ0KDQppZiAoIWVtcHR5KCRkZWxlcnIpKSB7ZWNobyAiPGI+RGVsZXRpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iLiRkZWxlcnI7fQ0KDQokYWN0ID0gImxzIjsNCg0KfQ0KDQppZiAoISR1c2Vmc2J1ZmYpDQoNCnsNCg0KaWYgKCgkYWN0ID09ICJwYXN0ZSIpIG9yICgkYWN0ID09ICJjb3B5Iikgb3IgKCRhY3QgPT0gImN1dCIpIG9yICgkYWN0ID09ICJ1bnNlbGVjdCIpKSB7ZWNobyAiPGNlbnRlcj48Yj5Tb3JyeSwgYnVmZmVyIGlzIGRpc2FibGVkLiBGb3IgZW5hYmxlLCBzZXQgZGlyZWN0aXZlICIkdXNlRlNidWZmIiBhcyBUUlVFLjwvY2VudGVyPiI7fQ0KDQp9DQoNCmVsc2UNCg0Kew0KDQppZiAoJGFjdCA9PSAiY29weSIpIHskZXJyID0gIiI7ICRzZXNzX2RhdGFbImNvcHkiXSA9IGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkYWN0Ym94KTsgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOyAkYWN0ID0gImxzIjsgfQ0KDQplbHNlaWYgKCRhY3QgPT0gImN1dCIpIHskc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImN1dCJdLCRhY3Rib3gpOyBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICRhY3QgPSAibHMiO30NCg0KZWxzZWlmICgkYWN0ID09ICJ1bnNlbGVjdCIpIHtmb3JlYWNoICgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7aWYgKGluX2FycmF5KCR2LCRhY3Rib3gpKSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fX0gZm9yZWFjaCAoJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KSB7aWYgKGluX2FycmF5KCR2LCRhY3Rib3gpKSB7dW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTt9fSBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7ICRhY3QgPSAibHMiO30NCg0KaWYgKCRhY3RlbXB0eWJ1ZmYpIHskc2Vzc19kYXRhWyJjb3B5Il0gPSAkc2Vzc19kYXRhWyJjdXQiXSA9IGFycmF5KCk7IGM5OV9zZXNzX3B1dCgkc2Vzc19kYXRhKTt9DQoNCmVsc2VpZiAoJGFjdHBhc3RlYnVmZikNCg0Kew0KDQogICRwc3RlcnIgPSAiIjsNCg0KICBmb3JlYWNoKCRzZXNzX2RhdGFbImNvcHkiXSBhcyAkaz0+JHYpDQoNCiAgew0KDQogICAkdG8gPSAkZC5iYXNlbmFtZSgkdik7DQoNCiAgIGlmICghZnNfY29weV9vYmooJHYsJHRvKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KDQogICBpZiAoJGNvcHlfdW5zZXQpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9DQoNCiAgfQ0KDQogIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KQ0KDQogIHsNCg0KICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOw0KDQogICBpZiAoIWZzX21vdmVfb2JqKCR2LCR0bykpIHskcHN0ZXJyIC49ICJDYW4ndCBtb3ZlICIuJHYuIiB0byAiLiR0by4iITxicj4iO30NCg0KICAgdW5zZXQoJHNlc3NfZGF0YVsiY3V0Il1bJGtdKTsNCg0KICB9DQoNCiAgYzk5X3Nlc3NfcHV0KCRzZXNzX2RhdGEpOw0KDQogIGlmICghZW1wdHkoJHBzdGVycikpIHtlY2hvICI8Yj5QYXN0aW5nIHdpdGggZXJyb3JzOjwvYj48YnI+Ii4kcHN0ZXJyO30NCg0KICAkYWN0ID0gImxzIjsNCg0KfQ0KDQplbHNlaWYgKCRhY3RhcmNidWZmKQ0KDQp7DQoNCiAgJGFyY2VyciA9ICIiOw0KDQogIGlmIChzdWJzdHIoJGFjdGFyY2J1ZmZfcGF0aCwtNyw3KSA9PSAiLnRhci5neiIpIHskZXh0ID0gIi50YXIuZ3oiO30NCg0KICBlbHNlIHskZXh0ID0gIi50YXIuZ3oiO30NCg0KICBpZiAoJGV4dCA9PSAiLnRhci5neiIpIHskY21kbGluZSA9ICJ0YXIgY2Z6diI7fQ0KDQogICRjbWRsaW5lIC49ICIgIi4kYWN0YXJjYnVmZl9wYXRoOw0KDQogICRvYmplY3RzID0gYXJyYXlfbWVyZ2UoJHNlc3NfZGF0YVsiY29weSJdLCRzZXNzX2RhdGFbImN1dCJdKTsNCg0KICBmb3JlYWNoKCRvYmplY3RzIGFzICR2KQ0KDQogIHsNCg0KICAgJHYgPSBzdHJfcmVwbGFjZSgiXCIsRElSRUNUT1JZX1NFUEFSQVRPUiwkdik7DQoNCiAgIGlmIChzdWJzdHIoJHYsMCxzdHJsZW4oJGQpKSA9PSAkZCkgeyR2ID0gYmFzZW5hbWUoJHYpO30NCg0KICAgaWYgKGlzX2RpcigkdikpDQoNCiAgIHsNCg0KICAgIGlmIChzdWJzdHIoJHYsLTEpICE9IERJUkVDVE9SWV9TRVBBUkFUT1IpIHskdiAuPSBESVJFQ1RPUllfU0VQQVJBVE9SO30NCg0KICAgICR2IC49ICIqIjsNCg0KICAgfQ0KDQogICAkY21kbGluZSAuPSAiICIuJHY7DQoNCiAgfQ0KDQogICR0bXAgPSByZWFscGF0aCgiLiIpOw0KDQogIGNoZGlyKCRkKTsNCg0KICAkcmV0ID0gbXlzaGVsbGV4ZWMoJGNtZGxpbmUpOw0KDQogIGNoZGlyKCR0bXApOw0KDQogIGlmIChlbXB0eSgkcmV0KSkgeyRhcmNlcnIgLj0gIkNhbid0IGNhbGwgYXJjaGl2YXRvciAoIi5odG1sc3BlY2lhbGNoYXJzKHN0cjJtaW5pKCRjbWRsaW5lLDYwKSkuIikhPGJyPiI7fQ0KDQogICRyZXQgPSBzdHJfcmVwbGFjZSgicm4iLCJuIiwkcmV0KTsNCg0KICAkcmV0ID0gZXhwbG9kZSgibiIsJHJldCk7DQoNCiAgaWYgKCRjb3B5X3Vuc2V0KSB7Zm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KSB7dW5zZXQoJHNlc3NfZGF0YVsiY29weSJdWyRrXSk7fX0NCg0KICBmb3JlYWNoKCRzZXNzX2RhdGFbImN1dCJdIGFzICRrPT4kdikNCg0KICB7DQoNCiAgIGlmIChpbl9hcnJheSgkdiwkcmV0KSkge2ZzX3Jtb2JqKCR2KTt9DQoNCiAgIHVuc2V0KCRzZXNzX2RhdGFbImN1dCJdWyRrXSk7DQoNCiAgfQ0KDQogIGM5OV9zZXNzX3B1dCgkc2Vzc19kYXRhKTsNCg0KICBpZiAoIWVtcHR5KCRhcmNlcnIpKSB7ZWNobyAiPGI+QXJjaGl2YXRpb24gZXJyb3JzOjwvYj48YnI+Ii4kYXJjZXJyO30NCg0KICAkYWN0ID0gImxzIjsNCg0KfQ0KDQplbHNlaWYgKCRhY3RwYXN0ZWJ1ZmYpDQoNCnsNCg0KICAkcHN0ZXJyID0gIiI7DQoNCiAgZm9yZWFjaCgkc2Vzc19kYXRhWyJjb3B5Il0gYXMgJGs9PiR2KQ0KDQogIHsNCg0KICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOw0KDQogICBpZiAoIWZzX2NvcHlfb2JqKCR2LCRkKSkgeyRwc3RlcnIgLj0gIkNhbid0IGNvcHkgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KDQogICBpZiAoJGNvcHlfdW5zZXQpIHt1bnNldCgkc2Vzc19kYXRhWyJjb3B5Il1bJGtdKTt9DQoNCiAgfQ0KDQogIGZvcmVhY2goJHNlc3NfZGF0YVsiY3V0Il0gYXMgJGs9PiR2KQ0KDQogIHsNCg0KICAgJHRvID0gJGQuYmFzZW5hbWUoJHYpOw0KDQogICBpZiAoIWZzX21vdmVfb2JqKCR2LCRkKSkgeyRwc3RlcnIgLj0gIkNhbid0IG1vdmUgIi4kdi4iIHRvICIuJHRvLiIhPGJyPiI7fQ0KDQogICB1bnNldCgkc2Vzc19kYXRhWyJjdXQiXVska10pOw0KDQogIH0NCg0KICBjOTlfc2Vzc19wdXQoJHNlc3NfZGF0YSk7DQoNCiAgaWYgKCFlbXB0eSgkcHN0ZXJyKSkge2VjaG8gIjxiPlBhc3Rpbmcgd2l0aCBlcnJvcnM6PC9iPjxicj4iLiRwc3RlcnI7fQ0KDQogICRhY3QgPSAibHMiOw0KDQp9DQoNCn0NCg0KaWYgKCRhY3QgPT0gImNtZCIpDQoNCnsNCg0KaWYgKHRyaW0oJGNtZCkgPT0gInBzIC1hdXgiKSB7JGFjdCA9ICJwcm9jZXNzZXMiO30NCg0KZWxzZWlmICh0cmltKCRjbWQpID09ICJ0YXNrbGlzdCIpIHskYWN0ID0gInByb2Nlc3NlcyI7fQ0KDQplbHNlDQoNCnsNCg0KQGNoZGlyKCRjaGRpcik7DQoNCmlmICghZW1wdHkoJHN1Ym1pdCkpDQoNCnsNCg0KICBlY2hvICI8Yj5SZXN1bHQgb2YgZXhlY3V0aW9uIHRoaXMgY29tbWFuZDwvYj46PGJyPiI7DQoNCiAgJG9sZGRpciA9IHJlYWxwYXRoKCIuIik7DQoNCiAgQGNoZGlyKCRkKTsNCg0KICAkcmV0ID0gbXlzaGVsbGV4ZWMoJGNtZCk7DQoNCiAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KDQogIGlmICgkY21kX3R4dCkNCg0KICB7DQoNCiAgICRyb3dzID0gY291bnQoZXhwbG9kZSgicm4iLCRyZXQpKSsxOw0KDQogICBpZiAoJHJvd3MgPCAxMCkgeyRyb3dzID0gMTA7fQ0KDQogICBlY2hvICI8YnI+PHRleHRhcmVhIGNvbHM9IjEyMiIgcm93cz0iIi4kcm93cy4iIiByZWFkb25seT4iLmh0bWxzcGVjaWFsY2hhcnMoJHJldCkuIjwvdGV4dGFyZWE+IjsNCg0KICB9DQoNCiAgZWxzZSB7ZWNobyAkcmV0LiI8YnI+Ijt9DQoNCiAgQGNoZGlyKCRvbGRkaXIpOw0KDQp9DQoNCmVsc2Uge2VjaG8gIjxiPkV4ZWN1dGlvbiBjb21tYW5kPC9iPiI7IGlmIChlbXB0eSgkY21kX3R4dCkpIHskY21kX3R4dCA9IFRSVUU7fX0NCg0KZWNobyAiPGZvcm0gYWN0aW9uPSIiLiRzdXJsLiIiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1jbWQ+PHRleHRhcmVhIG5hbWU9Y21kIGNvbHM9MTIyIHJvd3M9MTA+Ii5odG1sc3BlY2lhbGNoYXJzKCRjbWQpLiI8L3RleHRhcmVhPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iIi4kZGlzcGQuIiI+PGJyPjxicj48aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPiZuYnNwO0Rpc3BsYXkgaW4gdGV4dC1hcmVhJm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSIiOyBpZiAoJGNtZF90eHQpIHtlY2hvICIgY2hlY2tlZCI7fSBlY2hvICI+PC9mb3JtPiI7DQoNCn0NCg0KfQ0KDQppZiAoJGFjdCA9PSAibHMiKQ0KDQp7DQoNCmlmIChjb3VudCgkbHNfYXJyKSA+IDApIHskbGlzdCA9ICRsc19hcnI7fQ0KDQplbHNlDQoNCnsNCg0KICAkbGlzdCA9IGFycmF5KCk7DQoNCiAgaWYgKCRoID0gQG9wZW5kaXIoJGQpKQ0KDQogIHsNCg0KICAgd2hpbGUgKCgkbyA9IHJlYWRkaXIoJGgpKSAhPT0gRkFMU0UpIHskbGlzdFtdID0gJGQuJG87fQ0KDQogICBjbG9zZWRpcigkaCk7DQoNCiAgfQ0KDQogIGVsc2Uge30NCg0KfQ0KDQppZiAoY291bnQoJGxpc3QpID09IDApIHtlY2hvICI8Y2VudGVyPjxiPkNhbid0IG9wZW4gZm9sZGVyICgiLmh0bWxzcGVjaWFsY2hhcnMoJGQpLiIpITwvYj48L2NlbnRlcj4iO30NCg0KZWxzZQ0KDQp7DQoNCiAgLy9CdWlsZGluZyBhcnJheQ0KDQogICRvYmplY3RzID0gYXJyYXkoKTsNCg0KICAkdmQgPSAiZiI7IC8vVmlld2luZyBtb2RlDQoNCiAgaWYgKCR2ZCA9PSAiZiIpDQoNCiAgew0KDQogICAkb2JqZWN0c1siaGVhZCJdID0gYXJyYXkoKTsNCg0KICAgJG9iamVjdHNbImZvbGRlcnMiXSA9IGFycmF5KCk7DQoNCiAgICRvYmplY3RzWyJsaW5rcyJdID0gYXJyYXkoKTsNCg0KICAgJG9iamVjdHNbImZpbGVzIl0gPSBhcnJheSgpOw0KDQogICBmb3JlYWNoICgkbGlzdCBhcyAkdikNCg0KICAgew0KDQogICAgJG8gPSBiYXNlbmFtZSgkdik7DQoNCiAgICAkcm93ID0gYXJyYXkoKTsNCg0KICAgIGlmICgkbyA9PSAiLiIpIHskcm93W10gPSAkZC4kbzsgJHJvd1tdID0gIkxJTksiO30NCg0KICAgIGVsc2VpZiAoJG8gPT0gIi4uIikgeyRyb3dbXSA9ICRkLiRvOyAkcm93W10gPSAiTElOSyI7fQ0KDQogICAgZWxzZWlmIChpc19kaXIoJHYpKQ0KDQogICAgew0KDQogICAgIGlmIChpc19saW5rKCR2KSkgeyR0eXBlID0gIkxJTksiO30NCg0KICAgICBlbHNlIHskdHlwZSA9ICJESVIiO30NCg0KICAgICAkcm93W10gPSAkdjsNCg0KICAgICAkcm93W10gPSAkdHlwZTsNCg0KICAgIH0NCg0KICAgIGVsc2VpZihpc19maWxlKCR2KSkgeyRyb3dbXSA9ICR2OyAkcm93W10gPSBmaWxlc2l6ZSgkdik7fQ0KDQogICAgJHJvd1tdID0gZmlsZW10aW1lKCR2KTsNCg0KICAgIGlmICghJHdpbikNCg0KICAgIHsNCg0KICAgICAkb3cgPSBwb3NpeF9nZXRwd3VpZChmaWxlb3duZXIoJHYpKTsNCg0KICAgICAkZ3IgPSBwb3NpeF9nZXRncmdpZChmaWxlZ3JvdXAoJHYpKTsNCg0KICAgICAkcm93W10gPSAoJG93WyJuYW1lIl0/JG93WyJuYW1lIl06ZmlsZW93bmVyKCR2KSkuIi8iLigkZ3JbIm5hbWUiXT8kZ3JbIm5hbWUiXTpmaWxlZ3JvdXAoJHYpKTsNCg0KICAgIH0NCg0KICAgICRyb3dbXSA9IGZpbGVwZXJtcygkdik7DQoNCiAgICBpZiAoKCRvID09ICIuIikgb3IgKCRvID09ICIuLiIpKSB7JG9iamVjdHNbImhlYWQiXVtdID0gJHJvdzt9DQoNCiAgICBlbHNlaWYgKGlzX2xpbmsoJHYpKSB7JG9iamVjdHNbImxpbmtzIl1bXSA9ICRyb3c7fQ0KDQogICAgZWxzZWlmIChpc19kaXIoJHYpKSB7JG9iamVjdHNbImZvbGRlcnMiXVtdID0gJHJvdzt9DQoNCiAgICBlbHNlaWYgKGlzX2ZpbGUoJHYpKSB7JG9iamVjdHNbImZpbGVzIl1bXSA9ICRyb3c7fQ0KDQogICAgJGkrKzsNCg0KICAgfQ0KDQogICAkcm93ID0gYXJyYXkoKTsNCg0KICAgJHJvd1tdID0gIjxiPk5hbWU8L2I+IjsNCg0KICAgJHJvd1tdID0gIjxiPlNpemU8L2I+IjsNCg0KICAgJHJvd1tdID0gIjxiPk1vZGlmeTwvYj4iOw0KDQogICBpZiAoISR3aW4pDQoNCiAgeyRyb3dbXSA9ICI8Yj5Pd25lci9Hcm91cDwvYj4iO30NCg0KICAgJHJvd1tdID0gIjxiPlBlcm1zPC9iPiI7DQoNCiAgICRyb3dbXSA9ICI8Yj5BY3Rpb248L2I+IjsNCg0KICAgJHBhcnNlc29ydCA9IHBhcnNlc29ydCgkc29ydCk7DQoNCiAgICRzb3J0ID0gJHBhcnNlc29ydFswXS4kcGFyc2Vzb3J0WzFdOw0KDQogICAkayA9ICRwYXJzZXNvcnRbMF07DQoNCiAgIGlmICgkcGFyc2Vzb3J0WzFdICE9ICJhIikgeyRwYXJzZXNvcnRbMV0gPSAiZCI7fQ0KDQogICAkeSA9ICI8YSBocmVmPSIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZzb3J0PSIuJGsuKCRwYXJzZXNvcnRbMV0gPT0gImEiPyJkIjoiYSIpLiIiPiI7DQoNCiAgICR5IC49ICI8aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF8iLigkc29ydFsxXSA9PSAiYSI/ImFzYyI6ImRlc2MiKS4iIiBoZWlnaHQ9IjkiIHdpZHRoPSIxNCIgYWx0PSIiLigkcGFyc2Vzb3J0WzFdID09ICJhIj8iQXNjLiI6IkRlc2MiKS4iIiBib3JkZXI9IjAiPjwvYT4iOw0KDQogICAkcm93WyRrXSAuPSAkeTsNCg0KICAgZm9yKCRpPTA7JGk8Y291bnQoJHJvdyktMTskaSsrKQ0KDQogICB7DQoNCiAgICBpZiAoJGkgIT0gJGspIHskcm93WyRpXSA9ICI8YSBocmVmPSIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZzb3J0PSIuJGkuJHBhcnNlc29ydFsxXS4iIj4iLiRyb3dbJGldLiI8L2E+Ijt9DQoNCiAgIH0NCg0KICAgJHYgPSAkcGFyc2Vzb3J0WzBdOw0KDQogICB1c29ydCgkb2JqZWN0c1siZm9sZGVycyJdLCAidGFic29ydCIpOw0KDQogICB1c29ydCgkb2JqZWN0c1sibGlua3MiXSwgInRhYnNvcnQiKTsNCg0KICAgdXNvcnQoJG9iamVjdHNbImZpbGVzIl0sICJ0YWJzb3J0Iik7DQoNCiAgIGlmICgkcGFyc2Vzb3J0WzFdID09ICJkIikNCg0KICAgew0KDQogICAgJG9iamVjdHNbImZvbGRlcnMiXSA9IGFycmF5X3JldmVyc2UoJG9iamVjdHNbImZvbGRlcnMiXSk7DQoNCiAgICAkb2JqZWN0c1siZmlsZXMiXSA9IGFycmF5X3JldmVyc2UoJG9iamVjdHNbImZpbGVzIl0pOw0KDQogICB9DQoNCiAgICRvYmplY3RzID0gYXJyYXlfbWVyZ2UoJG9iamVjdHNbImhlYWQiXSwkb2JqZWN0c1siZm9sZGVycyJdLCRvYmplY3RzWyJsaW5rcyJdLCRvYmplY3RzWyJmaWxlcyJdKTsNCg0KICAgJHRhYiA9IGFycmF5KCk7DQoNCiAgICR0YWJbImNvbHMiXSA9IGFycmF5KCRyb3cpOw0KDQogICAkdGFiWyJoZWFkIl0gPSBhcnJheSgpOw0KDQogICAkdGFiWyJmb2xkZXJzIl0gPSBhcnJheSgpOw0KDQogICAkdGFiWyJsaW5rcyJdID0gYXJyYXkoKTsNCg0KICAgJHRhYlsiZmlsZXMiXSA9IGFycmF5KCk7DQoNCiAgICRpID0gMDsNCg0KICAgZm9yZWFjaCAoJG9iamVjdHMgYXMgJGEpDQoNCiAgIHsNCg0KICAgICR2ID0gJGFbMF07DQoNCiAgICAkbyA9IGJhc2VuYW1lKCR2KTsNCg0KICAgICRkaXIgPSBkaXJuYW1lKCR2KTsNCg0KICAgIGlmICgkZGlzcF9mdWxscGF0aCkgeyRkaXNwcGF0aCA9ICR2O30NCg0KICAgIGVsc2UgeyRkaXNwcGF0aCA9ICRvO30NCg0KICAgICRkaXNwcGF0aCA9IHN0cjJtaW5pKCRkaXNwcGF0aCw2MCk7DQoNCiAgICBpZiAoaW5fYXJyYXkoJHYsJHNlc3NfZGF0YVsiY3V0Il0pKSB7JGRpc3BwYXRoID0gIjxzdHJpa2U+Ii4kZGlzcHBhdGguIjwvc3RyaWtlPiI7fQ0KDQogICAgZWxzZWlmIChpbl9hcnJheSgkdiwkc2Vzc19kYXRhWyJjb3B5Il0pKSB7JGRpc3BwYXRoID0gIjx1PiIuJGRpc3BwYXRoLiI8L3U+Ijt9DQoNCiAgICBmb3JlYWNoICgkcmVneHBfaGlnaGxpZ2h0IGFzICRyKQ0KDQogICAgew0KDQogICAgIGlmIChlcmVnKCRyWzBdLCRvKSkNCg0KICAgICB7DQoNCiAgICAgIGlmICgoIWlzX251bWVyaWMoJHJbMV0pKSBvciAoJHJbMV0gPiAzKSkgeyRyWzFdID0gMDsgb2JfY2xlYW4oKTsgZWNobyAiV2FybmluZyEgQ29uZmlndXJhdGlvbiBlcnJvciBpbiAkcmVneHBfaGlnaGxpZ2h0WyIuJGsuIl1bMF0gLSB1bmtub3duIGNvbW1hbmQuIjsgYzk5c2hleGl0KCk7fQ0KDQogICAgICBlbHNlDQoNCiAgICAgIHsNCg0KICAgICAgICRyWzFdID0gcm91bmQoJHJbMV0pOw0KDQogICAgICAgJGlzZGlyID0gaXNfZGlyKCR2KTsNCg0KICAgICAgIGlmICgoJHJbMV0gPT0gMCkgb3IgKCgkclsxXSA9PSAxKSBhbmQgISRpc2Rpcikgb3IgKCgkclsxXSA9PSAyKSBhbmQgISRpc2RpcikpDQoNCiAgICAgICB7DQoNCiAgICAgICAgaWYgKGVtcHR5KCRyWzJdKSkgeyRyWzJdID0gIjxiPiI7ICRyWzNdID0gIjwvYj4iO30NCg0KICAgICAgICAkZGlzcHBhdGggPSAkclsyXS4kZGlzcHBhdGguJHJbM107DQoNCiAgICAgICAgaWYgKCRyWzRdKSB7YnJlYWs7fQ0KDQogICAgICAgfQ0KDQogICAgICB9DQoNCiAgICAgfQ0KDQogICAgfQ0KDQogICAgJHVvID0gdXJsZW5jb2RlKCRvKTsNCg0KICAgICR1ZCA9IHVybGVuY29kZSgkZGlyKTsNCg0KICAgICR1diA9IHVybGVuY29kZSgkdik7DQoNCiAgICAkcm93ID0gYXJyYXkoKTsNCg0KICAgIGlmICgkbyA9PSAiLiIpDQoNCiAgICB7DQoNCiAgICAgJHJvd1tdID0gIjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zbWFsbF9kaXIiIGhlaWdodD0iMTYiIHdpZHRoPSIxOSIgYm9yZGVyPSIwIj4mbmJzcDs8YSBocmVmPSIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiIiPiIuJG8uIjwvYT4iOw0KDQogICAgICRyb3dbXSA9ICJMSU5LIjsNCg0KICAgIH0NCg0KICAgIGVsc2VpZiAoJG8gPT0gIi4uIikNCg0KICAgIHsNCg0KICAgICAkcm93W10gPSAiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9sbmsiIGhlaWdodD0iMTYiIHdpZHRoPSIxOSIgYm9yZGVyPSIwIj4mbmJzcDs8YSBocmVmPSIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZShyZWFscGF0aCgkZC4kbykpLiImc29ydD0iLiRzb3J0LiIiPiIuJG8uIjwvYT4iOw0KDQogICAgICRyb3dbXSA9ICJMSU5LIjsNCg0KICAgIH0NCg0KICAgIGVsc2VpZiAoaXNfZGlyKCR2KSkNCg0KICAgIHsNCg0KICAgICBpZiAoaXNfbGluaygkdikpDQoNCiAgICAgew0KDQogICAgICAkZGlzcHBhdGggLj0gIiA9PiAiLnJlYWRsaW5rKCR2KTsNCg0KICAgICAgJHR5cGUgPSAiTElOSyI7DQoNCiAgICAgICRyb3dbXSA9ICAiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9sbmsiIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgYm9yZGVyPSIwIj4mbmJzcDs8YSBocmVmPSIiLiRzdXJsLiJhY3Q9bHMmZD0iLiR1di4iJnNvcnQ9Ii4kc29ydC4iIj5bIi4kZGlzcHBhdGguIl08L2E+IjsNCg0KICAgICB9DQoNCiAgICAgZWxzZQ0KDQogICAgIHsNCg0KICAgICAgJHR5cGUgPSAiRElSIjsNCg0KICAgICAgJHJvd1tdID0gICI8aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9c21hbGxfZGlyIiBoZWlnaHQ9IjE2IiB3aWR0aD0iMTkiIGJvcmRlcj0iMCI+Jm5ic3A7PGEgaHJlZj0iIi4kc3VybC4iYWN0PWxzJmQ9Ii4kdXYuIiZzb3J0PSIuJHNvcnQuIiI+WyIuJGRpc3BwYXRoLiJdPC9hPiI7DQoNCiAgICAgIH0NCg0KICAgICAkcm93W10gPSAkdHlwZTsNCg0KICAgIH0NCg0KICAgIGVsc2VpZihpc19maWxlKCR2KSkNCg0KICAgIHsNCg0KICAgICAkZXh0ID0gZXhwbG9kZSgiLiIsJG8pOw0KDQogICAgICRjID0gY291bnQoJGV4dCktMTsNCg0KICAgICAkZXh0ID0gJGV4dFskY107DQoNCiAgICAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7DQoNCiAgICAgJHJvd1tdID0gICI8aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0XyIuJGV4dC4iIiBib3JkZXI9IjAiPiZuYnNwOzxhIGhyZWY9IiIuJHN1cmwuImFjdD1mJmY9Ii4kdW8uIiZkPSIuJHVkLiImIj4iLiRkaXNwcGF0aC4iPC9hPiI7DQoNCiAgICAgJHJvd1tdID0gdmlld19zaXplKCRhWzFdKTsNCg0KICAgIH0NCg0KICAgICRyb3dbXSA9IGRhdGUoImQubS5ZIEg6aTpzIiwkYVsyXSk7DQoNCiAgICBpZiAoISR3aW4pIHskcm93W10gPSAkYVszXTt9DQoNCiAgICAkcm93W10gPSAiPGEgaHJlZj0iIi4kc3VybC4iYWN0PWNobW9kJmY9Ii4kdW8uIiZkPSIuJHVkLiIiPjxiPiIudmlld19wZXJtc19jb2xvcigkdikuIjwvYj48L2E+IjsNCg0KICAgIGlmICgkbyA9PSAiLiIpIHskY2hlY2tib3ggPSAiPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJhY3Rib3hbXSIgb25jbGljaz0ibHNfcmV2ZXJzZV9hbGwoKTsiPiI7ICRpLS07fQ0KDQogICAgZWxzZSB7JGNoZWNrYm94ID0gIjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iYWN0Ym94W10iIGlkPSJhY3Rib3giLiRpLiIiIHZhbHVlPSIiLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiIiPiI7fQ0KDQogICAgaWYgKGlzX2RpcigkdikpIHskcm93W10gPSAiPGEgaHJlZj0iIi4kc3VybC4iYWN0PWQmZD0iLiR1di4iIj48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2RpeiIgYWx0PSJJbmZvIiBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGJvcmRlcj0iMCI+PC9hPiZuYnNwOyIuJGNoZWNrYm94O30NCg0KICAgIGVsc2UgeyRyb3dbXSA9ICI8YSBocmVmPSIiLiRzdXJsLiJhY3Q9ZiZmPSIuJHVvLiImZnQ9aW5mbyZkPSIuJHVkLiIiPjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfZGl6IiBhbHQ9IkluZm8iIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgYm9yZGVyPSIwIj48L2E+Jm5ic3A7PGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj0iLiR1by4iJmZ0PWVkaXQmZD0iLiR1ZC4iIj48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9Y2hhbmdlIiBhbHQ9IkNoYW5nZSIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE5IiBib3JkZXI9IjAiPjwvYT4mbmJzcDs8YSBocmVmPSIiLiRzdXJsLiJhY3Q9ZiZmPSIuJHVvLiImZnQ9ZG93bmxvYWQmZD0iLiR1ZC4iIj48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9ZG93bmxvYWQiIGFsdD0iRG93bmxvYWQiIGhlaWdodD0iMTYiIHdpZHRoPSIxOSIgYm9yZGVyPSIwIj48L2E+Jm5ic3A7Ii4kY2hlY2tib3g7fQ0KDQogICAgaWYgKCgkbyA9PSAiLiIpIG9yICgkbyA9PSAiLi4iKSkgeyR0YWJbImhlYWQiXVtdID0gJHJvdzt9DQoNCiAgICBlbHNlaWYgKGlzX2xpbmsoJHYpKSB7JHRhYlsibGlua3MiXVtdID0gJHJvdzt9DQoNCiAgICBlbHNlaWYgKGlzX2RpcigkdikpIHskdGFiWyJmb2xkZXJzIl1bXSA9ICRyb3c7fQ0KDQogICAgZWxzZWlmIChpc19maWxlKCR2KSkgeyR0YWJbImZpbGVzIl1bXSA9ICRyb3c7fQ0KDQogICAgJGkrKzsNCg0KICAgfQ0KDQogIH0NCg0KICAvLyBDb21waWxpbmcgdGFibGUNCg0KICAkdGFibGUgPSBhcnJheV9tZXJnZSgkdGFiWyJjb2xzIl0sJHRhYlsiaGVhZCJdLCR0YWJbImZvbGRlcnMiXSwkdGFiWyJsaW5rcyJdLCR0YWJbImZpbGVzIl0pOw0KDQogIGVjaG8gIjxjZW50ZXI+PGI+TGlzdGluZyBmb2xkZXIgKCIuY291bnQoJHRhYlsiZmlsZXMiXSkuIiBmaWxlcyBhbmQgIi4oY291bnQoJHRhYlsiZm9sZGVycyJdKStjb3VudCgkdGFiWyJsaW5rcyJdKSkuIiBmb2xkZXJzKTo8L2I+PC9jZW50ZXI+PGJyPjxUQUJMRSBjZWxsU3BhY2luZz0wIGNlbGxQYWRkaW5nPTAgd2lkdGg9MTAwJSBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jNDMzMzMzIGJvcmRlcj0wPjxmb3JtIGFjdGlvbj0iIi4kc3VybC4iIiBtZXRob2Q9UE9TVCBuYW1lPSJsc19mb3JtIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9Ii4kZHNwYWN0LiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0iLiRkLiI+IjsNCg0KICBmb3JlYWNoKCR0YWJsZSBhcyAkcm93KQ0KDQogIHsNCg0KICAgZWNobyAiPHRyPnJuIjsNCg0KICAgZm9yZWFjaCgkcm93IGFzICR2KSB7ZWNobyAiPHRkPiIuJHYuIjwvdGQ+cm4iO30NCg0KICAgZWNobyAiPC90cj5ybiI7DQoNCiAgfQ0KDQogIGVjaG8gIjwvdGFibGU+PGhyIHNpemU9IjEiIG5vc2hhZGU+PHAgYWxpZ249InJpZ2h0Ij4NCg0KICA8c2NyaXB0Pg0KDQogIGZ1bmN0aW9uIGxzX3NldGNoZWNrYm94YWxsKHN0YXR1cykNCg0KICB7DQoNCiAgIHZhciBpZCA9IDE7DQoNCiAgIHZhciBudW0gPSAiLihjb3VudCgkdGFibGUpLTIpLiI7DQoNCiAgIHdoaWxlIChpZCA8PSBudW0pDQoNCiAgIHsNCg0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3Rib3gnK2lkKS5jaGVja2VkID0gc3RhdHVzOw0KDQogICAgaWQrKzsNCg0KICAgfQ0KDQogIH0NCg0KICBmdW5jdGlvbiBsc19yZXZlcnNlX2FsbCgpDQoNCiAgew0KDQogICB2YXIgaWQgPSAxOw0KDQogICB2YXIgbnVtID0gIi4oY291bnQoJHRhYmxlKS0yKS4iOw0KDQogICB3aGlsZSAoaWQgPD0gbnVtKQ0KDQogICB7DQoNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZCA9ICFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0Ym94JytpZCkuY2hlY2tlZDsNCg0KICAgIGlkKys7DQoNCiAgIH0NCg0KICB9DQoNCiAgPC9zY3JpcHQ+DQoNCiAgPGlucHV0IHR5cGU9ImJ1dHRvbiIgb25jbGljaz0ibHNfc2V0Y2hlY2tib3hhbGwodHJ1ZSk7IiB2YWx1ZT0iU2VsZWN0IGFsbCI+Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9ImJ1dHRvbiIgb25jbGljaz0ibHNfc2V0Y2hlY2tib3hhbGwoZmFsc2UpOyIgdmFsdWU9IlVuc2VsZWN0IGFsbCI+ICANCg0KICA8Yj48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9YXJyb3dfbHRyIiBib3JkZXI9IjAiPiI7DQoNCiAgaWYgKGNvdW50KGFycmF5X21lcmdlKCRzZXNzX2RhdGFbImNvcHkiXSwkc2Vzc19kYXRhWyJjdXQiXSkpID4gMCBhbmQgKCR1c2Vmc2J1ZmYpKQ0KDQogIHsNCg0KICAgZWNobyAiPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9YWN0YXJjYnVmZiB2YWx1ZT0iUGFjayBidWZmZXIgdG8gYXJjaGl2ZSI+Jm5ic3A7PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImFjdGFyY2J1ZmZfcGF0aCIgdmFsdWU9ImFyY2hpdmVfIi5zdWJzdHIobWQ1KHJhbmQoMSwxMDAwKS5yYW5kKDEsMTAwMCkpLDAsNSkuIi50YXIuZ3oiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPSJhY3RwYXN0ZWJ1ZmYiIHZhbHVlPSJQYXN0ZSI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9ImFjdGVtcHR5YnVmZiIgdmFsdWU9IkVtcHR5IGJ1ZmZlciI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCg0KICB9DQoNCiAgZWNobyAiPHNlbGVjdCBuYW1lPWFjdD48b3B0aW9uIHZhbHVlPSIiLiRhY3QuIiI+V2l0aCBzZWxlY3RlZDo8L29wdGlvbj4iOw0KDQogIGVjaG8gIjxvcHRpb24gdmFsdWU9ZGVsZXRlIi4oJGRzcGFjdCA9PSAiZGVsZXRlIj8iIHNlbGVjdGVkIjoiIikuIj5EZWxldGU8L29wdGlvbj4iOw0KDQogIGVjaG8gIjxvcHRpb24gdmFsdWU9Y2htb2QiLigkZHNwYWN0ID09ICJjaG1vZCI/IiBzZWxlY3RlZCI6IiIpLiI+Q2hhbmdlLW1vZGU8L29wdGlvbj4iOw0KDQogIGlmICgkdXNlZnNidWZmKQ0KDQogIHsNCg0KICAgZWNobyAiPG9wdGlvbiB2YWx1ZT1jdXQiLigkZHNwYWN0ID09ICJjdXQiPyIgc2VsZWN0ZWQiOiIiKS4iPkN1dDwvb3B0aW9uPiI7DQoNCiAgIGVjaG8gIjxvcHRpb24gdmFsdWU9Y29weSIuKCRkc3BhY3QgPT0gImNvcHkiPyIgc2VsZWN0ZWQiOiIiKS4iPkNvcHk8L29wdGlvbj4iOw0KDQogICBlY2hvICI8b3B0aW9uIHZhbHVlPXVuc2VsZWN0Ii4oJGRzcGFjdCA9PSAidW5zZWxlY3QiPyIgc2VsZWN0ZWQiOiIiKS4iPlVuc2VsZWN0PC9vcHRpb24+IjsNCg0KICB9DQoNCiAgZWNobyAiPC9zZWxlY3Q+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJDb25maXJtIj48L3A+IjsNCg0KICBlY2hvICI8L2Zvcm0+IjsNCg0KfQ0KDQp9DQoNCmlmICgkYWN0ID09ICJ0b29scyIpDQoNCnsNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KPz4NCg0KPFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxMTYiIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPg0KDQo8dHI+PHRkIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjIiPjxwIGFsaWduPSJjZW50ZXIiPjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PWNtZCZkPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRkKTsgPz4iPjxiPkJpbmQgRnVuY3Rpb25zIEJ5IHI1NyAgPC9iPjwvYT4gOjo8L2I+PC9wPjwvdGQ+PC90cj4NCg0KPHRyPg0KDQogIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjgzIiB2YWxpZ249InRvcCI+PGNlbnRlcj4NCg0KICAgIDxkaXYgYWxpZ249ImNlbnRlciI+DQoNCiAgICA8L2Rpdj4NCg0KPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+DQoNCjxiPkJpbmQgV2l0aCBCYWNrZDAwciBCdXJuZXI8L2I+PC9icj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7Pz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT10b29scz48c2VsZWN0IHNpemU9IjEiIG5hbWU9ZG9sbWE+PG9wdGlvbiB2YWx1ZT0id2dldGNhbiI+VXNlIFdnZXQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJseW54Y2FuIj5Vc2UgbHlueCAtZHVtcDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImZyZWFkY2FuIj5Vc2UgRnJlYWQ8L29wdGlvbj48L3NlbGVjdD48L2JyPjwvYnI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkJ1cm4gaXQgYkFieSI+PC9mb3JtPg0KDQogICAgPC90ZD4NCg0KICA8dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSI4MyIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+DQoNCiAgIDxjZW50ZXI+DQoNCiAgDQoNCg0KDQogICA8Yj5CYWNrLUNvbm5lY3Rpb24gOjwvYj48L2JyPjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDs/PiI+IDxiPklwIChkZWZhdWx0IGlzIHlvdXIgaXApIDo8L2JyPiA8L2I+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPXRvb2xzPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJpcGkiIHZhbHVlPSI8P2VjaG8gZ2V0ZW52KCdSRU1PVEVfQUREUicpOz8+Ij48L2JyPjxiPlBvcnQ6PC9icj48L2I+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBpcGkiIHZhbHVlPSI0MzkyIj48L2JyPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJDMG5uZWN0IC0+Ij48L2JyPjwvZm9ybT4NCg0KQ2xpY2sgIkNvbm5lY3QiIG9ubHkgYWZ0ZXIgb3BlbiBwb3J0IGZvciBpdC4gWW91IHNob3VsZCB1c2UgTmV0Q2F0JmNvcHk7LCBydW4gIjxiPm5jIC1sIC1uIC12IC1wIDw/cGhwIGVjaG8gJGJjX3BvcnQ7ID8+PC9iPiIhPGJyPjxicj4NCg0KICAgDQoNCiAgIDwvY2VudGVyPg0KDQogICAgPC90ZD4NCg0KPC90cj48L1RBQkxFPg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KPFRBQkxFIHN0eWxlPSJCT1JERVItQ09MTEFQU0U6IGNvbGxhcHNlIiBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgaGVpZ2h0PSIxMTYiIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPg0KDQo8dHI+PHRkIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjIiPjxwIGFsaWduPSJjZW50ZXIiPjxiPjo6IDxhIGhyZWY9Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PWNtZCZkPTw/cGhwIGVjaG8gdXJsZW5jb2RlKCRkKTsgPz4iPjxiPkZpbGUgU3RlYWxlciBGdW5jdGlvbiBSaXBwZWQgZlJvbSBUb250b25xICdzIEZpbGUgU3RlYWxlciAuLi4gPC9iPjwvYT4gOjo8L2I+PC9wPjwvdGQ+PC90cj4NCg0KPHRyPg0KDQogIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjgzIiB2YWxpZ249InRvcCI+PGNlbnRlcj4NCg0KICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGI+U2FmZV9Nb2RlIEJ5cGFzczwvYj4NCg0KICAgIDxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iIG1ldGhvZD0iUE9TVCI+DQoNCiAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9dG9vbHM+DQoNCiAgICA8dGV4dGFyZWEgbmFtZT0iZXJvcnIiIGNvbHM9MTAwIHJvd3M9MTA+PC90ZXh0YXJlYT48L2JyPg0KDQogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5lcmUiIHZhbHVlPSI8P2VjaG8gIiRyZWFsaW5kZXgucGhwIjs/PiAic2l6ZT04ND4NCg0KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJXcml0ZSAyIEZpbGUgISEiPg0KDQogICAgDQoNCiAgICA8L2Zvcm0+DQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgDQoNCiAgICANCg0KICAgIA0KDQogICAgPC9kaXY+DQoNCg0KDQogICAgPC90ZD4NCg0KICA8dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSI4MyIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+DQoNCiAgIDxjZW50ZXI+DQoNCiAgIDxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iIG1ldGhvZD0iUE9TVCI+DQoNCiAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT10b29scz4NCg0KICAgRG9zeWFuaW4gQWRyZXNpID8gPSA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZG9zeWFhIiBzaXplPSI4MSIgbWF4bGVuZ3RoPTUwMCAgdmFsdWU9IiI+PGJyPjxicj4NCg0KTmVyZXlhIEtheWRvbGNhaz8gPSA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieWVuaXllciIgc2l6ZT04MSBtYXhsZW5ndGg9MTkxIHZhbHVlPSI8P3BocCBlY2hvICIkcmVhbC9zcGxvaXR6LnppcCI7ID8+Ij48YnI+PGJyPg0KDQo8aW5wdXQgdHlwZT1zdWJtaXQgY2xhc3M9J3N0ZWFsdGhTdWJtaXQnIFZhbHVlPSdEb3N5YXlpIENoZWsnPg0KDQo8L2Zvcm0+DQoNCjxicj48YnI+PGJyPg0KDQogICANCg0KICAgDQoNCiAgIA0KDQogICANCg0KICAgPC9jZW50ZXI+DQoNCiAgIA0KDQogICA8L2NlbnRlcj4NCg0KICAgIDwvdGQ+DQoNCjwvdHI+PC9UQUJMRT4NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KPD9waHANCg0KDQoNCmlmIChpc3NldCgkX1BPU1RbJ2Rvc3lhYSddKSkNCg0Kew0KDQpkb3N5YXlpY2VrKCRfUE9TVFsnZG9zeWFhJ10sJF9QT1NUWyd5ZW5peWVyJ10pOw0KDQoNCg0KfQ0KDQppZiAoIWVtcHR5KCRfR0VUWydpcGknXSkgJiYgIWVtcHR5KCRfR0VUWydwaXBpJ10pKQ0KDQp7DQoNCmNmKCIvdG1wL2JhY2siLCRiYWNrX2Nvbm5lY3QpOw0KDQokcDI9d2hpY2goInBlcmwiKTsNCg0KJGJsYWggPSBleCgkcDIuIiAvdG1wL2JhY2sgIi4kX0dFVFsnaXBpJ10uIiAiLiRfR0VUWydwaXBpJ10uIiAmIik7DQoNCmVjaG8iPGI+Tm93IHNjcmlwdCB0cnkgY29ubmVjdCB0byAiLiRfR0VUWydpcGknXS4iIHBvcnQgIi4kX0dFVFsncGlwaSddLiIgLi4uPC9iPiI7DQoNCn0NCg0KaWYgKCFlbXB0eSgkX0dFVFsnZG9sbWEnXSkpDQoNCnsgIA0KDQokc2F5a289aHRtbHNwZWNpYWxjaGFycygkX0dFVFsnZG9sbWEnXSk7DQoNCmlmICgkc2F5a28gPT0gIndnZXRjYW4iKQ0KDQp7DQoNCg0KDQpteXNoZWxsZXhlYygid2dldCAkYWRpcmVzIC1PIHNheWtvX2JpbmQ7Y2htb2QgNzc3IHNheWtvX2JpbmQ7Li9zYXlrb19iaW5kIik7DQoNCg0KDQoNCg0KfQ0KDQoNCg0KZWxzZSBpZiAoJHNheWtvID09ImZyZWFkY2FuIikNCg0Kew0KDQpkb3N5YXlpY2VrKCRhZGlyZXMsInNheWtvX2JpbmQiKTsNCg0KbXlzaGVsbGV4ZWMoIi4vc2F5a29fYmluZCIpOw0KDQp9DQoNCg0KDQplbHNlIGlmICgkc2F5a28gPT0gImx5bnhjYW4iKQ0KDQp7DQoNCm15c2hlbGxleGVjKCJseW54IC1kdW1wICRhZGlyZXMgPiBzYXlrb19iaW5kO2NobW9kIDc3NyBzYXlrb19iaW5kOy4vc2F5a29fYmluZCIpOw0KDQoNCg0KfQ0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCn0NCg0KDQoNCmlmICAoIWVtcHR5KCRfUE9TVFsnZXJvcnInXSkpDQoNCnsNCg0KDQoNCg0KDQoNCg0KZXJyb3JfbG9nKCRfUE9TVFsnZXJvcnInXSwgMywgInBocDovLyIuJF9QT1NUWyduZXJlJ10pOw0KDQoNCg0KDQoNCg0KDQp9DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCn0NCg0KaWYgKCRhY3QgPT0gInByb2Nlc3NlcyIpDQoNCnsNCg0KZWNobyAiPGI+UHJvY2Vzc2VzOjwvYj48YnI+IjsNCg0KaWYgKCEkd2luKSB7JGhhbmRsZXIgPSAicHMgLWF1eCIuKCRncmVwPyIgfCBncmVwICciLmFkZHNsYXNoZXMoJGdyZXApLiInIjoiIik7fQ0KDQplbHNlIHskaGFuZGxlciA9ICJ0YXNrbGlzdCI7fQ0KDQokcmV0ID0gbXlzaGVsbGV4ZWMoJGhhbmRsZXIpOw0KDQppZiAoISRyZXQpIHtlY2hvICJDYW4ndCBleGVjdXRlICIiLiRoYW5kbGVyLiIiISI7fQ0KDQplbHNlDQoNCnsNCg0KICBpZiAoZW1wdHkoJHByb2Nlc3Nlc19zb3J0KSkgeyRwcm9jZXNzZXNfc29ydCA9ICRzb3J0X2RlZmF1bHQ7fQ0KDQogICRwYXJzZXNvcnQgPSBwYXJzZXNvcnQoJHByb2Nlc3Nlc19zb3J0KTsNCg0KICBpZiAoIWlzX251bWVyaWMoJHBhcnNlc29ydFswXSkpIHskcGFyc2Vzb3J0WzBdID0gMDt9DQoNCiAgJGsgPSAkcGFyc2Vzb3J0WzBdOw0KDQogIGlmICgkcGFyc2Vzb3J0WzFdICE9ICJhIikgeyR5ID0gIjxhIGhyZWY9IiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImEiPjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zb3J0X2Rlc2MiIGhlaWdodD0iOSIgd2lkdGg9IjE0IiBib3JkZXI9IjAiPjwvYT4iO30NCg0KICBlbHNlIHskeSA9ICI8YSBocmVmPSIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJkIj48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF9hc2MiIGhlaWdodD0iOSIgd2lkdGg9IjE0IiBib3JkZXI9IjAiPjwvYT4iO30NCg0KICAkcmV0ID0gaHRtbHNwZWNpYWxjaGFycygkcmV0KTsNCg0KICBpZiAoISR3aW4pDQoNCiAgew0KDQogICBpZiAoJHBpZCkNCg0KICAgew0KDQogICAgaWYgKGlzX251bGwoJHNpZykpIHskc2lnID0gOTt9DQoNCiAgICBlY2hvICJTZW5kaW5nIHNpZ25hbCAiLiRzaWcuIiB0byAjIi4kcGlkLiIuLi4gIjsNCg0KICAgIGlmIChwb3NpeF9raWxsKCRwaWQsJHNpZykpIHtlY2hvICJPSy4iO30NCg0KICAgIGVsc2Uge2VjaG8gIkVSUk9SLiI7fQ0KDQogICB9DQoNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiICIsJHJldCk7fQ0KDQogICAkc3RhY2sgPSBleHBsb2RlKCJuIiwkcmV0KTsNCg0KICAgJGhlYWQgPSBleHBsb2RlKCIgIiwkc3RhY2tbMF0pOw0KDQogICB1bnNldCgkc3RhY2tbMF0pOw0KDQogICBmb3IoJGk9MDskaTxjb3VudCgkaGVhZCk7JGkrKykNCg0KICAgew0KDQogICAgaWYgKCRpICE9ICRrKSB7JGhlYWRbJGldID0gIjxhIGhyZWY9IiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGkuJHBhcnNlc29ydFsxXS4iIj48Yj4iLiRoZWFkWyRpXS4iPC9iPjwvYT4iO30NCg0KICAgfQ0KDQogICAkcHJjcyA9IGFycmF5KCk7DQoNCiAgIGZvcmVhY2ggKCRzdGFjayBhcyAkbGluZSkNCg0KICAgew0KDQogICAgaWYgKCFlbXB0eSgkbGluZSkpDQoNCnsNCg0KZWNobyAiPHRyPiI7DQoNCiAgICAgJGxpbmUgPSBleHBsb2RlKCIgIiwkbGluZSk7DQoNCiAgICAgJGxpbmVbMTBdID0gam9pbigiICIsYXJyYXlfc2xpY2UoJGxpbmUsMTApKTsNCg0KICAgICAkbGluZSA9IGFycmF5X3NsaWNlKCRsaW5lLDAsMTEpOw0KDQogICAgIGlmICgkbGluZVswXSA9PSBnZXRfY3VycmVudF91c2VyKCkpIHskbGluZVswXSA9ICI8Zm9udCBjb2xvcj1ncmVlbj4iLiRsaW5lWzBdLiI8L2ZvbnQ+Ijt9DQoNCiAgICAgJGxpbmVbXSA9ICI8YSBocmVmPSIiLiRzdXJsLiJhY3Q9cHJvY2Vzc2VzJmQ9Ii51cmxlbmNvZGUoJGQpLiImcGlkPSIuJGxpbmVbMV0uIiZzaWc9OSI+PHU+S0lMTDwvdT48L2E+IjsNCg0KICAgICAkcHJjc1tdID0gJGxpbmU7DQoNCiAgICAgZWNobyAiPC90cj4iOw0KDQogICAgfQ0KDQogICB9DQoNCiAgfQ0KDQogIGVsc2UNCg0KICB7DQoNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQoNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQoNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQoNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQoNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQoNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQoNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQoNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQoNCiAgIHdoaWxlIChlcmVnKCIgICIsJHJldCkpIHskcmV0ID0gc3RyX3JlcGxhY2UoIiAgIiwiIiwkcmV0KTt9DQoNCiAgIHdoaWxlIChlcmVnKCIiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIiLCIiLCRyZXQpO30NCg0KICAgd2hpbGUgKGVyZWcoIiAiLCRyZXQpKSB7JHJldCA9IHN0cl9yZXBsYWNlKCIgIiwiIiwkcmV0KTt9DQoNCiAgICRyZXQgPSBjb252ZXJ0X2N5cl9zdHJpbmcoJHJldCwiZCIsInciKTsNCg0KICAgJHN0YWNrID0gZXhwbG9kZSgibiIsJHJldCk7DQoNCiAgIHVuc2V0KCRzdGFja1swXSwkc3RhY2tbMl0pOw0KDQogICAkc3RhY2sgPSBhcnJheV92YWx1ZXMoJHN0YWNrKTsNCg0KICAgJGhlYWQgPSBleHBsb2RlKCIiLCRzdGFja1swXSk7DQoNCiAgICRoZWFkWzFdID0gZXhwbG9kZSgiICIsJGhlYWRbMV0pOw0KDQogICAkaGVhZFsxXSA9ICRoZWFkWzFdWzBdOw0KDQogICAkc3RhY2sgPSBhcnJheV9zbGljZSgkc3RhY2ssMSk7DQoNCiAgIHVuc2V0KCRoZWFkWzJdKTsNCg0KICAgJGhlYWQgPSBhcnJheV92YWx1ZXMoJGhlYWQpOw0KDQogICBpZiAoJHBhcnNlc29ydFsxXSAhPSAiYSIpIHskeSA9ICI8YSBocmVmPSIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRrLiJhIj48aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9c29ydF9kZXNjIiBoZWlnaHQ9IjkiIHdpZHRoPSIxNCIgYm9yZGVyPSIwIj48L2E+Ijt9DQoNCiAgIGVsc2UgeyR5ID0gIjxhIGhyZWY9IiIuJHN1cmwuImFjdD0iLiRkc3BhY3QuIiZkPSIudXJsZW5jb2RlKCRkKS4iJnByb2Nlc3Nlc19zb3J0PSIuJGsuImQiPjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1zb3J0X2FzYyIgaGVpZ2h0PSI5IiB3aWR0aD0iMTQiIGJvcmRlcj0iMCI+PC9hPiI7fQ0KDQogICBpZiAoJGsgPiBjb3VudCgkaGVhZCkpIHskayA9IGNvdW50KCRoZWFkKS0xO30NCg0KICAgZm9yKCRpPTA7JGk8Y291bnQoJGhlYWQpOyRpKyspDQoNCiAgIHsNCg0KICAgIGlmICgkaSAhPSAkaykgeyRoZWFkWyRpXSA9ICI8YSBocmVmPSIiLiRzdXJsLiJhY3Q9Ii4kZHNwYWN0LiImZD0iLnVybGVuY29kZSgkZCkuIiZwcm9jZXNzZXNfc29ydD0iLiRpLiRwYXJzZXNvcnRbMV0uIiI+PGI+Ii50cmltKCRoZWFkWyRpXSkuIjwvYj48L2E+Ijt9DQoNCiAgIH0NCg0KICAgJHByY3MgPSBhcnJheSgpOw0KDQogICBmb3JlYWNoICgkc3RhY2sgYXMgJGxpbmUpDQoNCiAgIHsNCg0KICAgIGlmICghZW1wdHkoJGxpbmUpKQ0KDQogICAgew0KDQogICAgIGVjaG8gIjx0cj4iOw0KDQogICAgICRsaW5lID0gZXhwbG9kZSgiIiwkbGluZSk7DQoNCiAgICAgJGxpbmVbMV0gPSBpbnR2YWwoJGxpbmVbMV0pOyAkbGluZVsyXSA9ICRsaW5lWzNdOyB1bnNldCgkbGluZVszXSk7DQoNCiAgICAgJGxpbmVbMl0gPSBpbnR2YWwoc3RyX3JlcGxhY2UoIiAiLCIiLCRsaW5lWzJdKSkqMTAyNDsgIA0KDQogICAgICRwcmNzW10gPSAkbGluZTsNCg0KICAgICBlY2hvICI8L3RyPiI7DQoNCiAgICB9DQoNCiAgIH0NCg0KICB9DQoNCiAgJGhlYWRbJGtdID0gIjxiPiIuJGhlYWRbJGtdLiI8L2I+Ii4keTsNCg0KICAkdiA9ICRwcm9jZXNzZXNfc29ydFswXTsNCg0KICB1c29ydCgkcHJjcywidGFic29ydCIpOw0KDQogIGlmICgkcHJvY2Vzc2VzX3NvcnRbMV0gPT0gImQiKSB7JHByY3MgPSBhcnJheV9yZXZlcnNlKCRwcmNzKTt9DQoNCiAgJHRhYiA9IGFycmF5KCk7DQoNCiAgJHRhYltdID0gJGhlYWQ7DQoNCiAgJHRhYiA9IGFycmF5X21lcmdlKCR0YWIsJHByY3MpOw0KDQogIGVjaG8gIjxUQUJMRSBoZWlnaHQ9MSBjZWxsU3BhY2luZz0wIGJvcmRlckNvbG9yRGFyaz0jNjY2NjY2IGNlbGxQYWRkaW5nPTUgd2lkdGg9IjEwMCUiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTEgYm9yZGVyY29sb3I9IiNDMEMwQzAiPiI7DQoNCiAgZm9yZWFjaCgkdGFiIGFzICRpPT4kaykNCg0KICB7DQoNCiAgIGVjaG8gIjx0cj4iOw0KDQogICBmb3JlYWNoKCRrIGFzICRqPT4kdikge2lmICgkd2luIGFuZCAkaSA+IDAgYW5kICRqID09IDIpIHskdiA9IHZpZXdfc2l6ZSgkdik7fSBlY2hvICI8dGQ+Ii4kdi4iPC90ZD4iO30NCg0KICAgZWNobyAiPC90cj4iOw0KDQogIH0NCg0KICBlY2hvICI8L3RhYmxlPiI7DQoNCn0NCg0KfQ0KDQppZiAoJGFjdCA9PSAiZXZhbCIpDQoNCnsNCg0KaWYgKCFlbXB0eSgkZXZhbCkpDQoNCnsNCg0KICBlY2hvICI8Yj5SZXN1bHQgb2YgZXhlY3V0aW9uIHRoaXMgUEhQLWNvZGU8L2I+Ojxicj4iOw0KDQogICR0bXAgPSBvYl9nZXRfY29udGVudHMoKTsNCg0KICAkb2xkZGlyID0gcmVhbHBhdGgoIi4iKTsNCg0KICBAY2hkaXIoJGQpOw0KDQogIGlmICgkdG1wKQ0KDQogIHsNCg0KICAgb2JfY2xlYW4oKTsNCg0KICAgZXZhbCgkZXZhbCk7DQoNCiAgICRyZXQgPSBvYl9nZXRfY29udGVudHMoKTsNCg0KICAgJHJldCA9IGNvbnZlcnRfY3lyX3N0cmluZygkcmV0LCJkIiwidyIpOw0KDQogICBvYl9jbGVhbigpOw0KDQogICBlY2hvICR0bXA7DQoNCiAgIGlmICgkZXZhbF90eHQpDQoNCiAgIHsNCg0KICAgICRyb3dzID0gY291bnQoZXhwbG9kZSgicm4iLCRyZXQpKSsxOw0KDQogICAgaWYgKCRyb3dzIDwgMTApIHskcm93cyA9IDEwO30NCg0KICAgIGVjaG8gIjxicj48dGV4dGFyZWEgY29scz0iMTIyIiByb3dzPSIiLiRyb3dzLiIiIHJlYWRvbmx5PiIuaHRtbHNwZWNpYWxjaGFycygkcmV0KS4iPC90ZXh0YXJlYT4iOw0KDQogICB9DQoNCiAgIGVsc2Uge2VjaG8gJHJldC4iPGJyPiI7fQ0KDQogIH0NCg0KICBlbHNlDQoNCiAgew0KDQogICBpZiAoJGV2YWxfdHh0KQ0KDQogICB7DQoNCiAgICBlY2hvICI8YnI+PHRleHRhcmVhIGNvbHM9IjEyMiIgcm93cz0iMTUiIHJlYWRvbmx5PiI7DQoNCiAgICBldmFsKCRldmFsKTsNCg0KICAgIGVjaG8gIjwvdGV4dGFyZWE+IjsNCg0KICAgfQ0KDQogICBlbHNlIHtlY2hvICRyZXQ7fQ0KDQogIH0NCg0KICBAY2hkaXIoJG9sZGRpcik7DQoNCn0NCg0KZWxzZSB7ZWNobyAiPGI+RXhlY3V0aW9uIFBIUC1jb2RlPC9iPiI7IGlmIChlbXB0eSgkZXZhbF90eHQpKSB7JGV2YWxfdHh0ID0gVFJVRTt9fQ0KDQplY2hvICI8Zm9ybSBhY3Rpb249IiIuJHN1cmwuIiIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPWV2YWw+PHRleHRhcmVhIG5hbWU9ImV2YWwiIGNvbHM9IjEyMiIgcm93cz0iMTAiPiIuaHRtbHNwZWNpYWxjaGFycygkZXZhbCkuIjwvdGV4dGFyZWE+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSIiLiRkaXNwZC4iIj48YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iRXhlY3V0ZSI+Jm5ic3A7RGlzcGxheSBpbiB0ZXh0LWFyZWEmbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImV2YWxfdHh0IiB2YWx1ZT0iMSIiOyBpZiAoJGV2YWxfdHh0KSB7ZWNobyAiIGNoZWNrZWQiO30gZWNobyAiPjwvZm9ybT4iOw0KDQp9DQoNCmlmICgkYWN0ID09ICJmIikNCg0Kew0KDQppZiAoKCFpc19yZWFkYWJsZSgkZC4kZikgb3IgaXNfZGlyKCRkLiRmKSkgYW5kICRmdCAhPSAiZWRpdCIpDQoNCnsNCg0KICBpZiAoZmlsZV9leGlzdHMoJGQuJGYpKSB7ZWNobyAiPGNlbnRlcj48Yj5QZXJtaXNpb24gZGVuaWVkICgiLmh0bWxzcGVjaWFsY2hhcnMoJGQuJGYpLiIpITwvYj48L2NlbnRlcj4iO30NCg0KICBlbHNlIHtlY2hvICI8Y2VudGVyPjxiPkZpbGUgZG9lcyBub3QgZXhpc3RzICgiLmh0bWxzcGVjaWFsY2hhcnMoJGQuJGYpLiIpITwvYj48YnI+PGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1lZGl0JmQ9Ii51cmxlbmNvZGUoJGQpLiImYz0xIj48dT5DcmVhdGU8L3U+PC9hPjwvY2VudGVyPiI7fQ0KDQp9DQoNCmVsc2UNCg0Kew0KDQogICRyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKTsNCg0KICAkZXh0ID0gZXhwbG9kZSgiLiIsJGYpOw0KDQogICRjID0gY291bnQoJGV4dCktMTsNCg0KICAkZXh0ID0gJGV4dFskY107DQoNCiAgJGV4dCA9IHN0cnRvbG93ZXIoJGV4dCk7DQoNCiAgJHJmdCA9ICIiOw0KDQogIGZvcmVhY2goJGZ0eXBlcyBhcyAkaz0+JHYpIHtpZiAoaW5fYXJyYXkoJGV4dCwkdikpIHskcmZ0ID0gJGs7IGJyZWFrO319DQoNCiAgaWYgKGVyZWdpKCJzZXNzXyguKikiLCRmKSkgeyRyZnQgPSAicGhwc2VzcyI7fQ0KDQogIGlmIChlbXB0eSgkZnQpKSB7JGZ0ID0gJHJmdDt9DQoNCiAgJGFyciA9IGFycmF5KA0KDQogICBhcnJheSgiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9kaXoiIGJvcmRlcj0iMCI+IiwiaW5mbyIpLA0KDQogICBhcnJheSgiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9odG1sIiBib3JkZXI9IjAiPiIsImh0bWwiKSwNCg0KICAgYXJyYXkoIjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1leHRfdHh0IiBib3JkZXI9IjAiPiIsInR4dCIpLA0KDQogICBhcnJheSgiQ29kZSIsImNvZGUiKSwNCg0KICAgYXJyYXkoIlNlc3Npb24iLCJwaHBzZXNzIiksDQoNCiAgIGFycmF5KCI8aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2V4ZSIgYm9yZGVyPSIwIj4iLCJleGUiKSwNCg0KICAgYXJyYXkoIlNEQiIsInNkYiIpLA0KDQogICBhcnJheSgiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9naWYiIGJvcmRlcj0iMCI+IiwiaW1nIiksDQoNCiAgIGFycmF5KCI8aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0X2luaSIgYm9yZGVyPSIwIj4iLCJpbmkiKSwNCg0KICAgYXJyYXkoIjxpbWcgc3JjPSIiLiRzdXJsLiJhY3Q9aW1nJmltZz1kb3dubG9hZCIgYm9yZGVyPSIwIj4iLCJkb3dubG9hZCIpLA0KDQogICBhcnJheSgiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPWV4dF9ydGYiIGJvcmRlcj0iMCI+Iiwibm90ZXBhZCIpLA0KDQogICBhcnJheSgiPGltZyBzcmM9IiIuJHN1cmwuImFjdD1pbWcmaW1nPWNoYW5nZSIgYm9yZGVyPSIwIj4iLCJlZGl0IikNCg0KICApOw0KDQogIGVjaG8gIjxiPlZpZXdpbmcgZmlsZTombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9ZXh0XyIuJGV4dC4iIiBib3JkZXI9IjAiPiZuYnNwOyIuJGYuIiAoIi52aWV3X3NpemUoZmlsZXNpemUoJGQuJGYpKS4iKSAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiLnZpZXdfcGVybXNfY29sb3IoJGQuJGYpLiI8L2I+PGJyPlNlbGVjdCBhY3Rpb24vZmlsZS10eXBlOjxicj4iOw0KDQogIGZvcmVhY2goJGFyciBhcyAkdCkNCg0KICB7DQoNCiAgIGlmICgkdFsxXSA9PSAkcmZ0KSB7ZWNobyAiIDxhIGhyZWY9IiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiIiPjxmb250IGNvbG9yPWdyZWVuPiIuJHRbMF0uIjwvZm9udD48L2E+Ijt9DQoNCiAgIGVsc2VpZiAoJHRbMV0gPT0gJGZ0KSB7ZWNobyAiIDxhIGhyZWY9IiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9Ii4kdFsxXS4iJmQ9Ii51cmxlbmNvZGUoJGQpLiIiPjxiPjx1PiIuJHRbMF0uIjwvdT48L2I+PC9hPiI7fQ0KDQogICBlbHNlIHtlY2hvICIgPGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD0iLiR0WzFdLiImZD0iLnVybGVuY29kZSgkZCkuIiI+PGI+Ii4kdFswXS4iPC9iPjwvYT4iO30NCg0KICAgZWNobyAiICg8YSBocmVmPSIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PSIuJHRbMV0uIiZ3aGl0ZT0xJmQ9Ii51cmxlbmNvZGUoJGQpLiIiIHRhcmdldD0iX2JsYW5rIj4rPC9hPikgfCI7DQoNCiAgfQ0KDQogIGVjaG8gIjxociBzaXplPSIxIiBub3NoYWRlPiI7DQoNCiAgaWYgKCRmdCA9PSAiaW5mbyIpDQoNCiAgew0KDQogICBlY2hvICI8Yj5JbmZvcm1hdGlvbjo8L2I+PHRhYmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9Mj48dHI+PHRkPjxiPlBhdGg8L2I+PC90ZD48dGQ+ICIuJGQuJGYuIjwvdGQ+PC90cj48dHI+PHRkPjxiPlNpemU8L2I+PC90ZD48dGQ+ICIudmlld19zaXplKGZpbGVzaXplKCRkLiRmKSkuIjwvdGQ+PC90cj48dHI+PHRkPjxiPk1ENTwvYj48L3RkPjx0ZD4gIi5tZDVfZmlsZSgkZC4kZikuIjwvdGQ+PC90cj4iOw0KDQogICBpZiAoISR3aW4pDQoNCiAgIHsNCg0KICAgIGVjaG8gIjx0cj48dGQ+PGI+T3duZXIvR3JvdXA8L2I+PC90ZD48dGQ+ICI7ICAgICANCg0KICAgICRvdyA9IHBvc2l4X2dldHB3dWlkKGZpbGVvd25lcigkZC4kZikpOw0KDQogICAgJGdyID0gcG9zaXhfZ2V0Z3JnaWQoZmlsZWdyb3VwKCRkLiRmKSk7DQoNCiAgICBlY2hvICgkb3dbIm5hbWUiXT8kb3dbIm5hbWUiXTpmaWxlb3duZXIoJGQuJGYpKS4iLyIuKCRnclsibmFtZSJdPyRnclsibmFtZSJdOmZpbGVncm91cCgkZC4kZikpOw0KDQogICB9DQoNCiAgIGVjaG8gIjx0cj48dGQ+PGI+UGVybXM8L2I+PC90ZD48dGQ+PGEgaHJlZj0iIi4kc3VybC4iYWN0PWNobW9kJmY9Ii51cmxlbmNvZGUoJGYpLiImZD0iLnVybGVuY29kZSgkZCkuIiI+Ii52aWV3X3Blcm1zX2NvbG9yKCRkLiRmKS4iPC9hPjwvdGQ+PC90cj48dHI+PHRkPjxiPkNyZWF0ZSB0aW1lPC9iPjwvdGQ+PHRkPiAiLmRhdGUoImQvbS9ZIEg6aTpzIixmaWxlY3RpbWUoJGQuJGYpKS4iPC90ZD48L3RyPjx0cj48dGQ+PGI+QWNjZXNzIHRpbWU8L2I+PC90ZD48dGQ+ICIuZGF0ZSgiZC9tL1kgSDppOnMiLGZpbGVhdGltZSgkZC4kZikpLiI8L3RkPjwvdHI+PHRyPjx0ZD48Yj5NT0RJRlkgdGltZTwvYj48L3RkPjx0ZD4gIi5kYXRlKCJkL20vWSBIOmk6cyIsZmlsZW10aW1lKCRkLiRmKSkuIjwvdGQ+PC90cj48L3RhYmxlPjxicj4iOw0KDQogICAkZmkgPSBmb3BlbigkZC4kZiwicmIiKTsNCg0KICAgaWYgKCRmaSkNCg0KICAgew0KDQogICAgaWYgKCRmdWxsaGV4ZHVtcCkge2VjaG8gIjxiPkZVTEwgSEVYRFVNUDwvYj4iOyAkc3RyID0gZnJlYWQoJGZpLGZpbGVzaXplKCRkLiRmKSk7fQ0KDQogICAgZWxzZSB7ZWNobyAiPGI+SEVYRFVNUCBQUkVWSUVXPC9iPiI7ICRzdHIgPSBmcmVhZCgkZmksJGhleGR1bXBfbGluZXMqJGhleGR1bXBfcm93cyk7fQ0KDQogICAgJG4gPSAwOw0KDQogICAgJGEwID0gIjAwMDAwMDAwPGJyPiI7DQoNCiAgICAkYTEgPSAiIjsNCg0KICAgICRhMiA9ICIiOw0KDQogICAgZm9yICgkaT0wOyAkaTxzdHJsZW4oJHN0cik7ICRpKyspDQoNCiAgICB7DQoNCiAgICAgJGExIC49IHNwcmludGYoIiUwMlgiLG9yZCgkc3RyWyRpXSkpLiIgIjsNCg0KICAgICBzd2l0Y2ggKG9yZCgkc3RyWyRpXSkpDQoNCiAgICAgew0KDQogICAgICBjYXNlIDA6ICAkYTIgLj0gIjxmb250PjA8L2ZvbnQ+IjsgYnJlYWs7DQoNCiAgICAgIGNhc2UgMzI6DQoNCiAgICAgIGNhc2UgMTA6DQoNCiAgICAgIGNhc2UgMTM6ICRhMiAuPSAiJm5ic3A7IjsgYnJlYWs7DQoNCiAgICAgIGRlZmF1bHQ6ICRhMiAuPSBodG1sc3BlY2lhbGNoYXJzKCRzdHJbJGldKTsNCg0KICAgICB9DQoNCiAgICAgJG4rKzsNCg0KICAgICBpZiAoJG4gPT0gJGhleGR1bXBfcm93cykNCg0KICAgICB7DQoNCiAgICAgICRuID0gMDsNCg0KICAgICAgaWYgKCRpKzEgPCBzdHJsZW4oJHN0cikpIHskYTAgLj0gc3ByaW50ZigiJTA4WCIsJGkrMSkuIjxicj4iO30NCg0KICAgICAgJGExIC49ICI8YnI+IjsNCg0KICAgICAgJGEyIC49ICI8YnI+IjsNCg0KICAgICB9DQoNCiAgICB9DQoNCiAgICAvL2lmICgkYTEgIT0gIiIpIHskYTAgLj0gc3ByaW50ZigiJTA4WCIsJGkpLiI8YnI+Ijt9DQoNCiAgICBlY2hvICI8dGFibGUgYm9yZGVyPTAgYmdjb2xvcj0jNjY2NjY2IGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9ND48dHI+PHRkIGJnY29sb3I9IzY2NjY2Nj4iLiRhMC4iPC90ZD48dGQgYmdjb2xvcj0wMDAwMDA+Ii4kYTEuIjwvdGQ+PHRkIGJnY29sb3I9MDAwMDAwPiIuJGEyLiI8L3RkPjwvdHI+PC90YWJsZT48YnI+IjsNCg0KICAgfQ0KDQogICAkZW5jb2RlZCA9ICIiOw0KDQogICBpZiAoJGJhc2U2NCA9PSAxKQ0KDQogICB7DQoNCiAgICBlY2hvICI8Yj5CYXNlNjQgRW5jb2RlPC9iPjxicj4iOw0KDQogICAgJGVuY29kZWQgPSBiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSk7DQoNCiAgIH0NCg0KICAgZWxzZWlmKCRiYXNlNjQgPT0gMikNCg0KICAgew0KDQogICAgZWNobyAiPGI+QmFzZTY0IEVuY29kZSArIENodW5rPC9iPjxicj4iOw0KDQogICAgJGVuY29kZWQgPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKSkpOw0KDQogICB9DQoNCiAgIGVsc2VpZigkYmFzZTY0ID09IDMpDQoNCiAgIHsNCg0KICAgIGVjaG8gIjxiPkJhc2U2NCBFbmNvZGUgKyBDaHVuayArIFF1b3RlczwvYj48YnI+IjsNCg0KICAgICRlbmNvZGVkID0gYmFzZTY0X2VuY29kZShmaWxlX2dldF9jb250ZW50cygkZC4kZikpOw0KDQogICAgJGVuY29kZWQgPSBzdWJzdHIocHJlZ19yZXBsYWNlKCIhLnsxLDc2fSEiLCInXDAnLm4iLCRlbmNvZGVkKSwwLC0yKTsNCg0KICAgfQ0KDQogICBlbHNlaWYoJGJhc2U2NCA9PSA0KQ0KDQogICB7DQoNCiAgICAkdGV4dCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRkLiRmKTsNCg0KICAgICRlbmNvZGVkID0gYmFzZTY0X2RlY29kZSgkdGV4dCk7DQoNCiAgICBlY2hvICI8Yj5CYXNlNjQgRGVjb2RlIjsNCg0KICAgIGlmIChiYXNlNjRfZW5jb2RlKCRlbmNvZGVkKSAhPSAkdGV4dCkge2VjaG8gIiAoZmFpbGVkKSI7fQ0KDQogICAgZWNobyAiPC9iPjxicj4iOw0KDQogICB9DQoNCiAgIGlmICghZW1wdHkoJGVuY29kZWQpKQ0KDQogICB7DQoNCiAgICBlY2hvICI8dGV4dGFyZWEgY29scz04MCByb3dzPTEwPiIuaHRtbHNwZWNpYWxjaGFycygkZW5jb2RlZCkuIjwvdGV4dGFyZWE+PGJyPjxicj4iOw0KDQogICB9DQoNCiAgIGVjaG8gIjxiPkhFWERVTVA6PC9iPjxub2JyPiBbPGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmZ1bGxoZXhkdW1wPTEmZD0iLnVybGVuY29kZSgkZCkuIiI+RnVsbDwvYT5dIFs8YSBocmVmPSIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWluZm8mZD0iLnVybGVuY29kZSgkZCkuIiI+UHJldmlldzwvYT5dPGJyPjxiPkJhc2U2NDogPC9iPg0KDQo8bm9icj5bPGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0xJmQ9Ii51cmxlbmNvZGUoJGQpLiIiPkVuY29kZTwvYT5dJm5ic3A7PC9ub2JyPg0KDQo8bm9icj5bPGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0yJmQ9Ii51cmxlbmNvZGUoJGQpLiIiPitjaHVuazwvYT5dJm5ic3A7PC9ub2JyPg0KDQo8bm9icj5bPGEgaHJlZj0iIi4kc3VybC4iYWN0PWYmZj0iLnVybGVuY29kZSgkZikuIiZmdD1pbmZvJmJhc2U2ND0zJmQ9Ii51cmxlbmNvZGUoJGQpLiIiPitjaHVuaytxdW90ZXM8L2E+XSZuYnNwOzwvbm9icj4NCg0KPG5vYnI+WzxhIGhyZWY9IiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW5mbyZiYXNlNjQ9NCZkPSIudXJsZW5jb2RlKCRkKS4iIj5EZWNvZGU8L2E+XSZuYnNwOzwvbm9icj4NCg0KPFA+IjsNCg0KICB9DQoNCiAgZWxzZWlmICgkZnQgPT0gImh0bWwiKQ0KDQogIHsNCg0KICAgaWYgKCR3aGl0ZSkge0BvYl9jbGVhbigpO30NCg0KICAgZWNobyAkcjsNCg0KICAgaWYgKCR3aGl0ZSkge2M5OXNoZXhpdCgpO30NCg0KICB9DQoNCiAgZWxzZWlmICgkZnQgPT0gInR4dCIpIHtlY2hvICI8cHJlPiIuaHRtbHNwZWNpYWxjaGFycygkcikuIjwvcHJlPiI7fQ0KDQogIGVsc2VpZiAoJGZ0ID09ICJpbmkiKSB7ZWNobyAiPHByZT4iOyB2YXJfZHVtcChwYXJzZV9pbmlfZmlsZSgkZC4kZixUUlVFKSk7IGVjaG8gIjwvcHJlPiI7fQ0KDQogIGVsc2VpZiAoJGZ0ID09ICJwaHBzZXNzIikNCg0KICB7DQoNCiAgIGVjaG8gIjxwcmU+IjsNCg0KICAgJHYgPSBleHBsb2RlKCJ8Iiwkcik7DQoNCiAgIGVjaG8gJHZbMF0uIjxicj4iOw0KDQogICB2YXJfZHVtcCh1bnNlcmlhbGl6ZSgkdlsxXSkpOw0KDQogICBlY2hvICI8L3ByZT4iOw0KDQogIH0NCg0KICBlbHNlaWYgKCRmdCA9PSAiZXhlIikNCg0KICB7DQoNCiAgICRleHQgPSBleHBsb2RlKCIuIiwkZik7DQoNCiAgICRjID0gY291bnQoJGV4dCktMTsNCg0KICAgJGV4dCA9ICRleHRbJGNdOw0KDQogICAkZXh0ID0gc3RydG9sb3dlcigkZXh0KTsNCg0KICAgJHJmdCA9ICIiOw0KDQogICBmb3JlYWNoKCRleGVmdHlwZXMgYXMgJGs9PiR2KQ0KDQogICB7DQoNCiAgICBpZiAoaW5fYXJyYXkoJGV4dCwkdikpIHskcmZ0ID0gJGs7IGJyZWFrO30NCg0KICAgfQ0KDQogICAkY21kID0gc3RyX3JlcGxhY2UoIiVmJSIsJGYsJHJmdCk7DQoNCiAgIGVjaG8gIjxiPkV4ZWN1dGUgZmlsZTo8L2I+PGZvcm0gYWN0aW9uPSIiLiRzdXJsLiIiIG1ldGhvZD1QT1NUPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT1jbWQ+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNtZCIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkY21kKS4iIiBzaXplPSIiLihzdHJsZW4oJGNtZCkrMikuIiI+PGJyPkRpc3BsYXkgaW4gdGV4dC1hcmVhPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSIgY2hlY2tlZD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9IiIuaHRtbHNwZWNpYWxjaGFycygkZCkuIiI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT0iRXhlY3V0ZSI+PC9mb3JtPiI7DQoNCiAgfQ0KDQogIGVsc2VpZiAoJGZ0ID09ICJzZGIiKSB7ZWNobyAiPHByZT4iOyB2YXJfZHVtcCh1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRyKSkpOyBlY2hvICI8L3ByZT4iO30NCg0KICBlbHNlaWYgKCRmdCA9PSAiY29kZSIpDQoNCiAgew0KDQogICBpZiAoZXJlZygicGhwIi4iQkIgMi4oLiopIGF1dG8tZ2VuZXJhdGVkIGNvbmZpZyBmaWxlIiwkcikpDQoNCiAgIHsNCg0KICAgICRhcnIgPSBleHBsb2RlKCJuIiwkcik7DQoNCiAgICBpZiAoY291bnQoJGFyciA9PSAxOCkpDQoNCiAgICB7DQoNCiAgICAgaW5jbHVkZSgkZC4kZik7DQoNCiAgICAgZWNobyAiPGI+cGhwQkIgY29uZmlndXJhdGlvbiBpcyBkZXRlY3RlZCBpbiB0aGlzIGZpbGUhPGJyPiI7DQoNCiAgICAgaWYgKCRkYm1zID09ICJteXNxbDQiKSB7JGRibXMgPSAibXlzcWwiO30NCg0KICAgICBpZiAoJGRibXMgPT0gIm15c3FsIikge2VjaG8gIjxhIGhyZWY9IiIuJHN1cmwuImFjdD1zcWwmc3FsX3NlcnZlcj0iLmh0bWxzcGVjaWFsY2hhcnMoJGRiaG9zdCkuIiZzcWxfbG9naW49Ii5odG1sc3BlY2lhbGNoYXJzKCRkYnVzZXIpLiImc3FsX3Bhc3N3ZD0iLmh0bWxzcGVjaWFsY2hhcnMoJGRicGFzc3dkKS4iJnNxbF9wb3J0PTMzMDYmc3FsX2RiPSIuaHRtbHNwZWNpYWxjaGFycygkZGJuYW1lKS4iIj48Yj48dT5Db25uZWN0IHRvIERCPC91PjwvYj48L2E+PGJyPjxicj4iO30NCg0KICAgICBlbHNlIHtlY2hvICJCdXQsIHlvdSBjYW4ndCBjb25uZWN0IHRvIGZvcnVtIHNxbC1iYXNlLCBiZWNhdXNlIGRiLXNvZnR3YXJlPSIiLiRkYm1zLiIiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgYzk5c2hlbGwuIFBsZWFzZSwgcmVwb3J0IHVzIGZvciBmaXguIjt9DQoNCiAgICAgZWNobyAiUGFyYW1ldGVycyBmb3IgbWFudWFsIGNvbm5lY3Q6PGJyPiI7DQoNCiAgICAgJGNmZ3ZhcnMgPSBhcnJheSgiZGJtcyI9PiRkYm1zLCJkYmhvc3QiPT4kZGJob3N0LCJkYm5hbWUiPT4kZGJuYW1lLCJkYnVzZXIiPT4kZGJ1c2VyLCJkYnBhc3N3ZCI9PiRkYnBhc3N3ZCk7DQoNCiAgICAgZm9yZWFjaCAoJGNmZ3ZhcnMgYXMgJGs9PiR2KSB7ZWNobyBodG1sc3BlY2lhbGNoYXJzKCRrKS4iPSciLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiInPGJyPiI7fQ0KDQogICAgIGVjaG8gIjwvYj48aHIgc2l6ZT0iMSIgbm9zaGFkZT4iOw0KDQogICAgfQ0KDQogICB9DQoNCiAgIGVjaG8gIjxkaXYgc3R5bGU9ImJvcmRlciA6IDBweCBzb2xpZCAjRkZGRkZGOyBwYWRkaW5nOiAxZW07IG1hcmdpbi10b3A6IDFlbTsgbWFyZ2luLWJvdHRvbTogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgbWFyZ2luLWxlZnQ6IDFlbTsgYmFja2dyb3VuZC1jb2xvcjogIi4kaGlnaGxpZ2h0X2JhY2tncm91bmQgLiI7Ij4iOw0KDQogICBpZiAoIWVtcHR5KCR3aGl0ZSkpIHtAb2JfY2xlYW4oKTt9DQoNCiAgIGhpZ2hsaWdodF9maWxlKCRkLiRmKTsNCg0KICAgaWYgKCFlbXB0eSgkd2hpdGUpKSB7Yzk5c2hleGl0KCk7fQ0KDQogICBlY2hvICI8L2Rpdj4iOw0KDQogIH0NCg0KICBlbHNlaWYgKCRmdCA9PSAiZG93bmxvYWQiKQ0KDQogIHsNCg0KICAgQG9iX2NsZWFuKCk7DQoNCiAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKTsNCg0KICAgaGVhZGVyKCJDb250ZW50LWxlbmd0aDogIi5maWxlc2l6ZSgkZC4kZikpOw0KDQogICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSIiLiRmLiIiOyIpOw0KDQogICBlY2hvICRyOw0KDQogICBleGl0Ow0KDQogIH0NCg0KICBlbHNlaWYgKCRmdCA9PSAibm90ZXBhZCIpDQoNCiAgew0KDQogICBAb2JfY2xlYW4oKTsNCg0KICAgaGVhZGVyKCJDb250ZW50LXR5cGU6IHRleHQvcGxhaW4iKTsNCg0KICAgaGVhZGVyKCJDb250ZW50LWRpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iIi4kZi4iLnR4dCI7Iik7DQoNCiAgIGVjaG8oJHIpOw0KDQogICBleGl0Ow0KDQogIH0NCg0KICBlbHNlaWYgKCRmdCA9PSAiaW1nIikNCg0KICB7DQoNCiAgICRpbmYgPSBnZXRpbWFnZXNpemUoJGQuJGYpOw0KDQogICBpZiAoISR3aGl0ZSkNCg0KICAgew0KDQogICAgaWYgKGVtcHR5KCRpbWdzaXplKSkgeyRpbWdzaXplID0gMjA7fQ0KDQogICAgJHdpZHRoID0gJGluZlswXS8xMDAqJGltZ3NpemU7DQoNCiAgICAkaGVpZ2h0ID0gJGluZlsxXS8xMDAqJGltZ3NpemU7DQoNCiAgICBlY2hvICI8Y2VudGVyPjxiPlNpemU6PC9iPiZuYnNwOyI7DQoNCiAgICAkc2l6ZXMgPSBhcnJheSgiMTAwIiwiNTAiLCIyMCIpOw0KDQogICAgZm9yZWFjaCAoJHNpemVzIGFzICR2KQ0KDQogICAgew0KDQogICAgIGVjaG8gIjxhIGhyZWY9IiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW1nJmQ9Ii51cmxlbmNvZGUoJGQpLiImaW1nc2l6ZT0iLiR2LiIiPiI7DQoNCiAgICAgaWYgKCRpbWdzaXplICE9ICR2ICkge2VjaG8gJHY7fQ0KDQogICAgIGVsc2Uge2VjaG8gIjx1PiIuJHYuIjwvdT4iO30NCg0KICAgICBlY2hvICI8L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7IjsNCg0KICAgIH0NCg0KICAgIGVjaG8gIjxicj48YnI+PGltZyBzcmM9IiIuJHN1cmwuImFjdD1mJmY9Ii51cmxlbmNvZGUoJGYpLiImZnQ9aW1nJndoaXRlPTEmZD0iLnVybGVuY29kZSgkZCkuIiIgd2lkdGg9IiIuJHdpZHRoLiIiIGhlaWdodD0iIi4kaGVpZ2h0LiIiIGJvcmRlcj0iMSI+PC9jZW50ZXI+IjsNCg0KICAgfQ0KDQogICBlbHNlDQoNCiAgIHsNCg0KICAgIEBvYl9jbGVhbigpOw0KDQogICAgJGV4dCA9IGV4cGxvZGUoJGYsIi4iKTsNCg0KICAgICRleHQgPSAkZXh0W2NvdW50KCRleHQpLTFdOw0KDQogICAgaGVhZGVyKCJDb250ZW50LXR5cGU6ICIuJGluZlsibWltZSJdKTsNCg0KICAgIHJlYWRmaWxlKCRkLiRmKTsNCg0KICAgIGV4aXQ7DQoNCiAgIH0NCg0KICB9DQoNCiAgZWxzZWlmICgkZnQgPT0gImVkaXQiKQ0KDQogIHsNCg0KICAgaWYgKCFlbXB0eSgkc3VibWl0KSkNCg0KICAgew0KDQogICAgaWYgKCRmaWxlc3RlYWx0aCkgeyRzdGF0ID0gc3RhdCgkZC4kZik7fQ0KDQogICAgJGZwID0gZm9wZW4oJGQuJGYsInciKTsNCg0KICAgIGlmICghJGZwKSB7ZWNobyAiPGI+Q2FuJ3Qgd3JpdGUgdG8gZmlsZSE8L2I+Ijt9DQoNCiAgICBlbHNlDQoNCiAgICB7DQoNCiAgICAgZWNobyAiPGI+U2F2ZWQhPC9iPiI7DQoNCiAgICAgZndyaXRlKCRmcCwkZWRpdF90ZXh0KTsNCg0KICAgICBmY2xvc2UoJGZwKTsNCg0KICAgICBpZiAoJGZpbGVzdGVhbHRoKSB7dG91Y2goJGQuJGYsJHN0YXRbOV0sJHN0YXRbOF0pO30NCg0KICAgICAkciA9ICRlZGl0X3RleHQ7DQoNCiAgICB9DQoNCiAgIH0NCg0KICAgJHJvd3MgPSBjb3VudChleHBsb2RlKCJybiIsJHIpKTsNCg0KICAgaWYgKCRyb3dzIDwgMTApIHskcm93cyA9IDEwO30NCg0KICAgaWYgKCRyb3dzID4gMzApIHskcm93cyA9IDMwO30NCg0KICAgZWNobyAiPGZvcm0gYWN0aW9uPSIiLiRzdXJsLiJhY3Q9ZiZmPSIudXJsZW5jb2RlKCRmKS4iJmZ0PWVkaXQmZD0iLnVybGVuY29kZSgkZCkuIiIgbWV0aG9kPVBPU1Q+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJTYXZlIj4mbmJzcDs8aW5wdXQgdHlwZT0icmVzZXQiIHZhbHVlPSJSZXNldCI+Jm5ic3A7PGlucHV0IHR5cGU9ImJ1dHRvbiIgb25jbGljaz0ibG9jYXRpb24uaHJlZj0nIi5hZGRzbGFzaGVzKCRzdXJsLiJhY3Q9bHMmZD0iLnN1YnN0cigkZCwwLC0xKSkuIic7IiB2YWx1ZT0iQmFjayI+PGJyPjx0ZXh0YXJlYSBuYW1lPSJlZGl0X3RleHQiIGNvbHM9IjEyMiIgcm93cz0iIi4kcm93cy4iIj4iLmh0bWxzcGVjaWFsY2hhcnMoJHIpLiI8L3RleHRhcmVhPjwvZm9ybT4iOw0KDQogIH0NCg0KICBlbHNlaWYgKCFlbXB0eSgkZnQpKSB7ZWNobyAiPGNlbnRlcj48Yj5NYW51YWxseSBzZWxlY3RlZCB0eXBlIGlzIGluY29ycmVjdC4gSWYgeW91IHRoaW5rLCBpdCBpcyBtaXN0YWtlLCBwbGVhc2Ugc2VuZCB1cyB1cmwgYW5kIGR1bXAgb2YgJEdMT0JBTFMuPC9iPjwvY2VudGVyPiI7fQ0KDQogIGVsc2Uge2VjaG8gIjxjZW50ZXI+PGI+VW5rbm93biBleHRlbnNpb24gKCIuJGV4dC4iKSwgcGxlYXNlLCBzZWxlY3QgdHlwZSBtYW51YWxseS48L2I+PC9jZW50ZXI+Ijt9DQoNCn0NCg0KfQ0KDQp9DQoNCmVsc2UNCg0Kew0KDQpAb2JfY2xlYW4oKTsNCg0KJGltYWdlcyA9IGFycmF5KA0KDQoiYXJyb3dfbHRyIj0+DQoNCiJSMGxHT0RsaEpnQVdBSUFBQUFBQUFQLy8veUg1QkFVVUFBRUFMQUFBQUFBbUFCWUFBQUl2akkrcHkrMFBGNGkwZ1Z2enVWeFhEbm9RIi4NCg0KIlNJclVaR1pvZXJLZjI4S2pQTlBPYWt1NVJmWit1UXNLaDhSaW9nQUFPdz09IiwNCg0KImJhY2siPT4NCg0KIlIwbEdPRGxoRkFBVUFLSUFBQUFBQVAvLy85M2QzY0RBd0lhR2hnUUVCUC8vL3dBQUFDSDVCQUVBQUFZQUxBQUFBQUFVQUJRQUFBTTgiLg0KDQoiYUxyYy9qREtTV1dwalZ5c1NOaVlKNENVT0JKb3FqbmlJTHp3dXpMdFlOLzN6QlNFcmY2a0JXK2dLUmlQUmdoUGgrRUZLMG1PVUVxdCIuDQoNCiJXZzBKQURzPSIsDQoNCiJidWZmZXIiPT4NCg0KIlIwbEdPRGxoRkFBVUFLSUFBQUFBQVAvLy8vajQrTjNkM2N6TXpMS3lzb2FHaHYvLy95SDVCQUVBQUFjQUxBQUFBQUFVQUJRQUFBTm8iLg0KDQoiZUxyY3JpYkc5MHk0RjFBbXU1K05oWTJreGwyQ01Ld3JRUlNHdVZqcDRMbXdEQVdxaUFHRlhDaGcreGhuUkIrcHRMT2hhaTFjckVtRCIuDQoNCiJEbHd2NGNFQzQ2bWkyWWdKUUtheHNFR0RGbm5Hd1dEVEV6ajlqclBSZGJodUc4Q3IvMklOWklPRWhYc2JEd2tBT3c9PSIsDQoNCiJjaGFuZ2UiPT4NCg0KIlIwbEdPRGxoRkFBVUFNUWZBTDNoajduWCtwcW8xZWp5L2Y3WUFjVGIrOHZoKzZGdEg1NldadHZyL1JBUUVaZWN4OUxsL1BYNi92MysiLg0KDQoiLzNlSHQ2cTg4ZUh1L1prZkgzeVZ5SXVRdCs3Mi9rT205OWZvL1A4QVptNTdya0dTNEhlejZwaWw5b2VwM0dabVp2Ly8veUg1QkFFQSIuDQoNCiJBQjhBTEFBQUFBQVVBQlFBQUFXZjRDZU9aR21lNk5tdExPdWxYK2M0VFZOVlE3ZTlxRnpmZzRIRm9ua2RKQTVTNTRjYlJBb0Z5RU9DIi4NCg0KIndTaVV0bVlra3Jnd09BZUE1enJxYUxsZEJpTk1JSmVEMjY2WFlUZ1FEbTVSeDhtZEcrb0FiU1lkYUg0R2EzYzhKQk1KYVhRR0JRZ0EiLg0KDQoiQ0hrakU0YVFrUTBBbFNJVGFuK1pBUXFraWlRUGoxQUZBYU1LRUtZakQzOVFyS3dLQWE4bkdRSzhBZ3UvQ3hUQ3NDTWV4c2ZJeGpETCIuDQoNCiJ6TXNoQURzPSIsDQoNCiJkZWxldGUiPT4NCg0KIlIwbEdPRGxoRkFBVUFPWlpBUHo4L05QRnlOZ0hMczBZT3ZQejgvYjI5c2FjcE5YVjFmWDE5Y3dYT2ZEdzhLZW5wL241K2V0Z2V1bnAiLg0KDQoiNmRjR0xNTXBSdXJxNnBLU2t0dmIyKy92Nysxd2gzUjBkUG5QMTdpQWlweHllbDlmWDdkamNzY1NNOTNkM1pHUmtlRXNUZXZkNExDdyIuDQoNCiJzR1JrWkdwT1UrSWZRK0VRTm9oNmZkSWNQZUhoNFlXRmhiSlFZdkx5OHVpK3htNXVic3hjY094OGtjTTRVdFk5V2VBZFFZbUppZld2Ii4NCg0KInZIeDhmTW5KeWNNM1VmM3Y4clJ1ZTk4T05iT3pzOVlGSzVTVWxLWW9QK1RrNU4wb1N1Zm41N1pHV3NRclI5a0lMNUNRa09QajQyVmwiLg0KDQoiWmVBUE51ZEFYOXNLTVB2NysxNVFVNXVibTM5L2Y4ZTV1NHhpYXRyYTJ1Ykt6OFBEdytwZmVlOS9sTUswdDgxcmZkOEFLZi8vL3dBQSIuDQoNCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDUiLg0KDQoiQkFFQUFGa0FMQUFBQUFBVUFCUUFBQWVzZ0ZtQ2c0U0Zob2VJaGlVZklJbUlNbGdRQjQ2R0xBbFlRa2FGVlZoU0FJWkxUNWNiRVlJNCIuDQoNCiJTVG81TXhPZmhRd0JBMWdZQ2hja1FCazFPd2lJQUxBQ0xrZ3hKaWxUQkk2OVJGaERGaDRIREpSWlZGZ1BQRkJSMEZrTldEZE1IQThHIi4NCg0KIkJaVGFNQ0lTVmdNQzRJa1ZXQ2NhUFNpOTZPcUdORmhLSTA0ZGdyMFFXRmNLREwzQTR1T0lqVlpaQUJ4UUlXREJMa0lFUXJSb1FzSFEiLg0KDQoiandWRkhCZ2lFR1FGSWdRYXNZa2NTYkpRSUFBNyIsDQoNCiJkb3dubG9hZCI9Pg0KDQoiUjBsR09EbGhGQUFVQUxNSUFBRC9BQUNBQUlBQUFNREF3SDkvZi84QUFQLy8vd0FBQVAvLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUNINUJBRUFBQWdBTEFBQUFBQVVBQlFBQUFST0VNbEpxNzA0VXlHT3ZrTGhmVlU0a3BPSlNweDVuRjlZaUN0TGYwU3VIN3B1Ii4NCg0KIkVZT2djQmdrd0FpR3BIS1p6QjJKeEFEQVNRRkNpZFFKc01mZEdxc0RKbk9RbFhUUDM4cHJ6V2JYM3FnSUFEcz0iLA0KDQoiZm9yd2FyZCI9Pg0KDQoiUjBsR09EbGhGQUFVQVBJQUFBQUFBUC8vLzkzZDNjREF3SWFHaGdRRUJQLy8vd0FBQUNINUJBRUFBQVlBTEFBQUFBQVVBQlFBQUFNOCIuDQoNCiJhTHJjL2pESzJRcDl4VjVXaU41RzUwRlphUkxENkloRTY2THB0M1JEYmQ5Q1FGU0U0UCsrUVc3SGU3VUtQaDBJcVZ3MmwwUlFTRXF0Ii4NCg0KIldxc0pBRHM9IiwNCg0KImhvbWUiPT4NCg0KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8rcnE2dDNkM2N6TXpMS3lzb2FHaG1abVpnUUVCUC8vL3dBQUFBQUFBQUFBQUFBQUFBQUEiLg0KDQoiQUFBQUFDSDVCQUVBQUFrQUxBQUFBQUFVQUJRQUFBUitNTWs1VFRXSTZpcHlNb08zY1VXUmdlSm9DQ2FMb0tPMG1xMFp4ak5TQkRXUyIuDQoNCiJrcnFBc0xmSjdZUUJsNHRpUkNZRlNwUE1kUlJDb1FPaUw0aThDZ1pnazA5V2ZXTEJZWkhCNlVXakNlcXV3RURIdU9FVkszUXRnTi9qIi4NCg0KIlZ3TXJCRFp2Z0YrQ2hIYUdlWWlDQlFZSENIOFZCSmFXZEFlU2w1WWlXNStnb0JJUkFEcz0iLA0KDQoibW9kZSI9Pg0KDQoiUjBsR09EbGhIUUFVQUxNQUFBQUFBUC8vLzZDZ3BOM2QzY3pNeklhR2htWm1abDlmWC8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUNINUJBRUFBQWdBTEFBQUFBQWRBQlFBQUFTQkVNbEpxNzA0NjFtNi8rQUhaTVVnbkdpcW5pTldISEFzejNGN0ZVR3U3M3hPIi4NCg0KIjJCWmN3R0RvRVhrL1VxNElDQUNlUTZmem1YVGxuczBkZGxlOTliN2NGdllwRVI1NVoxMFh5MWxLdDh3cG9Jc0FDcmRhcUJwWUVZSy8iLg0KDQoiZEgxTFJXaUVlMHBSVFhCdlZId1VkM282ZUQ2T0hBU1htSm1hbUpVU1k1K2dueHVqcEJJUkFEcz0iLA0KDQoicmVmcmVzaCI9Pg0KDQoiUjBsR09EbGhFUUFVQUxNQUFBQUFBUC8vLy9IeDhlcnE2dVBqNDkzZDNjek16TEt5c29hR2htWm1abDlmWHdRRUJQLy8vd0FBQUFBQSIuDQoNCiJBQUFBQUNINUJBRUFBQXdBTEFBQUFBQVJBQlFBQUFSMWtNbEpxMFE0NjB4UitHQW9JTXZraGVJWWxNeUpCa0o4bG02WXhNS2k2eldZIi4NCg0KIjNBS0NZYmpvL1k0RVFxRmdLSVlVaDhFdnVXUTZQd1BGUUpwVUxwdW5yWFpMcllLeDIwRzNvREE3MDkzRXN2MTlxNU8vd29GdTlaQUoiLg0KDQoiUjNsdWZtV0NWWDEzaDNLSGZXV01qR0JEa3BPVVRUdVhtSmdSQURzPSIsDQoNCiJzZWFyY2giPT4NCg0KIlIwbEdPRGxoRkFBVUFMTUFBQUFBQVAvLy8rcnE2dDNkM2N6TXpNREF3TEt5c29hR2huZDNkMlptWmw5ZlgwMU5UU2twS1FRRUJQLy8iLg0KDQoiL3dBQUFDSDVCQUVBQUE0QUxBQUFBQUFVQUJRQUFBU24wTWw1cWowejV4cjYrSlpHZVVacEhJcVJOT0lSZklZaXkrYTZ2Y09wSE9hcCIuDQoNCiJzNUlLUWNjejhYZ0s0RUdnUXFXTXZrclNzY3lsaG9hRlZtdVpMZ1VEQW5aeEVCTU9EU25ya2hpU0NaNENHclVXTUErTExEeHVTSHNEIi4NCg0KIkFrTjRDM3NmQlgxMFZIYUJKNFFmQTRlSVU0cGlqUWNGbUNWb05rRmxnZ2NNUlNjTlNVQ2RKeWhvRGFzTlo1TVREVnNYQndsdmlSbXIiLg0KDQoiQ2JxN0M2c0lycWF3ckt3VHY2OGl5QTZyRGhFQU93PT0iLA0KDQoic2V0dXAiPT4NCg0KIlIwbEdPRGxoRkFBVUFNUUFBQUFBQVAvLy8vajQrT1BqNDkzZDNjek16TURBd0xLeXNwYVdsb2FHaG5kM2QyWm1abDlmWDAxTlRVSkMiLg0KDQoiUWh3Y0hQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0g1QkFFQSIuDQoNCiJBQkFBTEFBQUFBQVVBQlFBQUFXVklDU0tpa0tXYURtdVNoQ1VianpNd0VvR2hWdnNmSEVFTlJZT2dlZ2xqa2VnMFBGNEtCSUZSTUlCIi4NCg0KInFDYUNKNGVJR1FWb0lWV3NUZlFvWE1mb1VmbU1acmdaMkdORFBHSUk3Z0pETFlFcndHMXZnVzhDQ1F0emdIaUpBbmFGaHl0MmR3UUUiLg0KDQoiT3djTVpvWjBrSktVbFplT2RRS2JQZ2VkalptaG5BY0pscWFJcVVlc21JaWtwRWl4bnlKaHVsVU1oZzI0YVNPNll5RUFPdz09IiwNCg0KInNtYWxsX2RpciI9Pg0KDQoiUjBsR09EbGhFd0FRQUxNQUFBQUFBUC8vLzV5Y0FNN09ZLy8vblAvL3p2L09uUGYzOS8vLy93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUNINUJBRUFBQWdBTEFBQUFBQVRBQkFBQUFSUkVNbEpxNzA0NnlwNkJ4c2lIRVZCRUFLWUNVUHJEcDdIbFhSZEVvTXFDZWJwIi4NCg0KIi80WWNoZmZ6R1FoSDRZUllQQjJET2xIUGlLd3FkMVBxOHlyVlZnM1FZZUg1UllLNXJKZmFGVVVBM3ZCNGZCSUJBRHM9IiwNCg0KInNtYWxsX3VuayI9Pg0KDQoiUjBsR09EbGhFQUFRQUhjQUFDSDVCQUVBQUpVQUxBQUFBQUFRQUJBQWh3QUFBSWVwM0JFOW1sbGljM0I1aVZwamRNdmgvTUxjK3kxVSIuDQoNCiJwOVBtL0dWdWZjN2ovTXpWLzlYbS9FT205OWJuL05qcC9hN1ErdFRtL0xIUytlWHcvdDNyL05ucC9kam8vTnJxL2ZqNy85dnEvTmZvIi4NCg0KIi9NYmUrOHJoL01uZys3alcrcnZZK3I3Wis3WFI5ZERrL05Iay9OTGwvTFRVK3JuWCs4emkvTGJWKytmeC9lNzIvdkgzL3ZMNC91MzEiLg0KDQoiL2UzMS91RHUvZHpyL09yei9lSHUvZlg2L3ZINC92Ly8vL3YrLzNlejZ2ZjcvL1Q1L2tHUzRQdjkvN1hWK3JIVCtyL2IrcnphK3ZQNCIuDQoNCiIvdXowL3Vyei91NzEvdXZ6L2RUbi9NL2svTjNzL2R2ci9jamcrOFBkKzhIYytzZmYrOFRlKy9EMi9yWEk4ckhGOGJyTTg3Zko4bm1QIi4NCg0KIndyM044Ni9EOEt2QjhGOW5lRUZvdEVCbnRFTnB0RU5wdFN4VXB4MUlvRGxmclRSY3JaZWV5WmFjeHBtaHpJdVJ0cFdaeEl1T3VLcXoiLg0KDQoiOVpPV3dYNklzM1dJdTVpbTA3cko5SjJ0MlplazBtNTdycHFvMW5LQ3RVVnJ0WWlyM3ZmNi80NnY0WXV1NFdadmZyN1A2c1BTNnNEUSIuDQoNCiI2NlhCNmNqWjhhL0s3OS9zL2Ribi9lenovY3pkOW1OMGpLVEI2YWkvNzZXOTduaVh6MkdDd1Y2QXdVZHN0WHlWeUdTRHdubVl6NGlvIi4NCg0KIjI0T2kxYTNCNDVTeTRhZTk0NENjejRTajFuMkdsZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCg0KIkFBam5BQ3RWQ2tDdzRKeEpBUVFxRkJqQXhvME1OR3FzQUJRQWg2Q0ZBM25rME1IaVJSRVZEaHpzb0xRd0FKMGdUNFRvZWNTSEFZTXoiLg0KDQoiYVFnb0ROQ0NTQjRFQW5JbUNpU0JqVXlHTG9iZ1hCVHBrQUE1STZwZ21Ta0R6NWN1TVN6OHlXbEF5b0NaRkdiNFNRS2hBU01CWEpwTSIuDQoNCiJ1U3JRRVF3a0dqWWtRQ1RBeTZBbFVNaFdrbFFCdzRNRWhnU0E2WFBnUnhTNWlpNDBLTEZnaTRCR1RFS0FzQ0tYaWhFU0N6cnNnU1FDIi4NCg0KInlJa1VWK1NxT1lMQ0E0Y3NBdXA4Nk9HRGtOdzRCcFE0T2FCRmdCMFRFeUlVS3FEd1RSczRhOXlNQ1NPbURCb3ladTRzSktDZ3dJRGoiLg0KDQoieUFzb2tCa1FBRHM9IiwNCg0KIm11bHRpcGFnZSI9PiJSMGxHT0RsaENnQU1BSkVEQVAvLy8vLzNtUUFBQUFBQUFDSDVCQUVBQUFNQUxBQUFBQUFLQUF3QUFBSWozSVIiLg0KDQoicEpoQ09Ebm92aWRBb3ZCZE16emtpeGxYZGxJMm9acEpXRXNTeXdMelJVQUFBT3c9PSIsDQoNCiJzb3J0X2FzYyI9Pg0KDQoiUjBsR09EbGhEZ0FKQUtJQUFBQUFBUC8vLzlUUXlJQ0FnUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQU9BQWtBQUFNYSIuDQoNCiJTTHJjUGNFOUdLVWFRbFE1c041UGxvRkxKMzVPb0s2cTVTWUFPdz09IiwNCg0KInNvcnRfZGVzYyI9Pg0KDQoiUjBsR09EbGhEZ0FKQUtJQUFBQUFBUC8vLzlUUXlJQ0FnUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQU9BQWtBQUFNYiIuDQoNCiJTTHJjT2pCQ0I0VVZJVGd5THQ1Y2gybWdTSlpEQmk3cDZoSUpBRHM9IiwNCg0KInNxbF9idXR0b25fZHJvcCI9Pg0KDQoiUjBsR09EbGhDUUFMQVBjQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnSUNBZ01EQXdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuDQoNCiIvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLg0KDQoiQUFCbU13Qm1aZ0JtbVFCbXpBQm0vd0NaQUFDWk13Q1paZ0NabVFDWnpBQ1ovd0RNQUFETU13RE1aZ0RNbVFETXpBRE0vd0QvQUFELyIuDQoNCiJNd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpNQW1UTUF6RE1BL3pNekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tIi4NCg0KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLg0KDQoibVRQL3pEUC8vMllBQUdZQU0yWUFabVlBbVdZQXpHWUEvMll6QUdZek0yWXpabVl6bVdZenpHWXovMlptQUdabU0yWm1abVptbVdabSIuDQoNCiJ6R1ptLzJhWkFHYVpNMmFaWm1hWm1XYVp6R2FaLzJiTUFHYk1NMmJNWm1iTW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvIi4NCg0KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLg0KDQoiQUptWk01bVpacG1abVptWnpKbVovNW5NQUpuTU01bk1acG5NbVpuTXpKbk0vNW4vQUpuL001bi9acG4vbVpuL3pKbi8vOHdBQU13QSIuDQoNCiJNOHdBWnN3QW1jd0F6TXdBLzh3ekFNd3pNOHd6WnN3em1jd3p6TXd6Lzh4bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5WkFNeVpNOHlaIi4NCg0KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLg0KDQoibWY4QXpQOEEvLzh6QVA4ek0vOHpadjh6bWY4enpQOHovLzltQVA5bU0vOW1adjltbWY5bXpQOW0vLytaQVArWk0vK1paditabWYrWiIuDQoNCiJ6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8vL0FQLy9NLy8vWnYvL21mLy96UC8vL3lINUJBRUFBQkFBTEFBQUFBQUpBQXNBIi4NCg0KIkFBZzRBUDhKUkVGUTREK0NDQk9pNE1hd0lUZUZDZy9pUWhFUHhjU0JsRkNvUTVGeDRNU0t2MUJnUkdHTW8waUpGQzJlaEhqU29NdC8iLg0KDQoiQVFFQU93PT0iLA0KDQoic3FsX2J1dHRvbl9lbXB0eSI9Pg0KDQoiUjBsR09EbGhDUUFLQVBjQUFBQUFBSUFBQUFDQUFJQ0FBQUFBZ0lBQWdBQ0FnSUNBZ01EQXdQOEFBQUQvQVAvL0FBQUEvLzhBL3dELyIuDQoNCiIvLy8vL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTXdBQVpnQUFtUUFBekFBQS93QXpBQUF6TXdBelpnQXptUUF6ekFBei93Qm0iLg0KDQoiQUFCbU13Qm1aZ0JtbVFCbXpBQm0vd0NaQUFDWk13Q1paZ0NabVFDWnpBQ1ovd0RNQUFETU13RE1aZ0RNbVFETXpBRE0vd0QvQUFELyIuDQoNCiJNd0QvWmdEL21RRC96QUQvL3pNQUFETUFNek1BWmpNQW1UTUF6RE1BL3pNekFETXpNek16WmpNem1UTXp6RE16L3pObUFETm1Nek5tIi4NCg0KIlpqTm1tVE5tekRObS96T1pBRE9aTXpPWlpqT1ptVE9aekRPWi96UE1BRFBNTXpQTVpqUE1tVFBNekRQTS96UC9BRFAvTXpQL1pqUC8iLg0KDQoibVRQL3pEUC8vMllBQUdZQU0yWUFabVlBbVdZQXpHWUEvMll6QUdZek0yWXpabVl6bVdZenpHWXovMlptQUdabU0yWm1abVptbVdabSIuDQoNCiJ6R1ptLzJhWkFHYVpNMmFaWm1hWm1XYVp6R2FaLzJiTUFHYk1NMmJNWm1iTW1XYk16R2JNLzJiL0FHYi9NMmIvWm1iL21XYi96R2IvIi4NCg0KIi81a0FBSmtBTTVrQVpwa0FtWmtBekprQS81a3pBSmt6TTVrelpwa3ptWmt6ekprei81bG1BSmxtTTVsbVpwbG1tWmxtekpsbS81bVoiLg0KDQoiQUptWk01bVpacG1abVptWnpKbVovNW5NQUpuTU01bk1acG5NbVpuTXpKbk0vNW4vQUpuL001bi9acG4vbVpuL3pKbi8vOHdBQU13QSIuDQoNCiJNOHdBWnN3QW1jd0F6TXdBLzh3ekFNd3pNOHd6WnN3em1jd3p6TXd6Lzh4bUFNeG1NOHhtWnN4bW1jeG16TXhtLzh5WkFNeVpNOHlaIi4NCg0KIlpzeVptY3laek15Wi84ek1BTXpNTTh6TVpzek1tY3pNek16TS84ei9BTXovTTh6L1pzei9tY3ovek16Ly8vOEFBUDhBTS84QVp2OEEiLg0KDQoibWY4QXpQOEEvLzh6QVA4ek0vOHpadjh6bWY4enpQOHovLzltQVA5bU0vOW1adjltbWY5bXpQOW0vLytaQVArWk0vK1paditabWYrWiIuDQoNCiJ6UCtaLy8vTUFQL01NLy9NWnYvTW1mL016UC9NLy8vL0FQLy9NLy8vWnYvL21mLy96UC8vL3lINUJBRUFBQkFBTEFBQUFBQUpBQW9BIi4NCg0KIkFBZ2pBUDhKUkVGUTREK0NDQk9pTU1oUW9jS0RFQmN1akVpUm9zU0JGakZlbk9od1lVQUFPdz09IiwNCg0KInNxbF9idXR0b25faW5zZXJ0Ij0+DQoNCiJSMGxHT0RsaERRQU1BUGNBQUFBQUFJQUFBQUNBQUlDQUFBQUFnSUFBZ0FDQWdJQ0FnTURBd1A4QUFBRC9BUC8vQUFBQS8vOEEvd0QvIi4NCg0KIi8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNd0FBWmdBQW1RQUF6QUFBL3dBekFBQXpNd0F6WmdBem1RQXp6QUF6L3dCbSIuDQoNCiJBQUJtTXdCbVpnQm1tUUJtekFCbS93Q1pBQUNaTXdDWlpnQ1ptUUNaekFDWi93RE1BQURNTXdETVpnRE1tUURNekFETS93RC9BQUQvIi4NCg0KIk13RC9aZ0QvbVFEL3pBRC8vek1BQURNQU16TUFaak1BbVRNQXpETUEvek16QURNek16TXpaak16bVRNenpETXovek5tQURObU16Tm0iLg0KDQoiWmpObW1UTm16RE5tL3pPWkFET1pNek9aWmpPWm1UT1p6RE9aL3pQTUFEUE1NelBNWmpQTW1UUE16RFBNL3pQL0FEUC9NelAvWmpQLyIuDQoNCiJtVFAvekRQLy8yWUFBR1lBTTJZQVptWUFtV1lBekdZQS8yWXpBR1l6TTJZelptWXptV1l6ekdZei8yWm1BR1ptTTJabVptWm1tV1ptIi4NCg0KInpHWm0vMmFaQUdhWk0yYVpabWFabVdhWnpHYVovMmJNQUdiTU0yYk1abWJNbVdiTXpHYk0vMmIvQUdiL00yYi9abWIvbVdiL3pHYi8iLg0KDQoiLzVrQUFKa0FNNWtBWnBrQW1aa0F6SmtBLzVrekFKa3pNNWt6WnBrem1aa3p6Smt6LzVsbUFKbG1NNWxtWnBsbW1abG16SmxtLzVtWiIuDQoNCiJBSm1aTTVtWlpwbVptWm1aekptWi81bk1BSm5NTTVuTVpwbk1tWm5NekpuTS81bi9BSm4vTTVuL1pwbi9tWm4vekpuLy84d0FBTXdBIi4NCg0KIk04d0Fac3dBbWN3QXpNd0EvOHd6QU13ek04d3pac3d6bWN3enpNd3ovOHhtQU14bU04eG1ac3htbWN4bXpNeG0vOHlaQU15Wk04eVoiLg0KDQoiWnN5Wm1jeVp6TXlaLzh6TUFNek1NOHpNWnN6TW1jek16TXpNLzh6L0FNei9NOHovWnN6L21jei96TXovLy84QUFQOEFNLzhBWnY4QSIuDQoNCiJtZjhBelA4QS8vOHpBUDh6TS84elp2OHptZjh6elA4ei8vOW1BUDltTS85bVp2OW1tZjltelA5bS8vK1pBUCtaTS8rWlp2K1ptZitaIi4NCg0KInpQK1ovLy9NQVAvTU0vL01adi9NbWYvTXpQL00vLy8vQVAvL00vLy9adi8vbWYvL3pQLy8veUg1QkFFQUFCQUFMQUFBQUFBTkFBd0EiLg0KDQoiQUFnekFGRUlIRWl3b01HRENCSDZXMGd0b1VCLy8xQkVOT2lQMnNLRUN6TmVOSWlxWTBkL0ZCZit5MGpSNDhlUUdVYzZKQmdRQURzPSIsDQoNCiJ1cCI9Pg0KDQoiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLy9qNCtPUGo0OTNkM2N6TXpMS3lzb2FHaGsxTlRmLy8vd0FBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUNINUJBRUFBQWtBTEFBQUFBQVVBQlFBQUFSME1NbEpxNzM0bnMxUG5rY2dqZ1h3aGNOUXJJVmhtRm9uenh3UWpuaWUyN2pnIi4NCg0KIis0UWd5M1hnQlg0SW9IRGxNaFJ2Z2dGaUdpU3dXczVYeURmdFdwbEVKKzlIUUN5eDJjMVlFRFJmd3dmeHRvcDRwNTNQd0xLT2p2dlYiLg0KDQoiSVh0ZGd3Z2RQR2RZZm5nMUlWZUphVElBa3BPVWxaWWZIeEVBT3c9PSIsDQoNCiJ3cml0ZSI9Pg0KDQoiUjBsR09EbGhGQUFVQUxNQUFBQUFBUC8vLzkzZDNjek16TEt5c29hR2htWm1abDlmWHdRRUJQLy8vd0FBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUNINUJBRUFBQWtBTEFBQUFBQVVBQlFBQUFSME1NbEpxeXpGYWxxRVFKdUdFUVNDbldnNkZvZ3BrSEFNRjRIQUpzV2g3L3plIi4NCg0KIkVRWVFMVUFzR2dNMFd3dDNiQ0pmUVNGeDEweXlCbEpuOFJmRU1nTTlYKzNxSFdxNWlFRDV5Q3NNQ2wxMTFrbkRwdVhmWWxzK0lLNjEiLg0KDQoiTFhkK1dXRUhMVWQvVG9KRlpRT09qNUNSamlDQmxaYVhJQkVBT3c9PSIsDQoNCiJleHRfYXNwIj0+DQoNCiJSMGxHT0RkaEVBQVFBTE1BQUFBQUFJQUFBQUNBQUlDQUFBQUFnSUFBZ0FDQWdNREF3SUNBZ1A4QUFBRC9BUC8vQUFBQS8vOEEvd0QvIi4NCg0KIi8vLy8veXdBQUFBQUVBQVFBQUFFU3ZESVNhc0YyTjZETU5BUzhCeGZsMVVpT1pZZTlhVXdncERUcTZxUC9JWDBPejdBWFUvMWVSZ0kiLg0KDQoiRDZIUGh6alNlTFlkWWFic0RDV01ad2hnM1dXdEtLNFFyTUhvaENBUytoQUJBRHM9IiwNCg0KImV4dF9tcDMiPT4NCg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd0lDQUFQLy9BQUFBQUFBQUFBTlUiLg0KDQoiYUdyUzdpdUtRR3NZSXFwcDZRaVpSRFFXWUFJTFFRU0EyZzJvNFFvQVNIR3d2QmJBTjNHWDFxWEErcjFhQlFIUlpITUVEU1lDejNmYyIuDQoNCiJJR3RHVDh3QVV3bHR6d1dOV1JWM0xEbnhZTTF1YjZHbmVEd0JBRHM9IiwNCg0KImV4dF9hdmkiPT4NCg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd1A4QUFBQUFBQUFBQUFBQUFBTk0iLg0KDQoiV0ZyUzdpdUtRR3NZSXFwcDZRaVoxRkZBQ1lpakI0Uk1xamJZMDFEd1dnNDRnQXNyUDVRRmsyNEh1T2hPREp3U1UvSWhCWVRjanhlNCIuDQoNCiJQWVhDeWcrVjJpNDRYZVJtU2ZZcXNHaEFBZ0E3IiwNCg0KImV4dF9jZ2kiPT4NCg0KIlIwbEdPRGxoRUFBUUFHWUFBQ0g1QkFFQUFFd0FMQUFBQUFBUUFCQUFoZ0FBQUp0cUNIZDNkN2lOR2ErSE11N2VyOUdpQzYrSU9PdTkiLg0KDQoiRGtKQVBxeUZRcWwvTi9EbGhzeXlmZTY3QWYvU0ZQLzhrZi85bEQ5RVR2L1BDdi9jUS8vZU52L1hJZi9aS1AvUkR2L2JMZi9jTWFoNiIuDQoNCiJMUFBZUnZ6Z1Irdmd4N3lWTXYvbFV2L21Udi9mT2YvTUF2L21jZi9OQS8vcWlmL01BUC9URmYveHA3dVpWZi9XSVAvT0JxdC9Idi9TIi4NCg0KIkV2L2hQKzdPT1AvV0h2L3diSE5mUDRWelY3dVBGdi9wVi8vclhmL3ljZi96ZHYvMGVVTkpXRU5LV3N5a0lrOVJXTXl0UC8vNGlFcFEiLg0KDQoiWHYvOXFmYnB0UC91WjkzR2lOcTZYV3BSSi8vaVF2N3dzcXVFUXYvalJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWVlZ0V5Q2cwd0JoSWVIQVlxSWpBRXdob3lFQVFRWEJKQ1JoUU11QTVlU2lvb0dJd2FmaTRVTSIuDQoNCiJCYWdORkJNY0RSNEZRd3dCQWdFR1NCQkVGU3d4TmhBeUdnNldBa3dDQkFndkZpVWlPQkVnTlVjN3c0SUNORDhQS0NGQU9pMEpQTktEIi4NCg0KIkFrVW5HVGtSTndNUzM0TUJKQmdkUmtKTENEN3FnZ0VQS3hzSktpWVRCd2VKa2poUWtrN0FoeFE5RnFnTE1HQkdrRzhLRkNnOEpLQWkiLg0KDQoiUll0TUFnRUFPdz09IiwNCg0KImV4dF9jbWQiPT4NCg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBY0FMQUFBQUFBUUFCQUFnZ0FBQVAvLy80Q0FnTURBd0FBQWdJQ0FBUC8vQUFBQUFBTkkiLg0KDQoiZUxyY0p6REtDWWU5K0FvZ0J2bGcrRzJkU0FRQWlwSUQ1WEpESU0rMHpOSkZrZEwzREJnNkhteFdNRUFBaFZsUEJoZ1lkclloRFFDTiIuDQoNCiJkbXJZQU1uMW9ucS9ZS3BqdkVnQUFEcz0iLA0KDQoiZXh0X2NwcCI9Pg0KDQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWd2Ly8vd0FBQUFBQWdJQ0FnTURBd0FBQUFBQUFBQUFBQUFOQyIuDQoNCiJXTFBjOVhDQVNTY1o4TWxLaWNvYkJ3UmtFSWtWWVdxVDRGSUNvSjV2N2M2czNjcXJBcndpbkUvMzQ5RmlOb0Z3NDRydGxxaE9MNFJhIi4NCg0KIkVxN1lyTERFN2E0U0FEcz0iLA0KDQoiZXh0X2luaSI9Pg0KDQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFZQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzhEQXdJQ0FnSUNBQVAvL0FBQUFBQUFBQUFOTCIuDQoNCiJhQXJCM2lvYU5rSzlNTmJIczZsQktJb0NvSTFvVUo0TjREQ3FxWUJwdU02aHE4UDNod29FZ1UzbWF3RUxCRWFQRmlBVUFNZ1l5M1ZNIi4NCg0KIlNuRWpnUFZhckhFSGdyQjQzSnZzenNRRUFEcz0iLA0KDQoiZXh0X2RpeiI9Pg0KDQoiUjBsR09EbGhFQUFRQUhjQUFDSDVCQUVBQUpVQUxBQUFBQUFRQUJBQWh3QUFBUC8vLzE1cGhjZmI2TkxzLzdQYy8rUDAvM0orbDlicyIuDQoNCiIvNTJudXFqSzUvbi8vL2ovLy83Ly8vci8vMHRybHNQbi84bm4vOG5aNXRybTc5bnUvOC9xLzlYdC85encvOTN3LytqMS85SHIvK0R2Ii4NCg0KIi9kN3YvNzNIME1qVTM5enUvOWJyLzhuZTh0WG4rSzYvejhYai9MalY3ZERwLzZLNHk4YmwvNU80Mk96Mi83SFc5SnU5MnUvOS84VDMiLg0KDQoiLytMLy8rNysvK3Y2LysvNi85SDQvK1g2LytYbDVQei8vKy90N2ZYMDh2RC8vKzMvLy9QLy8vSC8vL1A3LzhucS84ZnAvOFRsOTh6ciIuDQoNCiIvKy96OXZUNCsrbjEvYi9rL2RueS85SHYvK3Y0LzkvMC85ZncvOC91Lzh2dC8rLzA5eFV2WGhRdFc0S1RzMlYxa3c0b1ZUZFlwRFpYIi4NCg0KInBWeHFobHhxaUV4a2ltS0J0TVBMMkZ0dmoyT1Y2YU91d3BxbHVseU4zY25PMXdBQVhRQUFaU004akU1WGpnQUFid0FBZVVSQllnQUEiLg0KDQoiZEFBQWR6WkVhRTl3d0RaWXBtVnZpUjQ5akcxMmtDaEZtZ1l1ajYrMXhlTG43TnpqNnBtMjBvZXF5cFMyMTJTSnJhQ3l4Wld5ejdQVyIuDQoNCiI5Yy9vLzg3bi84RFg3TUhZN3EvSzVMZlg5YXJCMXNybC8yK2Z6cTI5MFUxNHE3ZkN6NmUyeVh1bTMwRmpsQ2xIYzRlWHI2YkkrYlRLIi4NCg0KIjRyZlcrTlhlNk9ieS81U3Z6V1NIciticjhXdUtyUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KDQoNCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQWpnQUNzSnJEUkhTSUNEUTdJTVhEZ0p4OEV2WnVJY2JQQm9vWndiQndPTUFmTW1Zd0JDQTJzRWNOQmpKQ01ZQVRMSU9MaW9rb2NtIi4NCg0KIkMxUXNrQUNsQ3hjR0JqN0VzTkhvUUFjaVNDQzFtTkFtakpnR0dFQlFvQkhpZ0tFTkJqaGNDQkFJelJvR0Zrd1FNTktueWdnUlNSQWciLg0KDQoiMkJIcERCVWVld1JWMFBESENwNEJTZ2p3MFpHSHpKUWNFVkQ0SUVISnpZa0JmbzRzZVlHbERCd2dUQ0FBWXZGRTRLRUJKWUk0VXJQRiIuDQoNCiJDeUlJSyt3b1lqTXdRUUk2Q29yOG1LRW54UjBuQWhZS2pISkZRWUVDa3FTa1NhMTY0SU02TGhMUnJyM3d3YUJDdTNrUEZLQ2xka0FBIi4NCg0KIk93PT0iLA0KDQoiZXh0X2RvYyI9Pg0KDQoiUjBsR09EbGhFQUFRQUNJQUFDSDVCQUVBQUFVQUxBQUFBQUFRQUJBQWdnQUFBUC8vLzhEQXdBQUEvNENBZ0FBQUFBQUFBQUFBQUFOUiIuDQoNCiJXRXJjcnJDUVFDc2xRQTJ3T3dkWGtJRldOVkJBK25tZTRBWkN1b2xuUndrd0Y5UWdFT1BBRkcyMUErWjRzUUhPOTRyMWVKUlRKVm1xIi4NCg0KIk1JT3JyUFNXV1pSY3phNmthb2xCQ09CMFdveFJ1ZDBKQURzPSIsDQoNCiJleHRfZXhlIj0+DQoNCiJSMGxHT0RsaEV3QU9BS0lBQUFBQUFQLy8vd0FBdmNiR3hvU0VoUC8vL3dBQUFBQUFBQ0g1QkFFQUFBVUFMQUFBQUFBVEFBNEFBQU03Ii4NCg0KIldMVGNUaVdTUWF1dEJFUTFoUCtnbDIxVEtBUUFpbzdTOEx4YUc4eDBQYk9jclFmNHROdTl3YThXSE5LS1JsNHNsK3k5WUJ1QWRFcXQiLg0KDQoieGhJQU93PT0iLA0KDQoiZXh0X2giPT4NCg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkIiLg0KDQoiV0xQYzlYQ0FTU2NaOE1sS0NjQVJSd1ZrRUFLQ0lCS21OcVZycTd3cGJNbWJiYk9ucmdJOEYrcTN3OUdPUU9NUUdaeUpPc3BuTWtLbyIuDQoNCiJXcS9Oa25iYlNnQUFPdz09IiwNCg0KImV4dF9ocHAiPT4NCg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBVUFMQUFBQUFBUUFCQUFndi8vL3dBQUFBQUFnSUNBZ01EQXdBQUFBQUFBQUFBQUFBTkYiLg0KDQoiV0xQYzlYQ0FTU2NaOE1sS2ljb2JCd1JrRUFHQ0lBS0VxYUZxcGJabm1rNDIvZDQzeXJvS21MQURsUEJpczZMd0tOQUZqN2pmYVdWUiIuDQoNCiJVcVVhZ25iTGRaYStZRmNDQURzPSIsDQoNCiJleHRfaHRhY2Nlc3MiPT4NCg0KIlIwbEdPRGxoRUFBUUFDSUFBQ0g1QkFFQUFBWUFMQUFBQUFBUUFCQUFnZ0FBQVA4QUFQOEEvd0FBZ0lBQWdQLy9BQUFBQUFBQUFBTTYiLg0KDQoiV0VYVy9rNlJBR3NqbUZvWWdOQmJFd2pEQjI1ZEdaelZDS2dzUjhMaFNucHJQUTQwNnBhZm1rRHdVdW1JdkpCb1JBQUFsRXVERXdwSiIuDQoNCiJBQUE3IiwNCg0KImV4dF9odG1sIj0+DQoNCiJSMGxHT0RsaEV3QVFBTE1BQUFBQUFQLy8vMnRybk0zUC9GQlZoclBPOWw2SXRveXQweWhnaytYeS9XR3A0c1hsL2k2WjRtZmQvSE56Ii4NCg0KImMvLy8veUg1QkFFQUFBOEFMQUFBQUFBVEFCQUFBQVNUOE1sM3FxMW02bm1DLzRHaGJGb1hKRU8xQ0FORFNvY2lHa2JBQ0hpMjBVM1AiLg0KDQoiS0lGR0lqQVFPRFNpQldPNU5BeFJSbVRnZ0Rna21NN0U2aWlwSFpZS0JWTlFTQlNpa3VrU3dXNGp5bWN1cFlGZ0lCcUwvTUs4S0JEayIuDQoNCiJCa3gyQlhXRGZYOFRERGFGREEwS0JBZDlmbklLSFhZSUJKZ0hCUU9IY2crVkNpa1ZBNXdMcFlnYkJLdXJEcXlzbnhNT3M3UzFzeElSIi4NCg0KIkFEcz0iLA0KDQoiZXh0X2pwZyI9Pg0KDQoiUjBsR09EbGhFQUFRQURNQUFDSDVCQUVBQUFrQUxBQUFBQUFRQUJBQWd3QUFBUC8vLzhEQXdJQ0FnSUNBQVA4QUFBRC9BSUFBQUFDQSIuDQoNCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSY2NNaEprNzBqNkszRnVGYkdiVUx3SmNVaGpnSGdBa1VxRWdKTkVFQWd4RWNpIi4NCg0KIkNpOEFMc0FMYVhDR0pLNW8xQUdTQnNJQWNBQmdqZ0NFd0FNRVhwMEJCTUxsL0E2eDVXWnRQZlEyZzYrMGo4VngrN2I0L05acWdmdGQiLg0KDQoiRnhFQU93PT0iLA0KDQoiZXh0X2pzIj0+DQoNCiJSMGxHT0RkaEVBQVFBQ0lBQUN3QUFBQUFFQUFRQUlMLy8vOEFBQUNBZ0lEQXdNRC8vd0NBZ0FBQUFBQUFBQUFEVUNpNjNDRWd4aWJIIi4NCg0KImswQVFzRzIwMEFRVUpCZ0FvTWloajVkbUl4bk1KeHRxcTFkZEUwRVdPaHNHMTZtOU1vb0FpU1dFbVRpdUM0VHcyQkIwTDhGZ0lBaHMiLg0KDQoiYTAwQWpZWUJiYy9vOUhqTm5pVUFBRHM9IiwNCg0KImV4dF9sbmsiPT4NCg0KIlIwbEdPRGxoRUFBUUFHWUFBQ0g1QkFFQUFGQUFMQUFBQUFBUUFCQUFoZ0FBQUFCaUFHUExNbVhNTTB5L0psZkZMRlM2SzFyR0xXak8iLg0KDQoiTlNtdUZUV3pHa0M1SUczVE9vLzFYRTdBSngyb0Q1WDdZb1RxVVlyd1YzL2xUSFRhUVhuZlJtREdNWVhyVWpLUUh3QU1BR2ZOUkh6aSIuDQoNCiJVd3c1Q0FBcUFET1pHa2FzTFhMWVFnaElCQk4zRFZHMk5XblBSbkRXUndCT0FCNXdGUUJCQUFBK0FGRzNOQWs1QlNHSEVVcXdNQUJrIi4NCg0KIkFBQWdBQUF3QUFCZkFEZTBHeGVMQ3haY0RFSzZJVXV4S0ZqRkxFM0FKMkhITVJLaUNRV0NBZ0JtQUJwdERnK0hDQlplREFxRkJXREciLg0KDQoiTXltVUZRcFdCajJmSmhkdkRRaE9CQzZYRjNmZFIwTzZJUjJPRHdBWkFIUFpRQ1NSRWdBU0FEYVhId0FBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWVaZ0ZCUVBBR0Zob2NBZ29JN09nOEpDZ3NFQlFJV1BRQ0pna0NPa0pLVVA1ZVlVRDZQa1pNNSIuDQoNCiJOS0NLVURNeU5UZzNBZ2cyUzVlcVVFcEpEZ2NEQ0F4TVQwNmhnazI2dkF3VUZVaER0WXBDdXdaQnlCTVJSTXlDUndNR1JrVWcweElmIi4NCg0KIjFsQWVCaUVBR1JnWEVnMHQ0U3dyb0NZbERSQW40U21wS0NvUUpDL2hxVkF1Tkd6ZzhFOVJLQkVqWUJTMEpTaEdoNFVNb1lBU0JpVVEiLg0KDQoiQURzPSIsDQoNCiJleHRfbG9nIj0+DQoNCiJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBTURBd0lDQWdJQ0FBQUFBZ0FBQS8vLy9BQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJRRUtFd0s2VXlCekM0NzVnRUFsdEprbExSQVd6YkNsUmhySzRMeTV5Zzcvd04iLg0KDQoiekxVYUxHQlFCVjJFZ0ZMVjR4RU9TU1d0OWdRUUJwUnBxeG9WTmFQS2tGYjVFaC9MbVVHekY1cUUzK0VNSWdJQU93PT0iLA0KDQoiZXh0X3BocCI9Pg0KDQoiUjBsR09EbGhFQUFRQUFBQUFDSDVCQUVBQUFFQUxBQUFBQUFRQUJBQWdBQUFBQUFBQUFJbURBNmh5NXJXMEhHb3NmZnNkVHBxdkZsZyIuDQoNCiJ0MGhreVozUTZxbG9aN0ppbW9tVkViK3VYQUFBT3c9PSIsDQoNCiJleHRfcGwiPT4NCg0KIlIwbEdPRGxoRkFBVUFLTC9BUC80LzhEQXdIOS9BUC80QUwrL3Z3QUFBQUFBQUFBQUFDSDVCQUVBQUFFQUxBQUFBQUFVQUJRQVFBTW8iLg0KDQoiR0xyYzNnT0FNWVI0T091ZHJlZWdSbEJXU0oxbHFLNXM2NExqV0YzY1FNanBKcERmNi8vQUJBQTciLA0KDQoiZXh0X3N3ZiI9Pg0KDQoiUjBsR09EbGhGQUFVQU1RUkFQK2NuUDlTVXM0QUFQK2NBUC9PQUlRQUFQOWpBTTVqbk02Y1k4NmNuS1hPOThiZXhwd0FBUDh4QVAvTyIuDQoNCiJuQUFBQVAvLy8vLy8vd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSDVCQUVBIi4NCg0KIkFCRUFMQUFBQUFBVUFCUUFBQVY3WUNTT1pHbWU2UG1zYk11cVVDelAwQVBMemhBYnVQblFBd2VFNTJnMGZES0NNR2dvT200UUI0R0EiLg0KDQoiR0JnYVQyZ01RWWdWalVmU1QzWW9GR0tCUmdCcVBqZ1lERUZ4WFJwREdFSUE0eEFRUU5SMU5Ib01FQUFDQUJGaEl6OHJDbmNNQUdnQyIuDQoNCiJOeXNMa0RPVFNDc0pOREphblRVcUxxTTJLYWFucUJFaEFEcz0iLA0KDQoiZXh0X3RhciI9Pg0KDQoiUjBsR09EbGhFQUFRQUdZQUFDSDVCQUVBQUVzQUxBQUFBQUFRQUJBQWhnQUFBQmxPQUZnZEFGQUFBSVlDVXdBOFp3QThaOURZNEpJQyIuDQoNCiJXdi8vL3dDSVdCRTJBQUF5VUppY3FJU0hsNENBQVBENC8rRGc4UFg2LzVPWHBMN0gwKy8yL2FHbXNUSXlNdFRjNVAvL3NmTDUvOFhGIi4NCg0KIkhnQllwd0JVbGdCV24xQlFBRzhhSUFCUWhSYmZtd0Rja3YrSDExbm91RUxscml6aXBmK1YzblBBLzQwQ1V6bW0vd0E0WGhWREFBR0QiLg0KDQoiVXlXZC8waXQvMXUxLzNOekFQOTUwUDk5MG1PNS83djE0WXp2elhMcndvWEkvNXZTLzdEay93QlhvdjlzeXZSandPaGF0UUNIVjE3cCIuDQoNCiJ1bzBHVVFCV25QKys4TG01QVArajVRQlVsQUNLV2dBNGJqSlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiLg0KDQoiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIuDQoNCiJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZWVnQUtDZzRTRlN4WU5FdzRnTWdTT2o0OERGQWNIRVVJWlJFWW9KRFF6UFQ0L0F3Y1FDUWtnIi4NCg0KIkd3aXBxcWtxQXhJYUZSZ1hEd08xdHJjQXVicTd2SWVKRGl3aEJjUEV4QXlUbFNFWk96bzVLVFV4TUNzdkRLT2xTUnNjSER3ZUhrTWQiLg0KDQoiSFVjTXI3R3pCdWZvNkF5ODdMdStpaTBmQWZQMDlBdklFUjhaTmpjNFFTVW1Ub2dZc2NCYUFpVkZrQ2hZeUJDSWl3WGtaRDJvUjNGQiIuDQoNCiJ1NHRMQWdFQU93PT0iLA0KDQoiZXh0X3R4dCI9Pg0KDQoiUjBsR09EbGhFd0FRQUtJQUFBQUFBUC8vLzhiR3hvU0VoUC8vL3dBQUFBQUFBQUFBQUNINUJBRUFBQVFBTEFBQUFBQVRBQkFBQUFOSiIuDQoNCiJTQXJFM2xESkZrYTkxcktwQS9EZ0ozSkJhWjZsc0NrVzZxcWtCNGp6RjhCUzY1NDRXOVpBVzQrZzI2Vld4Rjl3ZG93Wm16bmxFdXA3Ii4NCg0KIlVwUFdHM0lnNkhxL1htUmp1WndrQUFBNyIsDQoNCiJleHRfd3JpIj0+DQoNCiJSMGxHT0RsaEVBQVFBRE1BQUNINUJBRUFBQWdBTEFBQUFBQVFBQkFBZy8vLy93QUFBSUNBZ01EQXdJQ0FBQUFBZ0FBQS8vLy9BQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVJSVU1oSmtiMEM2SzJIdUVpUmNkc0FmS0V4a2tEZ0JvVnhzdHdBQXlwZHVvYW8iLg0KDQoiYTRTWFQwYzRCRjByVWhGQUVBUVFJOWRtZWJSRVc4eVhDNk54MlFJN0xyWWJ0cEpaTnN4Z3pXNm5MZHE0OWhJQkFEcz0iLA0KDQoiZXh0X3htbCI9Pg0KDQoiUjBsR09EbGhFQUFRQUVRQUFDSDVCQUVBQUJBQUxBQUFBQUFRQUJBQWhQLy8vd0FBQVBIeDhZYUdoak5tbWFiSzhBQUFtUUFBZ0FDQSIuDQoNCiJnRE9aQURObS96T1ovelAvLzhEQXdEUE0vd0FBL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBIi4NCg0KIkFBQUFBQUFBQUFBQUFBQUFBQVZrNENDT3BBaWQwQUNzYk5zTXFOcXVBaUEwQUp6U2RsOEh3TUJPVUtnaEVBcGJFU0JVRlF3QUJJQ3giLg0KDQoiT0FBTXhlYlRobUE0RW9jYXRnbllLaGFKaHhVcklCTnJoN2p5dC9QWmErMGhZYy9uMDJWNGR6WnVmWVYvUElHSmJvS0JRa0dQa0VFUSIuDQoNCiJJUUE3Ig0KDQopOw0KDQovL0ZvciBzaW1wbGUgc2l6ZS0gYW5kIHNwZWVkLW9wdGltaXphdGlvbi4NCg0KJGltZ2VxdWFscyA9IGFycmF5KA0KDQogICJleHRfdGFyIj0+YXJyYXkoImV4dF90YXIiLCJleHRfcjAwIiwiZXh0X2FjZSIsImV4dF9hcmoiLCJleHRfYnoiLCJleHRfYnoyIiwiZXh0X3RieiIsImV4dF90YnoyIiwiZXh0X3RneiIsImV4dF91dSIsImV4dF94eGUiLCJleHRfemlwIiwiZXh0X2NhYiIsImV4dF9neiIsImV4dF9pc28iLCJleHRfbGhhIiwiZXh0X2x6aCIsImV4dF9wYmsiLCJleHRfcmFyIiwiZXh0X3V1ZiIpLA0KDQogICJleHRfcGhwIj0+YXJyYXkoImV4dF9waHAiLCJleHRfcGhwMyIsImV4dF9waHA0IiwiZXh0X3BocDUiLCJleHRfcGh0bWwiLCJleHRfc2h0bWwiLCJleHRfaHRtIiksDQoNCiAgImV4dF9qcGciPT5hcnJheSgiZXh0X2pwZyIsImV4dF9naWYiLCJleHRfcG5nIiwiZXh0X2pwZWciLCJleHRfamZpZiIsImV4dF9qcGUiLCJleHRfYm1wIiwiZXh0X2ljbyIsImV4dF90aWYiLCJ0aWZmIiksDQoNCiAgImV4dF9odG1sIj0+YXJyYXkoImV4dF9odG1sIiwiZXh0X2h0bSIpLA0KDQogICJleHRfYXZpIj0+YXJyYXkoImV4dF9hdmkiLCJleHRfbW92IiwiZXh0X212aSIsImV4dF9tcGciLCJleHRfbXBlZyIsImV4dF93bXYiLCJleHRfcm0iKSwNCg0KICAiZXh0X2xuayI9PmFycmF5KCJleHRfbG5rIiwiZXh0X3VybCIpLA0KDQogICJleHRfaW5pIj0+YXJyYXkoImV4dF9pbmkiLCJleHRfY3NzIiwiZXh0X2luZiIpLA0KDQogICJleHRfZG9jIj0+YXJyYXkoImV4dF9kb2MiLCJleHRfZG90IiksDQoNCiAgImV4dF9qcyI9PmFycmF5KCJleHRfanMiLCJleHRfdmJzIiksDQoNCiAgImV4dF9jbWQiPT5hcnJheSgiZXh0X2NtZCIsImV4dF9iYXQiLCJleHRfcGlmIiksDQoNCiAgImV4dF93cmkiPT5hcnJheSgiZXh0X3dyaSIsImV4dF9ydGYiKSwNCg0KICAiZXh0X3N3ZiI9PmFycmF5KCJleHRfc3dmIiwiZXh0X2ZsYSIpLA0KDQogICJleHRfbXAzIj0+YXJyYXkoImV4dF9tcDMiLCJleHRfYXUiLCJleHRfbWlkaSIsImV4dF9taWQiKSwNCg0KICAiZXh0X2h0YWNjZXNzIj0+YXJyYXkoImV4dF9odGFjY2VzcyIsImV4dF9odHBhc3N3ZCIsImV4dF9odCIsImV4dF9odGEiLCJleHRfc28iKQ0KDQopOw0KDQppZiAoISRnZXRhbGwpDQoNCnsNCg0KICBoZWFkZXIoIkNvbnRlbnQtdHlwZTogaW1hZ2UvZ2lmIik7DQoNCiAgaGVhZGVyKCJDYWNoZS1jb250cm9sOiBwdWJsaWMiKTsNCg0KICBoZWFkZXIoIkV4cGlyZXM6ICIuZGF0ZSgiciIsbWt0aW1lKDAsMCwwLDEsMSwyMDMwKSkpOw0KDQogIGhlYWRlcigiQ2FjaGUtY29udHJvbDogbWF4LWFnZT0iLig2MCo2MCoyNCo3KSk7DQoNCiAgaGVhZGVyKCJMYXN0LU1vZGlmaWVkOiAiLmRhdGUoInIiLGZpbGVtdGltZShfX0ZJTEVfXykpKTsNCg0KICBmb3JlYWNoKCRpbWdlcXVhbHMgYXMgJGs9PiR2KSB7aWYgKGluX2FycmF5KCRpbWcsJHYpKSB7JGltZyA9ICRrOyBicmVhazt9fQ0KDQogIGlmIChlbXB0eSgkaW1hZ2VzWyRpbWddKSkgeyRpbWcgPSAic21hbGxfdW5rIjt9DQoNCiAgaWYgKGluX2FycmF5KCRpbWcsJGV4dF90YXIpKSB7JGltZyA9ICJleHRfdGFyIjt9DQoNCiAgZWNobyBiYXNlNjRfZGVjb2RlKCRpbWFnZXNbJGltZ10pOw0KDQp9DQoNCmVsc2UNCg0Kew0KDQogIGZvcmVhY2goJGltZ2VxdWFscyBhcyAkYT0+JGIpIHtmb3JlYWNoICgkYiBhcyAkZCkge2lmICgkYSAhPSAkZCkge2lmICghZW1wdHkoJGltYWdlc1skZF0pKSB7ZWNobygiV2FybmluZyEgUmVtb3ZlICRpbWFnZXNbIi4kZC4iXTxicj4iKTt9fX19DQoNCiAgbmF0c29ydCgkaW1hZ2VzKTsNCg0KICAkayA9IGFycmF5X2tleXMoJGltYWdlcyk7DQoNCiAgZWNobyAgIjxjZW50ZXI+IjsNCg0KICBmb3JlYWNoICgkayBhcyAkdSkge2VjaG8gJHUuIjo8aW1nIHNyYz0iIi4kc3VybC4iYWN0PWltZyZpbWc9Ii4kdS4iIiBib3JkZXI9IjEiPjxicj4iO30NCg0KICBlY2hvICI8L2NlbnRlcj4iOw0KDQp9DQoNCmV4aXQ7DQoNCn0NCg0KaWYgKCRhY3QgPT0gImFib3V0Iikge2VjaG8gIjxjZW50ZXI+PGI+Q3JlZGl0czo8YnI+SWRlYSwgbGVhZGluZyBhbmQgY29kaW5nIGJ5IHRyaXN0cmFtW0NDVGVhTV0uPGJyPkJldGEtdGVzdGluZyBhbmQgc29tZSB0aXBzIC0gTnVrTGVvTiBbQW5UaVNoQFJlIHRFYU1dLjxicj5UaGFua3MgYWxsIHdobyByZXBvcnQgYnVncy48YnI+QWxsIGJ1Z3Mgc2VuZCB0byB0cmlzdHJhbSdzIElDUSAjNjU2NTU1IDxhIGhyZWY9Imh0dHA6Ly93d3AuaWNxLmNvbS9zY3JpcHRzL2NvbnRhY3QuZGxsP21zZ3RvPTY1NjU1NSI+PGltZyBzcmM9Imh0dHA6Ly93d3AuaWNxLmNvbS9zY3JpcHRzL29ubGluZS5kbGw/aWNxPTY1NjU1NSZpbWc9NSIgYm9yZGVyPTAgYWxpZ249YWJzbWlkZGxlPjwvYT4uPC9iPiI7fQ0KDQppZiAoJGFjdCA9PSAiYmFja2MiKQ0KDQp7DQoNCiRpcCA9ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdOw0KDQokbXNnID0gJF9QT1NUWydiYWNrY2Nvbm5tc2cnXTsNCg0KJGVtc2cgPSAkX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXTsNCg0KZWNobygiPGNlbnRlcj48Yj5CYWNrLUNvbm5lY3Rpb246PC9iPjwvYnI+PC9icj48Zm9ybSBuYW1lPWZvcm0gbWV0aG9kPVBPU1Q+SG9zdDo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9YmFja2Nvbm5lY3RpcCBzaXplPTE1IHZhbHVlPSRpcD4gUG9ydDogPGlucHV0IHR5cGU9dGV4dCBuYW1lPWJhY2tjb25uZWN0cG9ydCBzaXplPTE1IHZhbHVlPTU5OTI+IFVzZTogPHNlbGVjdCBzaXplPTEgbmFtZT11c2U+PG9wdGlvbiB2YWx1ZT1QZXJsPlBlcmw8L29wdGlvbj48b3B0aW9uIHZhbHVlPUM+Qzwvb3B0aW9uPjwvc2VsZWN0PiA8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9Q29ubmVjdD48L2Zvcm0+Q2xpY2sgJ0Nvbm5lY3QnIG9ubHkgYWZ0ZXIgeW91IG9wZW4gcG9ydCBmb3IgaXQgZmlyc3QuIE9uY2Ugb3BlbiwgdXNlIE5ldENhdCwgYW5kIHJ1biAnPGI+bmMgLWwgLW4gLXYgLXAgNTk5MjwvYj4nPGJyPjxicj48L2NlbnRlcj4iKTsNCg0KZWNobygiJG1zZyIpOw0KDQplY2hvKCIkZW1zZyIpOw0KDQp9DQoNCg0KDQppZiAoJGFjdCA9PSAic2hiZCIpew0KDQokbXNnID0gJF9QT1NUWydiYWNrY2Nvbm5tc2cnXTsNCg0KJGVtc2cgPSAkX1BPU1RbJ2JhY2tjY29ubm1zZ2UnXTsNCg0KZWNobygiPGNlbnRlcj48Yj5CaW5kIFNoZWxsIEJhY2tkb29yOjwvYj48L2JyPjwvYnI+PGZvcm0gbmFtZT1mb3JtIG1ldGhvZD1QT1NUPg0KDQpCaW5kIFBvcnQ6IDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdiYWNrY29ubmVjdHBvcnQnIHZhbHVlPSc1OTkyJz4NCg0KPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0ndXNlJyB2YWx1ZT0nc2hiZCc+DQoNCjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSdJbnN0YWxsIEJhY2tkb29yJz48L2Zvcm0+Iik7DQoNCmVjaG8oIiRtc2ciKTsNCg0KZWNobygiJGVtc2ciKTsNCg0KZWNobygiPC9jZW50ZXI+Iik7DQoNCn0gPz4NCg0KPC90ZD48L3RyPjwvdGFibGU+PGEgYm9va21hcms9Im1pbmlwYW5lbCI+PGJyPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IGhlaWdodD0iMSIgd2lkdGg9IjEwMCUiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+DQoNCjx0cj48dGQgd2lkdGg9IjEwMCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiIGNvbHNwYW49IjIiPjwvdGQ+PC90cj4NCg0KPHRyPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPjxiPkVudGVyOiA8L2I+PGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJjbWQiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY21kIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkY21kKTsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj48L2Zvcm0+PC90ZD48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj48Yj5TZWxlY3Q6IDwvYj48Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+YWN0PWNtZCIgbWV0aG9kPSJQT1NUIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImNtZCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxzZWxlY3QgbmFtZT0iY21kIj48P3BocCBmb3JlYWNoICgkY21kYWxpYXNlcyBhcyAkYWxzKSB7ZWNobyAiPG9wdGlvbiB2YWx1ZT0iIi5odG1sc3BlY2lhbGNoYXJzKCRhbHNbMV0pLiIiPiIuaHRtbHNwZWNpYWxjaGFycygkYWxzWzBdKS4iPC9vcHRpb24+Ijt9ID8+PC9zZWxlY3Q+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImNtZF90eHQiIHZhbHVlPSIxIj4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IkV4ZWN1dGUiPjwvZm9ybT48L3RkPjwvdHI+PC9UQUJMRT4NCg0KPGJyPg0KDQo8VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjExNiIgd2lkdGg9IjEwMCUiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+DQoNCjx0cj48dGQgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCIgY29sc3Bhbj0iMiI+PC90ZD48L3RyPg0KDQo8dHI+DQoNCiAgPHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iODMiIHZhbGlnbj0idG9wIj48Y2VudGVyPg0KDQogICAgPGRpdiBhbGlnbj0iY2VudGVyIj5Vc2VmdWwgQ29tbWFuZHMgIA0KDQogICAgPC9kaXY+DQoNCiAgICA8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij4NCg0KICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4NCg0KICAgICAgICA8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hY3QgdmFsdWU9ImNtZCI+DQoNCiAgICAgICAgPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ImQiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPg0KDQogICAgICAgICAgPFNFTEVDVCBOQU1FPSJjbWQiPg0KDQogICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJ1bmFtZSAtYSI+S2VybmVsIHZlcnNpb24NCg0KICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJ3Ij5Mb2dnZWQgaW4gdXNlcnMNCg0KICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Imxhc3Rsb2ciPkxhc3QgdG8gY29ubmVjdA0KDQogICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJmaW5kIC9iaW4gL3Vzci9iaW4gL3Vzci9sb2NhbC9iaW4gL3NiaW4gL3Vzci9zYmluIC91c3IvbG9jYWwvc2JpbiAtcGVybSAtNDAwMCAyPiAvZGV2L251bGwiPlN1aWQgYmlucw0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImN1dCAtZDogLWYxLDIsMyAvZXRjL3Bhc3N3ZCB8IGdyZXAgOjoiPlVTRVIgV0lUSE9VVCBQQVNTV09SRCENCg0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJmaW5kIC9ldGMvIC10eXBlIGYgLXBlcm0gLW8rdyAyPiAvZGV2L251bGwiPldyaXRlIGluIC9ldGMvPw0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9IndoaWNoIHdnZXQgY3VybCB3M20gbHlueCI+RG93bmxvYWRlcnM/DQoNCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iY2F0IC9wcm9jL3ZlcnNpb24gL3Byb2MvY3B1aW5mbyI+Q1BVSU5GTw0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Im5ldHN0YXQgLWF0dXAgfCBncmVwIElTVCI+T3BlbiBwb3J0cw0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImxvY2F0ZSBnY2MiPmdjYyBpbnN0YWxsZWQ/DQoNCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0icm0gLVJmIj5Gb3JtYXQgYm94IChEQU5HRVJPVVMpDQoNCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0id2dldCBodHRwOi8vd3d3LnBhY2tldHN0b3Jtc2VjdXJpdHkub3JnL1VOSVgvcGVuZXRyYXRpb24vbG9nLXdpcGVycy96YXAyLmMiPldJUEVMT0dTIFBUMSAoSWYgd2dldCBpbnN0YWxsZWQpDQoNCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iZ2NjIHphcDIuYyAtbyB6YXAyIj5XSVBFTE9HUyBQVDINCg0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSIuL3phcDIiPldJUEVMT0dTIFBUMw0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9IndnZXQgaHR0cDovL2Z0cC5wb3dlcm5ldC5jb20udHIvc3VwZXJtYWlsL2RlYnVnL2szIj5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMSAoSWYgd2dldCBpbnN0YWxsZWQpDQoNCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyAxIj5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAoTDEpDQoNCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyAyIj5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAoTDIpDQoNCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyAzIj5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAoTDMpDQoNCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyA0Ij5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAoTDQpDQoNCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0iLi9rMyA1Ij5LZXJuZWwgYXR0YWNrIChLcmFkLmMpIFBUMiAoTDUpDQoNCiAgICAgICAgICAgICAgICAgICAgPE9QVElPTiBWQUxVRT0id2dldCBodHRwOi8vcHJlY2lzaW9uLWdhbWluZy5jb20vc3Vkby5jIj53Z2V0IExpbnV4IHN1ZG8gc3RhY2sgb3ZlcmZsb3cNCg0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJnY2Mgc3Vkby5jIC1vIHN1ZG9zcGxvaXQiPkNvbXBpbGUgTGludXggc3VkbyBzcGxvaXQNCg0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSIuL3N1ZG9zcGxvaXQiPkV4ZWN1dGUgU3Vkb3NwbG9pdA0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9IndnZXQgaHR0cDovL3R3b2ZhY2VkLm9yZy9saW51eDItNi1hbGwuYyI+TGludXggS2VybmVsIDIuNi4qIHJvb3RraXQuYw0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImdjYyBsaW51eDItNi1hbGwuYyAtbyBsaW51eGtlcm5lbCI+Q29tcGlsZSBMaW51eDItNi1hbGwuYw0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Ii4vbGludXhrZXJuZWwiPlJ1biBMaW51eDItNi1hbGwuYw0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9IndnZXQgaHR0cDovL3R3b2ZhY2VkLm9yZy9taWctbG9nY2xlYW5lci5jIj5NaWcgTG9nQ2xlYW5lcg0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9ImdjYyAtRExJTlVYIC1XQUxMIG1pZy1sb2djbGVhbmVyLmMgLW8gbWlnbCI+Q29tcGlsZSBNaWcgTG9nQ2xlYW5lcg0KDQogICAgICAgICAgICAgICAgICAgIDxPUFRJT04gVkFMVUU9Ii4vbWlnbCAtdSByb290IDAiPkNvbXBpbGUgTWlnIExvZ0NsZWFuZXINCg0KICAgICAgICAgICAgICAgICAgICA8T1BUSU9OIFZBTFVFPSJzZWQgLWkgLWUgJ3MvPGh0bWw+LzxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjIwMDBweDtoZWlnaHQ6MjAwMHB4O2JhY2tncm91bmQtY29sb3I6YmxhY2snPjxicj48YnI+PGJyPjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8aW1nIHNyYz0naHR0cDovL2ltZzI0NC5pbWFnZXNoYWNrLnVzL2ltZzI0NC82NjYzL2xvY3VzN3NnbTguanBnJz48YnI+PGZvbnQgc2l6ZT0nMTAnIGNvbG9yPSdncmVlbic+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGZvbnQgc2l6ZT0nMTAnIGNvbG9yPSdncmVlbic+SEFDS0VEIEJZIDxhIGhyZWY9J2h0dHA6Ly9sb2N1czdzLmNvbSc+TE9DVVM3UzwvYT48L2ZvbnQ+PC9kaXY+PG1ldGEgaHR0cC1lcXVpdj0ncmVmcmVzaCcgY29udGVudD0nNVw7dXJsPWh0dHA6Ly9sb2N1czdzLmNvbSc+L2cnIGluZGV4LioiPmluZGV4LiogTWFzcyBEZWZhY2VtZW50DQoNCiAgICAgICAgICAgICAgICAgIDwvU0VMRUNUPg0KDQogICAgICAgIDxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJjbWRfdHh0IiB2YWx1ZT0iMSI+DQoNCiAgICAgICAgJm5ic3A7DQoNCiAgICAgICAgPGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJFeGVjdXRlIj4NCg0KICAgICAgICAgIDxicj4NCg0KICAgICAgICBXYXJuaW5nLiBLZXJuZWwgbWF5IGJlIGFsZXJ0ZWQgdXNpbmcgaGlnaGVyIGxldmVscyA8L2Rpdj4NCg0KICAgIDwvZm9ybT4NCg0KICAgIDwvdGQ+DQoNCiAgPHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iODMiIHZhbGlnbj0idG9wIj48Y2VudGVyPg0KDQogICA8Y2VudGVyPktlcm5lbCBJbmZvOiA8Zm9ybSBuYW1lPSJmb3JtMSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Imh0dHA6Ly9nb29nbGUuY29tL3NlYXJjaCI+DQoNCiAgICAgIDxpbnB1dCBuYW1lPSJxIiB0eXBlPSJ0ZXh0IiBpZD0icSIgc2l6ZT0iODAiIHZhbHVlPSI8P3BocCBlY2hvIHdvcmR3cmFwKHBocF91bmFtZSgpKTsgPz4iPg0KDQogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjbGllbnQiIHZhbHVlPSJmaXJlZm94LWEiPg0KDQogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJybHMiIHZhbHVlPSJvcmcubW96aWxsYTplbi1VUzpvZmZpY2lhbCI+DQoNCiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImhsIiB2YWx1ZT0iZW4iPg0KDQogICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJocyIgdmFsdWU9ImI3cCI+DQoNCiAgICAgIDxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPSJidG5HIiBWQUxVRT0iU2VhcmNoIj4NCg0KICAgIDwvZm9ybT48L2NlbnRlcj4NCg0KICAgIDwvdGQ+DQoNCjwvdHI+PC9UQUJMRT48YnI+DQoNCjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IGhlaWdodD0iMTE2IiB3aWR0aD0iMTAwJSIgYmdjb2xvcj0jMDAwMDAwIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT4NCg0KPHRyPjx0ZCBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIiBjb2xzcGFuPSIyIj48L3RkPjwvdHI+DQoNCjx0cj4NCg0KICA8dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSI4MyIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+DQoNCiAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPlBocCBTYWZlLU1vZGUgQnlwYXNzIChSZWFkIEZpbGVzKQ0KDQogICAgPC9kaXY+PGJyPg0KDQogICAgPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvICRzdXJsOyA/PiI+DQoNCiAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+DQoNCiAgICAgIEZpbGU6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaWxlIiBtZXRob2Q9ImdldCI+IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJSZWFkIEZpbGUiPjxicj48YnI+IGVnOiAvZXRjL3Bhc3N3ZDxicj4NCg0KICAgICAgIA0KDQogICAgICAgDQoNCiAgICAgICANCg0KICAgICAgICAgICAgDQoNCiAgICAgICANCg0KICAgICAgIA0KDQogICAgICA8Pw0KDQogICAgICAgDQoNCiAgICAgIGZ1bmN0aW9uIHJzZ19yZWFkKCkNCg0KICAgIHsgICAgDQoNCiAgICAkdGVzdD0iIjsNCg0KICAgICR0ZW1wPXRlbXBuYW0oJHRlc3QsICJjeCIpOw0KDQogICAgJGZpbGU9JF9HRVRbJ2ZpbGUnXTsgICAgDQoNCiAgICAkZ2V0PWh0bWxzcGVjaWFsY2hhcnMoJGZpbGUpOw0KDQogICAgZWNobyAiPGJyPlRyeWluZyBUbyBHZXQgRmlsZSA8Zm9udCBjb2xvcj0jMDAwMDk5PjxiPiRnZXQ8L2I+PC9mb250Pjxicj4iOw0KDQogICAgaWYoY29weSgiY29tcHJlc3MuemxpYjovLyIuJGZpbGUsICR0ZW1wKSl7DQoNCiAgICAkZmljaGllciA9IGZvcGVuKCR0ZW1wLCAiciIpOw0KDQogICAgJGFjdGlvbiA9IGZyZWFkKCRmaWNoaWVyLCBmaWxlc2l6ZSgkdGVtcCkpOw0KDQogICAgZmNsb3NlKCRmaWNoaWVyKTsNCg0KICAgICRzb3VyY2U9aHRtbHNwZWNpYWxjaGFycygkYWN0aW9uKTsNCg0KICAgIGVjaG8gIjxkaXYgY2xhc3M9InNoZWxsIj48Yj5TdGFydCAkZ2V0PC9iPjxicj48YnI+PGZvbnQgY29sb3I9IndoaXRlIj4kc291cmNlPC9mb250Pjxicj48Yj48YnI+RmluIDxmb250IGNvbG9yPSMwMDAwOTk+JGdldDwvZm9udD48L2I+IjsNCg0KICAgIHVubGluaygkdGVtcCk7DQoNCiAgICB9IGVsc2Ugew0KDQogICAgZGllKCI8Rk9OVCBDT0xPUj0iUkVEIj48Q0VOVEVSPlNvcnJ5Li4uIEZpbGUNCg0KICAgIDxCPiIuaHRtbHNwZWNpYWxjaGFycygkZmlsZSkuIjwvQj4gZG9zZW4ndCBleGlzdHMgb3IgeW91IGRvbid0IGhhdmUNCg0KICAgIGFjY2Vzcy48L0NFTlRFUj48L0ZPTlQ+Iik7DQoNCiAgICAgICAgICAgIH0NCg0KICAgIGVjaG8gIjwvZGl2PiI7DQoNCiAgICB9DQoNCiAgICAgDQoNCiAgICBpZihpc3NldCgkX0dFVFsnZmlsZSddKSkNCg0Kew0KDQpyc2dfcmVhZCgpOw0KDQp9DQoNCiAgICAgDQoNCiAgICA/Pg0KDQogICAgIA0KDQogICAgPD8NCg0KICAgICANCg0KICAgIGZ1bmN0aW9uIHJzZ19nbG9iKCkNCg0Kew0KDQokY2hlbWluPSRfR0VUWydkaXJlY3RvcnknXTsNCg0KJGZpbGVzID0gZ2xvYigiJGNoZW1pbioiKTsNCg0KZWNobyAiVHJ5aW5nIFRvIExpc3QgRm9sZGVyIDxmb250IGNvbG9yPSMwMDAwOTk+PGI+JGNoZW1pbjwvYj48L2ZvbnQ+PGJyPiI7DQoNCmZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZW5hbWUpIHsNCg0KICAgIGVjaG8gIjxwcmU+IjsNCg0KICAgZWNobyAiJGZpbGVuYW1lbiI7DQoNCiAgIGVjaG8gIjwvcHJlPiI7DQoNCn0NCg0KfQ0KDQoNCg0KaWYoaXNzZXQoJF9HRVRbJ2RpcmVjdG9yeSddKSkNCg0Kew0KDQpyc2dfZ2xvYigpOw0KDQp9DQoNCg0KDQo/Pg0KDQoNCg0KICAgICAgICAgIDxicj4NCg0KICAgICAgPC9kaXY+DQoNCiAgICA8L2Zvcm0+DQoNCiAgICA8L3RkPg0KDQogIDx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjgzIiB2YWxpZ249InRvcCI+PGNlbnRlcj4NCg0KICAgPGNlbnRlcj5QaHAgU2FmZS1Nb2RlIEJ5cGFzcyAoTGlzdCBEaXJlY3Rvcmllcyk6ICAgICA8Zm9ybSBhY3Rpb249Ijw/cGhwIGVjaG8gJHN1cmw7ID8+Ij4NCg0KICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48YnI+DQoNCiAgICAgIERpcjogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImRpcmVjdG9yeSIgbWV0aG9kPSJnZXQiPiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iTGlzdCBEaXJlY3RvcnkiPjxicj48YnI+IGVnOiAvZXRjLzxicj4NCg0KDQoNCiAgICA8L2Zvcm0+PC9jZW50ZXI+DQoNCiAgICA8L3RkPg0KDQo8L3RyPjwvVEFCTEU+DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KPGJyPg0KDQo8VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjEiIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPg0KDQo8dHI+DQoNCjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPlNlYXJjaDxmb3JtIG1ldGhvZD0iUE9TVCI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YWN0IHZhbHVlPSJzZWFyY2giPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2VhcmNoX25hbWUiIHNpemU9IjI5IiB2YWx1ZT0iKC4qKSI+Jm5ic3A7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJzZWFyY2hfbmFtZV9yZWdleHAiIHZhbHVlPSIxIiAgY2hlY2tlZD4gLSByZWdleHAmbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgbmFtZT1zdWJtaXQgdmFsdWU9IlNlYXJjaCI+PC9mb3JtPjwvY2VudGVyPjwvcD48L3RkPg0KDQo8dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj5VcGxvYWQ8Zm9ybSBtZXRob2Q9IlBPU1QiIEVOQ1RZUEU9Im11bHRpcGFydC9mb3JtLWRhdGEiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0idXBsb2FkIj48aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0idXBsb2FkZmlsZSI+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Im1pbmlmb3JtIiB2YWx1ZT0iMSI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPSJVcGxvYWQiPjxicj48P3BocCBlY2hvICR3ZHQ7ID8+PC9mb3JtPjwvY2VudGVyPjwvdGQ+DQoNCjwvdHI+DQoNCjwvdGFibGU+DQoNCjxicj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9NSBoZWlnaHQ9IjEiIHdpZHRoPSIxMDAlIiBiZ2NvbG9yPSMwMDAwMDAgYm9yZGVyQ29sb3JMaWdodD0jYzBjMGMwIGJvcmRlcj0xPjx0cj48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj5NYWtlIERpcjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ibWtkaXIiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJkIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibWtkaXIiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkNyZWF0ZSI+PGJyPjw/cGhwIGVjaG8gJHdkdDsgPz48L2Zvcm0+PC9jZW50ZXI+PC90ZD48dGQgd2lkdGg9IjUwJSIgaGVpZ2h0PSIxIiB2YWxpZ249InRvcCI+PGNlbnRlcj5NYWtlIEZpbGU8Zm9ybSBtZXRob2Q9IlBPU1QiPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ibWtmaWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im1rZmlsZSIgc2l6ZT0iNTAiIHZhbHVlPSI8P3BocCBlY2hvICRkaXNwZDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPSJmdCIgdmFsdWU9ImVkaXQiPiZuYnNwOzxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iQ3JlYXRlIj48YnI+PD9waHAgZWNobyAkd2R0OyA/PjwvZm9ybT48L2NlbnRlcj48L3RkPjwvdHI+PC90YWJsZT4NCg0KPGJyPjxUQUJMRSBzdHlsZT0iQk9SREVSLUNPTExBUFNFOiBjb2xsYXBzZSIgY2VsbFNwYWNpbmc9MCBib3JkZXJDb2xvckRhcms9IzY2NjY2NiBjZWxsUGFkZGluZz01IGhlaWdodD0iMSIgd2lkdGg9IjEwMCUiIGJnY29sb3I9IzAwMDAwMCBib3JkZXJDb2xvckxpZ2h0PSNjMGMwYzAgYm9yZGVyPTE+PHRyPjx0ZCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjEiIHZhbGlnbj0idG9wIj48Y2VudGVyPkdvIERpcjxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0ibHMiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJkIiBzaXplPSI1MCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+Jm5ic3A7PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSJHbyI+PC9mb3JtPjwvY2VudGVyPjwvdGQ+PHRkIHdpZHRoPSI1MCUiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxjZW50ZXI+R28gRmlsZTxmb3JtIGFjdGlvbj0iPD9waHAgZWNobyAkc3VybDsgPz4iPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWFjdCB2YWx1ZT0iZ29maWxlIj48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT0iZCIgdmFsdWU9Ijw/cGhwIGVjaG8gJGRpc3BkOyA/PiI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImYiIHNpemU9IjUwIiB2YWx1ZT0iPD9waHAgZWNobyAkZGlzcGQ7ID8+Ij4mbmJzcDs8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9IkdvIj48L2Zvcm0+PC9jZW50ZXI+PC90ZD48L3RyPjwvdGFibGU+DQoNCjxicj48VEFCTEUgc3R5bGU9IkJPUkRFUi1DT0xMQVBTRTogY29sbGFwc2UiIGhlaWdodD0xIGNlbGxTcGFjaW5nPTAgYm9yZGVyQ29sb3JEYXJrPSM2NjY2NjYgY2VsbFBhZGRpbmc9MCB3aWR0aD0iMTAwJSIgYmdjb2xvcj0jMDAwMDAwIGJvcmRlckNvbG9yTGlnaHQ9I2MwYzBjMCBib3JkZXI9MT48dHI+PHRkIHdpZHRoPSI5OTAiIGhlaWdodD0iMSIgdmFsaWduPSJ0b3AiPjxwIGFsaWduPSJjZW50ZXIiPjxiPi0tWyB4MjMwMCBMb2N1czdTaGVsbCB2LiA8P3BocCBlY2hvICRzaHZlcjsgPz4gPGEgaHJlZj0iaHR0cDovL3d3dy5sb2N1czdzLmNvbS8iPjx1PjxiPk1vZGRlZCBieTwvYj48L3U+PC9hPiAjIXBoeXN4XiAgfCA8YSBocmVmPSJodHRwOi8vd3d3LmxvY3VzN3MuY29tIj53d3cuTE9DVVM3Uy5jb208L2ZvbnQ+PC9hPjxmb250IGNvbG9yPSIjRkYwMDAwIj48L2ZvbnQ+IHwgR2VuZXJhdGlvbiB0aW1lOiA8P3BocCBlY2hvIHJvdW5kKGdldG1pY3JvdGltZSgpLXN0YXJ0dGltZSw0KTsgPz4gXS0tPC9iPjwvcD48L3RkPjwvdHI+PC90YWJsZT4NCg0KPC9ib2R5PjwvaHRtbD48P3BocCBjaGRpcigkbGFzdGRpcik7IGM5OXNoZXhpdCgpOyA/PiA=")); ?>