Zum Inhalt springen

Farben-Detektiv: Unterschied zwischen den Versionen

Aus MOOCsWiki Staging
My Code Plugin d6ccbc18b659bd9827ac802f446f1312
 
Farben-Detektiv: drei Wiederholungsfragen fachlich korrigiert; geprüftes Paket 1.1.1 (Wartung 20261002-58137).
 
Zeile 3: Zeile 3:
Ein kurzes Kunst-Lernspiel zu warmen, kühlen und komplementären Farben mit Fehlertraining für Klasse 5–7.
Ein kurzes Kunst-Lernspiel zu warmen, kühlen und komplementären Farben mit Fehlertraining für Klasse 5–7.


<aimoocgame title="Farben-Detektiv" cover="/extensions/AiMoocGenerator/resources/images/moocit.png" manifest="eyJmb3JtYXQiOiJTcGllbGUiLCJ0aXRsZSI6IkZhcmJlbi1EZXRla3RpdiIsInNob3J0RGVzY3JpcHRpb24iOiJFaW4ga3VyemVzIEt1bnN0LUxlcm5zcGllbCB6dSB3YXJtZW4sIGvDvGhsZW4gdW5kIGtvbXBsZW1lbnTDpHJlbiBGYXJiZW4gbWl0IEZlaGxlcnRyYWluaW5nIGbDvHIgS2xhc3NlIDXigJM3LiIsInN1YmplY3QiOiJLdW5zdCIsImNsYXNzUmFuZ2UiOiJLbGFzc2UgNeKAkzciLCJjYXRlZ29yaWVzIjpbIlNwaWVsZSIsIkt1bnN0IiwiRmFyYmVubGVocmUiXSwidGFncyI6WyJGYXJiZW4iLCJLb21wbGVtZW50w6RyZmFyYmVuIiwiRmFyYndpcmt1bmciLCJGYXJia29udHJhc3QiLCJLdW5zdHVudGVycmljaHQiLCJMZXJuc3BpZWwiLCJJbnRlcmFrdGl2Il0sImNvbnRyb2xzIjpbIk1hdXMiLCJUb3VjaCIsIlRhc3RhdHVyIl0sImZ1bGxzY3JlZW4iOnRydWUsImVudHJ5RmlsZSI6ImluZGV4Lmh0bWwiLCJzdHlsZUZpbGUiOiJzdHlsZS5jc3MiLCJzY3JpcHRGaWxlIjoic2NyaXB0LmpzIiwidmVyc2lvbiI6IjEuMS4wIiwibGFuZ3VhZ2UiOiJkZSIsImFjY2Vzc2liaWxpdHkiOiJrZXlib2FyZC10b3VjaC1tb3VzZSIsIm1lZGlhTW9kZSI6ImxpbmtlZCIsInByb2plY3RUeXBlIjoiZ2FtZSIsImNvdmVyVXJsIjoiIiwieW91dHViZVZpZGVvcyI6W10sImV4dGVybmFsTGlua3MiOltdLCJjb21tb25zU291cmNlcyI6W119" ziphash="78b9c8a0db353493727909de6e77bac1b5cc6baf5cdc7cf30b11870ff3257447">
<aimoocgame title="Farben-Detektiv" cover="/extensions/AiMoocGenerator/resources/images/moocit.png" manifest="eyJmb3JtYXQiOiJTcGllbGUiLCJ0aXRsZSI6IkZhcmJlbi1EZXRla3RpdiIsInNob3J0RGVzY3JpcHRpb24iOiJFaW4ga3VyemVzIEt1bnN0LUxlcm5zcGllbCB6dSB3YXJtZW4sIGvDvGhsZW4gdW5kIGtvbXBsZW1lbnTDpHJlbiBGYXJiZW4gbWl0IEZlaGxlcnRyYWluaW5nIGbDvHIgS2xhc3NlIDXigJM3LiIsInN1YmplY3QiOiJLdW5zdCIsImNsYXNzUmFuZ2UiOiJLbGFzc2UgNeKAkzciLCJjYXRlZ29yaWVzIjpbIlNwaWVsZSIsIkt1bnN0IiwiRmFyYmVubGVocmUiXSwidGFncyI6WyJGYXJiZW4iLCJLb21wbGVtZW50w6RyZmFyYmVuIiwiRmFyYndpcmt1bmciLCJGYXJia29udHJhc3QiLCJLdW5zdHVudGVycmljaHQiLCJMZXJuc3BpZWwiLCJJbnRlcmFrdGl2Il0sImNvbnRyb2xzIjpbIk1hdXMiLCJUb3VjaCIsIlRhc3RhdHVyIl0sImZ1bGxzY3JlZW4iOnRydWUsImVudHJ5RmlsZSI6ImluZGV4Lmh0bWwiLCJzdHlsZUZpbGUiOiJzdHlsZS5jc3MiLCJzY3JpcHRGaWxlIjoic2NyaXB0LmpzIiwidmVyc2lvbiI6IjEuMS4xIiwibGFuZ3VhZ2UiOiJkZSIsImFjY2Vzc2liaWxpdHkiOiJrZXlib2FyZC10b3VjaC1tb3VzZSIsIm1lZGlhTW9kZSI6ImxpbmtlZCIsInByb2plY3RUeXBlIjoiZ2FtZSIsImNvdmVyVXJsIjoiIiwieW91dHViZVZpZGVvcyI6W10sImV4dGVybmFsTGlua3MiOltdLCJjb21tb25zU291cmNlcyI6W119" ziphash="bb2a46c57756f07b7a5482c96a5b83d8d19e558e9d508d9808d534ceb21c4ecd">
PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImRlIiBkaXI9Imx0ciI+CjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJkZWZhdWx0LXNyYyAnbm9uZSc7IHNjcmlwdC1zcmMgJ3Vuc2FmZS1pbmxpbmUnOyBzdHlsZS1zcmMgJ3Vuc2FmZS1pbmxpbmUnOyBpbWctc3JjIGRhdGE6IGh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmc7IG1lZGlhLXNyYyBkYXRhOjsgZm9udC1zcmMgZGF0YTo7IGNvbm5lY3Qtc3JjICdub25lJzsgZnJhbWUtc3JjICdub25lJzsgb2JqZWN0LXNyYyAnbm9uZSc7IGJhc2UtdXJpICdub25lJzsgZm9ybS1hY3Rpb24gJ25vbmUnOyB3b3JrZXItc3JjICdub25lJyI+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdmlld3BvcnQtZml0PWNvdmVyIj4KICA8dGl0bGU+RmFyYmVuLURldGVrdGl2PC90aXRsZT4KICAKICAKPHN0eWxlPgo6cm9vdCB7CiAgZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBzYW5zLXNlcmlmOwogIGNvbG9yOiAjMTcxNzE3OwogIGJhY2tncm91bmQ6ICNmNGYyZWQ7CiAgZm9udC1zeW50aGVzaXM6IG5vbmU7Cn0KKiB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KYm9keSB7IG1hcmdpbjogMDsgbWluLXdpZHRoOiAyODBweDsgYmFja2dyb3VuZDogI2Y0ZjJlZDsgfQpidXR0b24sIHN1bW1hcnkgeyBmb250OiBpbmhlcml0OyB9CmJ1dHRvbiB7CiAgbWluLWhlaWdodDogNDRweDsKICBib3JkZXI6IDJweCBzb2xpZCAjMTcxNzE3OwogIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgcGFkZGluZzogLjcycmVtIDFyZW07CiAgYmFja2dyb3VuZDogI2ZmZjsKICBjb2xvcjogIzE3MTcxNzsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZm9udC13ZWlnaHQ6IDc1MDsKfQpidXR0b246aG92ZXIgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IH0KYnV0dG9uOmZvY3VzLXZpc2libGUsIHN1bW1hcnk6Zm9jdXMtdmlzaWJsZSB7IG91dGxpbmU6IDRweCBzb2xpZCAjMTcxNzE3OyBvdXRsaW5lLW9mZnNldDogM3B4OyB9CmJ1dHRvbjpkaXNhYmxlZCB7IG9wYWNpdHk6IC40ODsgY3Vyc29yOiBub3QtYWxsb3dlZDsgdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsgfQoucHJpbWFyeSB7IGJhY2tncm91bmQ6ICMxNzE3MTc7IGNvbG9yOiAjZmZmOyB9Ci5hcHAgeyBtaW4taGVpZ2h0OiAxMDB2aDsgbWluLWhlaWdodDogMTAwZHZoOyBwYWRkaW5nOiBtYXgoMXJlbSwgZW52KHNhZmUtYXJlYS1pbnNldC10b3ApKSBtYXgoMXJlbSwgZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCkpIG1heCgxcmVtLCBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpIG1heCgxcmVtLCBlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQpKTsgfQouc2NyZWVuIHsgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDJyZW0pOyBtaW4taGVpZ2h0OiBjYWxjKDEwMGR2aCAtIDJyZW0pOyB9Ci5oaWRkZW4geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KLnN0YXJ0LXNjcmVlbiwgLmVuZC1wYW5lbCB7IGRpc3BsYXk6IGdyaWQ7IHBsYWNlLWl0ZW1zOiBjZW50ZXI7IH0KLnBhbmVsLCAucGxheS1wYW5lbCB7IHdpZHRoOiBtaW4oODYwcHgsIDEwMCUpOyBtYXJnaW46IDAgYXV0bzsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyOiAzcHggc29saWQgIzE3MTcxNzsgYm9yZGVyLXJhZGl1czogMjRweDsgcGFkZGluZzogY2xhbXAoMXJlbSwgM3Z3LCAycmVtKTsgYm94LXNoYWRvdzogOHB4IDhweCAwICMxNzE3MTc7IH0KLmhlcm8geyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KLmV5ZWJyb3cgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogLjEyZW07IGZvbnQtc2l6ZTogLjhyZW07IGZvbnQtd2VpZ2h0OiA4NTA7IG1hcmdpbjogMCAwIC4zNXJlbTsgfQpoMSB7IGZvbnQtc2l6ZTogY2xhbXAoMi4ycmVtLCA4dncsIDQuNnJlbSk7IGxpbmUtaGVpZ2h0OiAuOTU7IG1hcmdpbjogLjRyZW0gMCAxcmVtOyB9CmgyIHsgbGluZS1oZWlnaHQ6IDEuMTU7IH0KLmxlYWQgeyBmb250LXNpemU6IGNsYW1wKDEuMDVyZW0sIDN2dywgMS40cmVtKTsgfQpkZXRhaWxzIHsgdGV4dC1hbGlnbjogbGVmdDsgbWFyZ2luOiAxcmVtIGF1dG8gMS40cmVtOyBtYXgtd2lkdGg6IDY1MHB4OyB9CnN1bW1hcnkgeyBtaW4taGVpZ2h0OiA0NHB4OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgY3Vyc29yOiBwb2ludGVyOyBmb250LXdlaWdodDogODAwOyB9Ci5taW5pLXdoZWVsIHsgZGlzcGxheTogZmxleDsgZ2FwOiAuNDVyZW07IGp1c3RpZnktY29udGVudDogY2VudGVyOyBtYXJnaW46IDFyZW0gMDsgZmxleC13cmFwOiB3cmFwOyB9Ci5kb3QgeyB3aWR0aDogNDRweDsgaGVpZ2h0OiA0NHB4OyBib3JkZXI6IDJweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiA1MCU7IGRpc3BsYXk6IGdyaWQ7IHBsYWNlLWl0ZW1zOiBjZW50ZXI7IH0KLmRvdCBzcGFuIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuODgpOyBib3JkZXI6IDFweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiA5OTlweDsgbWluLXdpZHRoOiAyNHB4OyBwYWRkaW5nOiAuMDhyZW0gLjJyZW07IGZvbnQtc2l6ZTogLjdyZW07IGZvbnQtd2VpZ2h0OiA5MDA7IH0KLnJlZCB7IGJhY2tncm91bmQ6ICNkNjQwNDU7IH0ub3JhbmdlIHsgYmFja2dyb3VuZDogI2YyOGMyODsgfS55ZWxsb3cgeyBiYWNrZ3JvdW5kOiAjZjRkMzVlOyB9LmdyZWVuIHsgYmFja2dyb3VuZDogIzRmOGE1YjsgfS5ibHVlIHsgYmFja2dyb3VuZDogIzJmNmZiMDsgfS52aW9sZXQgeyBiYWNrZ3JvdW5kOiAjN2Y1YWEyOyB9Ci50b3BiYXIgeyB3aWR0aDogbWluKDEwMjBweCwgMTAwJSk7IG1hcmdpbjogMCBhdXRvIDFyZW07IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgZ2FwOiAxcmVtOyBhbGlnbi1pdGVtczogY2VudGVyOyB9Ci50b3BiYXIgcCB7IG1hcmdpbjogLjE1cmVtIDA7IH0KLnRvb2xiYXIgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IC41cmVtOyBmbGV4LXdyYXA6IHdyYXA7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH0KLnBsYXktcGFuZWwgeyBtYXgtd2lkdGg6IDEwMjBweDsgfQouc3RhdHVzLXJvdyB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7IGdhcDogMXJlbTsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQouc2NvcmUtYm94IHsgbWluLXdpZHRoOiA5MnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlcjogMnB4IHNvbGlkICMxNzE3MTc7IGJvcmRlci1yYWRpdXM6IDE0cHg7IHBhZGRpbmc6IC41cmVtOyB9Ci5zY29yZS1ib3ggc3BhbiB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IC44cmVtOyB9Ci5zY29yZS1ib3ggc3Ryb25nIHsgZm9udC1zaXplOiAxLjVyZW07IH0KLnByb2dyZXNzIHsgaGVpZ2h0OiAxNnB4OyBib3JkZXI6IDJweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiA5OTlweDsgb3ZlcmZsb3c6IGhpZGRlbjsgYmFja2dyb3VuZDogI2ZmZjsgfQoucHJvZ3Jlc3MtYmFyIHsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMCU7IGJhY2tncm91bmQ6ICMxNzE3MTc7IHRyYW5zaXRpb246IHdpZHRoIC4ycyBlYXNlOyB9Ci5tb2RlLWJhZGdlIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tdG9wOiAxcmVtOyBib3JkZXI6IDJweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiA5OTlweDsgcGFkZGluZzogLjI1cmVtIC42NXJlbTsgZm9udC1zaXplOiAuODJyZW07IGZvbnQtd2VpZ2h0OiA4MDA7IH0KLmFydC1jYXJkIHsgbWluLWhlaWdodDogMTgwcHg7IG1hcmdpbjogMXJlbSAwIDEuNHJlbTsgYm9yZGVyOiAzcHggc29saWQgIzE3MTcxNzsgYm9yZGVyLXJhZGl1czogMThweDsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDgwcHgsIDFmcikpOyBvdmVyZmxvdzogaGlkZGVuOyBiYWNrZ3JvdW5kOiAjZWVlOyB9Ci5zd2F0Y2ggeyBtaW4taGVpZ2h0OiA5MHB4OyBkaXNwbGF5OiBncmlkOyBwbGFjZS1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAuOHJlbTsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogOTAwOyBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC4zNSk7IH0KLnN3YXRjaCBzcGFuIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuOSk7IGJvcmRlcjogMnB4IHNvbGlkICMxNzE3MTc7IGJvcmRlci1yYWRpdXM6IDk5OXB4OyBwYWRkaW5nOiAuM3JlbSAuNjVyZW07IH0KLmFuc3dlcnMgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IGdhcDogLjc1cmVtOyBtYXJnaW46IDFyZW0gMDsgfQouYW5zd2VyLWJ0biB7IHRleHQtYWxpZ246IGxlZnQ7IG1pbi1oZWlnaHQ6IDYwcHg7IGRpc3BsYXk6IGZsZXg7IGdhcDogLjY1cmVtOyBhbGlnbi1pdGVtczogY2VudGVyOyB9Ci5rZXljYXAgeyBmbGV4OiAwIDAgYXV0bzsgZGlzcGxheTogaW5saW5lLWdyaWQ7IHBsYWNlLWl0ZW1zOiBjZW50ZXI7IHdpZHRoOiAxLjhyZW07IGhlaWdodDogMS44cmVtOyBib3JkZXI6IDJweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiA3cHg7IGZvbnQtc2l6ZTogLjhyZW07IH0KLmZlZWRiYWNrIHsgbWluLWhlaWdodDogMy42cmVtOyBib3JkZXItbGVmdDogNXB4IHNvbGlkICMxNzE3MTc7IHBhZGRpbmc6IC43cmVtIC45cmVtOyBiYWNrZ3JvdW5kOiAjZjRmMmVkOyBib3JkZXItcmFkaXVzOiA2cHg7IH0KLmZlZWRiYWNrLm9rIHsgYmFja2dyb3VuZDogI2U4ZjJlNzsgfQouZmVlZGJhY2subm8geyBiYWNrZ3JvdW5kOiAjZmFlOWU5OyB9Ci5oaW50IHsgY29sb3I6ICMzZjNmM2Y7IH0KLmJpZy1zY29yZSB7IGZvbnQtc2l6ZTogY2xhbXAoMS42cmVtLCA1dncsIDIuNXJlbSk7IGZvbnQtd2VpZ2h0OiA5MDA7IH0KLnRyYW5zZmVyLCAucmV2aWV3LWJveCB7IGJvcmRlcjogMnB4IGRhc2hlZCAjMTcxNzE3OyBwYWRkaW5nOiAxcmVtOyBib3JkZXItcmFkaXVzOiAxNnB4OyBtYXJnaW46IDFyZW0gMDsgfQoucmV2aWV3LWJveCB7IGJvcmRlci1zdHlsZTogc29saWQ7IGJhY2tncm91bmQ6ICNmNGYyZWQ7IH0KZGlhbG9nIHsgd2lkdGg6IG1pbig2NTBweCwgY2FsYygxMDAlIC0gMnJlbSkpOyBib3JkZXI6IDNweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiAyMHB4OyBwYWRkaW5nOiAxLjJyZW07IH0KZGlhbG9nOjpiYWNrZHJvcCB7IGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjQ1KTsgfQpAbWVkaWEgKG1heC13aWR0aDogNzAwcHgpIHsKICAudG9wYmFyIHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KICAudG9vbGJhciB7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfQogIC5hbnN3ZXJzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH0KICAucGFuZWwsIC5wbGF5LXBhbmVsIHsgYm94LXNoYWRvdzogNXB4IDVweCAwICMxNzE3MTc7IH0KfQpAbWVkaWEgKG1heC13aWR0aDogMzYwcHgpIHsKICAudG9vbGJhciB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgd2lkdGg6IDEwMCU7IH0KICAudG9vbGJhciBidXR0b246bGFzdC1jaGlsZCB7IGdyaWQtY29sdW1uOiAxIC8gLTE7IH0KICAuc3RhdHVzLXJvdyB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsgc2Nyb2xsLWJlaGF2aW9yOiBhdXRvICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7IH0KICBidXR0b246aG92ZXIgeyB0cmFuc2Zvcm06IG5vbmU7IH0KfQoKPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICA8bWFpbiBpZD0iYXBwIiBjbGFzcz0iYXBwIj4KICAgIDxzZWN0aW9uIGlkPSJzdGFydFNjcmVlbiIgY2xhc3M9InNjcmVlbiBzdGFydC1zY3JlZW4iIGFyaWEtbGFiZWxsZWRieT0iZ2FtZVRpdGxlIj4KICAgICAgPGRpdiBjbGFzcz0icGFuZWwgaGVybyI+CiAgICAgICAgPHAgY2xhc3M9ImV5ZWJyb3ciPkt1bnN0IMK3IEZhcmJlbmxlaHJlPC9wPgogICAgICAgIDxoMSBpZD0iZ2FtZVRpdGxlIj5GYXJiZW4tRGV0ZWt0aXY8L2gxPgogICAgICAgIDxwIGNsYXNzPSJsZWFkIj5TcMO8cmUgRmFyYndpcmt1bmdlbiwgR2VnZW5wYWFyZSB1bmQgc3RhcmtlIEtvbnRyYXN0ZSBhdWYuPC9wPgogICAgICAgIDxkaXYgY2xhc3M9Im1pbmktd2hlZWwiIGFyaWEtbGFiZWw9IlNlY2hzIGJlc2NocmlmdGV0ZSBGYXJiZmVsZGVyIGFscyB2ZXJlaW5mYWNodGVyIEZhcmJrcmVpcyI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IHJlZCIgdGl0bGU9IlJvdCI+PHNwYW4+Ujwvc3Bhbj48L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IG9yYW5nZSIgdGl0bGU9Ik9yYW5nZSI+PHNwYW4+Tzwvc3Bhbj48L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IHllbGxvdyIgdGl0bGU9IkdlbGIiPjxzcGFuPkc8L3NwYW4+PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImRvdCBncmVlbiIgdGl0bGU9Ikdyw7xuIj48c3Bhbj5Hcjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IGJsdWUiIHRpdGxlPSJCbGF1Ij48c3Bhbj5CPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3QgdmlvbGV0IiB0aXRsZT0iVmlvbGV0dCI+PHNwYW4+Vjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGgyPkRlaW4gQXVmdHJhZzwvaDI+CiAgICAgICAgPHA+T3JkbmUgRmFyYmVuIGVpbiwgZXJrZW5uZSBLb21wbGVtZW50w6RycGFhcmUgdW5kIHdlbmRlIGRhcyBXaXNzZW4gYXVmIGtsZWluZSBHZXN0YWx0dW5nc3NpdHVhdGlvbmVuIGFuLjwvcD4KICAgICAgICA8ZGV0YWlscz4KICAgICAgICAgIDxzdW1tYXJ5PlNwaWVscmVnZWxuIHVuZCBNb2RlbGw8L3N1bW1hcnk+CiAgICAgICAgICA8cD5KZWRlIEF1ZmdhYmUgaGF0IHZpZXIgQW50d29ydGVuLiBCZWltIGVyc3RlbiByaWNodGlnZW4gVmVyc3VjaCBnaWJ0IGVzIDEwIFB1bmt0ZSwgZGFuYWNoIDUsIDMgb2RlciAxLiBGYWxzY2hlIEFudHdvcnRlbiB3ZXJkZW4gZsO8ciBkaWUgYWt0dWVsbGUgQXVmZ2FiZSBnZXNwZXJydC48L3A+CiAgICAgICAgICA8cD5EYXMgU3BpZWwgbnV0enQgZWluZW4gPHN0cm9uZz52ZXJlaW5mYWNodGVuIHNjaHVsaXNjaGVuIFJZQi1GYXJia3JlaXM8L3N0cm9uZz4uIFdhcm0va2FsdCBiZXNjaHJlaWJ0IGVpbmUgdHlwaXNjaGUgV2lya3VuZywga2VpbmUgdW52ZXLDpG5kZXJsaWNoZSBFaWdlbnNjaGFmdDogVW1nZWJ1bmcgdW5kIEtvbWJpbmF0aW9uIGJlZWluZmx1c3NlbiBkZW4gRWluZHJ1Y2suPC9wPgogICAgICAgIDwvZGV0YWlscz4KICAgICAgICA8YnV0dG9uIGlkPSJzdGFydEJ0biIgY2xhc3M9InByaW1hcnkiIHR5cGU9ImJ1dHRvbiI+U3BpZWwgc3RhcnRlbjwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8c2VjdGlvbiBpZD0iZ2FtZVNjcmVlbiIgY2xhc3M9InNjcmVlbiBoaWRkZW4iIGFyaWEtbGFiZWxsZWRieT0icXVlc3Rpb25UaXRsZSI+CiAgICAgIDxoZWFkZXIgY2xhc3M9InRvcGJhciI+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxwIGNsYXNzPSJleWVicm93Ij5GYXJiZW4tRGV0ZWt0aXY8L3A+CiAgICAgICAgICA8cCBpZD0icHJvZ3Jlc3NUZXh0Ij5BdWZnYWJlIDEgdm9uIDg8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhciIgYXJpYS1sYWJlbD0iU3BpZWxtZW7DvCI+CiAgICAgICAgICA8YnV0dG9uIGlkPSJoZWxwQnRuIiB0eXBlPSJidXR0b24iPkhpbGZlPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGlkPSJyZXNldEJ0biIgdHlwZT0iYnV0dG9uIj5OZXUgc3RhcnRlbjwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBpZD0iZXhpdEJ0biIgdHlwZT0iYnV0dG9uIj5BdXNzdGllZzwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2hlYWRlcj4KCiAgICAgIDxzZWN0aW9uIGNsYXNzPSJwbGF5LXBhbmVsIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0dXMtcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InNjb3JlLWJveCI+PHNwYW4+UHVua3RlPC9zcGFuPjxzdHJvbmcgaWQ9InNjb3JlVGV4dCI+MDwvc3Ryb25nPjwvZGl2PgogICAgICAgICAgPGRpdiBpZD0icHJvZ3Jlc3NUcmFjayIgY2xhc3M9InByb2dyZXNzIiByb2xlPSJwcm9ncmVzc2JhciIgYXJpYS1sYWJlbD0iRm9ydHNjaHJpdHQiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjgiIGFyaWEtdmFsdWVub3c9IjAiPgogICAgICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzc0JhciIgY2xhc3M9InByb2dyZXNzLWJhciI+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJtb2RlQmFkZ2UiIGNsYXNzPSJtb2RlLWJhZGdlIj5IYXVwdHJ1bmRlPC9kaXY+CiAgICAgICAgPGRpdiBpZD0iYXJ0Q2FyZCIgY2xhc3M9ImFydC1jYXJkIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkZhcmJrYXJ0ZW4genVyIEF1ZmdhYmUiPjwvZGl2PgogICAgICAgIDxoMiBpZD0icXVlc3Rpb25UaXRsZSI+PC9oMj4KICAgICAgICA8cCBpZD0icXVlc3Rpb25IaW50IiBjbGFzcz0iaGludCI+PC9wPgogICAgICAgIDxkaXYgaWQ9ImFuc3dlcnMiIGNsYXNzPSJhbnN3ZXJzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQW50d29ydG3DtmdsaWNoa2VpdGVuIj48L2Rpdj4KICAgICAgICA8cCBpZD0iZmVlZGJhY2siIGNsYXNzPSJmZWVkYmFjayIgdGFiaW5kZXg9Ii0xIiBhcmlhLWxpdmU9InBvbGl0ZSI+PC9wPgogICAgICAgIDxidXR0b24gaWQ9Im5leHRCdG4iIGNsYXNzPSJwcmltYXJ5IGhpZGRlbiIgdHlwZT0iYnV0dG9uIj5Ow6RjaHN0ZSBBdWZnYWJlPC9idXR0b24+CiAgICAgIDwvc2VjdGlvbj4KICAgIDwvc2VjdGlvbj4KCiAgICA8c2VjdGlvbiBpZD0iZW5kU2NyZWVuIiBjbGFzcz0ic2NyZWVuIGhpZGRlbiIgYXJpYS1sYWJlbGxlZGJ5PSJlbmRUaXRsZSI+CiAgICAgIDxkaXYgY2xhc3M9InBhbmVsIGVuZC1wYW5lbCI+CiAgICAgICAgPHAgY2xhc3M9ImV5ZWJyb3ciPkRldGVrdGl2YmVyaWNodDwvcD4KICAgICAgICA8aDIgaWQ9ImVuZFRpdGxlIj5SdW5kZSBhYmdlc2NobG9zc2VuPC9oMj4KICAgICAgICA8cCBpZD0iZW5kU2NvcmUiIGNsYXNzPSJiaWctc2NvcmUiPjwvcD4KICAgICAgICA8cCBpZD0iZW5kTWVzc2FnZSI+PC9wPgogICAgICAgIDxkaXYgaWQ9InJldmlld0JveCIgY2xhc3M9InJldmlldy1ib3ggaGlkZGVuIj4KICAgICAgICAgIDxoMz5Ob2NoIHVuc2ljaGVyPzwvaDM+CiAgICAgICAgICA8cCBpZD0icmV2aWV3VGV4dCI+PC9wPgogICAgICAgICAgPGJ1dHRvbiBpZD0icmV2aWV3QnRuIiBjbGFzcz0icHJpbWFyeSIgdHlwZT0iYnV0dG9uIj5GZWhsZXJ0cmFpbmluZyBzdGFydGVuPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idHJhbnNmZXIiPgogICAgICAgICAgPGgzPlRyYW5zZmVyIGluIGRlaW5lIFVtZ2VidW5nPC9oMz4KICAgICAgICAgIDxwPlN1Y2hlIHp3ZWkgc3Rhcmsga29udHJhc3RpZXJlbmRlIEZhcmJlbiBhbiBlaW5lbSBHZWdlbnN0YW5kLCBQbGFrYXQgb2RlciBLbGVpZHVuZ3NzdMO8Y2suIEJlbmVubmUgYmVpZGUgdW5kIGVudHNjaGVpZGU6IGVjaHRlcyBLb21wbGVtZW50w6RycGFhciBpbSB2ZXJlaW5mYWNodGVuIFJZQi1LcmVpcyDigJMgb2RlciBlaW5mYWNoIGVpbiBhbmRlcmVyIHN0YXJrZXIgS29udHJhc3Q/PC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxidXR0b24gaWQ9ImFnYWluQnRuIiBjbGFzcz0icHJpbWFyeSIgdHlwZT0iYnV0dG9uIj5OZXVlIEhhdXB0cnVuZGU8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIGlkPSJob21lQnRuIiB0eXBlPSJidXR0b24iPlp1ciBTdGFydHNlaXRlIGRlcyBTcGllbHM8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24gaWQ9InJldmlld0VuZFNjcmVlbiIgY2xhc3M9InNjcmVlbiBoaWRkZW4iIGFyaWEtbGFiZWxsZWRieT0icmV2aWV3RW5kVGl0bGUiPgogICAgICA8ZGl2IGNsYXNzPSJwYW5lbCBlbmQtcGFuZWwiPgogICAgICAgIDxwIGNsYXNzPSJleWVicm93Ij5GZWhsZXJ0cmFpbmluZzwvcD4KICAgICAgICA8aDIgaWQ9InJldmlld0VuZFRpdGxlIj5TcHVyZW4gZ2VrbMOkcnQ8L2gyPgogICAgICAgIDxwIGlkPSJyZXZpZXdFbmRNZXNzYWdlIj5EdSBoYXN0IGRpZSB6dXZvciBzY2h3aWVyaWdlbiBJZGVlbiBub2NoIGVpbm1hbCBpbiBuZXVlciBGb3JtIGJlYXJiZWl0ZXQuPC9wPgogICAgICAgIDxidXR0b24gaWQ9InJldmlld0FnYWluQnRuIiBjbGFzcz0icHJpbWFyeSIgdHlwZT0iYnV0dG9uIj5adXIgbmV1ZW4gSGF1cHRydW5kZTwvYnV0dG9uPgogICAgICAgIDxidXR0b24gaWQ9InJldmlld0hvbWVCdG4iIHR5cGU9ImJ1dHRvbiI+WnVyIFN0YXJ0c2VpdGUgZGVzIFNwaWVsczwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGlhbG9nIGlkPSJoZWxwRGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9ImhlbHBUaXRsZSI+CiAgICAgIDxoMiBpZD0iaGVscFRpdGxlIj5TcGlja3pldHRlbDwvaDI+CiAgICAgIDxwPjxzdHJvbmc+VHlwaXNjaCB3YXJtOjwvc3Ryb25nPiBSb3QsIE9yYW5nZSB1bmQgR2VsYi48L3A+CiAgICAgIDxwPjxzdHJvbmc+VHlwaXNjaCBrw7xobDo8L3N0cm9uZz4gQmxhdSwgR3LDvG4gdW5kIFZpb2xldHQuPC9wPgogICAgICA8cD48c3Ryb25nPktvbXBsZW1lbnTDpHIgaW0gdmVyZWluZmFjaHRlbiBSWUItS3JlaXM6PC9zdHJvbmc+IFJvdOKAk0dyw7xuLCBCbGF14oCTT3JhbmdlLCBHZWxi4oCTVmlvbGV0dC48L3A+CiAgICAgIDxwPjxzdHJvbmc+V2ljaHRpZzo8L3N0cm9uZz4gRmFyYndpcmt1bmcgaMOkbmd0IGF1Y2ggdm9uIE5hY2hiYXJmYXJiZW4sIEhlbGxpZ2tlaXQsIFPDpHR0aWd1bmcgdW5kIEtvbnRleHQgYWIuIERhcyBTcGllbCB0cmFpbmllcnQgZWluIEdydW5kbW9kZWxsLjwvcD4KICAgICAgPHA+PHN0cm9uZz5UYXN0YXR1cjo8L3N0cm9uZz4gTWl0IDHigJM0IGthbm5zdCBkdSBBbnR3b3J0ZW4gd8OkaGxlbjsgRW50ZXIgYWt0aXZpZXJ0IGZva3Vzc2llcnRlIFNjaGFsdGZsw6RjaGVuLjwvcD4KICAgICAgPGJ1dHRvbiBpZD0iY2xvc2VIZWxwQnRuIiBjbGFzcz0icHJpbWFyeSIgdHlwZT0iYnV0dG9uIj5TY2hsaWXDn2VuPC9idXR0b24+CiAgICA8L2RpYWxvZz4KICA8L21haW4+CjxzY3JpcHQ+CiJ1c2Ugc3RyaWN0IjsKCmNvbnN0IHF1ZXN0aW9ucyA9IFsKICB7CiAgICBpZDogIndhcm0iLAogICAgY29uY2VwdDogIndhcm1lIEZhcmJlbiIsCiAgICBwcm9tcHQ6ICJXZWxjaGUgRmFyYmUgd2lyZCBpbiBkaWVzZW0gR3J1bmRtb2RlbGwgdHlwaXNjaGVyd2Vpc2UgYWxzIHdhcm0gZWluZ2VvcmRuZXQ/IiwKICAgIGhpbnQ6ICJEZW5rZSBhbiBTb25uZSwgRmV1ZXIgdW5kIEdsdXQuIiwKICAgIHN3YXRjaGVzOiBbWyIjZDY0MDQ1IiwgIlJvdCJdLCBbIiNmMjhjMjgiLCAiT3JhbmdlIl1dLAogICAgYW5zd2VyczogWyJCbGF1IiwgIk9yYW5nZSIsICJWaW9sZXR0IiwgIkdyw7xuIl0sCiAgICBjb3JyZWN0OiAxLAogICAgZXhwbGFuYXRpb246ICJPcmFuZ2Ugd2lyZCBpbSB2ZXJlaW5mYWNodGVuIHNjaHVsaXNjaGVuIEZhcmJtb2RlbGwgdHlwaXNjaGVyd2Vpc2UgZGVuIHdhcm1lbiBGYXJiZW4genVnZW9yZG5ldC4iCiAgfSwKICB7CiAgICBpZDogImNvb2wiLAogICAgY29uY2VwdDogImvDvGhsZSBGYXJiZW4iLAogICAgcHJvbXB0OiAiV2VsY2hlIEZhcmJlIHdpcmQgaW4gZGllc2VtIEdydW5kbW9kZWxsIHR5cGlzY2hlcndlaXNlIGFscyBrw7xobCBlaW5nZW9yZG5ldD8iLAogICAgaGludDogIkRlbmtlIGFuIFdhc3NlciwgU2NoYXR0ZW4gdW5kIEZlcm5lLiIsCiAgICBzd2F0Y2hlczogW1siIzJmNmZiMCIsICJCbGF1Il0sIFsiIzRmOGE1YiIsICJHcsO8biJdXSwKICAgIGFuc3dlcnM6IFsiR2VsYiIsICJPcmFuZ2UiLCAiQmxhdSIsICJSb3QiXSwKICAgIGNvcnJlY3Q6IDIsCiAgICBleHBsYW5hdGlvbjogIkJsYXUgd2lyZCBpbiBkaWVzZXIgR3J1bmRvcmRudW5nIHR5cGlzY2hlcndlaXNlIGFscyBrw7xobGUgRmFyYmUgZWluZ2VvcmRuZXQuIgogIH0sCiAgewogICAgaWQ6ICJjb250ZXh0IiwKICAgIGNvbmNlcHQ6ICJLb250ZXh0IGRlciBGYXJid2lya3VuZyIsCiAgICBwcm9tcHQ6ICJXZWxjaGUgQXVzc2FnZSDDvGJlciB3YXJtZSB1bmQga8O8aGxlIEZhcmJlbiBpc3QgYW0gdHJlZmZlbmRzdGVuPyIsCiAgICBoaW50OiAiRmFyYndpcmt1bmcgZW50c3RlaHQgbmljaHQgbnVyIGR1cmNoIGRlbiBGYXJibmFtZW4uIiwKICAgIHN3YXRjaGVzOiBbWyIjZjI4YzI4IiwgIk9yYW5nZSJdLCBbIiMyZjZmYjAiLCAiQmxhdSJdXSwKICAgIGFuc3dlcnM6IFsiRGllIFdpcmt1bmcgaXN0IGltbWVyIGdsZWljaC4iLCAiTnVyIEhlbGxpZ2tlaXQgZW50c2NoZWlkZXQuIiwgIldhcm0va2FsdCBpc3QgZWluIG7DvHR6bGljaGVzIEdydW5kbW9kZWxsLCBhYmVyIEtvbnRleHQgdmVyw6RuZGVydCBkaWUgV2lya3VuZy4iLCAiSmVkZSBGYXJiZSBpc3QgZ2xlaWNoemVpdGlnIHdhcm0gdW5kIGvDvGhsLiJdLAogICAgY29ycmVjdDogMiwKICAgIGV4cGxhbmF0aW9uOiAiR2VuYXU6IFdhcm0va2FsdCBpc3QgZWluZSBoaWxmcmVpY2hlIE9yaWVudGllcnVuZy4gTmFjaGJhcmZhcmJlbiwgSGVsbGlna2VpdCwgU8OkdHRpZ3VuZyB1bmQgS29udGV4dCBiZWVpbmZsdXNzZW4gZGllIHRhdHPDpGNobGljaGUgV2lya3VuZy4iCiAgfSwKICB7CiAgICBpZDogInJnIiwKICAgIGNvbmNlcHQ6ICJSb3TigJNHcsO8biIsCiAgICBwcm9tcHQ6ICJXZWxjaGVzIFBhYXIgbGllZ3Qgc2ljaCBpbSBoaWVyIGdlbnV0enRlbiB2ZXJlaW5mYWNodGVuIFJZQi1GYXJia3JlaXMgZ2VnZW7DvGJlcj8iLAogICAgaGludDogIkdlc3VjaHQgaXN0IGVpbiBLb21wbGVtZW50w6RycGFhci4iLAogICAgc3dhdGNoZXM6IFtbIiNkNjQwNDUiLCAiUm90Il0sIFsiIzRmOGE1YiIsICJHcsO8biJdXSwKICAgIGFuc3dlcnM6IFsiUm90IHVuZCBHcsO8biIsICJSb3QgdW5kIE9yYW5nZSIsICJCbGF1IHVuZCBHcsO8biIsICJHZWxiIHVuZCBPcmFuZ2UiXSwKICAgIGNvcnJlY3Q6IDAsCiAgICBleHBsYW5hdGlvbjogIlJvdCB1bmQgR3LDvG4gYmlsZGVuIGluIGRpZXNlbSB2ZXJlaW5mYWNodGVuIFJZQi1HcnVuZG1vZGVsbCBlaW4gS29tcGxlbWVudMOkcnBhYXIuIgogIH0sCiAgewogICAgaWQ6ICJibyIsCiAgICBjb25jZXB0OiAiQmxhdeKAk09yYW5nZSIsCiAgICBwcm9tcHQ6ICJXZWxjaGUgRmFyYmUgZXJnw6RuenQgQmxhdSBpbiBkaWVzZW0gdmVyZWluZmFjaHRlbiBGYXJia3JlaXMgYWxzIEtvbXBsZW1lbnTDpHJmYXJiZT8iLAogICAgaGludDogIlN1Y2hlIGRpZSB3YXJtZSBHZWdlbmZhcmJlIHp1IEJsYXUuIiwKICAgIHN3YXRjaGVzOiBbWyIjMmY2ZmIwIiwgIkJsYXUiXSwgWyIjZjI4YzI4IiwgIj8iXV0sCiAgICBhbnN3ZXJzOiBbIkdlbGIiLCAiT3JhbmdlIiwgIlZpb2xldHQiLCAiR3LDvG4iXSwKICAgIGNvcnJlY3Q6IDEsCiAgICBleHBsYW5hdGlvbjogIkJsYXUgdW5kIE9yYW5nZSBsaWVnZW4gc2ljaCBpbiBkaWVzZW0gdmVyZWluZmFjaHRlbiBSWUItRmFyYmtyZWlzIGdlZ2Vuw7xiZXIuIgogIH0sCiAgewogICAgaWQ6ICJ5diIsCiAgICBjb25jZXB0OiAiR2VsYuKAk1Zpb2xldHQiLAogICAgcHJvbXB0OiAiV2VsY2hlIEZhcmJlIGVyZ8Okbnp0IEdlbGIgaW4gZGllc2VtIHZlcmVpbmZhY2h0ZW4gRmFyYmtyZWlzIGFscyBLb21wbGVtZW50w6RyZmFyYmU/IiwKICAgIGhpbnQ6ICJTdWNoZSBkaWUgR2VnZW5mYXJiZSBhdWYgZGVyIGFuZGVyZW4gU2VpdGUgZGVzIEZhcmJrcmVpc2VzLiIsCiAgICBzd2F0Y2hlczogW1siI2Y0ZDM1ZSIsICJHZWxiIl0sIFsiIzdmNWFhMiIsICI/Il1dLAogICAgYW5zd2VyczogWyJSb3QiLCAiQmxhdSIsICJWaW9sZXR0IiwgIk9yYW5nZSJdLAogICAgY29ycmVjdDogMiwKICAgIGV4cGxhbmF0aW9uOiAiR2VsYiB1bmQgVmlvbGV0dCBiaWxkZW4gaW4gZGllc2VtIHZlcmVpbmZhY2h0ZW4gUllCLUdydW5kbW9kZWxsIGVpbiBLb21wbGVtZW50w6RycGFhci4iCiAgfSwKICB7CiAgICBpZDogImFwcGx5IiwKICAgIGNvbmNlcHQ6ICJLb21wbGVtZW50w6Rya29udHJhc3QgYW53ZW5kZW4iLAogICAgcHJvbXB0OiAiRWluZSBvcmFuZ2UgRmzDpGNoZSBzb2xsIGR1cmNoIGlocmUgR2VnZW5mYXJiZSBzdGFyayBrb250cmFzdGllcnQgd2VyZGVuLiBXZWxjaGUgRmFyYmUgcGFzc3QgaW0gR3J1bmRtb2RlbGwgYW0gYmVzdGVuPyIsCiAgICBoaW50OiAiRGVua2UgYW4gZGFzIEtvbXBsZW1lbnTDpHJwYWFyIHZvbiBPcmFuZ2UuIiwKICAgIHN3YXRjaGVzOiBbWyIjZjI4YzI4IiwgIk9yYW5nZSJdLCBbIiMyZjZmYjAiLCAiPyJdXSwKICAgIGFuc3dlcnM6IFsiUm90IiwgIkdlbGIiLCAiQmxhdSIsICJHcsO8biJdLAogICAgY29ycmVjdDogMiwKICAgIGV4cGxhbmF0aW9uOiAiQmxhdSBpc3QgaW0gdmVyZWluZmFjaHRlbiBSWUItRmFyYmtyZWlzIGRpZSBHZWdlbmZhcmJlIHp1IE9yYW5nZSB1bmQgZXJ6ZXVndCBkYW1pdCBlaW5lbiBkZXV0bGljaGVuIEtvbXBsZW1lbnTDpHJrb250cmFzdC4iCiAgfSwKICB7CiAgICBpZDogInRyYW5zZmVyIiwKICAgIGNvbmNlcHQ6ICJLb250cmFzdCB1bnRlcnNjaGVpZGVuIiwKICAgIHByb21wdDogIlp3ZWkgRmFyYmVuIHdpcmtlbiBzZWhyIHZlcnNjaGllZGVuLiBXYXMgbXVzc3QgZHUgcHLDvGZlbiwgYmV2b3IgZHUgc2llIEtvbXBsZW1lbnTDpHJmYXJiZW4gbmVubnN0PyIsCiAgICBoaW50OiAiU3RhcmtlciBVbnRlcnNjaGllZCBhbGxlaW4gcmVpY2h0IG5pY2h0LiIsCiAgICBzd2F0Y2hlczogW1siI2Q2NDA0NSIsICJSb3QiXSwgWyIjMmY2ZmIwIiwgIkJsYXUiXV0sCiAgICBhbnN3ZXJzOiBbIk9iIGJlaWRlIGhlbGwgc2luZC4iLCAiT2Igc2llIGltIHZlcndlbmRldGVuIEZhcmJrcmVpcyBlaW5hbmRlciBnZWdlbsO8YmVybGllZ2VuLiIsICJPYiBiZWlkZSB3YXJtIHdpcmtlbi4iLCAiT2Igc2llIGdsZWljaCBnZXPDpHR0aWd0IHNpbmQuIl0sCiAgICBjb3JyZWN0OiAxLAogICAgZXhwbGFuYXRpb246ICJSaWNodGlnOiBFaW4gc3RhcmtlciBLb250cmFzdCBpc3QgbmljaHQgYXV0b21hdGlzY2ggZWluIEtvbXBsZW1lbnTDpHJrb250cmFzdC4gRW50c2NoZWlkZW5kIGlzdCBkaWUgR2VnZW7DvGJlcnN0ZWxsdW5nIGltIHZlcndlbmRldGVuIEZhcmJtb2RlbGwuIgogIH0KXTsKCmNvbnN0IHJldmlld1Byb21wdHMgPSB7CiAgd2FybTogIkR1IGdlc3RhbHRlc3QgZWluZSBGZXVlcnN6ZW5lLiBXZWxjaGUgRmFyYmUgdW50ZXJzdMO8dHp0IGRpZSB0eXBpc2NoZSB3YXJtZSBXaXJrdW5nIGFtIGVoZXN0ZW4/IiwKICBjb29sOiAiRsO8ciBlaW5lIG7DpGNodGxpY2hlIFdhc3NlcnN6ZW5lIHN1Y2hzdCBkdSBlaW5lIHR5cGlzY2gga8O8aGxlIEdydW5kZmFyYmUuIFdlbGNoZSBwYXNzdCBhbSBlaGVzdGVuPyIsCiAgY29udGV4dDogIldhcnVtIGthbm4gZGllc2VsYmUgRmFyYmUgaW4gendlaSBCaWxkZXJuIHVudGVyc2NoaWVkbGljaCB3aXJrZW4/IiwKICByZzogIldlbGNoZSBHZWdlbmZhcmJlIGdlaMO2cnQgaW0gdmVyZWluZmFjaHRlbiBSWUItS3JlaXMgenUgUm90PyIsCiAgYm86ICJXZWxjaGUgR2VnZW5mYXJiZSBnZWjDtnJ0IGltIHZlcmVpbmZhY2h0ZW4gUllCLUtyZWlzIHp1IE9yYW5nZT8iLAogIHl2OiAiV2VsY2hlIEdlZ2VuZmFyYmUgZ2Vow7ZydCBpbSB2ZXJlaW5mYWNodGVuIFJZQi1LcmVpcyB6dSBWaW9sZXR0PyIsCiAgYXBwbHk6ICJXZWxjaGUgS29tYmluYXRpb24gbnV0enQgZ2V6aWVsdCBlaW5lbiBLb21wbGVtZW50w6Rya29udHJhc3QgenUgQmxhdT8iLAogIHRyYW5zZmVyOiAiV2FubiBkYXJmc3QgZHUgendlaSBzdGFyayB2ZXJzY2hpZWRlbmUgRmFyYmVuIGFscyBLb21wbGVtZW50w6RycGFhciBiZXplaWNobmVuPyIKfTsKCmNvbnN0IHBvaW50c0J5QXR0ZW1wdCA9IFsxMCwgNSwgMywgMV07CmNvbnN0IHN0YXRlID0geyBpbmRleDogMCwgc2NvcmU6IDAsIGF0dGVtcHQ6IDEsIHNvbHZlZDogZmFsc2UsIG1vZGU6ICJtYWluIiwgbWlzc2VkOiBuZXcgU2V0KCksIHJldmlld0l0ZW1zOiBbXSB9OwoKY29uc3QgJCA9IGlkID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKY29uc3Qgc2NyZWVucyA9IFskKCJzdGFydFNjcmVlbiIpLCAkKCJnYW1lU2NyZWVuIiksICQoImVuZFNjcmVlbiIpLCAkKCJyZXZpZXdFbmRTY3JlZW4iKV07CmNvbnN0IHN0YXJ0QnRuID0gJCgic3RhcnRCdG4iKSwgcmVzZXRCdG4gPSAkKCJyZXNldEJ0biIpLCBleGl0QnRuID0gJCgiZXhpdEJ0biIpLCBoZWxwQnRuID0gJCgiaGVscEJ0biIpLCBjbG9zZUhlbHBCdG4gPSAkKCJjbG9zZUhlbHBCdG4iKTsKY29uc3QgaGVscERpYWxvZyA9ICQoImhlbHBEaWFsb2ciKSwgYWdhaW5CdG4gPSAkKCJhZ2FpbkJ0biIpLCBob21lQnRuID0gJCgiaG9tZUJ0biIpLCBuZXh0QnRuID0gJCgibmV4dEJ0biIpLCByZXZpZXdCdG4gPSAkKCJyZXZpZXdCdG4iKTsKY29uc3QgcmV2aWV3QWdhaW5CdG4gPSAkKCJyZXZpZXdBZ2FpbkJ0biIpLCByZXZpZXdIb21lQnRuID0gJCgicmV2aWV3SG9tZUJ0biIpLCBxdWVzdGlvblRpdGxlID0gJCgicXVlc3Rpb25UaXRsZSIpLCBxdWVzdGlvbkhpbnQgPSAkKCJxdWVzdGlvbkhpbnQiKTsKY29uc3QgYW5zd2VycyA9ICQoImFuc3dlcnMiKSwgZmVlZGJhY2sgPSAkKCJmZWVkYmFjayIpLCBhcnRDYXJkID0gJCgiYXJ0Q2FyZCIpLCBwcm9ncmVzc1RleHQgPSAkKCJwcm9ncmVzc1RleHQiKSwgcHJvZ3Jlc3NCYXIgPSAkKCJwcm9ncmVzc0JhciIpOwpjb25zdCBwcm9ncmVzc1RyYWNrID0gJCgicHJvZ3Jlc3NUcmFjayIpLCBzY29yZVRleHQgPSAkKCJzY29yZVRleHQiKSwgZW5kU2NvcmUgPSAkKCJlbmRTY29yZSIpLCBlbmRNZXNzYWdlID0gJCgiZW5kTWVzc2FnZSIpLCByZXZpZXdCb3ggPSAkKCJyZXZpZXdCb3giKSwgcmV2aWV3VGV4dCA9ICQoInJldmlld1RleHQiKSwgbW9kZUJhZGdlID0gJCgibW9kZUJhZGdlIik7CgpmdW5jdGlvbiBzaG93T25seSh0YXJnZXQpIHsKICBzY3JlZW5zLmZvckVhY2goc2NyZWVuID0+IHNjcmVlbi5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKSk7CiAgdGFyZ2V0LmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOwp9CgpmdW5jdGlvbiByZXF1ZXN0RnVsbHNjcmVlbigpIHsKICBpZiAoIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbikgcmV0dXJuOwogIHRyeSB7CiAgICBjb25zdCByZXN1bHQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKTsKICAgIGlmIChyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdC5jYXRjaCA9PT0gImZ1bmN0aW9uIikgcmVzdWx0LmNhdGNoKCgpID0+IHt9KTsKICB9IGNhdGNoIChfKSB7fQp9CgpmdW5jdGlvbiByZXNldE1haW5TdGF0ZSgpIHsKICBzdGF0ZS5pbmRleCA9IDA7CiAgc3RhdGUuc2NvcmUgPSAwOwogIHN0YXRlLmF0dGVtcHQgPSAxOwogIHN0YXRlLnNvbHZlZCA9IGZhbHNlOwogIHN0YXRlLm1vZGUgPSAibWFpbiI7CiAgc3RhdGUubWlzc2VkLmNsZWFyKCk7CiAgc3RhdGUucmV2aWV3SXRlbXMgPSBbXTsKICBzY29yZVRleHQudGV4dENvbnRlbnQgPSAiMCI7Cn0KCmZ1bmN0aW9uIHN0YXJ0R2FtZSgpIHsKICByZXF1ZXN0RnVsbHNjcmVlbigpOwogIHJlc2V0TWFpblN0YXRlKCk7CiAgc2hvd09ubHkoJCgiZ2FtZVNjcmVlbiIpKTsKICByZW5kZXJRdWVzdGlvbigpOwp9CgpmdW5jdGlvbiBjdXJyZW50TGlzdCgpIHsgcmV0dXJuIHN0YXRlLm1vZGUgPT09ICJyZXZpZXciID8gc3RhdGUucmV2aWV3SXRlbXMgOiBxdWVzdGlvbnM7IH0KZnVuY3Rpb24gY3VycmVudFF1ZXN0aW9uKCkgeyByZXR1cm4gY3VycmVudExpc3QoKVtzdGF0ZS5pbmRleF07IH0KCmZ1bmN0aW9uIHJvdGF0ZWRSZXZpZXdRdWVzdGlvbihxLCBvZmZzZXQpIHsKICBjb25zdCBzaGlmdCA9IChvZmZzZXQgJSAzKSArIDE7CiAgY29uc3QgYW5zd2VyUGFpcnMgPSBxLmFuc3dlcnMubWFwKCh0ZXh0LCBpbmRleCkgPT4gKHsgdGV4dCwgY29ycmVjdDogaW5kZXggPT09IHEuY29ycmVjdCB9KSk7CiAgY29uc3Qgcm90YXRlZCA9IGFuc3dlclBhaXJzLnNsaWNlKHNoaWZ0KS5jb25jYXQoYW5zd2VyUGFpcnMuc2xpY2UoMCwgc2hpZnQpKTsKICByZXR1cm4gewogICAgaWQ6IHEuaWQsCiAgICBjb25jZXB0OiBxLmNvbmNlcHQsCiAgICBwcm9tcHQ6IHJldmlld1Byb21wdHNbcS5pZF0gfHwgcS5wcm9tcHQsCiAgICBoaW50OiBxLmhpbnQsCiAgICBzd2F0Y2hlczogcS5zd2F0Y2hlcywKICAgIGFuc3dlcnM6IHJvdGF0ZWQubWFwKGl0ZW0gPT4gaXRlbS50ZXh0KSwKICAgIGNvcnJlY3Q6IHJvdGF0ZWQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5jb3JyZWN0KSwKICAgIGV4cGxhbmF0aW9uOiBxLmV4cGxhbmF0aW9uCiAgfTsKfQoKZnVuY3Rpb24gcmVuZGVyU3dhdGNoZXMoaXRlbXMpIHsKICBhcnRDYXJkLnJlcGxhY2VDaGlsZHJlbigpOwogIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykgewogICAgY29uc3QgYmxvY2sgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgIGJsb2NrLmNsYXNzTmFtZSA9ICJzd2F0Y2giOwogICAgYmxvY2suc3R5bGUuYmFja2dyb3VuZENvbG9yID0gaXRlbVswXTsKICAgIGNvbnN0IGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgbGFiZWwudGV4dENvbnRlbnQgPSBpdGVtWzFdOwogICAgYmxvY2suYXBwZW5kKGxhYmVsKTsKICAgIGFydENhcmQuYXBwZW5kKGJsb2NrKTsKICB9Cn0KCmZ1bmN0aW9uIHJlbmRlclF1ZXN0aW9uKCkgewogIGNvbnN0IGxpc3QgPSBjdXJyZW50TGlzdCgpOwogIGNvbnN0IHEgPSBjdXJyZW50UXVlc3Rpb24oKTsKICBzdGF0ZS5hdHRlbXB0ID0gMTsKICBzdGF0ZS5zb2x2ZWQgPSBmYWxzZTsKICBmZWVkYmFjay50ZXh0Q29udGVudCA9ICJXw6RobGUgZWluZSBBbnR3b3J0LiBEdSBrYW5uc3QgYXVjaCBkaWUgVGFzdGVuIDHigJM0IHZlcndlbmRlbi4iOwogIGZlZWRiYWNrLmNsYXNzTmFtZSA9ICJmZWVkYmFjayI7CiAgbmV4dEJ0bi5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKICBxdWVzdGlvblRpdGxlLnRleHRDb250ZW50ID0gcS5wcm9tcHQ7CiAgcXVlc3Rpb25IaW50LnRleHRDb250ZW50ID0gcS5oaW50OwogIG1vZGVCYWRnZS50ZXh0Q29udGVudCA9IHN0YXRlLm1vZGUgPT09ICJyZXZpZXciID8gIkZlaGxlcnRyYWluaW5nIiA6ICJIYXVwdHJ1bmRlIjsKICBwcm9ncmVzc1RleHQudGV4dENvbnRlbnQgPSBgJHtzdGF0ZS5tb2RlID09PSAicmV2aWV3IiA/ICJUcmFpbmluZyIgOiAiQXVmZ2FiZSJ9ICR7c3RhdGUuaW5kZXggKyAxfSB2b24gJHtsaXN0Lmxlbmd0aH1gOwogIHByb2dyZXNzQmFyLnN0eWxlLndpZHRoID0gYCR7KHN0YXRlLmluZGV4IC8gbGlzdC5sZW5ndGgpICogMTAwfSVgOwogIHByb2dyZXNzVHJhY2suc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbWF4IiwgU3RyaW5nKGxpc3QubGVuZ3RoKSk7CiAgcHJvZ3Jlc3NUcmFjay5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVub3ciLCBTdHJpbmcoc3RhdGUuaW5kZXgpKTsKICByZW5kZXJTd2F0Y2hlcyhxLnN3YXRjaGVzKTsKICBhbnN3ZXJzLnJlcGxhY2VDaGlsZHJlbigpOwogIHEuYW5zd2Vycy5mb3JFYWNoKCh0ZXh0LCBpbmRleCkgPT4gewogICAgY29uc3QgYnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CiAgICBidG4udHlwZSA9ICJidXR0b24iOwogICAgYnRuLmNsYXNzTmFtZSA9ICJhbnN3ZXItYnRuIjsKICAgIGJ0bi5kYXRhc2V0LmluZGV4ID0gU3RyaW5nKGluZGV4KTsKICAgIGJ0bi5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBgQW50d29ydCAke2luZGV4ICsgMX06ICR7dGV4dH1gKTsKICAgIGNvbnN0IGtleSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgIGtleS5jbGFzc05hbWUgPSAia2V5Y2FwIjsKICAgIGtleS5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwgInRydWUiKTsKICAgIGtleS50ZXh0Q29udGVudCA9IFN0cmluZyhpbmRleCArIDEpOwogICAgY29uc3QgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICBsYWJlbC50ZXh0Q29udGVudCA9IHRleHQ7CiAgICBidG4uYXBwZW5kKGtleSwgbGFiZWwpOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgaGFuZGxlQW5zd2VyKTsKICAgIGFuc3dlcnMuYXBwZW5kKGJ0bik7CiAgfSk7CiAgY29uc3QgZmlyc3QgPSBhbnN3ZXJzLnF1ZXJ5U2VsZWN0b3IoImJ1dHRvbiIpOwogIGlmIChmaXJzdCkgZmlyc3QuZm9jdXMoKTsKfQoKZnVuY3Rpb24gaGFuZGxlQW5zd2VyKGV2ZW50KSB7CiAgaWYgKHN0YXRlLnNvbHZlZCkgcmV0dXJuOwogIGNvbnN0IGJ1dHRvbiA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7CiAgaWYgKGJ1dHRvbi5kaXNhYmxlZCkgcmV0dXJuOwogIGNvbnN0IHNlbGVjdGVkID0gTnVtYmVyKGJ1dHRvbi5kYXRhc2V0LmluZGV4KTsKICBjb25zdCBxID0gY3VycmVudFF1ZXN0aW9uKCk7CiAgaWYgKHNlbGVjdGVkID09PSBxLmNvcnJlY3QpIHsKICAgIHN0YXRlLnNvbHZlZCA9IHRydWU7CiAgICBpZiAoc3RhdGUubW9kZSA9PT0gIm1haW4iKSB7CiAgICAgIGNvbnN0IGVhcm5lZCA9IHBvaW50c0J5QXR0ZW1wdFtNYXRoLm1pbihzdGF0ZS5hdHRlbXB0IC0gMSwgcG9pbnRzQnlBdHRlbXB0Lmxlbmd0aCAtIDEpXTsKICAgICAgc3RhdGUuc2NvcmUgKz0gZWFybmVkOwogICAgICBzY29yZVRleHQudGV4dENvbnRlbnQgPSBTdHJpbmcoc3RhdGUuc2NvcmUpOwogICAgICBmZWVkYmFjay50ZXh0Q29udGVudCA9IGBSaWNodGlnISArJHtlYXJuZWR9IFB1bmt0ZS4gJHtxLmV4cGxhbmF0aW9ufWA7CiAgICB9IGVsc2UgewogICAgICBmZWVkYmFjay50ZXh0Q29udGVudCA9IGBSaWNodGlnLiAke3EuZXhwbGFuYXRpb259YDsKICAgIH0KICAgIGZlZWRiYWNrLmNsYXNzTmFtZSA9ICJmZWVkYmFjayBvayI7CiAgICBhbnN3ZXJzLnF1ZXJ5U2VsZWN0b3JBbGwoImJ1dHRvbiIpLmZvckVhY2goYnRuID0+IHsgYnRuLmRpc2FibGVkID0gdHJ1ZTsgfSk7CiAgICBjb25zdCBsYXN0ID0gc3RhdGUuaW5kZXggPT09IGN1cnJlbnRMaXN0KCkubGVuZ3RoIC0gMTsKICAgIG5leHRCdG4udGV4dENvbnRlbnQgPSBsYXN0ID8gKHN0YXRlLm1vZGUgPT09ICJyZXZpZXciID8gIlRyYWluaW5nIGFic2NobGllw59lbiIgOiAiRGV0ZWt0aXZiZXJpY2h0IGFuc2VoZW4iKSA6ICJOw6RjaHN0ZSBBdWZnYWJlIjsKICAgIG5leHRCdG4uY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7CiAgICBuZXh0QnRuLmZvY3VzKCk7CiAgfSBlbHNlIHsKICAgIGJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7CiAgICBpZiAoc3RhdGUubW9kZSA9PT0gIm1haW4iKSBzdGF0ZS5taXNzZWQuYWRkKHEuaWQpOwogICAgc3RhdGUuYXR0ZW1wdCArPSAxOwogICAgZmVlZGJhY2sudGV4dENvbnRlbnQgPSBgTm9jaCBuaWNodC4gJHtxLmhpbnR9IFZlcnN1Y2ggZXMgZXJuZXV0LmA7CiAgICBmZWVkYmFjay5jbGFzc05hbWUgPSAiZmVlZGJhY2sgbm8iOwogICAgZmVlZGJhY2suZm9jdXMoKTsKICB9Cn0KCmZ1bmN0aW9uIG5leHRRdWVzdGlvbigpIHsKICBpZiAoIXN0YXRlLnNvbHZlZCkgcmV0dXJuOwogIGNvbnN0IGxpc3QgPSBjdXJyZW50TGlzdCgpOwogIGlmIChzdGF0ZS5pbmRleCA8IGxpc3QubGVuZ3RoIC0gMSkgewogICAgc3RhdGUuaW5kZXggKz0gMTsKICAgIHJlbmRlclF1ZXN0aW9uKCk7CiAgICByZXR1cm47CiAgfQogIHByb2dyZXNzQmFyLnN0eWxlLndpZHRoID0gIjEwMCUiOwogIHByb2dyZXNzVHJhY2suc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbm93IiwgU3RyaW5nKGxpc3QubGVuZ3RoKSk7CiAgaWYgKHN0YXRlLm1vZGUgPT09ICJyZXZpZXciKSBzaG93UmV2aWV3RW5kKCk7IGVsc2Ugc2hvd0VuZCgpOwp9CgpmdW5jdGlvbiBzaG93RW5kKCkgewogIHNob3dPbmx5KCQoImVuZFNjcmVlbiIpKTsKICBlbmRTY29yZS50ZXh0Q29udGVudCA9IGAke3N0YXRlLnNjb3JlfSB2b24gJHtxdWVzdGlvbnMubGVuZ3RoICogMTB9IFB1bmt0ZW5gOwogIGlmIChzdGF0ZS5zY29yZSA+PSA2OCkgZW5kTWVzc2FnZS50ZXh0Q29udGVudCA9ICJTZWhyIHNpY2hlcjogRHUgZXJrZW5uc3QgR3J1bmRpZGVlbiB1bmQga2FubnN0IHNpZSBzY2hvbiBhdWYgR2VzdGFsdHVuZ3NzaXR1YXRpb25lbiDDvGJlcnRyYWdlbi4iOwogIGVsc2UgaWYgKHN0YXRlLnNjb3JlID49IDQ4KSBlbmRNZXNzYWdlLnRleHRDb250ZW50ID0gIlNvbGlkZSBTcHVyZW5zdWNoZTogRGllIHdpY2h0aWdzdGVuIEJlemllaHVuZ2VuIHNpdHplbi4gRWluemVsbmUgSWRlZW4gbG9obmVuIGVpbmUga3VyemUgV2llZGVyaG9sdW5nLiI7CiAgZWxzZSBlbmRNZXNzYWdlLnRleHRDb250ZW50ID0gIkd1dGVyIEFuZmFuZzogTnV0emUgZGFzIEZlaGxlcnRyYWluaW5nLiBEb3J0IGJlZ2VnbmVuIGRpciBzY2h3aWVyaWdlIElkZWVuIGluIG5ldWVyIEZvcm0uIjsKICBpZiAoc3RhdGUubWlzc2VkLnNpemUgPiAwKSB7CiAgICByZXZpZXdUZXh0LnRleHRDb250ZW50ID0gYER1IGhhdHRlc3QgYmVpICR7c3RhdGUubWlzc2VkLnNpemV9ICR7c3RhdGUubWlzc2VkLnNpemUgPT09IDEgPyAiSWRlZSIgOiAiSWRlZW4ifSBtaW5kZXN0ZW5zIGVpbmVuIEZlaGx2ZXJzdWNoLiBJbSBUcmFpbmluZyB3ZXJkZW4gZ2VuYXUgZGllc2UgSW5oYWx0ZSBuZXUgZm9ybXVsaWVydC5gOwogICAgcmV2aWV3Qm94LmNsYXNzTGlzdC5yZW1vdmUoImhpZGRlbiIpOwogICAgcmV2aWV3QnRuLmZvY3VzKCk7CiAgfSBlbHNlIHsKICAgIHJldmlld0JveC5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKICAgIGFnYWluQnRuLmZvY3VzKCk7CiAgfQp9CgpmdW5jdGlvbiBzdGFydFJldmlldygpIHsKICBzdGF0ZS5yZXZpZXdJdGVtcyA9IHF1ZXN0aW9ucy5maWx0ZXIocSA9PiBzdGF0ZS5taXNzZWQuaGFzKHEuaWQpKS5tYXAoKHEsIGkpID0+IHJvdGF0ZWRSZXZpZXdRdWVzdGlvbihxLCBpKSk7CiAgaWYgKCFzdGF0ZS5yZXZpZXdJdGVtcy5sZW5ndGgpIHJldHVybjsKICBzdGF0ZS5tb2RlID0gInJldmlldyI7CiAgc3RhdGUuaW5kZXggPSAwOwogIHNob3dPbmx5KCQoImdhbWVTY3JlZW4iKSk7CiAgcmVuZGVyUXVlc3Rpb24oKTsKfQoKZnVuY3Rpb24gc2hvd1Jldmlld0VuZCgpIHsKICBzaG93T25seSgkKCJyZXZpZXdFbmRTY3JlZW4iKSk7CiAgcmV2aWV3QWdhaW5CdG4uZm9jdXMoKTsKfQoKZnVuY3Rpb24gbGVhdmVHYW1lKCkgewogIGlmIChkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCAmJiBkb2N1bWVudC5leGl0RnVsbHNjcmVlbikgewogICAgdHJ5IHsKICAgICAgY29uc3QgcmVzdWx0ID0gZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0LmNhdGNoID09PSAiZnVuY3Rpb24iKSByZXN1bHQuY2F0Y2goKCkgPT4ge30pOwogICAgfSBjYXRjaCAoXykge30KICB9CiAgcmVzZXRNYWluU3RhdGUoKTsKICBzaG93T25seSgkKCJzdGFydFNjcmVlbiIpKTsKICBzdGFydEJ0bi5mb2N1cygpOwp9CgpmdW5jdGlvbiBvcGVuSGVscCgpIHsgaWYgKHR5cGVvZiBoZWxwRGlhbG9nLnNob3dNb2RhbCA9PT0gImZ1bmN0aW9uIikgaGVscERpYWxvZy5zaG93TW9kYWwoKTsgfQpmdW5jdGlvbiBjbG9zZUhlbHAoKSB7IGlmIChoZWxwRGlhbG9nLm9wZW4pIGhlbHBEaWFsb2cuY2xvc2UoKTsgfQoKc3RhcnRCdG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBzdGFydEdhbWUpOwpyZXNldEJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsgaWYgKHN0YXRlLm1vZGUgPT09ICJyZXZpZXciKSBzdGFydFJldmlldygpOyBlbHNlIHsgcmVzZXRNYWluU3RhdGUoKTsgcmVuZGVyUXVlc3Rpb24oKTsgfSB9KTsKZXhpdEJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGxlYXZlR2FtZSk7CmhlbHBCdG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBvcGVuSGVscCk7CmNsb3NlSGVscEJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGNsb3NlSGVscCk7CmFnYWluQnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4geyByZXNldE1haW5TdGF0ZSgpOyBzaG93T25seSgkKCJnYW1lU2NyZWVuIikpOyByZW5kZXJRdWVzdGlvbigpOyB9KTsKaG9tZUJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGxlYXZlR2FtZSk7CnJldmlld0J0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHN0YXJ0UmV2aWV3KTsKcmV2aWV3QWdhaW5CdG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7IHJlc2V0TWFpblN0YXRlKCk7IHNob3dPbmx5KCQoImdhbWVTY3JlZW4iKSk7IHJlbmRlclF1ZXN0aW9uKCk7IH0pOwpyZXZpZXdIb21lQnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgbGVhdmVHYW1lKTsKbmV4dEJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIG5leHRRdWVzdGlvbik7Cgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgZXZlbnQgPT4gewogIGlmIChldmVudC5rZXkgPT09ICJFc2NhcGUiICYmIGhlbHBEaWFsb2cub3BlbikgeyBjbG9zZUhlbHAoKTsgcmV0dXJuOyB9CiAgaWYgKGhlbHBEaWFsb2cub3BlbiB8fCAkKCJnYW1lU2NyZWVuIikuY2xhc3NMaXN0LmNvbnRhaW5zKCJoaWRkZW4iKSB8fCBzdGF0ZS5zb2x2ZWQpIHJldHVybjsKICBjb25zdCBjaG9pY2UgPSBOdW1iZXIoZXZlbnQua2V5KTsKICBpZiAoY2hvaWNlID49IDEgJiYgY2hvaWNlIDw9IDQpIHsKICAgIGNvbnN0IGJ1dHRvbiA9IGFuc3dlcnMucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uIilbY2hvaWNlIC0gMV07CiAgICBpZiAoYnV0dG9uICYmICFidXR0b24uZGlzYWJsZWQpIGJ1dHRvbi5jbGljaygpOwogIH0KfSk7Cgo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+
PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImRlIiBkaXI9Imx0ciI+CjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJkZWZhdWx0LXNyYyAnbm9uZSc7IHNjcmlwdC1zcmMgJ3Vuc2FmZS1pbmxpbmUnOyBzdHlsZS1zcmMgJ3Vuc2FmZS1pbmxpbmUnOyBpbWctc3JjIGRhdGE6IGh0dHBzOi8vdXBsb2FkLndpa2ltZWRpYS5vcmc7IG1lZGlhLXNyYyBkYXRhOjsgZm9udC1zcmMgZGF0YTo7IGNvbm5lY3Qtc3JjICdub25lJzsgZnJhbWUtc3JjICdub25lJzsgb2JqZWN0LXNyYyAnbm9uZSc7IGJhc2UtdXJpICdub25lJzsgZm9ybS1hY3Rpb24gJ25vbmUnOyB3b3JrZXItc3JjICdub25lJyI+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgdmlld3BvcnQtZml0PWNvdmVyIj4KICA8dGl0bGU+RmFyYmVuLURldGVrdGl2PC90aXRsZT4KICAKICAKPHN0eWxlPgo6cm9vdCB7CiAgZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAiU2Vnb2UgVUkiLCBzYW5zLXNlcmlmOwogIGNvbG9yOiAjMTcxNzE3OwogIGJhY2tncm91bmQ6ICNmNGYyZWQ7CiAgZm9udC1zeW50aGVzaXM6IG5vbmU7Cn0KKiB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KYm9keSB7IG1hcmdpbjogMDsgbWluLXdpZHRoOiAyODBweDsgYmFja2dyb3VuZDogI2Y0ZjJlZDsgfQpidXR0b24sIHN1bW1hcnkgeyBmb250OiBpbmhlcml0OyB9CmJ1dHRvbiB7CiAgbWluLWhlaWdodDogNDRweDsKICBib3JkZXI6IDJweCBzb2xpZCAjMTcxNzE3OwogIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgcGFkZGluZzogLjcycmVtIDFyZW07CiAgYmFja2dyb3VuZDogI2ZmZjsKICBjb2xvcjogIzE3MTcxNzsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZm9udC13ZWlnaHQ6IDc1MDsKfQpidXR0b246aG92ZXIgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IH0KYnV0dG9uOmZvY3VzLXZpc2libGUsIHN1bW1hcnk6Zm9jdXMtdmlzaWJsZSB7IG91dGxpbmU6IDRweCBzb2xpZCAjMTcxNzE3OyBvdXRsaW5lLW9mZnNldDogM3B4OyB9CmJ1dHRvbjpkaXNhYmxlZCB7IG9wYWNpdHk6IC40ODsgY3Vyc29yOiBub3QtYWxsb3dlZDsgdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsgfQoucHJpbWFyeSB7IGJhY2tncm91bmQ6ICMxNzE3MTc7IGNvbG9yOiAjZmZmOyB9Ci5hcHAgeyBtaW4taGVpZ2h0OiAxMDB2aDsgbWluLWhlaWdodDogMTAwZHZoOyBwYWRkaW5nOiBtYXgoMXJlbSwgZW52KHNhZmUtYXJlYS1pbnNldC10b3ApKSBtYXgoMXJlbSwgZW52KHNhZmUtYXJlYS1pbnNldC1yaWdodCkpIG1heCgxcmVtLCBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpIG1heCgxcmVtLCBlbnYoc2FmZS1hcmVhLWluc2V0LWxlZnQpKTsgfQouc2NyZWVuIHsgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDJyZW0pOyBtaW4taGVpZ2h0OiBjYWxjKDEwMGR2aCAtIDJyZW0pOyB9Ci5oaWRkZW4geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KLnN0YXJ0LXNjcmVlbiwgLmVuZC1wYW5lbCB7IGRpc3BsYXk6IGdyaWQ7IHBsYWNlLWl0ZW1zOiBjZW50ZXI7IH0KLnBhbmVsLCAucGxheS1wYW5lbCB7IHdpZHRoOiBtaW4oODYwcHgsIDEwMCUpOyBtYXJnaW46IDAgYXV0bzsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyOiAzcHggc29saWQgIzE3MTcxNzsgYm9yZGVyLXJhZGl1czogMjRweDsgcGFkZGluZzogY2xhbXAoMXJlbSwgM3Z3LCAycmVtKTsgYm94LXNoYWRvdzogOHB4IDhweCAwICMxNzE3MTc7IH0KLmhlcm8geyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KLmV5ZWJyb3cgeyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogLjEyZW07IGZvbnQtc2l6ZTogLjhyZW07IGZvbnQtd2VpZ2h0OiA4NTA7IG1hcmdpbjogMCAwIC4zNXJlbTsgfQpoMSB7IGZvbnQtc2l6ZTogY2xhbXAoMi4ycmVtLCA4dncsIDQuNnJlbSk7IGxpbmUtaGVpZ2h0OiAuOTU7IG1hcmdpbjogLjRyZW0gMCAxcmVtOyB9CmgyIHsgbGluZS1oZWlnaHQ6IDEuMTU7IH0KLmxlYWQgeyBmb250LXNpemU6IGNsYW1wKDEuMDVyZW0sIDN2dywgMS40cmVtKTsgfQpkZXRhaWxzIHsgdGV4dC1hbGlnbjogbGVmdDsgbWFyZ2luOiAxcmVtIGF1dG8gMS40cmVtOyBtYXgtd2lkdGg6IDY1MHB4OyB9CnN1bW1hcnkgeyBtaW4taGVpZ2h0OiA0NHB4OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgY3Vyc29yOiBwb2ludGVyOyBmb250LXdlaWdodDogODAwOyB9Ci5taW5pLXdoZWVsIHsgZGlzcGxheTogZmxleDsgZ2FwOiAuNDVyZW07IGp1c3RpZnktY29udGVudDogY2VudGVyOyBtYXJnaW46IDFyZW0gMDsgZmxleC13cmFwOiB3cmFwOyB9Ci5kb3QgeyB3aWR0aDogNDRweDsgaGVpZ2h0OiA0NHB4OyBib3JkZXI6IDJweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiA1MCU7IGRpc3BsYXk6IGdyaWQ7IHBsYWNlLWl0ZW1zOiBjZW50ZXI7IH0KLmRvdCBzcGFuIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuODgpOyBib3JkZXI6IDFweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiA5OTlweDsgbWluLXdpZHRoOiAyNHB4OyBwYWRkaW5nOiAuMDhyZW0gLjJyZW07IGZvbnQtc2l6ZTogLjdyZW07IGZvbnQtd2VpZ2h0OiA5MDA7IH0KLnJlZCB7IGJhY2tncm91bmQ6ICNkNjQwNDU7IH0ub3JhbmdlIHsgYmFja2dyb3VuZDogI2YyOGMyODsgfS55ZWxsb3cgeyBiYWNrZ3JvdW5kOiAjZjRkMzVlOyB9LmdyZWVuIHsgYmFja2dyb3VuZDogIzRmOGE1YjsgfS5ibHVlIHsgYmFja2dyb3VuZDogIzJmNmZiMDsgfS52aW9sZXQgeyBiYWNrZ3JvdW5kOiAjN2Y1YWEyOyB9Ci50b3BiYXIgeyB3aWR0aDogbWluKDEwMjBweCwgMTAwJSk7IG1hcmdpbjogMCBhdXRvIDFyZW07IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgZ2FwOiAxcmVtOyBhbGlnbi1pdGVtczogY2VudGVyOyB9Ci50b3BiYXIgcCB7IG1hcmdpbjogLjE1cmVtIDA7IH0KLnRvb2xiYXIgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IC41cmVtOyBmbGV4LXdyYXA6IHdyYXA7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH0KLnBsYXktcGFuZWwgeyBtYXgtd2lkdGg6IDEwMjBweDsgfQouc3RhdHVzLXJvdyB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byAxZnI7IGdhcDogMXJlbTsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQouc2NvcmUtYm94IHsgbWluLXdpZHRoOiA5MnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlcjogMnB4IHNvbGlkICMxNzE3MTc7IGJvcmRlci1yYWRpdXM6IDE0cHg7IHBhZGRpbmc6IC41cmVtOyB9Ci5zY29yZS1ib3ggc3BhbiB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IC44cmVtOyB9Ci5zY29yZS1ib3ggc3Ryb25nIHsgZm9udC1zaXplOiAxLjVyZW07IH0KLnByb2dyZXNzIHsgaGVpZ2h0OiAxNnB4OyBib3JkZXI6IDJweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiA5OTlweDsgb3ZlcmZsb3c6IGhpZGRlbjsgYmFja2dyb3VuZDogI2ZmZjsgfQoucHJvZ3Jlc3MtYmFyIHsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMCU7IGJhY2tncm91bmQ6ICMxNzE3MTc7IHRyYW5zaXRpb246IHdpZHRoIC4ycyBlYXNlOyB9Ci5tb2RlLWJhZGdlIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tdG9wOiAxcmVtOyBib3JkZXI6IDJweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiA5OTlweDsgcGFkZGluZzogLjI1cmVtIC42NXJlbTsgZm9udC1zaXplOiAuODJyZW07IGZvbnQtd2VpZ2h0OiA4MDA7IH0KLmFydC1jYXJkIHsgbWluLWhlaWdodDogMTgwcHg7IG1hcmdpbjogMXJlbSAwIDEuNHJlbTsgYm9yZGVyOiAzcHggc29saWQgIzE3MTcxNzsgYm9yZGVyLXJhZGl1czogMThweDsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDgwcHgsIDFmcikpOyBvdmVyZmxvdzogaGlkZGVuOyBiYWNrZ3JvdW5kOiAjZWVlOyB9Ci5zd2F0Y2ggeyBtaW4taGVpZ2h0OiA5MHB4OyBkaXNwbGF5OiBncmlkOyBwbGFjZS1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAuOHJlbTsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXdlaWdodDogOTAwOyBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC4zNSk7IH0KLnN3YXRjaCBzcGFuIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuOSk7IGJvcmRlcjogMnB4IHNvbGlkICMxNzE3MTc7IGJvcmRlci1yYWRpdXM6IDk5OXB4OyBwYWRkaW5nOiAuM3JlbSAuNjVyZW07IH0KLmFuc3dlcnMgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7IGdhcDogLjc1cmVtOyBtYXJnaW46IDFyZW0gMDsgfQouYW5zd2VyLWJ0biB7IHRleHQtYWxpZ246IGxlZnQ7IG1pbi1oZWlnaHQ6IDYwcHg7IGRpc3BsYXk6IGZsZXg7IGdhcDogLjY1cmVtOyBhbGlnbi1pdGVtczogY2VudGVyOyB9Ci5rZXljYXAgeyBmbGV4OiAwIDAgYXV0bzsgZGlzcGxheTogaW5saW5lLWdyaWQ7IHBsYWNlLWl0ZW1zOiBjZW50ZXI7IHdpZHRoOiAxLjhyZW07IGhlaWdodDogMS44cmVtOyBib3JkZXI6IDJweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiA3cHg7IGZvbnQtc2l6ZTogLjhyZW07IH0KLmZlZWRiYWNrIHsgbWluLWhlaWdodDogMy42cmVtOyBib3JkZXItbGVmdDogNXB4IHNvbGlkICMxNzE3MTc7IHBhZGRpbmc6IC43cmVtIC45cmVtOyBiYWNrZ3JvdW5kOiAjZjRmMmVkOyBib3JkZXItcmFkaXVzOiA2cHg7IH0KLmZlZWRiYWNrLm9rIHsgYmFja2dyb3VuZDogI2U4ZjJlNzsgfQouZmVlZGJhY2subm8geyBiYWNrZ3JvdW5kOiAjZmFlOWU5OyB9Ci5oaW50IHsgY29sb3I6ICMzZjNmM2Y7IH0KLmJpZy1zY29yZSB7IGZvbnQtc2l6ZTogY2xhbXAoMS42cmVtLCA1dncsIDIuNXJlbSk7IGZvbnQtd2VpZ2h0OiA5MDA7IH0KLnRyYW5zZmVyLCAucmV2aWV3LWJveCB7IGJvcmRlcjogMnB4IGRhc2hlZCAjMTcxNzE3OyBwYWRkaW5nOiAxcmVtOyBib3JkZXItcmFkaXVzOiAxNnB4OyBtYXJnaW46IDFyZW0gMDsgfQoucmV2aWV3LWJveCB7IGJvcmRlci1zdHlsZTogc29saWQ7IGJhY2tncm91bmQ6ICNmNGYyZWQ7IH0KZGlhbG9nIHsgd2lkdGg6IG1pbig2NTBweCwgY2FsYygxMDAlIC0gMnJlbSkpOyBib3JkZXI6IDNweCBzb2xpZCAjMTcxNzE3OyBib3JkZXItcmFkaXVzOiAyMHB4OyBwYWRkaW5nOiAxLjJyZW07IH0KZGlhbG9nOjpiYWNrZHJvcCB7IGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsLjQ1KTsgfQpAbWVkaWEgKG1heC13aWR0aDogNzAwcHgpIHsKICAudG9wYmFyIHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KICAudG9vbGJhciB7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfQogIC5hbnN3ZXJzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH0KICAucGFuZWwsIC5wbGF5LXBhbmVsIHsgYm94LXNoYWRvdzogNXB4IDVweCAwICMxNzE3MTc7IH0KfQpAbWVkaWEgKG1heC13aWR0aDogMzYwcHgpIHsKICAudG9vbGJhciB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIDFmcjsgd2lkdGg6IDEwMCU7IH0KICAudG9vbGJhciBidXR0b246bGFzdC1jaGlsZCB7IGdyaWQtY29sdW1uOiAxIC8gLTE7IH0KICAuc3RhdHVzLXJvdyB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9Cn0KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsgc2Nyb2xsLWJlaGF2aW9yOiBhdXRvICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7IH0KICBidXR0b246aG92ZXIgeyB0cmFuc2Zvcm06IG5vbmU7IH0KfQoKPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KICA8bWFpbiBpZD0iYXBwIiBjbGFzcz0iYXBwIj4KICAgIDxzZWN0aW9uIGlkPSJzdGFydFNjcmVlbiIgY2xhc3M9InNjcmVlbiBzdGFydC1zY3JlZW4iIGFyaWEtbGFiZWxsZWRieT0iZ2FtZVRpdGxlIj4KICAgICAgPGRpdiBjbGFzcz0icGFuZWwgaGVybyI+CiAgICAgICAgPHAgY2xhc3M9ImV5ZWJyb3ciPkt1bnN0IMK3IEZhcmJlbmxlaHJlPC9wPgogICAgICAgIDxoMSBpZD0iZ2FtZVRpdGxlIj5GYXJiZW4tRGV0ZWt0aXY8L2gxPgogICAgICAgIDxwIGNsYXNzPSJsZWFkIj5TcMO8cmUgRmFyYndpcmt1bmdlbiwgR2VnZW5wYWFyZSB1bmQgc3RhcmtlIEtvbnRyYXN0ZSBhdWYuPC9wPgogICAgICAgIDxkaXYgY2xhc3M9Im1pbmktd2hlZWwiIGFyaWEtbGFiZWw9IlNlY2hzIGJlc2NocmlmdGV0ZSBGYXJiZmVsZGVyIGFscyB2ZXJlaW5mYWNodGVyIEZhcmJrcmVpcyI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IHJlZCIgdGl0bGU9IlJvdCI+PHNwYW4+Ujwvc3Bhbj48L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IG9yYW5nZSIgdGl0bGU9Ik9yYW5nZSI+PHNwYW4+Tzwvc3Bhbj48L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IHllbGxvdyIgdGl0bGU9IkdlbGIiPjxzcGFuPkc8L3NwYW4+PC9zcGFuPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImRvdCBncmVlbiIgdGl0bGU9Ikdyw7xuIj48c3Bhbj5Hcjwvc3Bhbj48L3NwYW4+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iZG90IGJsdWUiIHRpdGxlPSJCbGF1Ij48c3Bhbj5CPC9zcGFuPjwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3QgdmlvbGV0IiB0aXRsZT0iVmlvbGV0dCI+PHNwYW4+Vjwvc3Bhbj48L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGgyPkRlaW4gQXVmdHJhZzwvaDI+CiAgICAgICAgPHA+T3JkbmUgRmFyYmVuIGVpbiwgZXJrZW5uZSBLb21wbGVtZW50w6RycGFhcmUgdW5kIHdlbmRlIGRhcyBXaXNzZW4gYXVmIGtsZWluZSBHZXN0YWx0dW5nc3NpdHVhdGlvbmVuIGFuLjwvcD4KICAgICAgICA8ZGV0YWlscz4KICAgICAgICAgIDxzdW1tYXJ5PlNwaWVscmVnZWxuIHVuZCBNb2RlbGw8L3N1bW1hcnk+CiAgICAgICAgICA8cD5KZWRlIEF1ZmdhYmUgaGF0IHZpZXIgQW50d29ydGVuLiBCZWltIGVyc3RlbiByaWNodGlnZW4gVmVyc3VjaCBnaWJ0IGVzIDEwIFB1bmt0ZSwgZGFuYWNoIDUsIDMgb2RlciAxLiBGYWxzY2hlIEFudHdvcnRlbiB3ZXJkZW4gZsO8ciBkaWUgYWt0dWVsbGUgQXVmZ2FiZSBnZXNwZXJydC48L3A+CiAgICAgICAgICA8cD5EYXMgU3BpZWwgbnV0enQgZWluZW4gPHN0cm9uZz52ZXJlaW5mYWNodGVuIHNjaHVsaXNjaGVuIFJZQi1GYXJia3JlaXM8L3N0cm9uZz4uIFdhcm0va2FsdCBiZXNjaHJlaWJ0IGVpbmUgdHlwaXNjaGUgV2lya3VuZywga2VpbmUgdW52ZXLDpG5kZXJsaWNoZSBFaWdlbnNjaGFmdDogVW1nZWJ1bmcgdW5kIEtvbWJpbmF0aW9uIGJlZWluZmx1c3NlbiBkZW4gRWluZHJ1Y2suPC9wPgogICAgICAgIDwvZGV0YWlscz4KICAgICAgICA8YnV0dG9uIGlkPSJzdGFydEJ0biIgY2xhc3M9InByaW1hcnkiIHR5cGU9ImJ1dHRvbiI+U3BpZWwgc3RhcnRlbjwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8c2VjdGlvbiBpZD0iZ2FtZVNjcmVlbiIgY2xhc3M9InNjcmVlbiBoaWRkZW4iIGFyaWEtbGFiZWxsZWRieT0icXVlc3Rpb25UaXRsZSI+CiAgICAgIDxoZWFkZXIgY2xhc3M9InRvcGJhciI+CiAgICAgICAgPGRpdj4KICAgICAgICAgIDxwIGNsYXNzPSJleWVicm93Ij5GYXJiZW4tRGV0ZWt0aXY8L3A+CiAgICAgICAgICA8cCBpZD0icHJvZ3Jlc3NUZXh0Ij5BdWZnYWJlIDEgdm9uIDg8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idG9vbGJhciIgYXJpYS1sYWJlbD0iU3BpZWxtZW7DvCI+CiAgICAgICAgICA8YnV0dG9uIGlkPSJoZWxwQnRuIiB0eXBlPSJidXR0b24iPkhpbGZlPC9idXR0b24+CiAgICAgICAgICA8YnV0dG9uIGlkPSJyZXNldEJ0biIgdHlwZT0iYnV0dG9uIj5OZXUgc3RhcnRlbjwvYnV0dG9uPgogICAgICAgICAgPGJ1dHRvbiBpZD0iZXhpdEJ0biIgdHlwZT0iYnV0dG9uIj5BdXNzdGllZzwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICA8L2hlYWRlcj4KCiAgICAgIDxzZWN0aW9uIGNsYXNzPSJwbGF5LXBhbmVsIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzdGF0dXMtcm93Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InNjb3JlLWJveCI+PHNwYW4+UHVua3RlPC9zcGFuPjxzdHJvbmcgaWQ9InNjb3JlVGV4dCI+MDwvc3Ryb25nPjwvZGl2PgogICAgICAgICAgPGRpdiBpZD0icHJvZ3Jlc3NUcmFjayIgY2xhc3M9InByb2dyZXNzIiByb2xlPSJwcm9ncmVzc2JhciIgYXJpYS1sYWJlbD0iRm9ydHNjaHJpdHQiIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjgiIGFyaWEtdmFsdWVub3c9IjAiPgogICAgICAgICAgICA8ZGl2IGlkPSJwcm9ncmVzc0JhciIgY2xhc3M9InByb2dyZXNzLWJhciI+PC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGlkPSJtb2RlQmFkZ2UiIGNsYXNzPSJtb2RlLWJhZGdlIj5IYXVwdHJ1bmRlPC9kaXY+CiAgICAgICAgPGRpdiBpZD0iYXJ0Q2FyZCIgY2xhc3M9ImFydC1jYXJkIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkZhcmJrYXJ0ZW4genVyIEF1ZmdhYmUiPjwvZGl2PgogICAgICAgIDxoMiBpZD0icXVlc3Rpb25UaXRsZSI+PC9oMj4KICAgICAgICA8cCBpZD0icXVlc3Rpb25IaW50IiBjbGFzcz0iaGludCI+PC9wPgogICAgICAgIDxkaXYgaWQ9ImFuc3dlcnMiIGNsYXNzPSJhbnN3ZXJzIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iQW50d29ydG3DtmdsaWNoa2VpdGVuIj48L2Rpdj4KICAgICAgICA8cCBpZD0iZmVlZGJhY2siIGNsYXNzPSJmZWVkYmFjayIgdGFiaW5kZXg9Ii0xIiBhcmlhLWxpdmU9InBvbGl0ZSI+PC9wPgogICAgICAgIDxidXR0b24gaWQ9Im5leHRCdG4iIGNsYXNzPSJwcmltYXJ5IGhpZGRlbiIgdHlwZT0iYnV0dG9uIj5Ow6RjaHN0ZSBBdWZnYWJlPC9idXR0b24+CiAgICAgIDwvc2VjdGlvbj4KICAgIDwvc2VjdGlvbj4KCiAgICA8c2VjdGlvbiBpZD0iZW5kU2NyZWVuIiBjbGFzcz0ic2NyZWVuIGhpZGRlbiIgYXJpYS1sYWJlbGxlZGJ5PSJlbmRUaXRsZSI+CiAgICAgIDxkaXYgY2xhc3M9InBhbmVsIGVuZC1wYW5lbCI+CiAgICAgICAgPHAgY2xhc3M9ImV5ZWJyb3ciPkRldGVrdGl2YmVyaWNodDwvcD4KICAgICAgICA8aDIgaWQ9ImVuZFRpdGxlIj5SdW5kZSBhYmdlc2NobG9zc2VuPC9oMj4KICAgICAgICA8cCBpZD0iZW5kU2NvcmUiIGNsYXNzPSJiaWctc2NvcmUiPjwvcD4KICAgICAgICA8cCBpZD0iZW5kTWVzc2FnZSI+PC9wPgogICAgICAgIDxkaXYgaWQ9InJldmlld0JveCIgY2xhc3M9InJldmlldy1ib3ggaGlkZGVuIj4KICAgICAgICAgIDxoMz5Ob2NoIHVuc2ljaGVyPzwvaDM+CiAgICAgICAgICA8cCBpZD0icmV2aWV3VGV4dCI+PC9wPgogICAgICAgICAgPGJ1dHRvbiBpZD0icmV2aWV3QnRuIiBjbGFzcz0icHJpbWFyeSIgdHlwZT0iYnV0dG9uIj5GZWhsZXJ0cmFpbmluZyBzdGFydGVuPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0idHJhbnNmZXIiPgogICAgICAgICAgPGgzPlRyYW5zZmVyIGluIGRlaW5lIFVtZ2VidW5nPC9oMz4KICAgICAgICAgIDxwPlN1Y2hlIHp3ZWkgc3Rhcmsga29udHJhc3RpZXJlbmRlIEZhcmJlbiBhbiBlaW5lbSBHZWdlbnN0YW5kLCBQbGFrYXQgb2RlciBLbGVpZHVuZ3NzdMO8Y2suIEJlbmVubmUgYmVpZGUgdW5kIGVudHNjaGVpZGU6IGVjaHRlcyBLb21wbGVtZW50w6RycGFhciBpbSB2ZXJlaW5mYWNodGVuIFJZQi1LcmVpcyDigJMgb2RlciBlaW5mYWNoIGVpbiBhbmRlcmVyIHN0YXJrZXIgS29udHJhc3Q/PC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxidXR0b24gaWQ9ImFnYWluQnRuIiBjbGFzcz0icHJpbWFyeSIgdHlwZT0iYnV0dG9uIj5OZXVlIEhhdXB0cnVuZGU8L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIGlkPSJob21lQnRuIiB0eXBlPSJidXR0b24iPlp1ciBTdGFydHNlaXRlIGRlcyBTcGllbHM8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICA8L3NlY3Rpb24+CgogICAgPHNlY3Rpb24gaWQ9InJldmlld0VuZFNjcmVlbiIgY2xhc3M9InNjcmVlbiBoaWRkZW4iIGFyaWEtbGFiZWxsZWRieT0icmV2aWV3RW5kVGl0bGUiPgogICAgICA8ZGl2IGNsYXNzPSJwYW5lbCBlbmQtcGFuZWwiPgogICAgICAgIDxwIGNsYXNzPSJleWVicm93Ij5GZWhsZXJ0cmFpbmluZzwvcD4KICAgICAgICA8aDIgaWQ9InJldmlld0VuZFRpdGxlIj5TcHVyZW4gZ2VrbMOkcnQ8L2gyPgogICAgICAgIDxwIGlkPSJyZXZpZXdFbmRNZXNzYWdlIj5EdSBoYXN0IGRpZSB6dXZvciBzY2h3aWVyaWdlbiBJZGVlbiBub2NoIGVpbm1hbCBpbiBuZXVlciBGb3JtIGJlYXJiZWl0ZXQuPC9wPgogICAgICAgIDxidXR0b24gaWQ9InJldmlld0FnYWluQnRuIiBjbGFzcz0icHJpbWFyeSIgdHlwZT0iYnV0dG9uIj5adXIgbmV1ZW4gSGF1cHRydW5kZTwvYnV0dG9uPgogICAgICAgIDxidXR0b24gaWQ9InJldmlld0hvbWVCdG4iIHR5cGU9ImJ1dHRvbiI+WnVyIFN0YXJ0c2VpdGUgZGVzIFNwaWVsczwvYnV0dG9uPgogICAgICA8L2Rpdj4KICAgIDwvc2VjdGlvbj4KCiAgICA8ZGlhbG9nIGlkPSJoZWxwRGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9ImhlbHBUaXRsZSI+CiAgICAgIDxoMiBpZD0iaGVscFRpdGxlIj5TcGlja3pldHRlbDwvaDI+CiAgICAgIDxwPjxzdHJvbmc+VHlwaXNjaCB3YXJtOjwvc3Ryb25nPiBSb3QsIE9yYW5nZSB1bmQgR2VsYi48L3A+CiAgICAgIDxwPjxzdHJvbmc+VHlwaXNjaCBrw7xobDo8L3N0cm9uZz4gQmxhdSwgR3LDvG4gdW5kIFZpb2xldHQuPC9wPgogICAgICA8cD48c3Ryb25nPktvbXBsZW1lbnTDpHIgaW0gdmVyZWluZmFjaHRlbiBSWUItS3JlaXM6PC9zdHJvbmc+IFJvdOKAk0dyw7xuLCBCbGF14oCTT3JhbmdlLCBHZWxi4oCTVmlvbGV0dC48L3A+CiAgICAgIDxwPjxzdHJvbmc+V2ljaHRpZzo8L3N0cm9uZz4gRmFyYndpcmt1bmcgaMOkbmd0IGF1Y2ggdm9uIE5hY2hiYXJmYXJiZW4sIEhlbGxpZ2tlaXQsIFPDpHR0aWd1bmcgdW5kIEtvbnRleHQgYWIuIERhcyBTcGllbCB0cmFpbmllcnQgZWluIEdydW5kbW9kZWxsLjwvcD4KICAgICAgPHA+PHN0cm9uZz5UYXN0YXR1cjo8L3N0cm9uZz4gTWl0IDHigJM0IGthbm5zdCBkdSBBbnR3b3J0ZW4gd8OkaGxlbjsgRW50ZXIgYWt0aXZpZXJ0IGZva3Vzc2llcnRlIFNjaGFsdGZsw6RjaGVuLjwvcD4KICAgICAgPGJ1dHRvbiBpZD0iY2xvc2VIZWxwQnRuIiBjbGFzcz0icHJpbWFyeSIgdHlwZT0iYnV0dG9uIj5TY2hsaWXDn2VuPC9idXR0b24+CiAgICA8L2RpYWxvZz4KICA8L21haW4+CjxzY3JpcHQ+CiJ1c2Ugc3RyaWN0IjsKCmNvbnN0IHF1ZXN0aW9ucyA9IFsKICB7CiAgICBpZDogIndhcm0iLAogICAgY29uY2VwdDogIndhcm1lIEZhcmJlbiIsCiAgICBwcm9tcHQ6ICJXZWxjaGUgRmFyYmUgd2lyZCBpbiBkaWVzZW0gR3J1bmRtb2RlbGwgdHlwaXNjaGVyd2Vpc2UgYWxzIHdhcm0gZWluZ2VvcmRuZXQ/IiwKICAgIGhpbnQ6ICJEZW5rZSBhbiBTb25uZSwgRmV1ZXIgdW5kIEdsdXQuIiwKICAgIHN3YXRjaGVzOiBbWyIjZDY0MDQ1IiwgIlJvdCJdLCBbIiNmMjhjMjgiLCAiT3JhbmdlIl1dLAogICAgYW5zd2VyczogWyJCbGF1IiwgIk9yYW5nZSIsICJWaW9sZXR0IiwgIkdyw7xuIl0sCiAgICBjb3JyZWN0OiAxLAogICAgZXhwbGFuYXRpb246ICJPcmFuZ2Ugd2lyZCBpbSB2ZXJlaW5mYWNodGVuIHNjaHVsaXNjaGVuIEZhcmJtb2RlbGwgdHlwaXNjaGVyd2Vpc2UgZGVuIHdhcm1lbiBGYXJiZW4genVnZW9yZG5ldC4iCiAgfSwKICB7CiAgICBpZDogImNvb2wiLAogICAgY29uY2VwdDogImvDvGhsZSBGYXJiZW4iLAogICAgcHJvbXB0OiAiV2VsY2hlIEZhcmJlIHdpcmQgaW4gZGllc2VtIEdydW5kbW9kZWxsIHR5cGlzY2hlcndlaXNlIGFscyBrw7xobCBlaW5nZW9yZG5ldD8iLAogICAgaGludDogIkRlbmtlIGFuIFdhc3NlciwgU2NoYXR0ZW4gdW5kIEZlcm5lLiIsCiAgICBzd2F0Y2hlczogW1siIzJmNmZiMCIsICJCbGF1Il0sIFsiIzRmOGE1YiIsICJHcsO8biJdXSwKICAgIGFuc3dlcnM6IFsiR2VsYiIsICJPcmFuZ2UiLCAiQmxhdSIsICJSb3QiXSwKICAgIGNvcnJlY3Q6IDIsCiAgICBleHBsYW5hdGlvbjogIkJsYXUgd2lyZCBpbiBkaWVzZXIgR3J1bmRvcmRudW5nIHR5cGlzY2hlcndlaXNlIGFscyBrw7xobGUgRmFyYmUgZWluZ2VvcmRuZXQuIgogIH0sCiAgewogICAgaWQ6ICJjb250ZXh0IiwKICAgIGNvbmNlcHQ6ICJLb250ZXh0IGRlciBGYXJid2lya3VuZyIsCiAgICBwcm9tcHQ6ICJXZWxjaGUgQXVzc2FnZSDDvGJlciB3YXJtZSB1bmQga8O8aGxlIEZhcmJlbiBpc3QgYW0gdHJlZmZlbmRzdGVuPyIsCiAgICBoaW50OiAiRmFyYndpcmt1bmcgZW50c3RlaHQgbmljaHQgbnVyIGR1cmNoIGRlbiBGYXJibmFtZW4uIiwKICAgIHN3YXRjaGVzOiBbWyIjZjI4YzI4IiwgIk9yYW5nZSJdLCBbIiMyZjZmYjAiLCAiQmxhdSJdXSwKICAgIGFuc3dlcnM6IFsiRGllIFdpcmt1bmcgaXN0IGltbWVyIGdsZWljaC4iLCAiTnVyIEhlbGxpZ2tlaXQgZW50c2NoZWlkZXQuIiwgIldhcm0va2FsdCBpc3QgZWluIG7DvHR6bGljaGVzIEdydW5kbW9kZWxsLCBhYmVyIEtvbnRleHQgdmVyw6RuZGVydCBkaWUgV2lya3VuZy4iLCAiSmVkZSBGYXJiZSBpc3QgZ2xlaWNoemVpdGlnIHdhcm0gdW5kIGvDvGhsLiJdLAogICAgY29ycmVjdDogMiwKICAgIGV4cGxhbmF0aW9uOiAiR2VuYXU6IFdhcm0va2FsdCBpc3QgZWluZSBoaWxmcmVpY2hlIE9yaWVudGllcnVuZy4gTmFjaGJhcmZhcmJlbiwgSGVsbGlna2VpdCwgU8OkdHRpZ3VuZyB1bmQgS29udGV4dCBiZWVpbmZsdXNzZW4gZGllIHRhdHPDpGNobGljaGUgV2lya3VuZy4iCiAgfSwKICB7CiAgICBpZDogInJnIiwKICAgIGNvbmNlcHQ6ICJSb3TigJNHcsO8biIsCiAgICBwcm9tcHQ6ICJXZWxjaGVzIFBhYXIgbGllZ3Qgc2ljaCBpbSBoaWVyIGdlbnV0enRlbiB2ZXJlaW5mYWNodGVuIFJZQi1GYXJia3JlaXMgZ2VnZW7DvGJlcj8iLAogICAgaGludDogIkdlc3VjaHQgaXN0IGVpbiBLb21wbGVtZW50w6RycGFhci4iLAogICAgc3dhdGNoZXM6IFtbIiNkNjQwNDUiLCAiUm90Il0sIFsiIzRmOGE1YiIsICJHcsO8biJdXSwKICAgIGFuc3dlcnM6IFsiUm90IHVuZCBHcsO8biIsICJSb3QgdW5kIE9yYW5nZSIsICJCbGF1IHVuZCBHcsO8biIsICJHZWxiIHVuZCBPcmFuZ2UiXSwKICAgIGNvcnJlY3Q6IDAsCiAgICBleHBsYW5hdGlvbjogIlJvdCB1bmQgR3LDvG4gYmlsZGVuIGluIGRpZXNlbSB2ZXJlaW5mYWNodGVuIFJZQi1HcnVuZG1vZGVsbCBlaW4gS29tcGxlbWVudMOkcnBhYXIuIgogIH0sCiAgewogICAgaWQ6ICJibyIsCiAgICBjb25jZXB0OiAiQmxhdeKAk09yYW5nZSIsCiAgICBwcm9tcHQ6ICJXZWxjaGUgRmFyYmUgZXJnw6RuenQgQmxhdSBpbiBkaWVzZW0gdmVyZWluZmFjaHRlbiBGYXJia3JlaXMgYWxzIEtvbXBsZW1lbnTDpHJmYXJiZT8iLAogICAgaGludDogIlN1Y2hlIGRpZSB3YXJtZSBHZWdlbmZhcmJlIHp1IEJsYXUuIiwKICAgIHN3YXRjaGVzOiBbWyIjMmY2ZmIwIiwgIkJsYXUiXSwgWyIjZjI4YzI4IiwgIj8iXV0sCiAgICBhbnN3ZXJzOiBbIkdlbGIiLCAiT3JhbmdlIiwgIlZpb2xldHQiLCAiR3LDvG4iXSwKICAgIGNvcnJlY3Q6IDEsCiAgICBleHBsYW5hdGlvbjogIkJsYXUgdW5kIE9yYW5nZSBsaWVnZW4gc2ljaCBpbiBkaWVzZW0gdmVyZWluZmFjaHRlbiBSWUItRmFyYmtyZWlzIGdlZ2Vuw7xiZXIuIgogIH0sCiAgewogICAgaWQ6ICJ5diIsCiAgICBjb25jZXB0OiAiR2VsYuKAk1Zpb2xldHQiLAogICAgcHJvbXB0OiAiV2VsY2hlIEZhcmJlIGVyZ8Okbnp0IEdlbGIgaW4gZGllc2VtIHZlcmVpbmZhY2h0ZW4gRmFyYmtyZWlzIGFscyBLb21wbGVtZW50w6RyZmFyYmU/IiwKICAgIGhpbnQ6ICJTdWNoZSBkaWUgR2VnZW5mYXJiZSBhdWYgZGVyIGFuZGVyZW4gU2VpdGUgZGVzIEZhcmJrcmVpc2VzLiIsCiAgICBzd2F0Y2hlczogW1siI2Y0ZDM1ZSIsICJHZWxiIl0sIFsiIzdmNWFhMiIsICI/Il1dLAogICAgYW5zd2VyczogWyJSb3QiLCAiQmxhdSIsICJWaW9sZXR0IiwgIk9yYW5nZSJdLAogICAgY29ycmVjdDogMiwKICAgIGV4cGxhbmF0aW9uOiAiR2VsYiB1bmQgVmlvbGV0dCBiaWxkZW4gaW4gZGllc2VtIHZlcmVpbmZhY2h0ZW4gUllCLUdydW5kbW9kZWxsIGVpbiBLb21wbGVtZW50w6RycGFhci4iCiAgfSwKICB7CiAgICBpZDogImFwcGx5IiwKICAgIGNvbmNlcHQ6ICJLb21wbGVtZW50w6Rya29udHJhc3QgYW53ZW5kZW4iLAogICAgcHJvbXB0OiAiRWluZSBvcmFuZ2UgRmzDpGNoZSBzb2xsIGR1cmNoIGlocmUgR2VnZW5mYXJiZSBzdGFyayBrb250cmFzdGllcnQgd2VyZGVuLiBXZWxjaGUgRmFyYmUgcGFzc3QgaW0gR3J1bmRtb2RlbGwgYW0gYmVzdGVuPyIsCiAgICBoaW50OiAiRGVua2UgYW4gZGFzIEtvbXBsZW1lbnTDpHJwYWFyIHZvbiBPcmFuZ2UuIiwKICAgIHN3YXRjaGVzOiBbWyIjZjI4YzI4IiwgIk9yYW5nZSJdLCBbIiMyZjZmYjAiLCAiPyJdXSwKICAgIGFuc3dlcnM6IFsiUm90IiwgIkdlbGIiLCAiQmxhdSIsICJHcsO8biJdLAogICAgY29ycmVjdDogMiwKICAgIGV4cGxhbmF0aW9uOiAiQmxhdSBpc3QgaW0gdmVyZWluZmFjaHRlbiBSWUItRmFyYmtyZWlzIGRpZSBHZWdlbmZhcmJlIHp1IE9yYW5nZSB1bmQgZXJ6ZXVndCBkYW1pdCBlaW5lbiBkZXV0bGljaGVuIEtvbXBsZW1lbnTDpHJrb250cmFzdC4iCiAgfSwKICB7CiAgICBpZDogInRyYW5zZmVyIiwKICAgIGNvbmNlcHQ6ICJLb250cmFzdCB1bnRlcnNjaGVpZGVuIiwKICAgIHByb21wdDogIlp3ZWkgRmFyYmVuIHdpcmtlbiBzZWhyIHZlcnNjaGllZGVuLiBXYXMgbXVzc3QgZHUgcHLDvGZlbiwgYmV2b3IgZHUgc2llIEtvbXBsZW1lbnTDpHJmYXJiZW4gbmVubnN0PyIsCiAgICBoaW50OiAiU3RhcmtlciBVbnRlcnNjaGllZCBhbGxlaW4gcmVpY2h0IG5pY2h0LiIsCiAgICBzd2F0Y2hlczogW1siI2Q2NDA0NSIsICJSb3QiXSwgWyIjMmY2ZmIwIiwgIkJsYXUiXV0sCiAgICBhbnN3ZXJzOiBbIk9iIGJlaWRlIGhlbGwgc2luZC4iLCAiT2Igc2llIGltIHZlcndlbmRldGVuIEZhcmJrcmVpcyBlaW5hbmRlciBnZWdlbsO8YmVybGllZ2VuLiIsICJPYiBiZWlkZSB3YXJtIHdpcmtlbi4iLCAiT2Igc2llIGdsZWljaCBnZXPDpHR0aWd0IHNpbmQuIl0sCiAgICBjb3JyZWN0OiAxLAogICAgZXhwbGFuYXRpb246ICJSaWNodGlnOiBFaW4gc3RhcmtlciBLb250cmFzdCBpc3QgbmljaHQgYXV0b21hdGlzY2ggZWluIEtvbXBsZW1lbnTDpHJrb250cmFzdC4gRW50c2NoZWlkZW5kIGlzdCBkaWUgR2VnZW7DvGJlcnN0ZWxsdW5nIGltIHZlcndlbmRldGVuIEZhcmJtb2RlbGwuIgogIH0KXTsKCmNvbnN0IHJldmlld1Byb21wdHMgPSB7CiAgd2FybTogIkR1IGdlc3RhbHRlc3QgZWluZSBGZXVlcnN6ZW5lLiBXZWxjaGUgRmFyYmUgdW50ZXJzdMO8dHp0IGRpZSB0eXBpc2NoZSB3YXJtZSBXaXJrdW5nIGFtIGVoZXN0ZW4/IiwKICBjb29sOiAiRsO8ciBlaW5lIG7DpGNodGxpY2hlIFdhc3NlcnN6ZW5lIHN1Y2hzdCBkdSBlaW5lIHR5cGlzY2gga8O8aGxlIEdydW5kZmFyYmUuIFdlbGNoZSBwYXNzdCBhbSBlaGVzdGVuPyIsCiAgY29udGV4dDogIldhcnVtIGthbm4gZGllc2VsYmUgRmFyYmUgaW4gendlaSBCaWxkZXJuIHVudGVyc2NoaWVkbGljaCB3aXJrZW4/IiwKICByZzogIldlbGNoZSBHZWdlbmZhcmJlIGdlaMO2cnQgaW0gdmVyZWluZmFjaHRlbiBSWUItS3JlaXMgenUgUm90PyIsCiAgYm86ICJXZWxjaGUgd2FybWUgR2VnZW5mYXJiZSBnZWjDtnJ0IGltIHZlcmVpbmZhY2h0ZW4gUllCLUtyZWlzIHp1IEJsYXU/IiwKICB5djogIldlbGNoZSBHZWdlbmZhcmJlIGdlaMO2cnQgaW0gdmVyZWluZmFjaHRlbiBSWUItS3JlaXMgenUgR2VsYj8iLAogIGFwcGx5OiAiV2VsY2hlIEZhcmJlIGJpbGRldCBpbSB2ZXJlaW5mYWNodGVuIFJZQi1LcmVpcyBlaW5lbiBLb21wbGVtZW50w6Rya29udHJhc3QgenUgT3JhbmdlPyIsCiAgdHJhbnNmZXI6ICJXYW5uIGRhcmZzdCBkdSB6d2VpIHN0YXJrIHZlcnNjaGllZGVuZSBGYXJiZW4gYWxzIEtvbXBsZW1lbnTDpHJwYWFyIGJlemVpY2huZW4/Igp9OwoKY29uc3QgcG9pbnRzQnlBdHRlbXB0ID0gWzEwLCA1LCAzLCAxXTsKY29uc3Qgc3RhdGUgPSB7IGluZGV4OiAwLCBzY29yZTogMCwgYXR0ZW1wdDogMSwgc29sdmVkOiBmYWxzZSwgbW9kZTogIm1haW4iLCBtaXNzZWQ6IG5ldyBTZXQoKSwgcmV2aWV3SXRlbXM6IFtdIH07Cgpjb25zdCAkID0gaWQgPT4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwpjb25zdCBzY3JlZW5zID0gWyQoInN0YXJ0U2NyZWVuIiksICQoImdhbWVTY3JlZW4iKSwgJCgiZW5kU2NyZWVuIiksICQoInJldmlld0VuZFNjcmVlbiIpXTsKY29uc3Qgc3RhcnRCdG4gPSAkKCJzdGFydEJ0biIpLCByZXNldEJ0biA9ICQoInJlc2V0QnRuIiksIGV4aXRCdG4gPSAkKCJleGl0QnRuIiksIGhlbHBCdG4gPSAkKCJoZWxwQnRuIiksIGNsb3NlSGVscEJ0biA9ICQoImNsb3NlSGVscEJ0biIpOwpjb25zdCBoZWxwRGlhbG9nID0gJCgiaGVscERpYWxvZyIpLCBhZ2FpbkJ0biA9ICQoImFnYWluQnRuIiksIGhvbWVCdG4gPSAkKCJob21lQnRuIiksIG5leHRCdG4gPSAkKCJuZXh0QnRuIiksIHJldmlld0J0biA9ICQoInJldmlld0J0biIpOwpjb25zdCByZXZpZXdBZ2FpbkJ0biA9ICQoInJldmlld0FnYWluQnRuIiksIHJldmlld0hvbWVCdG4gPSAkKCJyZXZpZXdIb21lQnRuIiksIHF1ZXN0aW9uVGl0bGUgPSAkKCJxdWVzdGlvblRpdGxlIiksIHF1ZXN0aW9uSGludCA9ICQoInF1ZXN0aW9uSGludCIpOwpjb25zdCBhbnN3ZXJzID0gJCgiYW5zd2VycyIpLCBmZWVkYmFjayA9ICQoImZlZWRiYWNrIiksIGFydENhcmQgPSAkKCJhcnRDYXJkIiksIHByb2dyZXNzVGV4dCA9ICQoInByb2dyZXNzVGV4dCIpLCBwcm9ncmVzc0JhciA9ICQoInByb2dyZXNzQmFyIik7CmNvbnN0IHByb2dyZXNzVHJhY2sgPSAkKCJwcm9ncmVzc1RyYWNrIiksIHNjb3JlVGV4dCA9ICQoInNjb3JlVGV4dCIpLCBlbmRTY29yZSA9ICQoImVuZFNjb3JlIiksIGVuZE1lc3NhZ2UgPSAkKCJlbmRNZXNzYWdlIiksIHJldmlld0JveCA9ICQoInJldmlld0JveCIpLCByZXZpZXdUZXh0ID0gJCgicmV2aWV3VGV4dCIpLCBtb2RlQmFkZ2UgPSAkKCJtb2RlQmFkZ2UiKTsKCmZ1bmN0aW9uIHNob3dPbmx5KHRhcmdldCkgewogIHNjcmVlbnMuZm9yRWFjaChzY3JlZW4gPT4gc2NyZWVuLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpKTsKICB0YXJnZXQuY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Cn0KCmZ1bmN0aW9uIHJlcXVlc3RGdWxsc2NyZWVuKCkgewogIGlmICghZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlcXVlc3RGdWxsc2NyZWVuKSByZXR1cm47CiAgdHJ5IHsKICAgIGNvbnN0IHJlc3VsdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbigpOwogICAgaWYgKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0LmNhdGNoID09PSAiZnVuY3Rpb24iKSByZXN1bHQuY2F0Y2goKCkgPT4ge30pOwogIH0gY2F0Y2ggKF8pIHt9Cn0KCmZ1bmN0aW9uIHJlc2V0TWFpblN0YXRlKCkgewogIHN0YXRlLmluZGV4ID0gMDsKICBzdGF0ZS5zY29yZSA9IDA7CiAgc3RhdGUuYXR0ZW1wdCA9IDE7CiAgc3RhdGUuc29sdmVkID0gZmFsc2U7CiAgc3RhdGUubW9kZSA9ICJtYWluIjsKICBzdGF0ZS5taXNzZWQuY2xlYXIoKTsKICBzdGF0ZS5yZXZpZXdJdGVtcyA9IFtdOwogIHNjb3JlVGV4dC50ZXh0Q29udGVudCA9ICIwIjsKfQoKZnVuY3Rpb24gc3RhcnRHYW1lKCkgewogIHJlcXVlc3RGdWxsc2NyZWVuKCk7CiAgcmVzZXRNYWluU3RhdGUoKTsKICBzaG93T25seSgkKCJnYW1lU2NyZWVuIikpOwogIHJlbmRlclF1ZXN0aW9uKCk7Cn0KCmZ1bmN0aW9uIGN1cnJlbnRMaXN0KCkgeyByZXR1cm4gc3RhdGUubW9kZSA9PT0gInJldmlldyIgPyBzdGF0ZS5yZXZpZXdJdGVtcyA6IHF1ZXN0aW9uczsgfQpmdW5jdGlvbiBjdXJyZW50UXVlc3Rpb24oKSB7IHJldHVybiBjdXJyZW50TGlzdCgpW3N0YXRlLmluZGV4XTsgfQoKZnVuY3Rpb24gcm90YXRlZFJldmlld1F1ZXN0aW9uKHEsIG9mZnNldCkgewogIGNvbnN0IHNoaWZ0ID0gKG9mZnNldCAlIDMpICsgMTsKICBjb25zdCBhbnN3ZXJQYWlycyA9IHEuYW5zd2Vycy5tYXAoKHRleHQsIGluZGV4KSA9PiAoeyB0ZXh0LCBjb3JyZWN0OiBpbmRleCA9PT0gcS5jb3JyZWN0IH0pKTsKICBjb25zdCByb3RhdGVkID0gYW5zd2VyUGFpcnMuc2xpY2Uoc2hpZnQpLmNvbmNhdChhbnN3ZXJQYWlycy5zbGljZSgwLCBzaGlmdCkpOwogIHJldHVybiB7CiAgICBpZDogcS5pZCwKICAgIGNvbmNlcHQ6IHEuY29uY2VwdCwKICAgIHByb21wdDogcmV2aWV3UHJvbXB0c1txLmlkXSB8fCBxLnByb21wdCwKICAgIGhpbnQ6IHEuaGludCwKICAgIHN3YXRjaGVzOiBxLnN3YXRjaGVzLAogICAgYW5zd2Vyczogcm90YXRlZC5tYXAoaXRlbSA9PiBpdGVtLnRleHQpLAogICAgY29ycmVjdDogcm90YXRlZC5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmNvcnJlY3QpLAogICAgZXhwbGFuYXRpb246IHEuZXhwbGFuYXRpb24KICB9Owp9CgpmdW5jdGlvbiByZW5kZXJTd2F0Y2hlcyhpdGVtcykgewogIGFydENhcmQucmVwbGFjZUNoaWxkcmVuKCk7CiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7CiAgICBjb25zdCBibG9jayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgYmxvY2suY2xhc3NOYW1lID0gInN3YXRjaCI7CiAgICBibG9jay5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBpdGVtWzBdOwogICAgY29uc3QgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICBsYWJlbC50ZXh0Q29udGVudCA9IGl0ZW1bMV07CiAgICBibG9jay5hcHBlbmQobGFiZWwpOwogICAgYXJ0Q2FyZC5hcHBlbmQoYmxvY2spOwogIH0KfQoKZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb24oKSB7CiAgY29uc3QgbGlzdCA9IGN1cnJlbnRMaXN0KCk7CiAgY29uc3QgcSA9IGN1cnJlbnRRdWVzdGlvbigpOwogIHN0YXRlLmF0dGVtcHQgPSAxOwogIHN0YXRlLnNvbHZlZCA9IGZhbHNlOwogIGZlZWRiYWNrLnRleHRDb250ZW50ID0gIlfDpGhsZSBlaW5lIEFudHdvcnQuIER1IGthbm5zdCBhdWNoIGRpZSBUYXN0ZW4gMeKAkzQgdmVyd2VuZGVuLiI7CiAgZmVlZGJhY2suY2xhc3NOYW1lID0gImZlZWRiYWNrIjsKICBuZXh0QnRuLmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOwogIHF1ZXN0aW9uVGl0bGUudGV4dENvbnRlbnQgPSBxLnByb21wdDsKICBxdWVzdGlvbkhpbnQudGV4dENvbnRlbnQgPSBxLmhpbnQ7CiAgbW9kZUJhZGdlLnRleHRDb250ZW50ID0gc3RhdGUubW9kZSA9PT0gInJldmlldyIgPyAiRmVobGVydHJhaW5pbmciIDogIkhhdXB0cnVuZGUiOwogIHByb2dyZXNzVGV4dC50ZXh0Q29udGVudCA9IGAke3N0YXRlLm1vZGUgPT09ICJyZXZpZXciID8gIlRyYWluaW5nIiA6ICJBdWZnYWJlIn0gJHtzdGF0ZS5pbmRleCArIDF9IHZvbiAke2xpc3QubGVuZ3RofWA7CiAgcHJvZ3Jlc3NCYXIuc3R5bGUud2lkdGggPSBgJHsoc3RhdGUuaW5kZXggLyBsaXN0Lmxlbmd0aCkgKiAxMDB9JWA7CiAgcHJvZ3Jlc3NUcmFjay5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtYXgiLCBTdHJpbmcobGlzdC5sZW5ndGgpKTsKICBwcm9ncmVzc1RyYWNrLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW5vdyIsIFN0cmluZyhzdGF0ZS5pbmRleCkpOwogIHJlbmRlclN3YXRjaGVzKHEuc3dhdGNoZXMpOwogIGFuc3dlcnMucmVwbGFjZUNoaWxkcmVuKCk7CiAgcS5hbnN3ZXJzLmZvckVhY2goKHRleHQsIGluZGV4KSA9PiB7CiAgICBjb25zdCBidG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsKICAgIGJ0bi50eXBlID0gImJ1dHRvbiI7CiAgICBidG4uY2xhc3NOYW1lID0gImFuc3dlci1idG4iOwogICAgYnRuLmRhdGFzZXQuaW5kZXggPSBTdHJpbmcoaW5kZXgpOwogICAgYnRuLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGBBbnR3b3J0ICR7aW5kZXggKyAxfTogJHt0ZXh0fWApOwogICAgY29uc3Qga2V5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAga2V5LmNsYXNzTmFtZSA9ICJrZXljYXAiOwogICAga2V5LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAidHJ1ZSIpOwogICAga2V5LnRleHRDb250ZW50ID0gU3RyaW5nKGluZGV4ICsgMSk7CiAgICBjb25zdCBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgIGxhYmVsLnRleHRDb250ZW50ID0gdGV4dDsKICAgIGJ0bi5hcHBlbmQoa2V5LCBsYWJlbCk7CiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBoYW5kbGVBbnN3ZXIpOwogICAgYW5zd2Vycy5hcHBlbmQoYnRuKTsKICB9KTsKICBjb25zdCBmaXJzdCA9IGFuc3dlcnMucXVlcnlTZWxlY3RvcigiYnV0dG9uIik7CiAgaWYgKGZpcnN0KSBmaXJzdC5mb2N1cygpOwp9CgpmdW5jdGlvbiBoYW5kbGVBbnN3ZXIoZXZlbnQpIHsKICBpZiAoc3RhdGUuc29sdmVkKSByZXR1cm47CiAgY29uc3QgYnV0dG9uID0gZXZlbnQuY3VycmVudFRhcmdldDsKICBpZiAoYnV0dG9uLmRpc2FibGVkKSByZXR1cm47CiAgY29uc3Qgc2VsZWN0ZWQgPSBOdW1iZXIoYnV0dG9uLmRhdGFzZXQuaW5kZXgpOwogIGNvbnN0IHEgPSBjdXJyZW50UXVlc3Rpb24oKTsKICBpZiAoc2VsZWN0ZWQgPT09IHEuY29ycmVjdCkgewogICAgc3RhdGUuc29sdmVkID0gdHJ1ZTsKICAgIGlmIChzdGF0ZS5tb2RlID09PSAibWFpbiIpIHsKICAgICAgY29uc3QgZWFybmVkID0gcG9pbnRzQnlBdHRlbXB0W01hdGgubWluKHN0YXRlLmF0dGVtcHQgLSAxLCBwb2ludHNCeUF0dGVtcHQubGVuZ3RoIC0gMSldOwogICAgICBzdGF0ZS5zY29yZSArPSBlYXJuZWQ7CiAgICAgIHNjb3JlVGV4dC50ZXh0Q29udGVudCA9IFN0cmluZyhzdGF0ZS5zY29yZSk7CiAgICAgIGZlZWRiYWNrLnRleHRDb250ZW50ID0gYFJpY2h0aWchICske2Vhcm5lZH0gUHVua3RlLiAke3EuZXhwbGFuYXRpb259YDsKICAgIH0gZWxzZSB7CiAgICAgIGZlZWRiYWNrLnRleHRDb250ZW50ID0gYFJpY2h0aWcuICR7cS5leHBsYW5hdGlvbn1gOwogICAgfQogICAgZmVlZGJhY2suY2xhc3NOYW1lID0gImZlZWRiYWNrIG9rIjsKICAgIGFuc3dlcnMucXVlcnlTZWxlY3RvckFsbCgiYnV0dG9uIikuZm9yRWFjaChidG4gPT4geyBidG4uZGlzYWJsZWQgPSB0cnVlOyB9KTsKICAgIGNvbnN0IGxhc3QgPSBzdGF0ZS5pbmRleCA9PT0gY3VycmVudExpc3QoKS5sZW5ndGggLSAxOwogICAgbmV4dEJ0bi50ZXh0Q29udGVudCA9IGxhc3QgPyAoc3RhdGUubW9kZSA9PT0gInJldmlldyIgPyAiVHJhaW5pbmcgYWJzY2hsaWXDn2VuIiA6ICJEZXRla3RpdmJlcmljaHQgYW5zZWhlbiIpIDogIk7DpGNoc3RlIEF1ZmdhYmUiOwogICAgbmV4dEJ0bi5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKICAgIG5leHRCdG4uZm9jdXMoKTsKICB9IGVsc2UgewogICAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKICAgIGlmIChzdGF0ZS5tb2RlID09PSAibWFpbiIpIHN0YXRlLm1pc3NlZC5hZGQocS5pZCk7CiAgICBzdGF0ZS5hdHRlbXB0ICs9IDE7CiAgICBmZWVkYmFjay50ZXh0Q29udGVudCA9IGBOb2NoIG5pY2h0LiAke3EuaGludH0gVmVyc3VjaCBlcyBlcm5ldXQuYDsKICAgIGZlZWRiYWNrLmNsYXNzTmFtZSA9ICJmZWVkYmFjayBubyI7CiAgICBmZWVkYmFjay5mb2N1cygpOwogIH0KfQoKZnVuY3Rpb24gbmV4dFF1ZXN0aW9uKCkgewogIGlmICghc3RhdGUuc29sdmVkKSByZXR1cm47CiAgY29uc3QgbGlzdCA9IGN1cnJlbnRMaXN0KCk7CiAgaWYgKHN0YXRlLmluZGV4IDwgbGlzdC5sZW5ndGggLSAxKSB7CiAgICBzdGF0ZS5pbmRleCArPSAxOwogICAgcmVuZGVyUXVlc3Rpb24oKTsKICAgIHJldHVybjsKICB9CiAgcHJvZ3Jlc3NCYXIuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgcHJvZ3Jlc3NUcmFjay5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVub3ciLCBTdHJpbmcobGlzdC5sZW5ndGgpKTsKICBpZiAoc3RhdGUubW9kZSA9PT0gInJldmlldyIpIHNob3dSZXZpZXdFbmQoKTsgZWxzZSBzaG93RW5kKCk7Cn0KCmZ1bmN0aW9uIHNob3dFbmQoKSB7CiAgc2hvd09ubHkoJCgiZW5kU2NyZWVuIikpOwogIGVuZFNjb3JlLnRleHRDb250ZW50ID0gYCR7c3RhdGUuc2NvcmV9IHZvbiAke3F1ZXN0aW9ucy5sZW5ndGggKiAxMH0gUHVua3RlbmA7CiAgaWYgKHN0YXRlLnNjb3JlID49IDY4KSBlbmRNZXNzYWdlLnRleHRDb250ZW50ID0gIlNlaHIgc2ljaGVyOiBEdSBlcmtlbm5zdCBHcnVuZGlkZWVuIHVuZCBrYW5uc3Qgc2llIHNjaG9uIGF1ZiBHZXN0YWx0dW5nc3NpdHVhdGlvbmVuIMO8YmVydHJhZ2VuLiI7CiAgZWxzZSBpZiAoc3RhdGUuc2NvcmUgPj0gNDgpIGVuZE1lc3NhZ2UudGV4dENvbnRlbnQgPSAiU29saWRlIFNwdXJlbnN1Y2hlOiBEaWUgd2ljaHRpZ3N0ZW4gQmV6aWVodW5nZW4gc2l0emVuLiBFaW56ZWxuZSBJZGVlbiBsb2huZW4gZWluZSBrdXJ6ZSBXaWVkZXJob2x1bmcuIjsKICBlbHNlIGVuZE1lc3NhZ2UudGV4dENvbnRlbnQgPSAiR3V0ZXIgQW5mYW5nOiBOdXR6ZSBkYXMgRmVobGVydHJhaW5pbmcuIERvcnQgYmVnZWduZW4gZGlyIHNjaHdpZXJpZ2UgSWRlZW4gaW4gbmV1ZXIgRm9ybS4iOwogIGlmIChzdGF0ZS5taXNzZWQuc2l6ZSA+IDApIHsKICAgIHJldmlld1RleHQudGV4dENvbnRlbnQgPSBgRHUgaGF0dGVzdCBiZWkgJHtzdGF0ZS5taXNzZWQuc2l6ZX0gJHtzdGF0ZS5taXNzZWQuc2l6ZSA9PT0gMSA/ICJJZGVlIiA6ICJJZGVlbiJ9IG1pbmRlc3RlbnMgZWluZW4gRmVobHZlcnN1Y2guIEltIFRyYWluaW5nIHdlcmRlbiBnZW5hdSBkaWVzZSBJbmhhbHRlIG5ldSBmb3JtdWxpZXJ0LmA7CiAgICByZXZpZXdCb3guY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7CiAgICByZXZpZXdCdG4uZm9jdXMoKTsKICB9IGVsc2UgewogICAgcmV2aWV3Qm94LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOwogICAgYWdhaW5CdG4uZm9jdXMoKTsKICB9Cn0KCmZ1bmN0aW9uIHN0YXJ0UmV2aWV3KCkgewogIHN0YXRlLnJldmlld0l0ZW1zID0gcXVlc3Rpb25zLmZpbHRlcihxID0+IHN0YXRlLm1pc3NlZC5oYXMocS5pZCkpLm1hcCgocSwgaSkgPT4gcm90YXRlZFJldmlld1F1ZXN0aW9uKHEsIGkpKTsKICBpZiAoIXN0YXRlLnJldmlld0l0ZW1zLmxlbmd0aCkgcmV0dXJuOwogIHN0YXRlLm1vZGUgPSAicmV2aWV3IjsKICBzdGF0ZS5pbmRleCA9IDA7CiAgc2hvd09ubHkoJCgiZ2FtZVNjcmVlbiIpKTsKICByZW5kZXJRdWVzdGlvbigpOwp9CgpmdW5jdGlvbiBzaG93UmV2aWV3RW5kKCkgewogIHNob3dPbmx5KCQoInJldmlld0VuZFNjcmVlbiIpKTsKICByZXZpZXdBZ2FpbkJ0bi5mb2N1cygpOwp9CgpmdW5jdGlvbiBsZWF2ZUdhbWUoKSB7CiAgaWYgKGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50ICYmIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKSB7CiAgICB0cnkgewogICAgICBjb25zdCByZXN1bHQgPSBkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpOwogICAgICBpZiAocmVzdWx0ICYmIHR5cGVvZiByZXN1bHQuY2F0Y2ggPT09ICJmdW5jdGlvbiIpIHJlc3VsdC5jYXRjaCgoKSA9PiB7fSk7CiAgICB9IGNhdGNoIChfKSB7fQogIH0KICByZXNldE1haW5TdGF0ZSgpOwogIHNob3dPbmx5KCQoInN0YXJ0U2NyZWVuIikpOwogIHN0YXJ0QnRuLmZvY3VzKCk7Cn0KCmZ1bmN0aW9uIG9wZW5IZWxwKCkgeyBpZiAodHlwZW9mIGhlbHBEaWFsb2cuc2hvd01vZGFsID09PSAiZnVuY3Rpb24iKSBoZWxwRGlhbG9nLnNob3dNb2RhbCgpOyB9CmZ1bmN0aW9uIGNsb3NlSGVscCgpIHsgaWYgKGhlbHBEaWFsb2cub3BlbikgaGVscERpYWxvZy5jbG9zZSgpOyB9CgpzdGFydEJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHN0YXJ0R2FtZSk7CnJlc2V0QnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4geyBpZiAoc3RhdGUubW9kZSA9PT0gInJldmlldyIpIHN0YXJ0UmV2aWV3KCk7IGVsc2UgeyByZXNldE1haW5TdGF0ZSgpOyByZW5kZXJRdWVzdGlvbigpOyB9IH0pOwpleGl0QnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgbGVhdmVHYW1lKTsKaGVscEJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIG9wZW5IZWxwKTsKY2xvc2VIZWxwQnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgY2xvc2VIZWxwKTsKYWdhaW5CdG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7IHJlc2V0TWFpblN0YXRlKCk7IHNob3dPbmx5KCQoImdhbWVTY3JlZW4iKSk7IHJlbmRlclF1ZXN0aW9uKCk7IH0pOwpob21lQnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgbGVhdmVHYW1lKTsKcmV2aWV3QnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgc3RhcnRSZXZpZXcpOwpyZXZpZXdBZ2FpbkJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsgcmVzZXRNYWluU3RhdGUoKTsgc2hvd09ubHkoJCgiZ2FtZVNjcmVlbiIpKTsgcmVuZGVyUXVlc3Rpb24oKTsgfSk7CnJldmlld0hvbWVCdG4uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBsZWF2ZUdhbWUpOwpuZXh0QnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgbmV4dFF1ZXN0aW9uKTsKCmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBldmVudCA9PiB7CiAgaWYgKGV2ZW50LmtleSA9PT0gIkVzY2FwZSIgJiYgaGVscERpYWxvZy5vcGVuKSB7IGNsb3NlSGVscCgpOyByZXR1cm47IH0KICBpZiAoaGVscERpYWxvZy5vcGVuIHx8ICQoImdhbWVTY3JlZW4iKS5jbGFzc0xpc3QuY29udGFpbnMoImhpZGRlbiIpIHx8IHN0YXRlLnNvbHZlZCkgcmV0dXJuOwogIGNvbnN0IGNob2ljZSA9IE51bWJlcihldmVudC5rZXkpOwogIGlmIChjaG9pY2UgPj0gMSAmJiBjaG9pY2UgPD0gNCkgewogICAgY29uc3QgYnV0dG9uID0gYW5zd2Vycy5xdWVyeVNlbGVjdG9yQWxsKCJidXR0b24iKVtjaG9pY2UgLSAxXTsKICAgIGlmIChidXR0b24gJiYgIWJ1dHRvbi5kaXNhYmxlZCkgYnV0dG9uLmNsaWNrKCk7CiAgfQp9KTsKCjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4=
</aimoocgame>
</aimoocgame>



Aktuelle Version vom 2. Oktober 2026, 07:54 Uhr

aiMOOC-Siegel aiMOOC

Farben-Detektiv

QR-Code

Farben-Detektiv

Ein kurzes Kunst-Lernspiel zu warmen, kühlen und komplementären Farben mit Fehlertraining für Klasse 5–7.

MOOCwiki Spiele

Farben-Detektiv

Verknüpfte Medien benötigen Internet. Bilder und Videos werden nicht im Spielpaket gespeichert.



Schulfach+




aiMOOCs



aiMOOC Projekte









MOOCwiki · Deutsch

Nach dem Lernen ist vor dem Lernen

Entdecke direkt den nächsten Lernkurs. Weitere Inhalte erscheinen, wenn Du weiter nach unten scrollst.

Zur MOOCwiki-Hauptseite

Mediathek

Inhalte werden geladen ...

Mediathek wird aus dem Wiki geladen ...