Alternatively, create a Compose service, go to Advanced → Import from Base64, and paste this payload:
ewogICJjb21wb3NlIjogIiMgVXNhZ2VcbiMgICBTdGFydDogICAgICAgICAgICAgIGRvY2tlciBjb21wb3NlIHVwIC1kXG4jICAgU3RvcDogICAgICAgICAgICAgICBkb2NrZXIgY29tcG9zZSBkb3duXG4jICAgUmVzZXQgZXZlcnl0aGluZzogICAuL3Jlc2V0LnNoXG4jXG4jIERva3Bsb3k6IEtvbmcgaXMgZXhwb3NlZCBvbiBwb3J0IDgwMDAgZm9yIGRvbWFpbiByb3V0aW5nLiBTdG9yYWdlIHVzZXMgbG9jYWwgZmlsZVxuIyBiYWNrZW5kIGJ5IGRlZmF1bHQ7IGVkaXQgdGhlIHN0b3JhZ2Ugc2VydmljZSBlbnYgaW4gdGhpcyBmaWxlIHRvIHN3aXRjaCB0byBTMy9NaW5JTy5cblxubmFtZTogc3VwYWJhc2Vcblxuc2VydmljZXM6XG5cbiAgc3R1ZGlvOlxuICAgIGltYWdlOiBzdXBhYmFzZS9zdHVkaW86MjAyNi4wNi4wMy1zaGEtMGJjYTYwMVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICBbXG4gICAgICAgICAgXCJDTUQtU0hFTExcIixcbiAgICAgICAgICBcIm5vZGUgLWUgXFxcImZldGNoKCdodHRwOi8vbG9jYWxob3N0OjMwMDAvYXBpL3BsYXRmb3JtL3Byb2ZpbGUnKS50aGVuKChyKSA9PiB7aWYgKHIuc3RhdHVzICE9PSAyMDApIHRocm93IG5ldyBFcnJvcihyLnN0YXR1cyl9KVxcXCJcIlxuICAgICAgICBdXG4gICAgICB0aW1lb3V0OiAxMHNcbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgcmV0cmllczogNVxuICAgICAgc3RhcnRfcGVyaW9kOiAzMHNcbiAgICBkZXBlbmRzX29uOlxuICAgICAgYW5hbHl0aWNzOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgIGVudmlyb25tZW50OlxuICAgICAgSE9TVE5BTUU6IFwiMC4wLjAuMFwiXG5cbiAgICAgIFNUVURJT19QR19NRVRBX1VSTDogaHR0cDovL21ldGE6ODA4MFxuICAgICAgUE9TVEdSRVNfUE9SVDogJHtQT1NUR1JFU19QT1JUfVxuICAgICAgUE9TVEdSRVNfSE9TVDogJHtQT1NUR1JFU19IT1NUfVxuICAgICAgUE9TVEdSRVNfREI6ICR7UE9TVEdSRVNfREJ9XG4gICAgICBQT1NUR1JFU19QQVNTV09SRDogJHtQT1NUR1JFU19QQVNTV09SRH1cblxuICAgICAgUEdfTUVUQV9DUllQVE9fS0VZOiAke1BHX01FVEFfQ1JZUFRPX0tFWX1cbiAgICAgIFBHUlNUX0RCX1NDSEVNQVM6ICR7UEdSU1RfREJfU0NIRU1BU31cbiAgICAgIFBHUlNUX0RCX01BWF9ST1dTOiAke1BHUlNUX0RCX01BWF9ST1dTOi0xMDAwfVxuICAgICAgUEdSU1RfREJfRVhUUkFfU0VBUkNIX1BBVEg6ICR7UEdSU1RfREJfRVhUUkFfU0VBUkNIX1BBVEg6LXB1YmxpY31cblxuICAgICAgREVGQVVMVF9PUkdBTklaQVRJT05fTkFNRTogJHtTVFVESU9fREVGQVVMVF9PUkdBTklaQVRJT059XG4gICAgICBERUZBVUxUX1BST0pFQ1RfTkFNRTogJHtTVFVESU9fREVGQVVMVF9QUk9KRUNUfVxuICAgICAgT1BFTkFJX0FQSV9LRVk6ICR7T1BFTkFJX0FQSV9LRVk6LX1cblxuICAgICAgU1VQQUJBU0VfVVJMOiBodHRwOi8va29uZzo4MDAwXG4gICAgICBTVVBBQkFTRV9QVUJMSUNfVVJMOiAke1NVUEFCQVNFX1BVQkxJQ19VUkx9XG4gICAgICBTVVBBQkFTRV9BTk9OX0tFWTogJHtBTk9OX0tFWX1cbiAgICAgIFNVUEFCQVNFX1NFUlZJQ0VfS0VZOiAke1NFUlZJQ0VfUk9MRV9LRVl9XG4gICAgICBBVVRIX0pXVF9TRUNSRVQ6ICR7SldUX1NFQ1JFVH1cblxuICAgICAgTE9HRkxBUkVfQVBJX0tFWTogJHtMT0dGTEFSRV9QVUJMSUNfQUNDRVNTX1RPS0VOfVxuICAgICAgTE9HRkxBUkVfUFVCTElDX0FDQ0VTU19UT0tFTjogJHtMT0dGTEFSRV9QVUJMSUNfQUNDRVNTX1RPS0VOfVxuICAgICAgTE9HRkxBUkVfUFJJVkFURV9BQ0NFU1NfVE9LRU46ICR7TE9HRkxBUkVfUFJJVkFURV9BQ0NFU1NfVE9LRU59XG5cbiAgICAgIExPR0ZMQVJFX1VSTDogaHR0cDovL2FuYWx5dGljczo0MDAwXG4gICAgICBORVhUX1BVQkxJQ19FTkFCTEVfTE9HUzogXCJ0cnVlXCJcbiAgICAgIE5FWFRfQU5BTFlUSUNTX0JBQ0tFTkRfUFJPVklERVI6IHBvc3RncmVzXG4gICAgICBTTklQUEVUU19NQU5BR0VNRU5UX0ZPTERFUjogL2FwcC9zbmlwcGV0c1xuICAgICAgRURHRV9GVU5DVElPTlNfTUFOQUdFTUVOVF9GT0xERVI6IC9hcHAvZWRnZS1mdW5jdGlvbnNcbiAgICB2b2x1bWVzOlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL3NuaXBwZXRzOi9hcHAvc25pcHBldHM6WlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2Z1bmN0aW9uczovYXBwL2VkZ2UtZnVuY3Rpb25zOlpcblxuICBrb25nOlxuICAgIGltYWdlOiBrb25nL2tvbmc6My45LjFcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDogW1wiQ01EXCIsIFwia29uZ1wiLCBcImhlYWx0aFwiXVxuICAgICAgaW50ZXJ2YWw6IDVzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogNVxuICAgICAgc3RhcnRfcGVyaW9kOiAzMHNcbiAgICBkZXBlbmRzX29uOlxuICAgICAgc3R1ZGlvOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgIGV4cG9zZTpcbiAgICAgIC0gODAwMFxuICAgICAgLSA4NDQzXG4gICAgdm9sdW1lczpcbiAgICAgIC0gLi4vZmlsZXMvdm9sdW1lcy9hcGkva29uZy55bWw6L2hvbWUva29uZy90ZW1wLnltbDpybyx6XG4gICAgICAtIC4uL2ZpbGVzL3ZvbHVtZXMvYXBpL2tvbmctZW50cnlwb2ludC5zaDovaG9tZS9rb25nL2tvbmctZW50cnlwb2ludC5zaDpybyx6XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBLT05HX0RBVEFCQVNFOiBcIm9mZlwiXG4gICAgICBLT05HX0RFQ0xBUkFUSVZFX0NPTkZJRzogL3Vzci9sb2NhbC9rb25nL2tvbmcueW1sXG4gICAgICBLT05HX0ROU19PUkRFUjogTEFTVCxBLENOQU1FXG4gICAgICBLT05HX0ROU19OT1RfRk9VTkRfVFRMOiAxXG4gICAgICBLT05HX1BMVUdJTlM6IHJlcXVlc3QtdHJhbnNmb3JtZXIsY29ycyxrZXktYXV0aCxhY2wsYmFzaWMtYXV0aCxyZXF1ZXN0LXRlcm1pbmF0aW9uLGlwLXJlc3RyaWN0aW9uLHBvc3QtZnVuY3Rpb25cbiAgICAgIEtPTkdfTkdJTlhfUFJPWFlfUFJPWFlfQlVGRkVSX1NJWkU6IDE2MGtcbiAgICAgIEtPTkdfTkdJTlhfUFJPWFlfUFJPWFlfQlVGRkVSUzogNjQgMTYwa1xuICAgICAgS09OR19QUk9YWV9BQ0NFU1NfTE9HOiAvZGV2L3N0ZG91dCBjb21iaW5lZFxuICAgICAgU1VQQUJBU0VfQU5PTl9LRVk6ICR7QU5PTl9LRVl9XG4gICAgICBTVVBBQkFTRV9TRVJWSUNFX0tFWTogJHtTRVJWSUNFX1JPTEVfS0VZfVxuICAgICAgU1VQQUJBU0VfUFVCTElTSEFCTEVfS0VZOiAke1NVUEFCQVNFX1BVQkxJU0hBQkxFX0tFWTotfVxuICAgICAgU1VQQUJBU0VfU0VDUkVUX0tFWTogJHtTVVBBQkFTRV9TRUNSRVRfS0VZOi19XG4gICAgICBBTk9OX0tFWV9BU1lNTUVUUklDOiAke0FOT05fS0VZX0FTWU1NRVRSSUM6LX1cbiAgICAgIFNFUlZJQ0VfUk9MRV9LRVlfQVNZTU1FVFJJQzogJHtTRVJWSUNFX1JPTEVfS0VZX0FTWU1NRVRSSUM6LX1cbiAgICAgIERBU0hCT0FSRF9VU0VSTkFNRTogJHtEQVNIQk9BUkRfVVNFUk5BTUV9XG4gICAgICBEQVNIQk9BUkRfUEFTU1dPUkQ6ICR7REFTSEJPQVJEX1BBU1NXT1JEfVxuICAgIGVudHJ5cG9pbnQ6IFtcIi9iaW4vYmFzaFwiLCBcIi9ob21lL2tvbmcva29uZy1lbnRyeXBvaW50LnNoXCJdXG5cbiAgYXV0aDpcbiAgICBpbWFnZTogc3VwYWJhc2UvZ290cnVlOnYyLjE4OS4wXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIFtcbiAgICAgICAgICBcIkNNRFwiLFxuICAgICAgICAgIFwid2dldFwiLFxuICAgICAgICAgIFwiLS1uby12ZXJib3NlXCIsXG4gICAgICAgICAgXCItLXRyaWVzPTFcIixcbiAgICAgICAgICBcIi0tc3BpZGVyXCIsXG4gICAgICAgICAgXCJodHRwOi8vbG9jYWxob3N0Ojk5OTkvaGVhbHRoXCJcbiAgICAgICAgXVxuICAgICAgdGltZW91dDogNXNcbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgcmV0cmllczogM1xuICAgIGRlcGVuZHNfb246XG4gICAgICBkYjpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIEdPVFJVRV9NQUlMRVJfRVhURVJOQUxfSE9TVFM6IGtvbmcsJHtTVVBBQkFTRV9IT1NUfVxuICAgICAgR09UUlVFX0FQSV9IT1NUOiAwLjAuMC4wXG4gICAgICBHT1RSVUVfQVBJX1BPUlQ6IDk5OTlcbiAgICAgIEFQSV9FWFRFUk5BTF9VUkw6ICR7QVBJX0VYVEVSTkFMX1VSTH1cblxuICAgICAgR09UUlVFX0RCX0RSSVZFUjogcG9zdGdyZXNcbiAgICAgIEdPVFJVRV9EQl9EQVRBQkFTRV9VUkw6IHBvc3RncmVzOi8vc3VwYWJhc2VfYXV0aF9hZG1pbjoke1BPU1RHUkVTX1BBU1NXT1JEfUAke1BPU1RHUkVTX0hPU1R9OiR7UE9TVEdSRVNfUE9SVH0vJHtQT1NUR1JFU19EQn1cblxuICAgICAgR09UUlVFX1NJVEVfVVJMOiAke1NJVEVfVVJMfVxuICAgICAgR09UUlVFX1VSSV9BTExPV19MSVNUOiAke0FERElUSU9OQUxfUkVESVJFQ1RfVVJMU31cbiAgICAgIEdPVFJVRV9ESVNBQkxFX1NJR05VUDogJHtESVNBQkxFX1NJR05VUH1cblxuICAgICAgR09UUlVFX0pXVF9BRE1JTl9ST0xFUzogc2VydmljZV9yb2xlXG4gICAgICBHT1RSVUVfSldUX0FVRDogYXV0aGVudGljYXRlZFxuICAgICAgR09UUlVFX0pXVF9ERUZBVUxUX0dST1VQX05BTUU6IGF1dGhlbnRpY2F0ZWRcbiAgICAgIEdPVFJVRV9KV1RfRVhQOiAke0pXVF9FWFBJUll9XG4gICAgICBHT1RSVUVfSldUX1NFQ1JFVDogJHtKV1RfU0VDUkVUfVxuICAgICAgR09UUlVFX0pXVF9LRVlTOiAke0pXVF9LRVlTOi1bXX1cblxuICAgICAgR09UUlVFX0VYVEVSTkFMX0VNQUlMX0VOQUJMRUQ6ICR7RU5BQkxFX0VNQUlMX1NJR05VUH1cbiAgICAgIEdPVFJVRV9FWFRFUk5BTF9BTk9OWU1PVVNfVVNFUlNfRU5BQkxFRDogJHtFTkFCTEVfQU5PTllNT1VTX1VTRVJTfVxuICAgICAgR09UUlVFX01BSUxFUl9BVVRPQ09ORklSTTogJHtFTkFCTEVfRU1BSUxfQVVUT0NPTkZJUk19XG5cbiAgICAgIEdPVFJVRV9TTVRQX0FETUlOX0VNQUlMOiAke1NNVFBfQURNSU5fRU1BSUx9XG4gICAgICBHT1RSVUVfU01UUF9IT1NUOiAke1NNVFBfSE9TVH1cbiAgICAgIEdPVFJVRV9TTVRQX1BPUlQ6ICR7U01UUF9QT1JUfVxuICAgICAgR09UUlVFX1NNVFBfVVNFUjogJHtTTVRQX1VTRVJ9XG4gICAgICBHT1RSVUVfU01UUF9QQVNTOiAke1NNVFBfUEFTU31cbiAgICAgIEdPVFJVRV9TTVRQX1NFTkRFUl9OQU1FOiAke1NNVFBfU0VOREVSX05BTUV9XG4gICAgICBHT1RSVUVfTUFJTEVSX1VSTFBBVEhTX0lOVklURTogJHtNQUlMRVJfVVJMUEFUSFNfSU5WSVRFfVxuICAgICAgR09UUlVFX01BSUxFUl9VUkxQQVRIU19DT05GSVJNQVRJT046ICR7TUFJTEVSX1VSTFBBVEhTX0NPTkZJUk1BVElPTn1cbiAgICAgIEdPVFJVRV9NQUlMRVJfVVJMUEFUSFNfUkVDT1ZFUlk6ICR7TUFJTEVSX1VSTFBBVEhTX1JFQ09WRVJZfVxuICAgICAgR09UUlVFX01BSUxFUl9VUkxQQVRIU19FTUFJTF9DSEFOR0U6ICR7TUFJTEVSX1VSTFBBVEhTX0VNQUlMX0NIQU5HRX1cblxuICAgICAgR09UUlVFX0VYVEVSTkFMX1BIT05FX0VOQUJMRUQ6ICR7RU5BQkxFX1BIT05FX1NJR05VUH1cbiAgICAgIEdPVFJVRV9TTVNfQVVUT0NPTkZJUk06ICR7RU5BQkxFX1BIT05FX0FVVE9DT05GSVJNfVxuXG4gIHJlc3Q6XG4gICAgaW1hZ2U6IHBvc3RncmVzdC9wb3N0Z3Jlc3Q6djE0LjEyXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZGI6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQR1JTVF9EQl9VUkk6IHBvc3RncmVzOi8vYXV0aGVudGljYXRvcjoke1BPU1RHUkVTX1BBU1NXT1JEfUAke1BPU1RHUkVTX0hPU1R9OiR7UE9TVEdSRVNfUE9SVH0vJHtQT1NUR1JFU19EQn1cbiAgICAgIFBHUlNUX0RCX1NDSEVNQVM6ICR7UEdSU1RfREJfU0NIRU1BU31cbiAgICAgIFBHUlNUX0RCX01BWF9ST1dTOiAke1BHUlNUX0RCX01BWF9ST1dTOi0xMDAwfVxuICAgICAgUEdSU1RfREJfRVhUUkFfU0VBUkNIX1BBVEg6ICR7UEdSU1RfREJfRVhUUkFfU0VBUkNIX1BBVEg6LXB1YmxpY31cbiAgICAgIFBHUlNUX0RCX0FOT05fUk9MRTogYW5vblxuICAgICAgUEdSU1RfSldUX1NFQ1JFVDogJHtKV1RfU0VDUkVUfVxuICAgICAgUEdSU1RfREJfVVNFX0xFR0FDWV9HVUNTOiBcImZhbHNlXCJcbiAgICAgIFBHUlNUX0FQUF9TRVRUSU5HU19KV1RfU0VDUkVUOiAke0pXVF9TRUNSRVR9XG4gICAgICBQR1JTVF9BUFBfU0VUVElOR1NfSldUX0VYUDogJHtKV1RfRVhQSVJZfVxuICAgIGNvbW1hbmQ6XG4gICAgICBbXG4gICAgICAgIFwicG9zdGdyZXN0XCJcbiAgICAgIF1cblxuICByZWFsdGltZTpcbiAgICBpbWFnZTogc3VwYWJhc2UvcmVhbHRpbWU6djIuMTAyLjNcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGRlcGVuZHNfb246XG4gICAgICBkYjpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIFtcbiAgICAgICAgICBcIkNNRC1TSEVMTFwiLFxuICAgICAgICAgIFwiY3VybCAtc1NmTCAtLWhlYWQgLW8gL2Rldi9udWxsIC1IIFxcXCJBdXRob3JpemF0aW9uOiBCZWFyZXIgJHtBTk9OX0tFWX1cXFwiIGh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9hcGkvdGVuYW50cy9yZWFsdGltZS1kZXYvaGVhbHRoXCJcbiAgICAgICAgXVxuICAgICAgdGltZW91dDogNXNcbiAgICAgIGludGVydmFsOiAzMHNcbiAgICAgIHJldHJpZXM6IDNcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQT1JUOiA0MDAwXG4gICAgICBEQl9IT1NUOiAke1BPU1RHUkVTX0hPU1R9XG4gICAgICBEQl9QT1JUOiAke1BPU1RHUkVTX1BPUlR9XG4gICAgICBEQl9VU0VSOiBzdXBhYmFzZV9hZG1pblxuICAgICAgREJfUEFTU1dPUkQ6ICR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICBEQl9OQU1FOiAke1BPU1RHUkVTX0RCfVxuICAgICAgREJfQUZURVJfQ09OTkVDVF9RVUVSWTogJ1NFVCBzZWFyY2hfcGF0aCBUTyBfcmVhbHRpbWUnXG4gICAgICBEQl9FTkNfS0VZOiBzdXBhYmFzZXJlYWx0aW1lXG4gICAgICBBUElfSldUX1NFQ1JFVDogJHtKV1RfU0VDUkVUfVxuICAgICAgU0VDUkVUX0tFWV9CQVNFOiAke1NFQ1JFVF9LRVlfQkFTRX1cbiAgICAgIE1FVFJJQ1NfSldUX1NFQ1JFVDogJHtKV1RfU0VDUkVUfVxuICAgICAgRVJMX0FGTEFHUzogLXByb3RvX2Rpc3QgaW5ldF90Y3BcbiAgICAgIEROU19OT0RFUzogXCInJ1wiXG4gICAgICBSTElNSVRfTk9GSUxFOiBcIjEwMDAwXCJcbiAgICAgIEFQUF9OQU1FOiByZWFsdGltZVxuICAgICAgU0VFRF9TRUxGX0hPU1Q6IFwidHJ1ZVwiXG4gICAgICBSVU5fSkFOSVRPUjogXCJ0cnVlXCJcbiAgICAgIERJU0FCTEVfSEVBTFRIQ0hFQ0tfTE9HR0lORzogXCJ0cnVlXCJcblxuICBzdG9yYWdlOlxuICAgIGltYWdlOiBzdXBhYmFzZS9zdG9yYWdlLWFwaTp2MS42MC40XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZGI6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgICByZXN0OlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2Vfc3RhcnRlZFxuICAgICAgaW1ncHJveHk6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9zdGFydGVkXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICBbXG4gICAgICAgICAgXCJDTURcIixcbiAgICAgICAgICBcIndnZXRcIixcbiAgICAgICAgICBcIi0tbm8tdmVyYm9zZVwiLFxuICAgICAgICAgIFwiLS10cmllcz0xXCIsXG4gICAgICAgICAgXCItLXNwaWRlclwiLFxuICAgICAgICAgIFwiaHR0cDovL3N0b3JhZ2U6NTAwMC9zdGF0dXNcIlxuICAgICAgICBdXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgaW50ZXJ2YWw6IDVzXG4gICAgICByZXRyaWVzOiAzXG4gICAgICBzdGFydF9wZXJpb2Q6IDEwc1xuICAgIHZvbHVtZXM6XG4gICAgICAtIC4uL2ZpbGVzL3ZvbHVtZXMvc3RvcmFnZTovdmFyL2xpYi9zdG9yYWdlOnpcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIEFOT05fS0VZOiAke0FOT05fS0VZfVxuICAgICAgU0VSVklDRV9LRVk6ICR7U0VSVklDRV9ST0xFX0tFWX1cbiAgICAgIFBPU1RHUkVTVF9VUkw6IGh0dHA6Ly9yZXN0OjMwMDBcbiAgICAgIEFVVEhfSldUX1NFQ1JFVDogJHtKV1RfU0VDUkVUfVxuICAgICAgREFUQUJBU0VfVVJMOiBwb3N0Z3JlczovL3N1cGFiYXNlX3N0b3JhZ2VfYWRtaW46JHtQT1NUR1JFU19QQVNTV09SRH1AJHtQT1NUR1JFU19IT1NUfToke1BPU1RHUkVTX1BPUlR9LyR7UE9TVEdSRVNfREJ9XG4gICAgICBTVE9SQUdFX1BVQkxJQ19VUkw6ICR7U1VQQUJBU0VfUFVCTElDX1VSTH1cbiAgICAgIFJFUVVFU1RfQUxMT1dfWF9GT1JXQVJERURfUEFUSDogXCJ0cnVlXCJcbiAgICAgIEZJTEVfU0laRV9MSU1JVDogNTI0Mjg4MDBcbiAgICAgIFNUT1JBR0VfQkFDS0VORDogZmlsZVxuICAgICAgR0xPQkFMX1MzX0JVQ0tFVDogJHtHTE9CQUxfUzNfQlVDS0VUfVxuICAgICAgRklMRV9TVE9SQUdFX0JBQ0tFTkRfUEFUSDogL3Zhci9saWIvc3RvcmFnZVxuICAgICAgVEVOQU5UX0lEOiAke1NUT1JBR0VfVEVOQU5UX0lEfVxuICAgICAgUkVHSU9OOiAke1JFR0lPTn1cbiAgICAgIEVOQUJMRV9JTUFHRV9UUkFOU0ZPUk1BVElPTjogXCJ0cnVlXCJcbiAgICAgIElNR1BST1hZX1VSTDogaHR0cDovL2ltZ3Byb3h5OjUwMDFcbiAgICAgIFMzX1BST1RPQ09MX0FDQ0VTU19LRVlfSUQ6ICR7UzNfUFJPVE9DT0xfQUNDRVNTX0tFWV9JRH1cbiAgICAgIFMzX1BST1RPQ09MX0FDQ0VTU19LRVlfU0VDUkVUOiAke1MzX1BST1RPQ09MX0FDQ0VTU19LRVlfU0VDUkVUfVxuXG4gIGltZ3Byb3h5OlxuICAgIGltYWdlOiBkYXJ0aHNpbS9pbWdwcm94eTp2My4zMC4xXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL3N0b3JhZ2U6L3Zhci9saWIvc3RvcmFnZTp6XG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICBbXG4gICAgICAgICAgXCJDTURcIixcbiAgICAgICAgICBcImltZ3Byb3h5XCIsXG4gICAgICAgICAgXCJoZWFsdGhcIlxuICAgICAgICBdXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgaW50ZXJ2YWw6IDVzXG4gICAgICByZXRyaWVzOiAzXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBJTUdQUk9YWV9CSU5EOiBcIjo1MDAxXCJcbiAgICAgIElNR1BST1hZX0xPQ0FMX0ZJTEVTWVNURU1fUk9PVDogL1xuICAgICAgSU1HUFJPWFlfVVNFX0VUQUc6IFwidHJ1ZVwiXG4gICAgICBJTUdQUk9YWV9BVVRPX1dFQlA6ICR7SU1HUFJPWFlfQVVUT19XRUJQfVxuICAgICAgSU1HUFJPWFlfTUFYX1NSQ19SRVNPTFVUSU9OOiAxNi44XG5cbiAgbWV0YTpcbiAgICBpbWFnZTogc3VwYWJhc2UvcG9zdGdyZXMtbWV0YTp2MC45Ni42XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICBkZXBlbmRzX29uOlxuICAgICAgZGI6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQR19NRVRBX1BPUlQ6IDgwODBcbiAgICAgIFBHX01FVEFfREJfSE9TVDogJHtQT1NUR1JFU19IT1NUfVxuICAgICAgUEdfTUVUQV9EQl9QT1JUOiAke1BPU1RHUkVTX1BPUlR9XG4gICAgICBQR19NRVRBX0RCX05BTUU6ICR7UE9TVEdSRVNfREJ9XG4gICAgICBQR19NRVRBX0RCX1VTRVI6IHN1cGFiYXNlX2FkbWluXG4gICAgICBQR19NRVRBX0RCX1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgQ1JZUFRPX0tFWTogJHtQR19NRVRBX0NSWVBUT19LRVl9XG5cbiAgZnVuY3Rpb25zOlxuICAgIGltYWdlOiBzdXBhYmFzZS9lZGdlLXJ1bnRpbWU6djEuNzQuMFxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgdm9sdW1lczpcbiAgICAgIC0gLi4vZmlsZXMvdm9sdW1lcy9mdW5jdGlvbnM6L2hvbWUvZGVuby9mdW5jdGlvbnM6WlxuICAgICAgLSBkZW5vLWNhY2hlOi9yb290Ly5jYWNoZS9kZW5vXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIGtvbmc6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBKV1RfU0VDUkVUOiAke0pXVF9TRUNSRVR9XG4gICAgICBTVVBBQkFTRV9VUkw6IGh0dHA6Ly9rb25nOjgwMDBcbiAgICAgIFNVUEFCQVNFX1BVQkxJQ19VUkw6ICR7U1VQQUJBU0VfUFVCTElDX1VSTH1cbiAgICAgIFNVUEFCQVNFX0FOT05fS0VZOiAke0FOT05fS0VZfVxuICAgICAgU1VQQUJBU0VfU0VSVklDRV9ST0xFX0tFWTogJHtTRVJWSUNFX1JPTEVfS0VZfVxuICAgICAgU1VQQUJBU0VfUFVCTElTSEFCTEVfS0VZUzogXCJ7XFxcImRlZmF1bHRcXFwiOlxcXCIke1NVUEFCQVNFX1BVQkxJU0hBQkxFX0tFWTotfVxcXCJ9XCJcbiAgICAgIFNVUEFCQVNFX1NFQ1JFVF9LRVlTOiBcIntcXFwiZGVmYXVsdFxcXCI6XFxcIiR7U1VQQUJBU0VfU0VDUkVUX0tFWTotfVxcXCJ9XCJcbiAgICAgIFNVUEFCQVNFX0RCX1VSTDogcG9zdGdyZXNxbDovL3Bvc3RncmVzOiR7UE9TVEdSRVNfUEFTU1dPUkR9QCR7UE9TVEdSRVNfSE9TVH06JHtQT1NUR1JFU19QT1JUfS8ke1BPU1RHUkVTX0RCfVxuICAgICAgVkVSSUZZX0pXVDogXCIke0ZVTkNUSU9OU19WRVJJRllfSldUfVwiXG4gICAgY29tbWFuZDpcbiAgICAgIFtcbiAgICAgICAgXCJzdGFydFwiLFxuICAgICAgICBcIi0tbWFpbi1zZXJ2aWNlXCIsXG4gICAgICAgIFwiL2hvbWUvZGVuby9mdW5jdGlvbnMvbWFpblwiXG4gICAgICBdXG5cbiAgYW5hbHl0aWNzOlxuICAgIGltYWdlOiBzdXBhYmFzZS9sb2dmbGFyZToxLjM2LjFcbiAgICByZXN0YXJ0OiB1bmxlc3Mtc3RvcHBlZFxuICAgIGV4cG9zZTpcbiAgICAgIC0gNDAwMFxuICAgICMgRmlyc3QgYm9vdDogTG9nZmxhcmUgc2VlZHMgX2FuYWx5dGljcyBpbiBQb3N0Z3JlczsgYWxsb3cgZXh0cmEgdGltZSBiZWZvcmUgbWFya2luZyB1bmhlYWx0aHkuXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICBbXG4gICAgICAgICAgXCJDTUQtU0hFTExcIixcbiAgICAgICAgICBcImN1cmwgLXNTZkwgLW8gL2Rldi9udWxsIGh0dHA6Ly9sb2NhbGhvc3Q6NDAwMC9oZWFsdGhcIlxuICAgICAgICBdXG4gICAgICB0aW1lb3V0OiAxMHNcbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgcmV0cmllczogMTVcbiAgICAgIHN0YXJ0X3BlcmlvZDogOTBzXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIGRiOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfaGVhbHRoeVxuICAgIGVudmlyb25tZW50OlxuICAgICAgTE9HRkxBUkVfTk9ERV9IT1NUOiAxMjcuMC4wLjFcbiAgICAgIERCX1VTRVJOQU1FOiBzdXBhYmFzZV9hZG1pblxuICAgICAgREJfREFUQUJBU0U6IF9zdXBhYmFzZVxuICAgICAgREJfSE9TVE5BTUU6ICR7UE9TVEdSRVNfSE9TVH1cbiAgICAgIERCX1BPUlQ6ICR7UE9TVEdSRVNfUE9SVH1cbiAgICAgIERCX1BBU1NXT1JEOiAke1BPU1RHUkVTX1BBU1NXT1JEfVxuICAgICAgREJfU0NIRU1BOiBfYW5hbHl0aWNzXG4gICAgICBMT0dGTEFSRV9QVUJMSUNfQUNDRVNTX1RPS0VOOiAke0xPR0ZMQVJFX1BVQkxJQ19BQ0NFU1NfVE9LRU59XG4gICAgICBMT0dGTEFSRV9QUklWQVRFX0FDQ0VTU19UT0tFTjogJHtMT0dGTEFSRV9QUklWQVRFX0FDQ0VTU19UT0tFTn1cbiAgICAgIExPR0ZMQVJFX1NJTkdMRV9URU5BTlQ6IFwidHJ1ZVwiXG4gICAgICBMT0dGTEFSRV9TVVBBQkFTRV9NT0RFOiBcInRydWVcIlxuICAgICAgTE9HRkxBUkVfTUlOX0NMVVNURVJfU0laRTogMVxuICAgICAgUE9TVEdSRVNfQkFDS0VORF9VUkw6IHBvc3RncmVzcWw6Ly9zdXBhYmFzZV9hZG1pbjoke1BPU1RHUkVTX1BBU1NXT1JEfUAke1BPU1RHUkVTX0hPU1R9OiR7UE9TVEdSRVNfUE9SVH0vX3N1cGFiYXNlXG4gICAgICBQT1NUR1JFU19CQUNLRU5EX1NDSEVNQTogX2FuYWx5dGljc1xuICAgICAgTE9HRkxBUkVfRkVBVFVSRV9GTEFHX09WRVJSSURFOiBtdWx0aWJhY2tlbmQ9dHJ1ZVxuXG4gIGRiOlxuICAgIGltYWdlOiBzdXBhYmFzZS9wb3N0Z3JlczoxNy42LjEuMTM2XG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2RiL3JlYWx0aW1lLnNxbDovZG9ja2VyLWVudHJ5cG9pbnQtaW5pdGRiLmQvbWlncmF0aW9ucy85OS1yZWFsdGltZS5zcWw6WlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2RiL3dlYmhvb2tzLnNxbDovZG9ja2VyLWVudHJ5cG9pbnQtaW5pdGRiLmQvaW5pdC1zY3JpcHRzLzk4LXdlYmhvb2tzLnNxbDpaXG4gICAgICAtIC4uL2ZpbGVzL3ZvbHVtZXMvZGIvcm9sZXMuc3FsOi9kb2NrZXItZW50cnlwb2ludC1pbml0ZGIuZC9pbml0LXNjcmlwdHMvOTktcm9sZXMuc3FsOlpcbiAgICAgIC0gLi4vZmlsZXMvdm9sdW1lcy9kYi9qd3Quc3FsOi9kb2NrZXItZW50cnlwb2ludC1pbml0ZGIuZC9pbml0LXNjcmlwdHMvOTktand0LnNxbDpaXG4gICAgICAtIC4uL2ZpbGVzL3ZvbHVtZXMvZGIvZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGE6WlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2RiL19zdXBhYmFzZS5zcWw6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL21pZ3JhdGlvbnMvOTctX3N1cGFiYXNlLnNxbDpaXG4gICAgICAtIC4uL2ZpbGVzL3ZvbHVtZXMvZGIvbG9ncy5zcWw6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL21pZ3JhdGlvbnMvOTktbG9ncy5zcWw6WlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2RiL3Bvb2xlci5zcWw6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kL21pZ3JhdGlvbnMvOTktcG9vbGVyLnNxbDpaXG4gICAgICAtIGRiLWNvbmZpZzovZXRjL3Bvc3RncmVzcWwtY3VzdG9tXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICBbXG4gICAgICAgICAgXCJDTURcIixcbiAgICAgICAgICBcInBnX2lzcmVhZHlcIixcbiAgICAgICAgICBcIi1VXCIsXG4gICAgICAgICAgXCJwb3N0Z3Jlc1wiLFxuICAgICAgICAgIFwiLWhcIixcbiAgICAgICAgICBcImxvY2FsaG9zdFwiXG4gICAgICAgIF1cbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDE1XG4gICAgICBzdGFydF9wZXJpb2Q6IDYwc1xuICAgIGRlcGVuZHNfb246XG4gICAgICB2ZWN0b3I6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBQT1NUR1JFU19IT1NUOiAvdmFyL3J1bi9wb3N0Z3Jlc3FsXG4gICAgICBQR1BPUlQ6ICR7UE9TVEdSRVNfUE9SVH1cbiAgICAgIFBPU1RHUkVTX1BPUlQ6ICR7UE9TVEdSRVNfUE9SVH1cbiAgICAgIFBHUEFTU1dPUkQ6ICR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICBQT1NUR1JFU19QQVNTV09SRDogJHtQT1NUR1JFU19QQVNTV09SRH1cbiAgICAgIFBHREFUQUJBU0U6ICR7UE9TVEdSRVNfREJ9XG4gICAgICBQT1NUR1JFU19EQjogJHtQT1NUR1JFU19EQn1cbiAgICAgIEpXVF9TRUNSRVQ6ICR7SldUX1NFQ1JFVH1cbiAgICAgIEpXVF9FWFA6ICR7SldUX0VYUElSWX1cbiAgICBjb21tYW5kOlxuICAgICAgW1xuICAgICAgICBcInBvc3RncmVzXCIsXG4gICAgICAgIFwiLWNcIixcbiAgICAgICAgXCJjb25maWdfZmlsZT0vZXRjL3Bvc3RncmVzcWwvcG9zdGdyZXNxbC5jb25mXCIsXG4gICAgICAgIFwiLWNcIixcbiAgICAgICAgXCJsb2dfbWluX21lc3NhZ2VzPWZhdGFsXCJcbiAgICAgIF1cblxuICB2ZWN0b3I6XG4gICAgaW1hZ2U6IHRpbWJlcmlvL3ZlY3RvcjowLjUzLjAtYWxwaW5lXG4gICAgcmVzdGFydDogdW5sZXNzLXN0b3BwZWRcbiAgICB2b2x1bWVzOlxuICAgICAgLSAuLi9maWxlcy92b2x1bWVzL2xvZ3MvdmVjdG9yLnltbDovZXRjL3ZlY3Rvci92ZWN0b3IueW1sOnJvLHpcbiAgICAgIC0gJHtET0NLRVJfU09DS0VUX0xPQ0FUSU9OfTovdmFyL3J1bi9kb2NrZXIuc29jazpybyx6XG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICBbXG4gICAgICAgICAgXCJDTURcIixcbiAgICAgICAgICBcIndnZXRcIixcbiAgICAgICAgICBcIi0tbm8tdmVyYm9zZVwiLFxuICAgICAgICAgIFwiLS10cmllcz0xXCIsXG4gICAgICAgICAgXCItLXNwaWRlclwiLFxuICAgICAgICAgIFwiaHR0cDovL3ZlY3Rvcjo5MDAxL2hlYWx0aFwiXG4gICAgICAgIF1cbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICBpbnRlcnZhbDogNXNcbiAgICAgIHJldHJpZXM6IDVcbiAgICAgIHN0YXJ0X3BlcmlvZDogMTBzXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBMT0dGTEFSRV9QVUJMSUNfQUNDRVNTX1RPS0VOOiAke0xPR0ZMQVJFX1BVQkxJQ19BQ0NFU1NfVE9LRU59XG4gICAgY29tbWFuZDpcbiAgICAgIFtcbiAgICAgICAgXCItLWNvbmZpZ1wiLFxuICAgICAgICBcIi9ldGMvdmVjdG9yL3ZlY3Rvci55bWxcIlxuICAgICAgXVxuICAgIHNlY3VyaXR5X29wdDpcbiAgICAgIC0gXCJsYWJlbD1kaXNhYmxlXCJcblxuICBzdXBhdmlzb3I6XG4gICAgaW1hZ2U6IHN1cGFiYXNlL3N1cGF2aXNvcjoyLjkuNVxuICAgIHJlc3RhcnQ6IHVubGVzcy1zdG9wcGVkXG4gICAgZXhwb3NlOlxuICAgICAgLSBcIjU0MzJcIlxuICAgICAgLSBcIjY1NDNcIlxuICAgIHZvbHVtZXM6XG4gICAgICAtIC4uL2ZpbGVzL3ZvbHVtZXMvcG9vbGVyL3Bvb2xlci5leHM6L2V0Yy9wb29sZXIvcG9vbGVyLmV4czpybyx6XG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICBbXG4gICAgICAgICAgXCJDTURcIixcbiAgICAgICAgICBcImN1cmxcIixcbiAgICAgICAgICBcIi1zU2ZMXCIsXG4gICAgICAgICAgXCItLWhlYWRcIixcbiAgICAgICAgICBcIi1vXCIsXG4gICAgICAgICAgXCIvZGV2L251bGxcIixcbiAgICAgICAgICBcImh0dHA6Ly8xMjcuMC4wLjE6NDAwMC9hcGkvaGVhbHRoXCJcbiAgICAgICAgXVxuICAgICAgaW50ZXJ2YWw6IDEwc1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDEwXG4gICAgICBzdGFydF9wZXJpb2Q6IDMwc1xuICAgIGRlcGVuZHNfb246XG4gICAgICBkYjpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2hlYWx0aHlcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIFBPUlQ6IDQwMDBcbiAgICAgIFBPU1RHUkVTX1BPUlQ6ICR7UE9TVEdSRVNfUE9SVH1cbiAgICAgIFBPU1RHUkVTX0hPU1Q6ICR7UE9TVEdSRVNfSE9TVH1cbiAgICAgIFBPU1RHUkVTX0RCOiAke1BPU1RHUkVTX0RCfVxuICAgICAgUE9TVEdSRVNfUEFTU1dPUkQ6ICR7UE9TVEdSRVNfUEFTU1dPUkR9XG4gICAgICBEQVRBQkFTRV9VUkw6IGVjdG86Ly9zdXBhYmFzZV9hZG1pbjoke1BPU1RHUkVTX1BBU1NXT1JEfUAke1BPU1RHUkVTX0hPU1R9OiR7UE9TVEdSRVNfUE9SVH0vX3N1cGFiYXNlXG4gICAgICBDTFVTVEVSX1BPU1RHUkVTOiBcInRydWVcIlxuICAgICAgU0VDUkVUX0tFWV9CQVNFOiAke1NFQ1JFVF9LRVlfQkFTRX1cbiAgICAgIFZBVUxUX0VOQ19LRVk6ICR7VkFVTFRfRU5DX0tFWX1cbiAgICAgIEFQSV9KV1RfU0VDUkVUOiAke0pXVF9TRUNSRVR9XG4gICAgICBNRVRSSUNTX0pXVF9TRUNSRVQ6ICR7SldUX1NFQ1JFVH1cbiAgICAgIFJFR0lPTjogbG9jYWxcbiAgICAgIEVSTF9BRkxBR1M6IC1wcm90b19kaXN0IGluZXRfdGNwXG4gICAgICBQT09MRVJfVEVOQU5UX0lEOiAke1BPT0xFUl9URU5BTlRfSUR9XG4gICAgICBQT09MRVJfREVGQVVMVF9QT09MX1NJWkU6ICR7UE9PTEVSX0RFRkFVTFRfUE9PTF9TSVpFfVxuICAgICAgUE9PTEVSX01BWF9DTElFTlRfQ09OTjogJHtQT09MRVJfTUFYX0NMSUVOVF9DT05OfVxuICAgICAgUE9PTEVSX1BPT0xfTU9ERTogdHJhbnNhY3Rpb25cbiAgICAgIERCX1BPT0xfU0laRTogJHtQT09MRVJfREJfUE9PTF9TSVpFfVxuICAgIGNvbW1hbmQ6XG4gICAgICBbXG4gICAgICAgIFwiL2Jpbi9zaFwiLFxuICAgICAgICBcIi1jXCIsXG4gICAgICAgIFwiL2FwcC9iaW4vbWlncmF0ZSAmJiAvYXBwL2Jpbi9zdXBhdmlzb3IgZXZhbCBcXFwiJCQoY2F0IC9ldGMvcG9vbGVyL3Bvb2xlci5leHMpXFxcIiAmJiAvYXBwL2Jpbi9zZXJ2ZXJcIlxuICAgICAgXVxuXG52b2x1bWVzOlxuICBkYi1jb25maWc6XG4gIGRlbm8tY2FjaGU6IiwKICAiY29uZmlnIjogIlt2YXJpYWJsZXNdXG5tYWluX2RvbWFpbiA9IFwiJHtkb21haW59XCJcbnBvc3RncmVzX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5kYXNoYm9hcmRfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbmxvZ2ZsYXJlX3B1YmxpY19hY2Nlc3NfdG9rZW4gPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbmxvZ2ZsYXJlX3ByaXZhdGVfYWNjZXNzX3Rva2VuID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5wZ19tZXRhX2NyeXB0b19rZXkgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbnMzX3Byb3RvY29sX2FjY2Vzc19rZXlfaWQgPSBcIiR7cGFzc3dvcmQ6MjR9XCJcbnMzX3Byb3RvY29sX2FjY2Vzc19rZXlfc2VjcmV0ID0gXCIke3Bhc3N3b3JkOjQ4fVwiXG5zZWNyZXRfa2V5X2Jhc2UgPSBcIiR7cGFzc3dvcmQ6NjR9XCJcbnZhdWx0X2VuY19rZXkgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbmp3dF9zZWNyZXQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbnBvb2xlcl90ZW5hbnRfaWQgPSBcIiR7dXVpZH1cIlxuYW5vbl9rZXlfcGF5bG9hZCA9IFwiXCJcIntcbiAgXCJyb2xlXCI6IFwiYW5vblwiLFxuICBcImlzc1wiOiBcInN1cGFiYXNlXCIsXG4gIFwiZXhwXCI6ICR7dGltZXN0YW1wczoyMDMwLTAxLTAxVDAwOjAwOjAwWn1cbn1cblwiXCJcIlxuc2VydmljZV9yb2xlX2tleV9wYXlsb2FkID0gXCJcIlwie1xuICBcInJvbGVcIjogXCJzZXJ2aWNlX3JvbGVcIixcbiAgXCJpc3NcIjogXCJzdXBhYmFzZVwiLFxuICBcImV4cFwiOiAke3RpbWVzdGFtcHM6MjAzMC0wMS0wMVQwMDowMDowMFp9XG59XG5cIlwiXCJcblxuW1tjb25maWcuZG9tYWluc11dXG5zZXJ2aWNlTmFtZSA9IFwia29uZ1wiXG5wb3J0ID0gOF8wMDBcbmhvc3QgPSBcIiR7bWFpbl9kb21haW59XCJcblxuW2NvbmZpZ11cbmVudiA9IFtcbicjIyMjIyMjIyMjIyMnLFxuJyMgVG8gZ2V0IGEgcHJvcGVyIHdvcmtpbmcgY29uZmlndXJhdGlvbiB5b3Ugc2hvdWxkIGF0IGxlYXN0IHRha2UgYSBsb29rIGF0OicsXG4nIyAtIFNVUEFCQVNFX1BVQkxJQ19VUkwsIEFQSV9FWFRFUk5BTF9VUkwgc2hvdWxkIHBvaW50IHRvIHlvdXIgc3VwYWJhc2UgZG9tYWluIHdpdGggY29ycmVjdCBodHRwL2h0dHBzIHNjaGVtZScsXG4nIyAtIFNNVFBfKiBhcmUgcmVxdWlyZWQgZm9yIGF1dGggbWFpbCBzZW5kaW5nJyxcbicjIC0gQURESVRJT05BTF9SRURJUkVDVF9VUkxTLCBTSVRFX1VSTCBzaG91bGQgcG9pbnQgdG8gYXBwbGljYXRpb24gdXNpbmcgc3VwYWJhc2UgZm9yIGF1dGhlbnRpY2F0aW9uJyxcbicjICAgVGhleSBhcmUgdXNlZCBmb3IgcmVkaXJlY3RpbmcgYWZ0ZXIgbG9naW4vc2lnbnVwIGFuZCBnb3RydWUgd2lsbCBjaGVjayB0aGVtIGJlZm9yZSBzZW5kaW5nIGVtYWlscycsXG4nIyAtIFBPU1RHUkVTX1BPUlQsIFBPT0xFUl9QUk9YWV9QT1JUX1RSQU5TQUNUSU9OIHNob3VsZCBiZSBjaGFuZ2VkIGlmIHlvdSBhcmUgYWxyZWFkeSBydW5uaW5nIG90aGVyIGluc3RhbmNlcyBvZiBzdXBhYmFzZScsXG4nIyMjIyMjIyMjIyMjJyxcbicnLFxuJyMjIyMjIyMjIyMjIycsXG4nIyBTZWNyZXRzJyxcbicjIFlPVSBNVVNUIENIQU5HRSBUSEVTRSBCRUZPUkUgR09JTkcgSU5UTyBQUk9EVUNUSU9OJyxcbicjIGh0dHBzOi8vc3VwYWJhc2UuY29tL2RvY3MvZ3VpZGVzL3NlbGYtaG9zdGluZy9kb2NrZXIjc2VjdXJpbmcteW91ci1zZXJ2aWNlcycsXG4nIyBJbiB0aGlzIHZlcnNpb24gb2YgdGhlIHRlbXBsYXRlIHRoZXkgYXJlIGdlbmVyYXRlZCByYW5kb21seSBieSBkb2twbG95IGhlbHBlcnMnLFxuJyMgc28geW91IGRvIG5vdCBuZWVkIHRvIGNoYW5nZSB0aGVtIG1hbnVhbGx5JyxcbicjIEdvIHRvIGh0dHBzOi8vc3VwYWJhc2UuY29tL2RvY3MvZ3VpZGVzL3NlbGYtaG9zdGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbicsXG4nIyMjIyMjIyMjIyMjJyxcbicnLFxuJ1NVUEFCQVNFX0hPU1Q9JHttYWluX2RvbWFpbn0nLFxuJ1BPU1RHUkVTX1BBU1NXT1JEPSR7cG9zdGdyZXNfcGFzc3dvcmR9JyxcbidKV1RfU0VDUkVUPSR7and0X3NlY3JldH0nLFxuJ0FOT05fS0VZPSR7and0Omp3dF9zZWNyZXQ6YW5vbl9rZXlfcGF5bG9hZH0nLFxuJ1NFUlZJQ0VfUk9MRV9LRVk9JHtqd3Q6and0X3NlY3JldDpzZXJ2aWNlX3JvbGVfa2V5X3BheWxvYWR9JyxcbidEQVNIQk9BUkRfVVNFUk5BTUU9c3VwYWJhc2UnLFxuJ0RBU0hCT0FSRF9QQVNTV09SRD0ke2Rhc2hib2FyZF9wYXNzd29yZH0nLFxuJ1NFQ1JFVF9LRVlfQkFTRT0ke3NlY3JldF9rZXlfYmFzZX0nLFxuJ1ZBVUxUX0VOQ19LRVk9JHt2YXVsdF9lbmNfa2V5fScsXG4nUEdfTUVUQV9DUllQVE9fS0VZPSR7cGdfbWV0YV9jcnlwdG9fa2V5fScsXG4nTE9HRkxBUkVfUFVCTElDX0FDQ0VTU19UT0tFTj0ke2xvZ2ZsYXJlX3B1YmxpY19hY2Nlc3NfdG9rZW59JyxcbidMT0dGTEFSRV9QUklWQVRFX0FDQ0VTU19UT0tFTj0ke2xvZ2ZsYXJlX3ByaXZhdGVfYWNjZXNzX3Rva2VufScsXG4nJyxcbicnLFxuJyMjIyMjIyMjIyMjIycsXG4nIyBEYXRhYmFzZSAtIFlvdSBjYW4gY2hhbmdlIHRoZXNlIHRvIGFueSBQb3N0Z3JlU1FMIGRhdGFiYXNlIHRoYXQgaGFzIGxvZ2ljYWwgcmVwbGljYXRpb24gZW5hYmxlZC4nLFxuJyMjIyMjIyMjIyMjIycsXG4nJyxcbidQT1NUR1JFU19IT1NUPWRiJyxcbidQT1NUR1JFU19EQj1wb3N0Z3JlcycsXG4nUE9TVEdSRVNfUE9SVD01NDMyJyxcbidQT1NUR1JFU19VU0VSPXBvc3RncmVzJyxcbicnLFxuJycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIFN1cGF2aXNvciAtLSBEYXRhYmFzZSBwb29sZXInLFxuJyMjIyMjIyMjIyMjIycsXG4nUE9PTEVSX1BST1hZX1BPUlRfVFJBTlNBQ1RJT049NjU0MycsXG4nUE9PTEVSX0RFRkFVTFRfUE9PTF9TSVpFPTIwJyxcbidQT09MRVJfTUFYX0NMSUVOVF9DT05OPTEwMCcsXG4nUE9PTEVSX1RFTkFOVF9JRD0ke3Bvb2xlcl90ZW5hbnRfaWR9JyxcbidQT09MRVJfREJfUE9PTF9TSVpFPTUnLFxuJycsXG4nJyxcbicjIyMjIyMjIyMjIyMnLFxuJyMgQVBJIFByb3h5IC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIEtvbmcgUmV2ZXJzZSBwcm94eS4nLFxuJyMgRm9sbG93aW5nIHBvcnRzIHNob3VsZCBub3QgYmUgY2hhbmdlZCBmb3IgYSBkb2twbG95IGNvbmZpZyB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLicsXG4nIyMjIyMjIyMjIyMjJyxcbicnLFxuJ0tPTkdfSFRUUF9QT1JUPTgwMDAnLFxuJ0tPTkdfSFRUUFNfUE9SVD04NDQzJyxcbicnLFxuJycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIEFQSSAtIENvbmZpZ3VyYXRpb24gZm9yIFBvc3RnUkVTVC4nLFxuJyMjIyMjIyMjIyMjIycsXG4nJyxcbidQR1JTVF9EQl9TQ0hFTUFTPXB1YmxpYyxzdG9yYWdlLGdyYXBocWxfcHVibGljJyxcbidQR1JTVF9EQl9NQVhfUk9XUz0xMDAwJyxcbidQR1JTVF9EQl9FWFRSQV9TRUFSQ0hfUEFUSD1wdWJsaWMnLFxuJycsXG4nJyxcbicjIyMjIyMjIyMjIyMnLFxuJyMgQXV0aCAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBHb1RydWUgYXV0aGVudGljYXRpb24gc2VydmVyLicsXG4nIyMjIyMjIyMjIyMjJyxcbicnLFxuJyMjIEdlbmVyYWwnLFxuJ1NJVEVfVVJMPWh0dHA6Ly9sb2NhbGhvc3Q6MzAwMCcsXG4nQURESVRJT05BTF9SRURJUkVDVF9VUkxTPWh0dHBzOi8vJHttYWluX2RvbWFpbn0vKixodHRwOi8vbG9jYWxob3N0OjMwMDAvKicsXG4nSldUX0VYUElSWT0zNjAwJyxcbidESVNBQkxFX1NJR05VUD1mYWxzZScsXG4nQVBJX0VYVEVSTkFMX1VSTD1odHRwczovLyR7bWFpbl9kb21haW59JyxcbidKV1RfS0VZUz1bXScsXG4nJyxcbicjIyBNYWlsZXIgQ29uZmlnJyxcbidNQUlMRVJfVVJMUEFUSFNfQ09ORklSTUFUSU9OPVwiL2F1dGgvdjEvdmVyaWZ5XCInLFxuJ01BSUxFUl9VUkxQQVRIU19JTlZJVEU9XCIvYXV0aC92MS92ZXJpZnlcIicsXG4nTUFJTEVSX1VSTFBBVEhTX1JFQ09WRVJZPVwiL2F1dGgvdjEvdmVyaWZ5XCInLFxuJ01BSUxFUl9VUkxQQVRIU19FTUFJTF9DSEFOR0U9XCIvYXV0aC92MS92ZXJpZnlcIicsXG4nJyxcbicjIyBFbWFpbCBhdXRoJyxcbidFTkFCTEVfRU1BSUxfU0lHTlVQPXRydWUnLFxuJ0VOQUJMRV9FTUFJTF9BVVRPQ09ORklSTT1mYWxzZScsXG4nU01UUF9BRE1JTl9FTUFJTD1hZG1pbkBleGFtcGxlLmNvbScsXG4nU01UUF9IT1NUPXN1cGFiYXNlLW1haWwnLFxuJ1NNVFBfUE9SVD0yNTAwJyxcbidTTVRQX1VTRVI9ZmFrZV9tYWlsX3VzZXInLFxuJ1NNVFBfUEFTUz1mYWtlX21haWxfcGFzc3dvcmQnLFxuJ1NNVFBfU0VOREVSX05BTUU9ZmFrZV9zZW5kZXInLFxuJ0VOQUJMRV9BTk9OWU1PVVNfVVNFUlM9ZmFsc2UnLFxuJycsXG4nIyMgUGhvbmUgYXV0aCcsXG4nRU5BQkxFX1BIT05FX1NJR05VUD10cnVlJyxcbidFTkFCTEVfUEhPTkVfQVVUT0NPTkZJUk09dHJ1ZScsXG4nJyxcbicnLFxuJyMjIyMjIyMjIyMjIycsXG4nIyBTdHVkaW8gLSBDb25maWd1cmF0aW9uIGZvciB0aGUgRGFzaGJvYXJkJyxcbicjIyMjIyMjIyMjIyMnLFxuJycsXG4nU1RVRElPX0RFRkFVTFRfT1JHQU5JWkFUSU9OPURlZmF1bHQgT3JnYW5pemF0aW9uJyxcbidTVFVESU9fREVGQVVMVF9QUk9KRUNUPURlZmF1bHQgUHJvamVjdCcsXG4nJyxcbidTVVBBQkFTRV9QVUJMSUNfVVJMPWh0dHBzOi8vJHttYWluX2RvbWFpbn0nLFxuJycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIFN0b3JhZ2UgLSBsb2NhbCBmaWxlIGJhY2tlbmQgKGRlZmF1bHQpLiBFZGl0IGRvY2tlci1jb21wb3NlLnltbCBzdG9yYWdlIGVudiBmb3IgUzMvTWluSU8uJyxcbicjIyMjIyMjIyMjIyMnLFxuJycsXG4nR0xPQkFMX1MzX0JVQ0tFVD1zdHViJyxcbidSRUdJT049c3R1YicsXG4nU1RPUkFHRV9URU5BTlRfSUQ9c3R1YicsXG4nUzNfUFJPVE9DT0xfQUNDRVNTX0tFWV9JRD0ke3MzX3Byb3RvY29sX2FjY2Vzc19rZXlfaWR9JyxcbidTM19QUk9UT0NPTF9BQ0NFU1NfS0VZX1NFQ1JFVD0ke3MzX3Byb3RvY29sX2FjY2Vzc19rZXlfc2VjcmV0fScsXG4nJyxcbidJTUdQUk9YWV9BVVRPX1dFQlA9dHJ1ZScsXG4nJyxcbicjIEFkZCB5b3VyIE9wZW5BSSBBUEkga2V5IHRvIGVuYWJsZSBTUUwgRWRpdG9yIEFzc2lzdGFudCcsXG4nT1BFTkFJX0FQSV9LRVk9JyxcbicnLFxuJycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIEZ1bmN0aW9ucyAtIENvbmZpZ3VyYXRpb24gZm9yIEZ1bmN0aW9ucycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIE5PVEU6IFZFUklGWV9KV1QgYXBwbGllcyB0byBhbGwgZnVuY3Rpb25zLiBQZXItZnVuY3Rpb24gVkVSSUZZX0pXVCBpcyBub3Qgc3VwcG9ydGVkIHlldC4nLFxuJ0ZVTkNUSU9OU19WRVJJRllfSldUPWZhbHNlJyxcbicnLFxuJycsXG4nIyMjIyMjIyMjIyMjJyxcbicjIExvZ3MgLSBDb25maWd1cmF0aW9uIGZvciBMb2dmbGFyZScsXG4nIyMjIyMjIyMjIyMjJyxcbicnLFxuJyMgRG9ja2VyIHNvY2tldCBsb2NhdGlvbiAtIHRoaXMgdmFsdWUgd2lsbCBkaWZmZXIgZGVwZW5kaW5nIG9uIHlvdXIgT1MnLFxuJ0RPQ0tFUl9TT0NLRVRfTE9DQVRJT049L3Zhci9ydW4vZG9ja2VyLnNvY2snLFxuJycsXG4nIyBHb29nbGUgQ2xvdWQgUHJvamVjdCBkZXRhaWxzJyxcbidHT09HTEVfUFJPSkVDVF9JRD1HT09HTEVfUFJPSkVDVF9JRCcsXG4nR09PR0xFX1BST0pFQ1RfTlVNQkVSPUdPT0dMRV9QUk9KRUNUX05VTUJFUiddXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvYXBpL2tvbmctZW50cnlwb2ludC5zaFwiXG5jb250ZW50ID0gXCJcIlwiIyEvYmluL2Jhc2hcbiMgQ3VzdG9tIGVudHJ5cG9pbnQgZm9yIEtvbmcgdGhhdCBidWlsZHMgTHVhIGV4cHJlc3Npb25zIGZvciByZXF1ZXN0LXRyYW5zZm9ybWVyXG4jIGFuZCBwZXJmb3JtcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzdWJzdGl0dXRpb24gaW4gdGhlIGRlY2xhcmF0aXZlIGNvbmZpZy5cblxuaWYgWyAtbiBcIiRTVVBBQkFTRV9TRUNSRVRfS0VZXCIgXSAmJiBbIC1uIFwiJFNVUEFCQVNFX1BVQkxJU0hBQkxFX0tFWVwiIF07IHRoZW5cbiAgICBleHBvcnQgTFVBX0FVVEhfRVhQUj1cIlxcJCgoaGVhZGVycy5hdXRob3JpemF0aW9uIH49IG5pbCBhbmQgaGVhZGVycy5hdXRob3JpemF0aW9uOnN1YigxLCAxMCkgfj0gJ0JlYXJlciBzYl8nIGFuZCBoZWFkZXJzLmF1dGhvcml6YXRpb24pIG9yIChoZWFkZXJzLmFwaWtleSA9PSAnJFNVUEFCQVNFX1NFQ1JFVF9LRVknIGFuZCAnQmVhcmVyICRTRVJWSUNFX1JPTEVfS0VZX0FTWU1NRVRSSUMnKSBvciAoaGVhZGVycy5hcGlrZXkgPT0gJyRTVVBBQkFTRV9QVUJMSVNIQUJMRV9LRVknIGFuZCAnQmVhcmVyICRBTk9OX0tFWV9BU1lNTUVUUklDJykgb3IgaGVhZGVycy5hcGlrZXkpXCJcbiAgICBleHBvcnQgTFVBX1JUX1dTX0VYUFI9XCJcXCQoKHF1ZXJ5X3BhcmFtcy5hcGlrZXkgPT0gJyRTVVBBQkFTRV9TRUNSRVRfS0VZJyBhbmQgJyRTRVJWSUNFX1JPTEVfS0VZX0FTWU1NRVRSSUMnKSBvciAocXVlcnlfcGFyYW1zLmFwaWtleSA9PSAnJFNVUEFCQVNFX1BVQkxJU0hBQkxFX0tFWScgYW5kICckQU5PTl9LRVlfQVNZTU1FVFJJQycpIG9yIHF1ZXJ5X3BhcmFtcy5hcGlrZXkpXCJcbmVsc2VcbiAgICBleHBvcnQgTFVBX0FVVEhfRVhQUj1cIlxcJCgoaGVhZGVycy5hdXRob3JpemF0aW9uIH49IG5pbCBhbmQgaGVhZGVycy5hdXRob3JpemF0aW9uOnN1YigxLCAxMCkgfj0gJ0JlYXJlciBzYl8nIGFuZCBoZWFkZXJzLmF1dGhvcml6YXRpb24pIG9yIGhlYWRlcnMuYXBpa2V5KVwiXG4gICAgZXhwb3J0IExVQV9SVF9XU19FWFBSPVwiXFwkKHF1ZXJ5X3BhcmFtcy5hcGlrZXkpXCJcbmZpXG5cbmF3ayAne1xuICByZXN1bHQgPSBcIlwiXG4gIHJlc3QgPSAkMFxuICB3aGlsZSAobWF0Y2gocmVzdCwgL1xcJFtBLVphLXpfXVtBLVphLXpfMC05XSovKSkge1xuICAgIHZhcm5hbWUgPSBzdWJzdHIocmVzdCwgUlNUQVJUICsgMSwgUkxFTkdUSCAtIDEpXG4gICAgaWYgKHZhcm5hbWUgaW4gRU5WSVJPTikge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0IHN1YnN0cihyZXN0LCAxLCBSU1RBUlQgLSAxKSBFTlZJUk9OW3Zhcm5hbWVdXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdCBzdWJzdHIocmVzdCwgMSwgUlNUQVJUICsgUkxFTkdUSCAtIDEpXG4gICAgfVxuICAgIHJlc3QgPSBzdWJzdHIocmVzdCwgUlNUQVJUICsgUkxFTkdUSClcbiAgfVxuICBwcmludCByZXN1bHQgcmVzdFxufScgL2hvbWUva29uZy90ZW1wLnltbCA+IFwiJEtPTkdfREVDTEFSQVRJVkVfQ09ORklHXCJcblxuc2VkIC1pICcvXltbOnNwYWNlOl1dKi0ga2V5OltbOnNwYWNlOl1dKiQvZCcgXCIkS09OR19ERUNMQVJBVElWRV9DT05GSUdcIlxuXG5leGVjIC9lbnRyeXBvaW50LnNoIGtvbmcgZG9ja2VyLXN0YXJ0XG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvdm9sdW1lcy9hcGkva29uZy55bWxcIlxuY29udGVudCA9IFwiXCJcIl9mb3JtYXRfdmVyc2lvbjogJzIuMSdcbl90cmFuc2Zvcm06IHRydWVcblxuIyMjXG4jIyMgQ29uc3VtZXJzIC8gVXNlcnNcbiMjI1xuY29uc3VtZXJzOlxuICAtIHVzZXJuYW1lOiBEQVNIQk9BUkRcbiAgLSB1c2VybmFtZTogYW5vblxuICAgIGtleWF1dGhfY3JlZGVudGlhbHM6XG4gICAgICAtIGtleTogJFNVUEFCQVNFX0FOT05fS0VZXG4gICAgICAtIGtleTogJFNVUEFCQVNFX1BVQkxJU0hBQkxFX0tFWVxuICAtIHVzZXJuYW1lOiBzZXJ2aWNlX3JvbGVcbiAgICBrZXlhdXRoX2NyZWRlbnRpYWxzOlxuICAgICAgLSBrZXk6ICRTVVBBQkFTRV9TRVJWSUNFX0tFWVxuICAgICAgLSBrZXk6ICRTVVBBQkFTRV9TRUNSRVRfS0VZXG5cbiMjI1xuIyMjIEFjY2VzcyBDb250cm9sIExpc3RcbiMjI1xuYWNsczpcbiAgLSBjb25zdW1lcjogYW5vblxuICAgIGdyb3VwOiBhbm9uXG4gIC0gY29uc3VtZXI6IHNlcnZpY2Vfcm9sZVxuICAgIGdyb3VwOiBhZG1pblxuXG4jIyNcbiMjIyBEYXNoYm9hcmQgY3JlZGVudGlhbHNcbiMjI1xuYmFzaWNhdXRoX2NyZWRlbnRpYWxzOlxuICAtIGNvbnN1bWVyOiBEQVNIQk9BUkRcbiAgICB1c2VybmFtZTogJyREQVNIQk9BUkRfVVNFUk5BTUUnXG4gICAgcGFzc3dvcmQ6ICckREFTSEJPQVJEX1BBU1NXT1JEJ1xuXG4jIyNcbiMjIyBBUEkgUm91dGVzXG4jIyNcbnNlcnZpY2VzOlxuICAjIyBPcGVuIEF1dGggcm91dGVzXG4gIC0gbmFtZTogYXV0aC12MS1vcGVuXG4gICAgdXJsOiBodHRwOi8vYXV0aDo5OTk5L3ZlcmlmeVxuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogYXV0aC12MS1vcGVuXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvYXV0aC92MS92ZXJpZnlcbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gIC0gbmFtZTogYXV0aC12MS1vcGVuLWNhbGxiYWNrXG4gICAgdXJsOiBodHRwOi8vYXV0aDo5OTk5L2NhbGxiYWNrXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBhdXRoLXYxLW9wZW4tY2FsbGJhY2tcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9hdXRoL3YxL2NhbGxiYWNrXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAtIG5hbWU6IGF1dGgtdjEtb3Blbi1hdXRob3JpemVcbiAgICB1cmw6IGh0dHA6Ly9hdXRoOjk5OTkvYXV0aG9yaXplXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBhdXRoLXYxLW9wZW4tYXV0aG9yaXplXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvYXV0aC92MS9hdXRob3JpemVcbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gIC0gbmFtZTogYXV0aC12MS1vcGVuLWp3a3NcbiAgICB1cmw6IGh0dHA6Ly9hdXRoOjk5OTkvLndlbGwta25vd24vandrcy5qc29uXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBhdXRoLXYxLW9wZW4tandrc1xuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL2F1dGgvdjEvLndlbGwta25vd24vandrcy5qc29uXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAtIG5hbWU6IGF1dGgtdjEtb3Blbi1zc28tYWNzXG4gICAgdXJsOiBodHRwOi8vYXV0aDo5OTk5L3Nzby9zYW1sL2Fjc1xuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogYXV0aC12MS1vcGVuLXNzby1hY3NcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9zc28vc2FtbC9hY3NcbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gIC0gbmFtZTogYXV0aC12MS1vcGVuLXNzby1tZXRhZGF0YVxuICAgIHVybDogaHR0cDovL2F1dGg6OTk5OS9zc28vc2FtbC9tZXRhZGF0YVxuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogYXV0aC12MS1vcGVuLXNzby1tZXRhZGF0YVxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL3Nzby9zYW1sL21ldGFkYXRhXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuXG4gICMjIFNlY3VyZSBBdXRoIHJvdXRlc1xuICAtIG5hbWU6IGF1dGgtdjFcbiAgICBfY29tbWVudDogJ0dvVHJ1ZTogL2F1dGgvdjEvKiAtPiBodHRwOi8vYXV0aDo5OTk5LyonXG4gICAgdXJsOiBodHRwOi8vYXV0aDo5OTk5L1xuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogYXV0aC12MS1hbGxcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9hdXRoL3YxL1xuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcbiAgICAgIC0gbmFtZToga2V5LWF1dGhcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfY3JlZGVudGlhbHM6IGZhbHNlXG4gICAgICAtIG5hbWU6IHJlcXVlc3QtdHJhbnNmb3JtZXJcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGFkZDpcbiAgICAgICAgICAgIGhlYWRlcnM6XG4gICAgICAgICAgICAgIC0gXCJBdXRob3JpemF0aW9uOiAkTFVBX0FVVEhfRVhQUlwiXG4gICAgICAgICAgcmVwbGFjZTpcbiAgICAgICAgICAgIGhlYWRlcnM6XG4gICAgICAgICAgICAgIC0gXCJBdXRob3JpemF0aW9uOiAkTFVBX0FVVEhfRVhQUlwiXG4gICAgICAtIG5hbWU6IGFjbFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9ncm91cHNfaGVhZGVyOiB0cnVlXG4gICAgICAgICAgYWxsb3c6XG4gICAgICAgICAgICAtIGFkbWluXG4gICAgICAgICAgICAtIGFub25cblxuICAjIyBTZWN1cmUgUkVTVCByb3V0ZXNcbiAgLSBuYW1lOiByZXN0LXYxXG4gICAgX2NvbW1lbnQ6ICdQb3N0Z1JFU1Q6IC9yZXN0L3YxLyogLT4gaHR0cDovL3Jlc3Q6MzAwMC8qJ1xuICAgIHVybDogaHR0cDovL3Jlc3Q6MzAwMC9cbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IHJlc3QtdjEtYWxsXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvcmVzdC92MS9cbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gICAgICAtIG5hbWU6IGtleS1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiBmYWxzZVxuICAgICAgLSBuYW1lOiByZXF1ZXN0LXRyYW5zZm9ybWVyXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBhZGQ6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQXV0aG9yaXphdGlvbjogJExVQV9BVVRIX0VYUFJcIlxuICAgICAgICAgIHJlcGxhY2U6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQXV0aG9yaXphdGlvbjogJExVQV9BVVRIX0VYUFJcIlxuICAgICAgLSBuYW1lOiBhY2xcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfZ3JvdXBzX2hlYWRlcjogdHJ1ZVxuICAgICAgICAgIGFsbG93OlxuICAgICAgICAgICAgLSBhZG1pblxuICAgICAgICAgICAgLSBhbm9uXG5cbiAgIyMgU2VjdXJlIEdyYXBoUUwgcm91dGVzXG4gIC0gbmFtZTogZ3JhcGhxbC12MVxuICAgIF9jb21tZW50OiAnUG9zdGdSRVNUOiAvZ3JhcGhxbC92MS8qIC0+IGh0dHA6Ly9yZXN0OjMwMDAvcnBjL2dyYXBocWwnXG4gICAgdXJsOiBodHRwOi8vcmVzdDozMDAwL3JwYy9ncmFwaHFsXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBncmFwaHFsLXYxLWFsbFxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL2dyYXBocWwvdjFcbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gICAgICAtIG5hbWU6IGtleS1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiB0cnVlXG4gICAgICAtIG5hbWU6IHJlcXVlc3QtdHJhbnNmb3JtZXJcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGFkZDpcbiAgICAgICAgICAgIGhlYWRlcnM6XG4gICAgICAgICAgICAgIC0gXCJDb250ZW50LVByb2ZpbGU6IGdyYXBocWxfcHVibGljXCJcbiAgICAgICAgICAgICAgLSBcIkF1dGhvcml6YXRpb246ICRMVUFfQVVUSF9FWFBSXCJcbiAgICAgICAgICByZXBsYWNlOlxuICAgICAgICAgICAgaGVhZGVyczpcbiAgICAgICAgICAgICAgLSBcIkF1dGhvcml6YXRpb246ICRMVUFfQVVUSF9FWFBSXCJcbiAgICAgIC0gbmFtZTogYWNsXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2dyb3Vwc19oZWFkZXI6IHRydWVcbiAgICAgICAgICBhbGxvdzpcbiAgICAgICAgICAgIC0gYWRtaW5cbiAgICAgICAgICAgIC0gYW5vblxuXG4gICMjIFNlY3VyZSBSZWFsdGltZSByb3V0ZXNcbiAgLSBuYW1lOiByZWFsdGltZS12MS13c1xuICAgIF9jb21tZW50OiAnUmVhbHRpbWU6IC9yZWFsdGltZS92MS8qIC0+IHdzOi8vcmVhbHRpbWU6NDAwMC9zb2NrZXQvKidcbiAgICB1cmw6IGh0dHA6Ly9yZWFsdGltZTo0MDAwL3NvY2tldFxuICAgIHByb3RvY29sOiB3c1xuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogcmVhbHRpbWUtdjEtd3NcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9yZWFsdGltZS92MS9cbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gICAgICAtIG5hbWU6IGtleS1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiBmYWxzZVxuICAgICAgLSBuYW1lOiByZXF1ZXN0LXRyYW5zZm9ybWVyXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBhZGQ6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwieC1hcGkta2V5OiRMVUFfUlRfV1NfRVhQUlwiXG4gICAgICAgICAgcmVwbGFjZTpcbiAgICAgICAgICAgIHF1ZXJ5c3RyaW5nOlxuICAgICAgICAgICAgICAtIFwiYXBpa2V5OiRMVUFfUlRfV1NfRVhQUlwiXG4gICAgICAtIG5hbWU6IGFjbFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9ncm91cHNfaGVhZGVyOiB0cnVlXG4gICAgICAgICAgYWxsb3c6XG4gICAgICAgICAgICAtIGFkbWluXG4gICAgICAgICAgICAtIGFub25cbiAgLSBuYW1lOiByZWFsdGltZS12MS1yZXN0XG4gICAgX2NvbW1lbnQ6ICdSZWFsdGltZTogL3JlYWx0aW1lL3YxL2FwaS8qIC0+IGh0dHA6Ly9yZWFsdGltZTo0MDAwL2FwaS8qJ1xuICAgIHVybDogaHR0cDovL3JlYWx0aW1lOjQwMDAvYXBpXG4gICAgcHJvdG9jb2w6IGh0dHBcbiAgICByb3V0ZXM6XG4gICAgICAtIG5hbWU6IHJlYWx0aW1lLXYxLXJlc3RcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9yZWFsdGltZS92MS9hcGlcbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG4gICAgICAtIG5hbWU6IGtleS1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiBmYWxzZVxuICAgICAgLSBuYW1lOiByZXF1ZXN0LXRyYW5zZm9ybWVyXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBhZGQ6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQXV0aG9yaXphdGlvbjogJExVQV9BVVRIX0VYUFJcIlxuICAgICAgICAgIHJlcGxhY2U6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQXV0aG9yaXphdGlvbjogJExVQV9BVVRIX0VYUFJcIlxuICAgICAgLSBuYW1lOiBhY2xcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfZ3JvdXBzX2hlYWRlcjogdHJ1ZVxuICAgICAgICAgIGFsbG93OlxuICAgICAgICAgICAgLSBhZG1pblxuICAgICAgICAgICAgLSBhbm9uXG5cbiAgIyMgU3RvcmFnZSByb3V0ZXNcbiAgLSBuYW1lOiBzdG9yYWdlLXYxXG4gICAgX2NvbW1lbnQ6ICdTdG9yYWdlOiAvc3RvcmFnZS92MS8qIC0+IGh0dHA6Ly9zdG9yYWdlOjUwMDAvKidcbiAgICB1cmw6IGh0dHA6Ly9zdG9yYWdlOjUwMDAvXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBzdG9yYWdlLXYxLWFsbFxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL3N0b3JhZ2UvdjEvXG4gICAgcGx1Z2luczpcbiAgICAgIC0gbmFtZTogY29yc1xuICAgICAgLSBuYW1lOiByZXF1ZXN0LXRyYW5zZm9ybWVyXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBhZGQ6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQXV0aG9yaXphdGlvbjogJExVQV9BVVRIX0VYUFJcIlxuICAgICAgICAgIHJlcGxhY2U6XG4gICAgICAgICAgICBoZWFkZXJzOlxuICAgICAgICAgICAgICAtIFwiQXV0aG9yaXphdGlvbjogJExVQV9BVVRIX0VYUFJcIlxuICAgICAgLSBuYW1lOiBwb3N0LWZ1bmN0aW9uXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBhY2Nlc3M6XG4gICAgICAgICAgICAtIHxcbiAgICAgICAgICAgICAgbG9jYWwgYXV0aCA9IGtvbmcucmVxdWVzdC5nZXRfaGVhZGVyKFwiYXV0aG9yaXphdGlvblwiKVxuICAgICAgICAgICAgICBpZiBhdXRoID09IG5pbCBvciBhdXRoID09IFwiXCIgb3IgYXV0aDpmaW5kKFwiXiVzKiRcIikgdGhlblxuICAgICAgICAgICAgICAgIGtvbmcuc2VydmljZS5yZXF1ZXN0LmNsZWFyX2hlYWRlcihcImF1dGhvcml6YXRpb25cIilcbiAgICAgICAgICAgICAgZW5kXG5cbiAgIyMgRWRnZSBGdW5jdGlvbnMgcm91dGVzXG4gIC0gbmFtZTogZnVuY3Rpb25zLXYxXG4gICAgX2NvbW1lbnQ6ICdFZGdlIEZ1bmN0aW9uczogL2Z1bmN0aW9ucy92MS8qIC0+IGh0dHA6Ly9mdW5jdGlvbnM6OTAwMC8qJ1xuICAgIHVybDogaHR0cDovL2Z1bmN0aW9uczo5MDAwL1xuICAgIHJlYWRfdGltZW91dDogMTUwMDAwXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBmdW5jdGlvbnMtdjEtYWxsXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvZnVuY3Rpb25zL3YxL1xuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcblxuICAjIyBPQXV0aCAyLjAgQXV0aG9yaXphdGlvbiBTZXJ2ZXIgTWV0YWRhdGFcbiAgLSBuYW1lOiB3ZWxsLWtub3duLW9hdXRoXG4gICAgdXJsOiBodHRwOi8vYXV0aDo5OTk5Ly53ZWxsLWtub3duL29hdXRoLWF1dGhvcml6YXRpb24tc2VydmVyXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiB3ZWxsLWtub3duLW9hdXRoXG4gICAgICAgIHN0cmlwX3BhdGg6IHRydWVcbiAgICAgICAgcGF0aHM6XG4gICAgICAgICAgLSAvLndlbGwta25vd24vb2F1dGgtYXV0aG9yaXphdGlvbi1zZXJ2ZXJcbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiBjb3JzXG5cbiAgIyMgU2VjdXJlIERhdGFiYXNlIHJvdXRlc1xuICAtIG5hbWU6IG1ldGFcbiAgICBfY29tbWVudDogJ3BnLW1ldGE6IC9wZy8qIC0+IGh0dHA6Ly9wZy1tZXRhOjgwODAvKidcbiAgICB1cmw6IGh0dHA6Ly9tZXRhOjgwODAvXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBtZXRhLWFsbFxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL3BnL1xuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGtleS1hdXRoXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBoaWRlX2NyZWRlbnRpYWxzOiBmYWxzZVxuICAgICAgLSBuYW1lOiBhY2xcbiAgICAgICAgY29uZmlnOlxuICAgICAgICAgIGhpZGVfZ3JvdXBzX2hlYWRlcjogdHJ1ZVxuICAgICAgICAgIGFsbG93OlxuICAgICAgICAgICAgLSBhZG1pblxuXG4gIC0gbmFtZTogbWNwLWJsb2NrZXJcbiAgICB1cmw6IGh0dHA6Ly9zdHVkaW86MzAwMC9hcGkvbWNwXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBtY3AtYmxvY2tlci1yb3V0ZVxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL2FwaS9tY3BcbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiByZXF1ZXN0LXRlcm1pbmF0aW9uXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBzdGF0dXNfY29kZTogNDAzXG4gICAgICAgICAgbWVzc2FnZTogXCJBY2Nlc3MgaXMgZm9yYmlkZGVuLlwiXG5cbiAgLSBuYW1lOiBtY3BcbiAgICB1cmw6IGh0dHA6Ly9zdHVkaW86MzAwMC9hcGkvbWNwXG4gICAgcm91dGVzOlxuICAgICAgLSBuYW1lOiBtY3BcbiAgICAgICAgc3RyaXBfcGF0aDogdHJ1ZVxuICAgICAgICBwYXRoczpcbiAgICAgICAgICAtIC9tY3BcbiAgICBwbHVnaW5zOlxuICAgICAgLSBuYW1lOiByZXF1ZXN0LXRlcm1pbmF0aW9uXG4gICAgICAgIGNvbmZpZzpcbiAgICAgICAgICBzdGF0dXNfY29kZTogNDAzXG4gICAgICAgICAgbWVzc2FnZTogXCJBY2Nlc3MgaXMgZm9yYmlkZGVuLlwiXG5cbiAgIyMgUHJvdGVjdGVkIERhc2hib2FyZCAtIGNhdGNoIGFsbCByZW1haW5pbmcgcm91dGVzXG4gIC0gbmFtZTogZGFzaGJvYXJkXG4gICAgX2NvbW1lbnQ6ICdTdHVkaW86IC8qIC0+IGh0dHA6Ly9zdHVkaW86MzAwMC8qJ1xuICAgIHVybDogaHR0cDovL3N0dWRpbzozMDAwL1xuICAgIHJvdXRlczpcbiAgICAgIC0gbmFtZTogZGFzaGJvYXJkLWFsbFxuICAgICAgICBzdHJpcF9wYXRoOiB0cnVlXG4gICAgICAgIHBhdGhzOlxuICAgICAgICAgIC0gL1xuICAgIHBsdWdpbnM6XG4gICAgICAtIG5hbWU6IGNvcnNcbiAgICAgIC0gbmFtZTogYmFzaWMtYXV0aFxuICAgICAgICBjb25maWc6XG4gICAgICAgICAgaGlkZV9jcmVkZW50aWFsczogdHJ1ZVxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvc25pcHBldHMvLmdpdGtlZXBcIlxuY29udGVudCA9IFwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvdm9sdW1lcy9kYi9pbml0L2RhdGEuc3FsXCJcbmNvbnRlbnQgPSBcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvZGIvX3N1cGFiYXNlLnNxbFwiXG5jb250ZW50ID0gXCJcIlwiXFxcXHNldCBwZ3VzZXIgYGVjaG8gXCIkUE9TVEdSRVNfVVNFUlwiYFxuXG5DUkVBVEUgREFUQUJBU0UgX3N1cGFiYXNlIFdJVEggT1dORVIgOnBndXNlcjtcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi92b2x1bWVzL2RiL2p3dC5zcWxcIlxuY29udGVudCA9IFwiXCJcIlxuXFxcXHNldCBqd3Rfc2VjcmV0IGBlY2hvIFwiJEpXVF9TRUNSRVRcImBcblxcXFxzZXQgand0X2V4cCBgZWNobyBcIiRKV1RfRVhQXCJgXG5cbkFMVEVSIERBVEFCQVNFIHBvc3RncmVzIFNFVCBcImFwcC5zZXR0aW5ncy5qd3Rfc2VjcmV0XCIgVE8gOidqd3Rfc2VjcmV0JztcbkFMVEVSIERBVEFCQVNFIHBvc3RncmVzIFNFVCBcImFwcC5zZXR0aW5ncy5qd3RfZXhwXCIgVE8gOidqd3RfZXhwJztcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi92b2x1bWVzL2RiL2xvZ3Muc3FsXCJcbmNvbnRlbnQgPSBcIlwiXCJcblxcXFxzZXQgcGd1c2VyIGBlY2hvIFwiJFBPU1RHUkVTX1VTRVJcImBcblxuXFxcXGMgX3N1cGFiYXNlXG5jcmVhdGUgc2NoZW1hIGlmIG5vdCBleGlzdHMgX2FuYWx5dGljcztcbmFsdGVyIHNjaGVtYSBfYW5hbHl0aWNzIG93bmVyIHRvIDpwZ3VzZXI7XG5cXFxcYyBwb3N0Z3Jlc1xuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvZGIvcG9vbGVyLnNxbFwiXG5jb250ZW50ID0gXCJcIlwiXG5cXFxcc2V0IHBndXNlciBgZWNobyBcIiRQT1NUR1JFU19VU0VSXCJgXG5cblxcXFxjIF9zdXBhYmFzZVxuY3JlYXRlIHNjaGVtYSBpZiBub3QgZXhpc3RzIF9zdXBhdmlzb3I7XG5hbHRlciBzY2hlbWEgX3N1cGF2aXNvciBvd25lciB0byA6cGd1c2VyO1xuXFxcXGMgcG9zdGdyZXNcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi92b2x1bWVzL2RiL3JlYWx0aW1lLnNxbFwiXG5jb250ZW50ID0gXCJcIlwiXG5cXFxcc2V0IHBndXNlciBgZWNobyBcIiRQT1NUR1JFU19VU0VSXCJgXG5cbmNyZWF0ZSBzY2hlbWEgaWYgbm90IGV4aXN0cyBfcmVhbHRpbWU7XG5hbHRlciBzY2hlbWEgX3JlYWx0aW1lIG93bmVyIHRvIDpwZ3VzZXI7XG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvdm9sdW1lcy9kYi9yb2xlcy5zcWxcIlxuY29udGVudCA9IFwiXCJcIlxuLS0gTk9URTogY2hhbmdlIHRvIHlvdXIgb3duIHBhc3N3b3JkcyBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHNcblxcXFxzZXQgcGdwYXNzIGBlY2hvIFwiJFBPU1RHUkVTX1BBU1NXT1JEXCJgXG5cbkFMVEVSIFVTRVIgYXV0aGVudGljYXRvciBXSVRIIFBBU1NXT1JEIDoncGdwYXNzJztcbkFMVEVSIFVTRVIgcGdib3VuY2VyIFdJVEggUEFTU1dPUkQgOidwZ3Bhc3MnO1xuQUxURVIgVVNFUiBzdXBhYmFzZV9hdXRoX2FkbWluIFdJVEggUEFTU1dPUkQgOidwZ3Bhc3MnO1xuQUxURVIgVVNFUiBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4gV0lUSCBQQVNTV09SRCA6J3BncGFzcyc7XG5BTFRFUiBVU0VSIHN1cGFiYXNlX3N0b3JhZ2VfYWRtaW4gV0lUSCBQQVNTV09SRCA6J3BncGFzcyc7XG5cIlwiXCJcblxuW1tjb25maWcubW91bnRzXV1cbmZpbGVQYXRoID0gXCIvdm9sdW1lcy9kYi93ZWJob29rcy5zcWxcIlxuY29udGVudCA9IFwiXCJcIlxuQkVHSU47XG4gIC0tIENyZWF0ZSBwZ19uZXQgZXh0ZW5zaW9uXG4gIENSRUFURSBFWFRFTlNJT04gSUYgTk9UIEVYSVNUUyBwZ19uZXQgU0NIRU1BIGV4dGVuc2lvbnM7XG4gIC0tIENyZWF0ZSBzdXBhYmFzZV9mdW5jdGlvbnMgc2NoZW1hXG4gIENSRUFURSBTQ0hFTUEgc3VwYWJhc2VfZnVuY3Rpb25zIEFVVEhPUklaQVRJT04gc3VwYWJhc2VfYWRtaW47XG4gIEdSQU5UIFVTQUdFIE9OIFNDSEVNQSBzdXBhYmFzZV9mdW5jdGlvbnMgVE8gcG9zdGdyZXMsIGFub24sIGF1dGhlbnRpY2F0ZWQsIHNlcnZpY2Vfcm9sZTtcbiAgQUxURVIgREVGQVVMVCBQUklWSUxFR0VTIElOIFNDSEVNQSBzdXBhYmFzZV9mdW5jdGlvbnMgR1JBTlQgQUxMIE9OIFRBQkxFUyBUTyBwb3N0Z3JlcywgYW5vbiwgYXV0aGVudGljYXRlZCwgc2VydmljZV9yb2xlO1xuICBBTFRFUiBERUZBVUxUIFBSSVZJTEVHRVMgSU4gU0NIRU1BIHN1cGFiYXNlX2Z1bmN0aW9ucyBHUkFOVCBBTEwgT04gRlVOQ1RJT05TIFRPIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG4gIEFMVEVSIERFRkFVTFQgUFJJVklMRUdFUyBJTiBTQ0hFTUEgc3VwYWJhc2VfZnVuY3Rpb25zIEdSQU5UIEFMTCBPTiBTRVFVRU5DRVMgVE8gcG9zdGdyZXMsIGFub24sIGF1dGhlbnRpY2F0ZWQsIHNlcnZpY2Vfcm9sZTtcbiAgLS0gc3VwYWJhc2VfZnVuY3Rpb25zLm1pZ3JhdGlvbnMgZGVmaW5pdGlvblxuICBDUkVBVEUgVEFCTEUgc3VwYWJhc2VfZnVuY3Rpb25zLm1pZ3JhdGlvbnMgKFxuICAgIHZlcnNpb24gdGV4dCBQUklNQVJZIEtFWSxcbiAgICBpbnNlcnRlZF9hdCB0aW1lc3RhbXB0eiBOT1QgTlVMTCBERUZBVUxUIE5PVygpXG4gICk7XG4gIC0tIEluaXRpYWwgc3VwYWJhc2VfZnVuY3Rpb25zIG1pZ3JhdGlvblxuICBJTlNFUlQgSU5UTyBzdXBhYmFzZV9mdW5jdGlvbnMubWlncmF0aW9ucyAodmVyc2lvbikgVkFMVUVTICgnaW5pdGlhbCcpO1xuICAtLSBzdXBhYmFzZV9mdW5jdGlvbnMuaG9va3MgZGVmaW5pdGlvblxuICBDUkVBVEUgVEFCTEUgc3VwYWJhc2VfZnVuY3Rpb25zLmhvb2tzIChcbiAgICBpZCBiaWdzZXJpYWwgUFJJTUFSWSBLRVksXG4gICAgaG9va190YWJsZV9pZCBpbnRlZ2VyIE5PVCBOVUxMLFxuICAgIGhvb2tfbmFtZSB0ZXh0IE5PVCBOVUxMLFxuICAgIGNyZWF0ZWRfYXQgdGltZXN0YW1wdHogTk9UIE5VTEwgREVGQVVMVCBOT1coKSxcbiAgICByZXF1ZXN0X2lkIGJpZ2ludFxuICApO1xuICBDUkVBVEUgSU5ERVggc3VwYWJhc2VfZnVuY3Rpb25zX2hvb2tzX3JlcXVlc3RfaWRfaWR4IE9OIHN1cGFiYXNlX2Z1bmN0aW9ucy5ob29rcyBVU0lORyBidHJlZSAocmVxdWVzdF9pZCk7XG4gIENSRUFURSBJTkRFWCBzdXBhYmFzZV9mdW5jdGlvbnNfaG9va3NfaF90YWJsZV9pZF9oX25hbWVfaWR4IE9OIHN1cGFiYXNlX2Z1bmN0aW9ucy5ob29rcyBVU0lORyBidHJlZSAoaG9va190YWJsZV9pZCwgaG9va19uYW1lKTtcbiAgQ09NTUVOVCBPTiBUQUJMRSBzdXBhYmFzZV9mdW5jdGlvbnMuaG9va3MgSVMgJ1N1cGFiYXNlIEZ1bmN0aW9ucyBIb29rczogQXVkaXQgdHJhaWwgZm9yIHRyaWdnZXJlZCBob29rcy4nO1xuICBDUkVBVEUgRlVOQ1RJT04gc3VwYWJhc2VfZnVuY3Rpb25zLmh0dHBfcmVxdWVzdCgpXG4gICAgUkVUVVJOUyB0cmlnZ2VyXG4gICAgTEFOR1VBR0UgcGxwZ3NxbFxuICAgIEFTICRmdW5jdGlvbiRcbiAgICBERUNMQVJFXG4gICAgICByZXF1ZXN0X2lkIGJpZ2ludDtcbiAgICAgIHBheWxvYWQganNvbmI7XG4gICAgICB1cmwgdGV4dCA6PSBUR19BUkdWWzBdOjp0ZXh0O1xuICAgICAgbWV0aG9kIHRleHQgOj0gVEdfQVJHVlsxXTo6dGV4dDtcbiAgICAgIGhlYWRlcnMganNvbmIgREVGQVVMVCAne30nOjpqc29uYjtcbiAgICAgIHBhcmFtcyBqc29uYiBERUZBVUxUICd7fSc6Ompzb25iO1xuICAgICAgdGltZW91dF9tcyBpbnRlZ2VyIERFRkFVTFQgMTAwMDtcbiAgICBCRUdJTlxuICAgICAgSUYgdXJsIElTIE5VTEwgT1IgdXJsID0gJ251bGwnIFRIRU5cbiAgICAgICAgUkFJU0UgRVhDRVBUSU9OICd1cmwgYXJndW1lbnQgaXMgbWlzc2luZyc7XG4gICAgICBFTkQgSUY7XG5cbiAgICAgIElGIG1ldGhvZCBJUyBOVUxMIE9SIG1ldGhvZCA9ICdudWxsJyBUSEVOXG4gICAgICAgIFJBSVNFIEVYQ0VQVElPTiAnbWV0aG9kIGFyZ3VtZW50IGlzIG1pc3NpbmcnO1xuICAgICAgRU5EIElGO1xuXG4gICAgICBJRiBUR19BUkdWWzJdIElTIE5VTEwgT1IgVEdfQVJHVlsyXSA9ICdudWxsJyBUSEVOXG4gICAgICAgIGhlYWRlcnMgPSAne1wiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwifSc6Ompzb25iO1xuICAgICAgRUxTRVxuICAgICAgICBoZWFkZXJzID0gVEdfQVJHVlsyXTo6anNvbmI7XG4gICAgICBFTkQgSUY7XG5cbiAgICAgIElGIFRHX0FSR1ZbM10gSVMgTlVMTCBPUiBUR19BUkdWWzNdID0gJ251bGwnIFRIRU5cbiAgICAgICAgcGFyYW1zID0gJ3t9Jzo6anNvbmI7XG4gICAgICBFTFNFXG4gICAgICAgIHBhcmFtcyA9IFRHX0FSR1ZbM106Ompzb25iO1xuICAgICAgRU5EIElGO1xuXG4gICAgICBJRiBUR19BUkdWWzRdIElTIE5VTEwgT1IgVEdfQVJHVls0XSA9ICdudWxsJyBUSEVOXG4gICAgICAgIHRpbWVvdXRfbXMgPSAxMDAwO1xuICAgICAgRUxTRVxuICAgICAgICB0aW1lb3V0X21zID0gVEdfQVJHVls0XTo6aW50ZWdlcjtcbiAgICAgIEVORCBJRjtcblxuICAgICAgQ0FTRVxuICAgICAgICBXSEVOIG1ldGhvZCA9ICdHRVQnIFRIRU5cbiAgICAgICAgICBTRUxFQ1QgaHR0cF9nZXQgSU5UTyByZXF1ZXN0X2lkIEZST00gbmV0Lmh0dHBfZ2V0KFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICAgIHRpbWVvdXRfbXNcbiAgICAgICAgICApO1xuICAgICAgICBXSEVOIG1ldGhvZCA9ICdQT1NUJyBUSEVOXG4gICAgICAgICAgcGF5bG9hZCA9IGpzb25iX2J1aWxkX29iamVjdChcbiAgICAgICAgICAgICdvbGRfcmVjb3JkJywgT0xELFxuICAgICAgICAgICAgJ3JlY29yZCcsIE5FVyxcbiAgICAgICAgICAgICd0eXBlJywgVEdfT1AsXG4gICAgICAgICAgICAndGFibGUnLCBUR19UQUJMRV9OQU1FLFxuICAgICAgICAgICAgJ3NjaGVtYScsIFRHX1RBQkxFX1NDSEVNQVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBTRUxFQ1QgaHR0cF9wb3N0IElOVE8gcmVxdWVzdF9pZCBGUk9NIG5ldC5odHRwX3Bvc3QoXG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICBwYXlsb2FkLFxuICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgaGVhZGVycyxcbiAgICAgICAgICAgIHRpbWVvdXRfbXNcbiAgICAgICAgICApO1xuICAgICAgICBFTFNFXG4gICAgICAgICAgUkFJU0UgRVhDRVBUSU9OICdtZXRob2QgYXJndW1lbnQgJSBpcyBpbnZhbGlkJywgbWV0aG9kO1xuICAgICAgRU5EIENBU0U7XG5cbiAgICAgIElOU0VSVCBJTlRPIHN1cGFiYXNlX2Z1bmN0aW9ucy5ob29rc1xuICAgICAgICAoaG9va190YWJsZV9pZCwgaG9va19uYW1lLCByZXF1ZXN0X2lkKVxuICAgICAgVkFMVUVTXG4gICAgICAgIChUR19SRUxJRCwgVEdfTkFNRSwgcmVxdWVzdF9pZCk7XG5cbiAgICAgIFJFVFVSTiBORVc7XG4gICAgRU5EXG4gICRmdW5jdGlvbiQ7XG4gIC0tIFN1cGFiYXNlIHN1cGVyIGFkbWluXG4gIERPXG4gICQkXG4gIEJFR0lOXG4gICAgSUYgTk9UIEVYSVNUUyAoXG4gICAgICBTRUxFQ1QgMVxuICAgICAgRlJPTSBwZ19yb2xlc1xuICAgICAgV0hFUkUgcm9sbmFtZSA9ICdzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4nXG4gICAgKVxuICAgIFRIRU5cbiAgICAgIENSRUFURSBVU0VSIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbiBOT0lOSEVSSVQgQ1JFQVRFUk9MRSBMT0dJTiBOT1JFUExJQ0FUSU9OO1xuICAgIEVORCBJRjtcbiAgRU5EXG4gICQkO1xuICBHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBTQ0hFTUEgc3VwYWJhc2VfZnVuY3Rpb25zIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbjtcbiAgR1JBTlQgQUxMIFBSSVZJTEVHRVMgT04gQUxMIFRBQkxFUyBJTiBTQ0hFTUEgc3VwYWJhc2VfZnVuY3Rpb25zIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbjtcbiAgR1JBTlQgQUxMIFBSSVZJTEVHRVMgT04gQUxMIFNFUVVFTkNFUyBJTiBTQ0hFTUEgc3VwYWJhc2VfZnVuY3Rpb25zIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbjtcbiAgQUxURVIgVVNFUiBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4gU0VUIHNlYXJjaF9wYXRoID0gXCJzdXBhYmFzZV9mdW5jdGlvbnNcIjtcbiAgQUxURVIgdGFibGUgXCJzdXBhYmFzZV9mdW5jdGlvbnNcIi5taWdyYXRpb25zIE9XTkVSIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbjtcbiAgQUxURVIgdGFibGUgXCJzdXBhYmFzZV9mdW5jdGlvbnNcIi5ob29rcyBPV05FUiBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW47XG4gIEFMVEVSIGZ1bmN0aW9uIFwic3VwYWJhc2VfZnVuY3Rpb25zXCIuaHR0cF9yZXF1ZXN0KCkgT1dORVIgVE8gc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluO1xuICBHUkFOVCBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4gVE8gcG9zdGdyZXM7XG4gIC0tIFJlbW92ZSB1bnVzZWQgc3VwYWJhc2VfcGdfbmV0X2FkbWluIHJvbGVcbiAgRE9cbiAgJCRcbiAgQkVHSU5cbiAgICBJRiBFWElTVFMgKFxuICAgICAgU0VMRUNUIDFcbiAgICAgIEZST00gcGdfcm9sZXNcbiAgICAgIFdIRVJFIHJvbG5hbWUgPSAnc3VwYWJhc2VfcGdfbmV0X2FkbWluJ1xuICAgIClcbiAgICBUSEVOXG4gICAgICBSRUFTU0lHTiBPV05FRCBCWSBzdXBhYmFzZV9wZ19uZXRfYWRtaW4gVE8gc3VwYWJhc2VfYWRtaW47XG4gICAgICBEUk9QIE9XTkVEIEJZIHN1cGFiYXNlX3BnX25ldF9hZG1pbjtcbiAgICAgIERST1AgUk9MRSBzdXBhYmFzZV9wZ19uZXRfYWRtaW47XG4gICAgRU5EIElGO1xuICBFTkRcbiAgJCQ7XG4gIC0tIHBnX25ldCBncmFudHMgd2hlbiBleHRlbnNpb24gaXMgYWxyZWFkeSBlbmFibGVkXG4gIERPXG4gICQkXG4gIEJFR0lOXG4gICAgSUYgRVhJU1RTIChcbiAgICAgIFNFTEVDVCAxXG4gICAgICBGUk9NIHBnX2V4dGVuc2lvblxuICAgICAgV0hFUkUgZXh0bmFtZSA9ICdwZ19uZXQnXG4gICAgKVxuICAgIFRIRU5cbiAgICAgIEdSQU5UIFVTQUdFIE9OIFNDSEVNQSBuZXQgVE8gc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluLCBwb3N0Z3JlcywgYW5vbiwgYXV0aGVudGljYXRlZCwgc2VydmljZV9yb2xlO1xuICAgICAgQUxURVIgZnVuY3Rpb24gbmV0Lmh0dHBfZ2V0KHVybCB0ZXh0LCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIFNFQ1VSSVRZIERFRklORVI7XG4gICAgICBBTFRFUiBmdW5jdGlvbiBuZXQuaHR0cF9wb3N0KHVybCB0ZXh0LCBib2R5IGpzb25iLCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIFNFQ1VSSVRZIERFRklORVI7XG4gICAgICBBTFRFUiBmdW5jdGlvbiBuZXQuaHR0cF9nZXQodXJsIHRleHQsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VUIHNlYXJjaF9wYXRoID0gbmV0O1xuICAgICAgQUxURVIgZnVuY3Rpb24gbmV0Lmh0dHBfcG9zdCh1cmwgdGV4dCwgYm9keSBqc29uYiwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBTRVQgc2VhcmNoX3BhdGggPSBuZXQ7XG4gICAgICBSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIG5ldC5odHRwX2dldCh1cmwgdGV4dCwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBGUk9NIFBVQkxJQztcbiAgICAgIFJFVk9LRSBBTEwgT04gRlVOQ1RJT04gbmV0Lmh0dHBfcG9zdCh1cmwgdGV4dCwgYm9keSBqc29uYiwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBGUk9NIFBVQkxJQztcbiAgICAgIEdSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gbmV0Lmh0dHBfZ2V0KHVybCB0ZXh0LCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbiwgcG9zdGdyZXMsIGFub24sIGF1dGhlbnRpY2F0ZWQsIHNlcnZpY2Vfcm9sZTtcbiAgICAgIEdSQU5UIEVYRUNVVEUgT04gRlVOQ1RJT04gbmV0Lmh0dHBfcG9zdCh1cmwgdGV4dCwgYm9keSBqc29uYiwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4sIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG4gICAgRU5EIElGO1xuICBFTkRcbiAgJCQ7XG4gIC0tIEV2ZW50IHRyaWdnZXIgZm9yIHBnX25ldFxuICBDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBleHRlbnNpb25zLmdyYW50X3BnX25ldF9hY2Nlc3MoKVxuICBSRVRVUk5TIGV2ZW50X3RyaWdnZXJcbiAgTEFOR1VBR0UgcGxwZ3NxbFxuICBBUyAkJFxuICBCRUdJTlxuICAgIElGIEVYSVNUUyAoXG4gICAgICBTRUxFQ1QgMVxuICAgICAgRlJPTSBwZ19ldmVudF90cmlnZ2VyX2RkbF9jb21tYW5kcygpIEFTIGV2XG4gICAgICBKT0lOIHBnX2V4dGVuc2lvbiBBUyBleHRcbiAgICAgIE9OIGV2Lm9iamlkID0gZXh0Lm9pZFxuICAgICAgV0hFUkUgZXh0LmV4dG5hbWUgPSAncGdfbmV0J1xuICAgIClcbiAgICBUSEVOXG4gICAgICBHUkFOVCBVU0FHRSBPTiBTQ0hFTUEgbmV0IFRPIHN1cGFiYXNlX2Z1bmN0aW9uc19hZG1pbiwgcG9zdGdyZXMsIGFub24sIGF1dGhlbnRpY2F0ZWQsIHNlcnZpY2Vfcm9sZTtcbiAgICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX2dldCh1cmwgdGV4dCwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBTRUNVUklUWSBERUZJTkVSO1xuICAgICAgQUxURVIgZnVuY3Rpb24gbmV0Lmh0dHBfcG9zdCh1cmwgdGV4dCwgYm9keSBqc29uYiwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBTRUNVUklUWSBERUZJTkVSO1xuICAgICAgQUxURVIgZnVuY3Rpb24gbmV0Lmh0dHBfZ2V0KHVybCB0ZXh0LCBwYXJhbXMganNvbmIsIGhlYWRlcnMganNvbmIsIHRpbWVvdXRfbWlsbGlzZWNvbmRzIGludGVnZXIpIFNFVCBzZWFyY2hfcGF0aCA9IG5ldDtcbiAgICAgIEFMVEVSIGZ1bmN0aW9uIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgU0VUIHNlYXJjaF9wYXRoID0gbmV0O1xuICAgICAgUkVWT0tFIEFMTCBPTiBGVU5DVElPTiBuZXQuaHR0cF9nZXQodXJsIHRleHQsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgRlJPTSBQVUJMSUM7XG4gICAgICBSRVZPS0UgQUxMIE9OIEZVTkNUSU9OIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgRlJPTSBQVUJMSUM7XG4gICAgICBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIG5ldC5odHRwX2dldCh1cmwgdGV4dCwgcGFyYW1zIGpzb25iLCBoZWFkZXJzIGpzb25iLCB0aW1lb3V0X21pbGxpc2Vjb25kcyBpbnRlZ2VyKSBUTyBzdXBhYmFzZV9mdW5jdGlvbnNfYWRtaW4sIHBvc3RncmVzLCBhbm9uLCBhdXRoZW50aWNhdGVkLCBzZXJ2aWNlX3JvbGU7XG4gICAgICBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIG5ldC5odHRwX3Bvc3QodXJsIHRleHQsIGJvZHkganNvbmIsIHBhcmFtcyBqc29uYiwgaGVhZGVycyBqc29uYiwgdGltZW91dF9taWxsaXNlY29uZHMgaW50ZWdlcikgVE8gc3VwYWJhc2VfZnVuY3Rpb25zX2FkbWluLCBwb3N0Z3JlcywgYW5vbiwgYXV0aGVudGljYXRlZCwgc2VydmljZV9yb2xlO1xuICAgIEVORCBJRjtcbiAgRU5EO1xuICAkJDtcbiAgQ09NTUVOVCBPTiBGVU5DVElPTiBleHRlbnNpb25zLmdyYW50X3BnX25ldF9hY2Nlc3MgSVMgJ0dyYW50cyBhY2Nlc3MgdG8gcGdfbmV0JztcbiAgRE9cbiAgJCRcbiAgQkVHSU5cbiAgICBJRiBOT1QgRVhJU1RTIChcbiAgICAgIFNFTEVDVCAxXG4gICAgICBGUk9NIHBnX2V2ZW50X3RyaWdnZXJcbiAgICAgIFdIRVJFIGV2dG5hbWUgPSAnaXNzdWVfcGdfbmV0X2FjY2VzcydcbiAgICApIFRIRU5cbiAgICAgIENSRUFURSBFVkVOVCBUUklHR0VSIGlzc3VlX3BnX25ldF9hY2Nlc3MgT04gZGRsX2NvbW1hbmRfZW5kIFdIRU4gVEFHIElOICgnQ1JFQVRFIEVYVEVOU0lPTicpXG4gICAgICBFWEVDVVRFIFBST0NFRFVSRSBleHRlbnNpb25zLmdyYW50X3BnX25ldF9hY2Nlc3MoKTtcbiAgICBFTkQgSUY7XG4gIEVORFxuICAkJDtcbiAgSU5TRVJUIElOVE8gc3VwYWJhc2VfZnVuY3Rpb25zLm1pZ3JhdGlvbnMgKHZlcnNpb24pIFZBTFVFUyAoJzIwMjEwODA5MTgzNDIzX3VwZGF0ZV9ncmFudHMnKTtcbiAgQUxURVIgZnVuY3Rpb24gc3VwYWJhc2VfZnVuY3Rpb25zLmh0dHBfcmVxdWVzdCgpIFNFQ1VSSVRZIERFRklORVI7XG4gIEFMVEVSIGZ1bmN0aW9uIHN1cGFiYXNlX2Z1bmN0aW9ucy5odHRwX3JlcXVlc3QoKSBTRVQgc2VhcmNoX3BhdGggPSBzdXBhYmFzZV9mdW5jdGlvbnM7XG4gIFJFVk9LRSBBTEwgT04gRlVOQ1RJT04gc3VwYWJhc2VfZnVuY3Rpb25zLmh0dHBfcmVxdWVzdCgpIEZST00gUFVCTElDO1xuICBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHN1cGFiYXNlX2Z1bmN0aW9ucy5odHRwX3JlcXVlc3QoKSBUTyBwb3N0Z3JlcywgYW5vbiwgYXV0aGVudGljYXRlZCwgc2VydmljZV9yb2xlO1xuQ09NTUlUO1xuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvZnVuY3Rpb25zL2hlbGxvL2luZGV4LnRzXCJcbmNvbnRlbnQgPSBcIlwiXCJcbi8vIEZvbGxvdyB0aGlzIHNldHVwIGd1aWRlIHRvIGludGVncmF0ZSB0aGUgRGVubyBsYW5ndWFnZSBzZXJ2ZXIgd2l0aCB5b3VyIGVkaXRvcjpcbi8vIGh0dHBzOi8vZGVuby5sYW5kL21hbnVhbC9nZXR0aW5nX3N0YXJ0ZWQvc2V0dXBfeW91cl9lbnZpcm9ubWVudFxuLy8gVGhpcyBlbmFibGVzIGF1dG9jb21wbGV0ZSwgZ28gdG8gZGVmaW5pdGlvbiwgZXRjLlxuXG5pbXBvcnQgeyBzZXJ2ZSB9IGZyb20gXCJodHRwczovL2Rlbm8ubGFuZC9zdGRAMC4xNzcuMS9odHRwL3NlcnZlci50c1wiXG5cbnNlcnZlKGFzeW5jICgpID0+IHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZShcbiAgICBgXCJIZWxsbyBmcm9tIEVkZ2UgRnVuY3Rpb25zIVwiYCxcbiAgICB7IGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSB9LFxuICApXG59KVxuXG4vLyBUbyBpbnZva2U6XG4vLyBjdXJsICdodHRwOi8vbG9jYWxob3N0OjxLT05HX0hUVFBfUE9SVD4vZnVuY3Rpb25zL3YxL2hlbGxvJyBcXFxuLy8gICAtLWhlYWRlciAnQXV0aG9yaXphdGlvbjogQmVhcmVyIDxhbm9uL3NlcnZpY2Vfcm9sZSBBUEkga2V5PidcblwiXCJcIlxuXG5bW2NvbmZpZy5tb3VudHNdXVxuZmlsZVBhdGggPSBcIi92b2x1bWVzL2Z1bmN0aW9ucy9tYWluL2luZGV4LnRzXCJcbmNvbnRlbnQgPSBcIlwiXCJpbXBvcnQgKiBhcyBqb3NlIGZyb20gJ2h0dHBzOi8vZGVuby5sYW5kL3gvam9zZUB2NC4xNC40L2luZGV4LnRzJ1xuXG5jb25zb2xlLmxvZygnbWFpbiBmdW5jdGlvbiBzdGFydGVkJylcblxuY29uc3QgSldUX1NFQ1JFVCA9IERlbm8uZW52LmdldCgnSldUX1NFQ1JFVCcpXG5jb25zdCBTVVBBQkFTRV9VUkwgPSBEZW5vLmVudi5nZXQoJ1NVUEFCQVNFX1VSTCcpXG5jb25zdCBWRVJJRllfSldUID0gRGVuby5lbnYuZ2V0KCdWRVJJRllfSldUJykgPT09ICd0cnVlJ1xuXG5sZXQgU1VQQUJBU0VfSldUX0tFWVM6IFJldHVyblR5cGU8dHlwZW9mIGpvc2UuY3JlYXRlUmVtb3RlSldLU2V0PiB8IG51bGwgPSBudWxsXG5pZiAoU1VQQUJBU0VfVVJMKSB7XG4gIHRyeSB7XG4gICAgU1VQQUJBU0VfSldUX0tFWVMgPSBqb3NlLmNyZWF0ZVJlbW90ZUpXS1NldChcbiAgICAgIG5ldyBVUkwoJy9hdXRoL3YxLy53ZWxsLWtub3duL2p3a3MuanNvbicsIFNVUEFCQVNFX1VSTClcbiAgICApXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggSldLUyBmcm9tIFNVUEFCQVNFX1VSTDonLCBlKVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEF1dGhUb2tlbihyZXE6IFJlcXVlc3QpIHtcbiAgY29uc3QgYXV0aEhlYWRlciA9IHJlcS5oZWFkZXJzLmdldCgnYXV0aG9yaXphdGlvbicpXG4gIGlmICghYXV0aEhlYWRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBhdXRob3JpemF0aW9uIGhlYWRlcicpXG4gIH1cbiAgY29uc3QgW2JlYXJlciwgdG9rZW5dID0gYXV0aEhlYWRlci5zcGxpdCgnICcpXG4gIGlmIChiZWFyZXIgIT09ICdCZWFyZXInKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBBdXRoIGhlYWRlciBpcyBub3QgJ0JlYXJlciB7dG9rZW59J2ApXG4gIH1cbiAgcmV0dXJuIHRva2VuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIGlzVmFsaWRMZWdhY3lKV1Qoand0OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgaWYgKCFKV1RfU0VDUkVUKSB7XG4gICAgY29uc29sZS5lcnJvcignSldUX1NFQ1JFVCBub3QgYXZhaWxhYmxlIGZvciBIUzI1NiB0b2tlbiB2ZXJpZmljYXRpb24nKVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKVxuICBjb25zdCBzZWNyZXRLZXkgPSBlbmNvZGVyLmVuY29kZShKV1RfU0VDUkVUKVxuICB0cnkge1xuICAgIGF3YWl0IGpvc2Uuand0VmVyaWZ5KGp3dCwgc2VjcmV0S2V5KVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignU3ltbWV0cmljIExlZ2FjeSBKV1QgdmVyaWZpY2F0aW9uIGVycm9yJywgZSlcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5hc3luYyBmdW5jdGlvbiBpc1ZhbGlkSldUKGp3dDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmICghU1VQQUJBU0VfSldUX0tFWVMpIHtcbiAgICBjb25zb2xlLmVycm9yKCdKV0tTIG5vdCBhdmFpbGFibGUgZm9yIEVTMjU2L1JTMjU2IHRva2VuIHZlcmlmaWNhdGlvbicpXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgdHJ5IHtcbiAgICBhd2FpdCBqb3NlLmp3dFZlcmlmeShqd3QsIFNVUEFCQVNFX0pXVF9LRVlTKVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignQXN5bW1ldHJpYyBKV1QgdmVyaWZpY2F0aW9uIGVycm9yJywgZSlcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5hc3luYyBmdW5jdGlvbiBpc1ZhbGlkSHlicmlkSldUKGp3dDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgYWxnOiBqd3RBbGdvcml0aG0gfSA9IGpvc2UuZGVjb2RlUHJvdGVjdGVkSGVhZGVyKGp3dClcbiAgaWYgKGp3dEFsZ29yaXRobSA9PT0gJ0hTMjU2Jykge1xuICAgIHJldHVybiBhd2FpdCBpc1ZhbGlkTGVnYWN5SldUKGp3dClcbiAgfVxuICBpZiAoand0QWxnb3JpdGhtID09PSAnRVMyNTYnIHx8IGp3dEFsZ29yaXRobSA9PT0gJ1JTMjU2Jykge1xuICAgIHJldHVybiBhd2FpdCBpc1ZhbGlkSldUKGp3dClcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuRGVuby5zZXJ2ZShhc3luYyAocmVxOiBSZXF1ZXN0KSA9PiB7XG4gIGlmIChyZXEubWV0aG9kICE9PSAnT1BUSU9OUycgJiYgVkVSSUZZX0pXVCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0b2tlbiA9IGdldEF1dGhUb2tlbihyZXEpXG4gICAgICBjb25zdCBpc1ZhbGlkID0gYXdhaXQgaXNWYWxpZEh5YnJpZEpXVCh0b2tlbilcbiAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgbXNnOiAnSW52YWxpZCBKV1QnIH0pLCB7XG4gICAgICAgICAgc3RhdHVzOiA0MDEsXG4gICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihlKVxuICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IG1zZzogZS50b1N0cmluZygpIH0pLCB7XG4gICAgICAgIHN0YXR1czogNDAxLFxuICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdXJsID0gbmV3IFVSTChyZXEudXJsKVxuICBjb25zdCB7IHBhdGhuYW1lIH0gPSB1cmxcbiAgY29uc3QgcGF0aF9wYXJ0cyA9IHBhdGhuYW1lLnNwbGl0KCcvJylcbiAgY29uc3Qgc2VydmljZV9uYW1lID0gcGF0aF9wYXJ0c1sxXVxuXG4gIGlmICghc2VydmljZV9uYW1lIHx8IHNlcnZpY2VfbmFtZSA9PT0gJycpIHtcbiAgICBjb25zdCBlcnJvciA9IHsgbXNnOiAnbWlzc2luZyBmdW5jdGlvbiBuYW1lIGluIHJlcXVlc3QnIH1cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KGVycm9yKSwge1xuICAgICAgc3RhdHVzOiA0MDAsXG4gICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3Qgc2VydmljZVBhdGggPSBgL2hvbWUvZGVuby9mdW5jdGlvbnMvJHtzZXJ2aWNlX25hbWV9YFxuICBjb25zb2xlLmVycm9yKGBzZXJ2aW5nIHRoZSByZXF1ZXN0IHdpdGggJHtzZXJ2aWNlUGF0aH1gKVxuXG4gIGNvbnN0IG1lbW9yeUxpbWl0TWIgPSAxNTBcbiAgY29uc3Qgd29ya2VyVGltZW91dE1zID0gMSAqIDYwICogMTAwMFxuICBjb25zdCBub01vZHVsZUNhY2hlID0gZmFsc2VcbiAgY29uc3QgaW1wb3J0TWFwUGF0aCA9IG51bGxcbiAgY29uc3QgZW52VmFyc09iaiA9IERlbm8uZW52LnRvT2JqZWN0KClcbiAgY29uc3QgZW52VmFycyA9IE9iamVjdC5rZXlzKGVudlZhcnNPYmopLm1hcCgoaykgPT4gW2ssIGVudlZhcnNPYmpba11dKVxuXG4gIHRyeSB7XG4gICAgY29uc3Qgd29ya2VyID0gYXdhaXQgRWRnZVJ1bnRpbWUudXNlcldvcmtlcnMuY3JlYXRlKHtcbiAgICAgIHNlcnZpY2VQYXRoLFxuICAgICAgbWVtb3J5TGltaXRNYixcbiAgICAgIHdvcmtlclRpbWVvdXRNcyxcbiAgICAgIG5vTW9kdWxlQ2FjaGUsXG4gICAgICBpbXBvcnRNYXBQYXRoLFxuICAgICAgZW52VmFycyxcbiAgICB9KVxuICAgIHJldHVybiBhd2FpdCB3b3JrZXIuZmV0Y2gocmVxKVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc3QgZXJyb3IgPSB7IG1zZzogZS50b1N0cmluZygpIH1cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KGVycm9yKSwge1xuICAgICAgc3RhdHVzOiA1MDAsXG4gICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICB9KVxuICB9XG59KVxuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvbG9ncy92ZWN0b3IueW1sXCJcbmNvbnRlbnQgPSBcIlwiXCJhcGk6XG4gIGVuYWJsZWQ6IHRydWVcbiAgYWRkcmVzczogMC4wLjAuMDo5MDAxXG5cbnNvdXJjZXM6XG4gIGRvY2tlcl9ob3N0OlxuICAgIHR5cGU6IGRvY2tlcl9sb2dzXG5cbnRyYW5zZm9ybXM6XG4gIHByb2plY3RfbG9nczpcbiAgICB0eXBlOiByZW1hcFxuICAgIGlucHV0czpcbiAgICAgIC0gZG9ja2VyX2hvc3RcbiAgICBzb3VyY2U6IHwtXG4gICAgICAucHJvamVjdCA9IFwiZGVmYXVsdFwiXG4gICAgICAuZXZlbnRfbWVzc2FnZSA9IGRlbCgubWVzc2FnZSlcbiAgICAgIGNvbXBvc2Vfc2VydmljZSwgbGFiZWxfZXJyID0gZ2V0KC5sYWJlbCwgW1wiY29tLmRvY2tlci5jb21wb3NlLnNlcnZpY2VcIl0pXG4gICAgICBpZiBsYWJlbF9lcnIgIT0gbnVsbCB8fCBjb21wb3NlX3NlcnZpY2UgPT0gbnVsbCB7XG4gICAgICAgIGFib3J0XG4gICAgICB9XG4gICAgICBjb21wb3NlX3NlcnZpY2UgPSB0b19zdHJpbmchKGNvbXBvc2Vfc2VydmljZSlcbiAgICAgIGlmIGNvbXBvc2Vfc2VydmljZSA9PSBcInZlY3RvclwiIHtcbiAgICAgICAgYWJvcnRcbiAgICAgIH1cbiAgICAgIC5hcHBuYW1lID0gXCJzdXBhYmFzZS1cIiArIGNvbXBvc2Vfc2VydmljZVxuICAgICAgZGVsKC5jb250YWluZXJfY3JlYXRlZF9hdClcbiAgICAgIGRlbCguY29udGFpbmVyX2lkKVxuICAgICAgZGVsKC5zb3VyY2VfdHlwZSlcbiAgICAgIGRlbCguc3RyZWFtKVxuICAgICAgZGVsKC5sYWJlbClcbiAgICAgIGRlbCguaW1hZ2UpXG4gICAgICBkZWwoLmhvc3QpXG4gICAgICBkZWwoLnN0cmVhbSlcbiAgcm91dGVyOlxuICAgIHR5cGU6IHJvdXRlXG4gICAgaW5wdXRzOlxuICAgICAgLSBwcm9qZWN0X2xvZ3NcbiAgICByb3V0ZTpcbiAgICAgIGtvbmc6ICcuYXBwbmFtZSA9PSBcInN1cGFiYXNlLWtvbmdcIiB8fCAuYXBwbmFtZSA9PSBcInN1cGFiYXNlLWVudm95XCInXG4gICAgICBhdXRoOiAnLmFwcG5hbWUgPT0gXCJzdXBhYmFzZS1hdXRoXCInXG4gICAgICByZXN0OiAnLmFwcG5hbWUgPT0gXCJzdXBhYmFzZS1yZXN0XCInXG4gICAgICByZWFsdGltZTogJy5hcHBuYW1lID09IFwic3VwYWJhc2UtcmVhbHRpbWVcIidcbiAgICAgIHN0b3JhZ2U6ICcuYXBwbmFtZSA9PSBcInN1cGFiYXNlLXN0b3JhZ2VcIidcbiAgICAgIGZ1bmN0aW9uczogJy5hcHBuYW1lID09IFwic3VwYWJhc2UtZnVuY3Rpb25zXCInXG4gICAgICBkYjogJy5hcHBuYW1lID09IFwic3VwYWJhc2UtZGJcIidcbiAgIyBJZ25vcmVzIG5vbiBuZ2lueCBlcnJvcnMgc2luY2UgdGhleSBhcmUgcmVsYXRlZCB3aXRoIGtvbmcgYm9vdGluZyB1cFxuICBrb25nX2xvZ3M6XG4gICAgdHlwZTogcmVtYXBcbiAgICBpbnB1dHM6XG4gICAgICAtIHJvdXRlci5rb25nXG4gICAgc291cmNlOiB8LVxuICAgICAgcmVxLCBlcnIgPSBwYXJzZV9uZ2lueF9sb2coLmV2ZW50X21lc3NhZ2UsIFwiY29tYmluZWRcIilcbiAgICAgIGlmIGVyciA9PSBudWxsIHtcbiAgICAgICAgICAudGltZXN0YW1wID0gcmVxLnRpbWVzdGFtcFxuICAgICAgICAgIC5tZXRhZGF0YS5yZXF1ZXN0LmhlYWRlcnMucmVmZXJlciA9IHJlcS5yZWZlcmVyXG4gICAgICAgICAgLm1ldGFkYXRhLnJlcXVlc3QuaGVhZGVycy51c2VyX2FnZW50ID0gcmVxLmFnZW50XG4gICAgICAgICAgLm1ldGFkYXRhLnJlcXVlc3QuaGVhZGVycy5jZl9jb25uZWN0aW5nX2lwID0gcmVxLmNsaWVudFxuICAgICAgICAgIC5tZXRhZGF0YS5yZXNwb25zZS5zdGF0dXNfY29kZSA9IHJlcS5zdGF0dXNcbiAgICAgICAgICB1cmwsIHNwbGl0X2VyciA9IHNwbGl0KHJlcS5yZXF1ZXN0LCBcIiBcIilcbiAgICAgICAgICBpZiBzcGxpdF9lcnIgPT0gbnVsbCB7XG4gICAgICAgICAgICAgIC5tZXRhZGF0YS5yZXF1ZXN0Lm1ldGhvZCA9IHVybFswXVxuICAgICAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5wYXRoID0gdXJsWzFdXG4gICAgICAgICAgICAgIC5tZXRhZGF0YS5yZXF1ZXN0LnByb3RvY29sID0gdXJsWzJdXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgZXJyICE9IG51bGwge1xuICAgICAgICBhYm9ydFxuICAgICAgfVxuICBrb25nX2VycjpcbiAgICB0eXBlOiByZW1hcFxuICAgIGlucHV0czpcbiAgICAgIC0gcm91dGVyLmtvbmdcbiAgICBzb3VyY2U6IHwtXG4gICAgICAubWV0YWRhdGEucmVxdWVzdC5tZXRob2QgPSBcIkdFVFwiXG4gICAgICAubWV0YWRhdGEucmVzcG9uc2Uuc3RhdHVzX2NvZGUgPSAyMDBcbiAgICAgIHBhcnNlZCwgZXJyID0gcGFyc2VfbmdpbnhfbG9nKC5ldmVudF9tZXNzYWdlLCBcImVycm9yXCIpXG4gICAgICBpZiBlcnIgPT0gbnVsbCB7XG4gICAgICAgICAgLnRpbWVzdGFtcCA9IHBhcnNlZC50aW1lc3RhbXBcbiAgICAgICAgICAuc2V2ZXJpdHkgPSBwYXJzZWQuc2V2ZXJpdHlcbiAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5ob3N0ID0gcGFyc2VkLmhvc3RcbiAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5oZWFkZXJzLmNmX2Nvbm5lY3RpbmdfaXAgPSBwYXJzZWQuY2xpZW50XG4gICAgICAgICAgdXJsLCBlcnIgPSBzcGxpdChwYXJzZWQucmVxdWVzdCwgXCIgXCIpXG4gICAgICAgICAgaWYgZXJyID09IG51bGwge1xuICAgICAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5tZXRob2QgPSB1cmxbMF1cbiAgICAgICAgICAgICAgLm1ldGFkYXRhLnJlcXVlc3QucGF0aCA9IHVybFsxXVxuICAgICAgICAgICAgICAubWV0YWRhdGEucmVxdWVzdC5wcm90b2NvbCA9IHVybFsyXVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIGVyciAhPSBudWxsIHtcbiAgICAgICAgYWJvcnRcbiAgICAgIH1cbiAgIyBHb3RydWUgbG9ncyBhcmUgc3RydWN0dXJlZCBqc29uIHN0cmluZ3Mgd2hpY2ggZnJvbnRlbmQgcGFyc2VzIGRpcmVjdGx5LiBCdXQgd2Uga2VlcCBtZXRhZGF0YSBmb3IgY29uc2lzdGVuY3kuXG4gIGF1dGhfbG9nczpcbiAgICB0eXBlOiByZW1hcFxuICAgIGlucHV0czpcbiAgICAgIC0gcm91dGVyLmF1dGhcbiAgICBzb3VyY2U6IHwtXG4gICAgICBwYXJzZWQsIGVyciA9IHBhcnNlX2pzb24oLmV2ZW50X21lc3NhZ2UpXG4gICAgICBpZiBlcnIgPT0gbnVsbCB7XG4gICAgICAgICAgLm1ldGFkYXRhLnRpbWVzdGFtcCA9IHBhcnNlZC50aW1lXG4gICAgICAgICAgLm1ldGFkYXRhID0gbWVyZ2UhKC5tZXRhZGF0YSwgcGFyc2VkKVxuICAgICAgfVxuICAjIFBvc3RnUkVTVCBsb2dzIGFyZSBzdHJ1Y3R1cmVkIHNvIHdlIHNlcGFyYXRlIHRpbWVzdGFtcCBmcm9tIG1lc3NhZ2UgdXNpbmcgcmVnZXhcbiAgcmVzdF9sb2dzOlxuICAgIHR5cGU6IHJlbWFwXG4gICAgaW5wdXRzOlxuICAgICAgLSByb3V0ZXIucmVzdFxuICAgIHNvdXJjZTogfC1cbiAgICAgIHBhcnNlZCwgZXJyID0gcGFyc2VfcmVnZXgoLmV2ZW50X21lc3NhZ2UsIHInXig/UDx0aW1lPi4qKTogKD9QPG1zZz4uKikkJylcbiAgICAgIGlmIGVyciA9PSBudWxsIHtcbiAgICAgICAgICAuZXZlbnRfbWVzc2FnZSA9IHBhcnNlZC5tc2dcbiAgICAgICAgICAudGltZXN0YW1wID0gcGFyc2VfdGltZXN0YW1wISh2YWx1ZTogcGFyc2VkLnRpbWUsZm9ybWF0OiBcIiVkLyViLyVZOiVIOiVNOiVTICV6XCIpXG4gICAgICAgICAgLm1ldGFkYXRhLmhvc3QgPSAucHJvamVjdFxuICAgICAgfVxuICByZWFsdGltZV9sb2dzX2ZpbHRlcmVkOlxuICAgIHR5cGU6IGZpbHRlclxuICAgIGlucHV0czpcbiAgICAgIC0gcm91dGVyLnJlYWx0aW1lXG4gICAgY29uZGl0aW9uOiAnIWNvbnRhaW5zKHN0cmluZyEoLmV2ZW50X21lc3NhZ2UpLCBcIi9oZWFsdGhcIiknXG4gIHJlYWx0aW1lX2xvZ3M6XG4gICAgdHlwZTogcmVtYXBcbiAgICBpbnB1dHM6XG4gICAgICAtIHJlYWx0aW1lX2xvZ3NfZmlsdGVyZWRcbiAgICBzb3VyY2U6IHwtXG4gICAgICAubWV0YWRhdGEucHJvamVjdCA9IGRlbCgucHJvamVjdClcbiAgICAgIC5tZXRhZGF0YS5leHRlcm5hbF9pZCA9IC5tZXRhZGF0YS5wcm9qZWN0XG4gICAgICBwYXJzZWQsIGVyciA9IHBhcnNlX3JlZ2V4KC5ldmVudF9tZXNzYWdlLCByJ14oP1A8dGltZT5cXFxcZCs6XFxcXGQrOlxcXFxkK1xcXFwuXFxcXGQrKSBcXFxcWyg/UDxsZXZlbD5cXFxcdyspXFxcXF0gKD9QPG1zZz4uKikkJylcbiAgICAgIGlmIGVyciA9PSBudWxsIHtcbiAgICAgICAgICAuZXZlbnRfbWVzc2FnZSA9IHBhcnNlZC5tc2dcbiAgICAgICAgICAubWV0YWRhdGEubGV2ZWwgPSBwYXJzZWQubGV2ZWxcbiAgICAgIH1cbiAgZnVuY3Rpb25zX2xvZ3M6XG4gICAgdHlwZTogcmVtYXBcbiAgICBpbnB1dHM6XG4gICAgICAtIHJvdXRlci5mdW5jdGlvbnNcbiAgICBzb3VyY2U6IHwtXG4gICAgICAubWV0YWRhdGEucHJvamVjdF9yZWYgPSBkZWwoLnByb2plY3QpXG4gICMgU3RvcmFnZSBsb2dzIG1heSBjb250YWluIGpzb24gb2JqZWN0cyBzbyB3ZSBwYXJzZSB0aGVtIGZvciBjb21wbGV0ZW5lc3NcbiAgc3RvcmFnZV9sb2dzOlxuICAgIHR5cGU6IHJlbWFwXG4gICAgaW5wdXRzOlxuICAgICAgLSByb3V0ZXIuc3RvcmFnZVxuICAgIHNvdXJjZTogfC1cbiAgICAgIC5tZXRhZGF0YS5wcm9qZWN0ID0gZGVsKC5wcm9qZWN0KVxuICAgICAgLm1ldGFkYXRhLnRlbmFudElkID0gLm1ldGFkYXRhLnByb2plY3RcbiAgICAgIHBhcnNlZCwgZXJyID0gcGFyc2VfanNvbiguZXZlbnRfbWVzc2FnZSlcbiAgICAgIGlmIGVyciA9PSBudWxsIHtcbiAgICAgICAgICAuZXZlbnRfbWVzc2FnZSA9IHBhcnNlZC5tc2dcbiAgICAgICAgICAubWV0YWRhdGEubGV2ZWwgPSBwYXJzZWQubGV2ZWxcbiAgICAgICAgICAubWV0YWRhdGEudGltZXN0YW1wID0gcGFyc2VkLnRpbWVcbiAgICAgICAgICAubWV0YWRhdGEuY29udGV4dFswXS5ob3N0ID0gcGFyc2VkLmhvc3RuYW1lXG4gICAgICAgICAgLm1ldGFkYXRhLmNvbnRleHRbMF0ucGlkID0gcGFyc2VkLnBpZFxuICAgICAgfVxuICAjIFBvc3RncmVzIGxvZ3Mgc29tZSBtZXNzYWdlcyB0byBzdGRlcnIgd2hpY2ggd2UgbWFwIHRvIHdhcm5pbmcgc2V2ZXJpdHkgbGV2ZWxcbiAgZGJfbG9nczpcbiAgICB0eXBlOiByZW1hcFxuICAgIGlucHV0czpcbiAgICAgIC0gcm91dGVyLmRiXG4gICAgc291cmNlOiB8LVxuICAgICAgLm1ldGFkYXRhLmhvc3QgPSBcImRiLWRlZmF1bHRcIlxuICAgICAgLm1ldGFkYXRhLnBhcnNlZC50aW1lc3RhbXAgPSAudGltZXN0YW1wXG5cbiAgICAgIHBhcnNlZCwgZXJyID0gcGFyc2VfcmVnZXgoLmV2ZW50X21lc3NhZ2UsIHInLiooP1A8bGV2ZWw+SU5GT3xOT1RJQ0V8V0FSTklOR3xFUlJPUnxMT0d8RkFUQUx8UEFOSUM/KTouKicsIG51bWVyaWNfZ3JvdXBzOiB0cnVlKVxuXG4gICAgICBpZiBlcnIgIT0gbnVsbCB8fCBwYXJzZWQgPT0gbnVsbCB7XG4gICAgICAgIC5tZXRhZGF0YS5wYXJzZWQuZXJyb3Jfc2V2ZXJpdHkgPSBcImluZm9cIlxuICAgICAgfVxuICAgICAgaWYgcGFyc2VkLmxldmVsICE9IG51bGwge1xuICAgICAgIC5tZXRhZGF0YS5wYXJzZWQuZXJyb3Jfc2V2ZXJpdHkgPSBwYXJzZWQubGV2ZWxcbiAgICAgIH1cbiAgICAgIGlmIC5tZXRhZGF0YS5wYXJzZWQuZXJyb3Jfc2V2ZXJpdHkgPT0gXCJpbmZvXCIge1xuICAgICAgICAgIC5tZXRhZGF0YS5wYXJzZWQuZXJyb3Jfc2V2ZXJpdHkgPSBcImxvZ1wiXG4gICAgICB9XG4gICAgICAubWV0YWRhdGEucGFyc2VkLmVycm9yX3NldmVyaXR5ID0gdXBjYXNlISgubWV0YWRhdGEucGFyc2VkLmVycm9yX3NldmVyaXR5KVxuXG5zaW5rczpcbiAgbG9nZmxhcmVfYXV0aDpcbiAgICB0eXBlOiAnaHR0cCdcbiAgICBpbnB1dHM6XG4gICAgICAtIGF1dGhfbG9nc1xuICAgIGVuY29kaW5nOlxuICAgICAgY29kZWM6ICdqc29uJ1xuICAgIG1ldGhvZDogJ3Bvc3QnXG4gICAgcmVxdWVzdDpcbiAgICAgIHJldHJ5X21heF9kdXJhdGlvbl9zZWNzOiAzMFxuICAgICAgcmV0cnlfaW5pdGlhbF9iYWNrb2ZmX3NlY3M6IDFcbiAgICAgIGhlYWRlcnM6XG4gICAgICAgIHgtYXBpLWtleTogJHtMT0dGTEFSRV9QVUJMSUNfQUNDRVNTX1RPS0VOP0xPR0ZMQVJFX1BVQkxJQ19BQ0NFU1NfVE9LRU4gaXMgcmVxdWlyZWR9XG4gICAgdXJpOiAnaHR0cDovL2FuYWx5dGljczo0MDAwL2FwaS9sb2dzP3NvdXJjZV9uYW1lPWdvdHJ1ZS5sb2dzLnByb2QnXG4gIGxvZ2ZsYXJlX3JlYWx0aW1lOlxuICAgIHR5cGU6ICdodHRwJ1xuICAgIGlucHV0czpcbiAgICAgIC0gcmVhbHRpbWVfbG9nc1xuICAgIGVuY29kaW5nOlxuICAgICAgY29kZWM6ICdqc29uJ1xuICAgIG1ldGhvZDogJ3Bvc3QnXG4gICAgcmVxdWVzdDpcbiAgICAgIHJldHJ5X21heF9kdXJhdGlvbl9zZWNzOiAzMFxuICAgICAgcmV0cnlfaW5pdGlhbF9iYWNrb2ZmX3NlY3M6IDFcbiAgICAgIGhlYWRlcnM6XG4gICAgICAgIHgtYXBpLWtleTogJHtMT0dGTEFSRV9QVUJMSUNfQUNDRVNTX1RPS0VOP0xPR0ZMQVJFX1BVQkxJQ19BQ0NFU1NfVE9LRU4gaXMgcmVxdWlyZWR9XG4gICAgdXJpOiAnaHR0cDovL2FuYWx5dGljczo0MDAwL2FwaS9sb2dzP3NvdXJjZV9uYW1lPXJlYWx0aW1lLmxvZ3MucHJvZCdcbiAgbG9nZmxhcmVfcmVzdDpcbiAgICB0eXBlOiAnaHR0cCdcbiAgICBpbnB1dHM6XG4gICAgICAtIHJlc3RfbG9nc1xuICAgIGVuY29kaW5nOlxuICAgICAgY29kZWM6ICdqc29uJ1xuICAgIG1ldGhvZDogJ3Bvc3QnXG4gICAgcmVxdWVzdDpcbiAgICAgIHJldHJ5X21heF9kdXJhdGlvbl9zZWNzOiAzMFxuICAgICAgcmV0cnlfaW5pdGlhbF9iYWNrb2ZmX3NlY3M6IDFcbiAgICAgIGhlYWRlcnM6XG4gICAgICAgIHgtYXBpLWtleTogJHtMT0dGTEFSRV9QVUJMSUNfQUNDRVNTX1RPS0VOP0xPR0ZMQVJFX1BVQkxJQ19BQ0NFU1NfVE9LRU4gaXMgcmVxdWlyZWR9XG4gICAgdXJpOiAnaHR0cDovL2FuYWx5dGljczo0MDAwL2FwaS9sb2dzP3NvdXJjZV9uYW1lPXBvc3RnUkVTVC5sb2dzLnByb2QnXG4gIGxvZ2ZsYXJlX2RiOlxuICAgIHR5cGU6ICdodHRwJ1xuICAgIGlucHV0czpcbiAgICAgIC0gZGJfbG9nc1xuICAgIGVuY29kaW5nOlxuICAgICAgY29kZWM6ICdqc29uJ1xuICAgIG1ldGhvZDogJ3Bvc3QnXG4gICAgcmVxdWVzdDpcbiAgICAgIHJldHJ5X21heF9kdXJhdGlvbl9zZWNzOiAzMFxuICAgICAgcmV0cnlfaW5pdGlhbF9iYWNrb2ZmX3NlY3M6IDFcbiAgICAgIGhlYWRlcnM6XG4gICAgICAgIHgtYXBpLWtleTogJHtMT0dGTEFSRV9QVUJMSUNfQUNDRVNTX1RPS0VOP0xPR0ZMQVJFX1BVQkxJQ19BQ0NFU1NfVE9LRU4gaXMgcmVxdWlyZWR9XG4gICAgdXJpOiAnaHR0cDovL2FuYWx5dGljczo0MDAwL2FwaS9sb2dzP3NvdXJjZV9uYW1lPXBvc3RncmVzLmxvZ3MnXG4gIGxvZ2ZsYXJlX2Z1bmN0aW9uczpcbiAgICB0eXBlOiAnaHR0cCdcbiAgICBpbnB1dHM6XG4gICAgICAtIGZ1bmN0aW9uc19sb2dzXG4gICAgZW5jb2Rpbmc6XG4gICAgICBjb2RlYzogJ2pzb24nXG4gICAgbWV0aG9kOiAncG9zdCdcbiAgICByZXF1ZXN0OlxuICAgICAgcmV0cnlfbWF4X2R1cmF0aW9uX3NlY3M6IDMwXG4gICAgICByZXRyeV9pbml0aWFsX2JhY2tvZmZfc2VjczogMVxuICAgICAgaGVhZGVyczpcbiAgICAgICAgeC1hcGkta2V5OiAke0xPR0ZMQVJFX1BVQkxJQ19BQ0NFU1NfVE9LRU4/TE9HRkxBUkVfUFVCTElDX0FDQ0VTU19UT0tFTiBpcyByZXF1aXJlZH1cbiAgICB1cmk6ICdodHRwOi8vYW5hbHl0aWNzOjQwMDAvYXBpL2xvZ3M/c291cmNlX25hbWU9ZGVuby1yZWxheS1sb2dzJ1xuICBsb2dmbGFyZV9zdG9yYWdlOlxuICAgIHR5cGU6ICdodHRwJ1xuICAgIGlucHV0czpcbiAgICAgIC0gc3RvcmFnZV9sb2dzXG4gICAgZW5jb2Rpbmc6XG4gICAgICBjb2RlYzogJ2pzb24nXG4gICAgbWV0aG9kOiAncG9zdCdcbiAgICByZXF1ZXN0OlxuICAgICAgcmV0cnlfbWF4X2R1cmF0aW9uX3NlY3M6IDMwXG4gICAgICByZXRyeV9pbml0aWFsX2JhY2tvZmZfc2VjczogMVxuICAgICAgaGVhZGVyczpcbiAgICAgICAgeC1hcGkta2V5OiAke0xPR0ZMQVJFX1BVQkxJQ19BQ0NFU1NfVE9LRU4/TE9HRkxBUkVfUFVCTElDX0FDQ0VTU19UT0tFTiBpcyByZXF1aXJlZH1cbiAgICB1cmk6ICdodHRwOi8vYW5hbHl0aWNzOjQwMDAvYXBpL2xvZ3M/c291cmNlX25hbWU9c3RvcmFnZS5sb2dzLnByb2QuMidcbiAgbG9nZmxhcmVfa29uZzpcbiAgICB0eXBlOiAnaHR0cCdcbiAgICBpbnB1dHM6XG4gICAgICAtIGtvbmdfbG9nc1xuICAgICAgLSBrb25nX2VyclxuICAgIGVuY29kaW5nOlxuICAgICAgY29kZWM6ICdqc29uJ1xuICAgIG1ldGhvZDogJ3Bvc3QnXG4gICAgcmVxdWVzdDpcbiAgICAgIHJldHJ5X21heF9kdXJhdGlvbl9zZWNzOiAzMFxuICAgICAgcmV0cnlfaW5pdGlhbF9iYWNrb2ZmX3NlY3M6IDFcbiAgICAgIGhlYWRlcnM6XG4gICAgICAgIHgtYXBpLWtleTogJHtMT0dGTEFSRV9QVUJMSUNfQUNDRVNTX1RPS0VOP0xPR0ZMQVJFX1BVQkxJQ19BQ0NFU1NfVE9LRU4gaXMgcmVxdWlyZWR9XG4gICAgdXJpOiAnaHR0cDovL2FuYWx5dGljczo0MDAwL2FwaS9sb2dzP3NvdXJjZV9uYW1lPWNsb3VkZmxhcmUubG9ncy5wcm9kJ1xuXCJcIlwiXG5cbltbY29uZmlnLm1vdW50c11dXG5maWxlUGF0aCA9IFwiL3ZvbHVtZXMvcG9vbGVyL3Bvb2xlci5leHNcIlxuY29udGVudCA9IFwiXCJcIns6b2ssIF99ID0gQXBwbGljYXRpb24uZW5zdXJlX2FsbF9zdGFydGVkKDpzdXBhdmlzb3IpXG5cbns6b2ssIHZlcnNpb259ID1cbiAgY2FzZSBTdXBhdmlzb3IuUmVwby5xdWVyeSEoXCJzZWxlY3QgdmVyc2lvbigpXCIpIGRvXG4gICAgJXtyb3dzOiBbW3Zlcl1dfSAtPiBTdXBhdmlzb3IuSGVscGVycy5wYXJzZV9wZ192ZXJzaW9uKHZlcilcbiAgICBfIC0+IG5pbFxuICBlbmRcblxucGFyYW1zID0gJXtcbiAgXCJleHRlcm5hbF9pZFwiID0+IFN5c3RlbS5nZXRfZW52KFwiUE9PTEVSX1RFTkFOVF9JRFwiKSxcbiAgXCJkYl9ob3N0XCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT1NUR1JFU19IT1NUXCIpIHx8IFwiZGJcIixcbiAgXCJkYl9wb3J0XCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT1NUR1JFU19QT1JUXCIpLFxuICBcImRiX2RhdGFiYXNlXCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT1NUR1JFU19EQlwiKSxcbiAgXCJyZXF1aXJlX3VzZXJcIiA9PiBmYWxzZSxcbiAgXCJhdXRoX3F1ZXJ5XCIgPT4gXCJTRUxFQ1QgKiBGUk9NIHBnYm91bmNlci5nZXRfYXV0aCgkMSlcIixcbiAgXCJkZWZhdWx0X21heF9jbGllbnRzXCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT09MRVJfTUFYX0NMSUVOVF9DT05OXCIpLFxuICBcImRlZmF1bHRfcG9vbF9zaXplXCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT09MRVJfREVGQVVMVF9QT09MX1NJWkVcIiksXG4gIFwiZGVmYXVsdF9wYXJhbWV0ZXJfc3RhdHVzXCIgPT4gJXtcInNlcnZlcl92ZXJzaW9uXCIgPT4gdmVyc2lvbn0sXG4gIFwidXNlcnNcIiA9PiBbJXtcbiAgICBcImRiX3VzZXJcIiA9PiBcInBnYm91bmNlclwiLFxuICAgIFwiZGJfcGFzc3dvcmRcIiA9PiBTeXN0ZW0uZ2V0X2VudihcIlBPU1RHUkVTX1BBU1NXT1JEXCIpLFxuICAgIFwibW9kZV90eXBlXCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT09MRVJfUE9PTF9NT0RFXCIpLFxuICAgIFwicG9vbF9zaXplXCIgPT4gU3lzdGVtLmdldF9lbnYoXCJQT09MRVJfREVGQVVMVF9QT09MX1NJWkVcIiksXG4gICAgXCJpc19tYW5hZ2VyXCIgPT4gdHJ1ZVxuICB9XVxufVxuXG5pZiAhU3VwYXZpc29yLlRlbmFudHMuZ2V0X3RlbmFudF9ieV9leHRlcm5hbF9pZChwYXJhbXNbXCJleHRlcm5hbF9pZFwiXSkgZG9cbiAgezpvaywgX30gPSBTdXBhdmlzb3IuVGVuYW50cy5jcmVhdGVfdGVuYW50KHBhcmFtcylcbmVuZFxuXCJcIlwiIgp9
The exact Docker Compose and template configuration this template deploys.
>= 0.22.5).POSTGRES_PASSWORD, JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY, DASHBOARD_PASSWORD, etc.). You can review them in the Environment tab of the service.The main domain of the template points to the kong API gateway (port 8000), which protects Supabase Studio with basic authentication:
DASHBOARD_USERNAME (default: supabase)DASHBOARD_PASSWORDBoth values are in the Environment tab of the service in Dokploy.
To connect an application (for example with supabase-js):
https://<your-domain> (requests are routed through Kong)ANON_KEY in the Environment tabSERVICE_ROLE_KEY in the Environment tab (server-side only, never expose it to browsers)Review these variables in the Environment tab before using Supabase in production:
SUPABASE_PUBLIC_URL and API_EXTERNAL_URL: must point to your Supabase domain with the correct http/https scheme (the template sets them from your domain automatically).SITE_URL and ADDITIONAL_REDIRECT_URLS: must point to the application that uses Supabase for authentication.SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_ADMIN_EMAIL, SMTP_SENDER_NAME: required for auth emails (sign-up confirmations, password resets). The template ships with placeholder values, so no real emails are sent until you configure a real SMTP provider.The Postgres data directory (mounted at files/volumes/db/data) is initialized once, on the first deploy, using the value of POSTGRES_PASSWORD at that moment. The same password is also assigned to the internal Supabase roles (authenticator, pgbouncer, supabase_auth_admin, supabase_functions_admin, supabase_storage_admin) by an init script that only runs on first boot.
If you later change POSTGRES_PASSWORD in the Environment tab and redeploy, the password stored inside the database does not change. The other services will start using the new password while the database still expects the old one, and you will see errors such as invalid_password or password authentication failed.
To actually change the password, use one of these options:
db container (in Dokploy: your Supabase service, db container, Terminal) and run psql -U postgres.sql
POSTGRES_PASSWORD in the Environment tab to the same value and redeploy.Only if the instance has no data you care about: stop the service, delete the files/volumes/db/data directory of the service, set the new POSTGRES_PASSWORD, and deploy again. The database will be initialized from scratch with the new password.
Version: 1.25.04 / dokploy < 0.22.5
The open source Firebase alternative. Supabase gives you a dedicated Postgres database to build your web, mobile, and AI applications. This is for dokploy version < 0.22.5.
Version: 1.9.5
Appwrite is an end-to-end platform for building Web, Mobile, Native, or Backend apps, packaged as a set of Docker microservices. It includes both a backend server and a fully integrated hosting solution for deploying static and server-side rendered frontends. Appwrite abstracts the complexity and repetitiveness required to build modern apps from scratch and allows you to build secure, full-stack applications faster. Using Appwrite, you can easily integrate your app with user authentication and multiple sign-in methods, a database for storing and querying users and team data, storage and file management, image manipulation, Cloud Functions, messaging, and more services.
Version: 2.7.2
Autobase for PostgreSQL® is an open-source alternative to cloud-managed databases (self-hosted DBaaS).
Version: 8.3
pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.
Version: latest
AdventureLog is an open-source activity tracker with maps, journaling, and Strava integration.
Version: latest
ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.
Dokploy is a free, open source deployment platform. Deploy SupaBase and 499+ other templates on your own infrastructure with a single click.