eyIvdGVybXMiOiAiPCFET0NUWVBFIGh0bWw+XG48aHRtbCBsYW5nPVwiZW5cIj5cbjxoZWFkPlxuPG1ldGEgY2hhcnNldD1cInV0Zi04XCI+XG48bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTFcIj5cbjx0aXRsZT5UZXJtcyBvZiBTZXJ2aWNlIMK3IGluZnJhc3RydVF0dXJlPC90aXRsZT5cbjxtZXRhIG5hbWU9XCJkZXNjcmlwdGlvblwiIGNvbnRlbnQ9XCJUZXJtcyBvZiBzZXJ2aWNlIGZvciBpbmZyYXN0cnVRdHVyZSBpbnN0YWxsYXRpb24sIGNvbW1lcmNpYWwsIGFuZCByb2JvdGljcyBzZXJ2aWNlcy5cIj5cbjxtZXRhIG5hbWU9XCJyb2JvdHNcIiBjb250ZW50PVwiaW5kZXgsZm9sbG93XCI+XG48bGluayByZWw9XCJpY29uXCIgdHlwZT1cImltYWdlL3N2Zyt4bWxcIiBocmVmPVwiZmF2aWNvbi5zdmdcIj5cbjxzdHlsZT5cbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDA7NzAwJmZhbWlseT1JbnRlcitUaWdodDp3Z2h0QDUwMDs2MDA7NzAwJmZhbWlseT1HZWlzdCtNb25vOndnaHRANDAwOzUwMCZkaXNwbGF5PXN3YXAnKTtcbjpyb290IHtcbiAgLS1wYXBlcjogI0ZCRkNGRTsgLS1wYXBlci0yOiAjRjJGNUZBOyAtLXJ1bGU6ICNFNEU5RjI7XG4gIC0taW5rOiAjMDcxMDFGOyAtLWluay0yOiAjMUEyNzQwOyAtLXN0ZWVsOiAjNUM2Qjg1O1xuICAtLWhhbG86ICM0RjhDRkY7IC0taGFsby1kZWVwOiAjMkM1QkUwO1xuICAtLWlyaS1hOiAjQjE5QkZGOyAtLWlyaS1iOiAjNkZBN0ZGOyAtLWlyaS1jOiAjOTJFNUZGO1xufVxuKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbmJvZHkge1xuICBtYXJnaW46IDA7IGJhY2tncm91bmQ6IHZhcigtLXBhcGVyKTsgY29sb3I6IHZhcigtLWluayk7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDA1ZW07IGxpbmUtaGVpZ2h0OiAxLjY7XG59XG5hIHsgY29sb3I6IGluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuLnNoZWxsIHsgbWF4LXdpZHRoOiA3NjBweDsgbWFyZ2luOiAwIGF1dG87IHBhZGRpbmc6IDAgMjRweDsgfVxubmF2IHsgcGFkZGluZzogMjJweCAwOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tcnVsZSk7IGJhY2tncm91bmQ6IHJnYmEoMjUxLDI1MiwyNTQsMC44NSk7IGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsgcG9zaXRpb246IHN0aWNreTsgdG9wOiAwOyB6LWluZGV4OiAxMDsgfVxuLm5hdi1pbm5lciB7IG1heC13aWR0aDogNzYwcHg7IG1hcmdpbjogMCBhdXRvOyBwYWRkaW5nOiAwIDI0cHg7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfVxuLmJyYW5kIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyB9XG4uYnJhbmQtdGV4dCB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE5cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTsgfVxuLmJyYW5kLXRleHQgLnEtYWNjZW50IHsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zdHlsZTogaXRhbGljOyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1pcmktYSkgMCUsIHZhcigtLWhhbG8pIDU1JSwgdmFyKC0taXJpLWMpIDEwMCUpOyAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsgYmFja2dyb3VuZC1jbGlwOiB0ZXh0OyAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7IHBhZGRpbmc6IDAgMC4wMmVtOyB9XG4uYmFjayB7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHZhcigtLXN0ZWVsKTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyB9XG4uYmFjazpob3ZlciB7IGNvbG9yOiB2YXIoLS1pbmspOyB9XG5tYWluIHsgcGFkZGluZzogNTZweCAwIDk2cHg7IH1cbmgxIHsgZm9udC1mYW1pbHk6ICdJbnRlciBUaWdodCc7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogY2xhbXAoMzJweCwgNXZ3LCA0NHB4KTsgbGV0dGVyLXNwYWNpbmc6IC0uMDNlbTsgbGluZS1oZWlnaHQ6IDEuMTsgbWFyZ2luOiAwIDAgMTBweDsgfVxuLmxlZGUgeyBmb250LXNpemU6IDE3cHg7IGNvbG9yOiB2YXIoLS1pbmstMik7IG1hcmdpbjogMCAwIDhweDsgbGluZS1oZWlnaHQ6IDEuNTU7IH1cbi51cGRhdGVkIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDExcHg7IGxldHRlci1zcGFjaW5nOiAuMTRlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHZhcigtLXN0ZWVsKTsgbWFyZ2luOiAwIDAgNDBweDsgfVxuaDIgeyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAyMnB4OyBsZXR0ZXItc3BhY2luZzogLS4wMmVtOyBtYXJnaW46IDM2cHggMCAxMnB4OyB9XG5oMyB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDE3cHg7IGxldHRlci1zcGFjaW5nOiAtLjAxNWVtOyBtYXJnaW46IDI0cHggMCA4cHg7IH1cbnAsIGxpIHsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjogdmFyKC0taW5rLTIpOyB9XG5wIHsgbWFyZ2luOiAwIDAgMTRweDsgfVxudWwsIG9sIHsgcGFkZGluZy1sZWZ0OiAyMnB4OyBtYXJnaW46IDAgMCAxNHB4OyB9XG5saSB7IG1hcmdpbi1ib3R0b206IDZweDsgfVxuc3Ryb25nIHsgY29sb3I6IHZhcigtLWluayk7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cbi5jYWxsb3V0IHsgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItMik7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJ1bGUpOyBib3JkZXItcmFkaXVzOiAxNHB4OyBwYWRkaW5nOiAxOHB4IDIycHg7IG1hcmdpbjogMjRweCAwOyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjU1OyB9XG5mb290ZXIgeyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tcnVsZSk7IHBhZGRpbmc6IDMycHggMDsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tc3RlZWwpOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbi5icmFuZC1tYXJrIC5ibS1yaW5nLCAuYnJhbmQtbWFyayAuYm0tdGFpbCB7IHN0cm9rZTogY3VycmVudENvbG9yOyB9XG4uYnJhbmQtbWFyayAuYm0tcmluZyB7IGZpbGw6IG5vbmU7IH1cbi5icmFuZC1tYXJrIC5ibS10YWlsIHsgZmlsbDogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOyB9XG48L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG5cbjxuYXY+XG4gIDxkaXYgY2xhc3M9XCJuYXYtaW5uZXJcIj5cbiAgICA8YSBjbGFzcz1cImJyYW5kXCIgaHJlZj1cIi9cIj5cbiAgICAgIDxzdmcgY2xhc3M9XCJicmFuZC1tYXJrXCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgdmlld0JveD1cIjAgMCAxMDAgMTAwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJibS1yaW5nXCIgY3g9XCI0NlwiIGN5PVwiNDZcIiByPVwiMzBcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBvcGFjaXR5PVwiLjIyXCIvPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiYm0tcmluZ1wiIGN4PVwiNDZcIiBjeT1cIjQ2XCIgcj1cIjIyXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIG9wYWNpdHk9XCIuNTVcIi8+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJibS1yaW5nXCIgY3g9XCI0NlwiIGN5PVwiNDZcIiByPVwiMTRcIiBzdHJva2Utd2lkdGg9XCI0LjVcIi8+XG4gICAgICAgIDxsaW5lIGNsYXNzPVwiYm0tdGFpbFwiIHgxPVwiNTRcIiB5MT1cIjU0XCIgeDI9XCI3NlwiIHkyPVwiNzZcIiBzdHJva2Utd2lkdGg9XCI1LjVcIi8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDxkaXYgY2xhc3M9XCJicmFuZC10ZXh0XCI+aW5mcmFzdHJ1PHNwYW4gY2xhc3M9XCJxLWFjY2VudFwiPlE8L3NwYW4+dHVyZTwvZGl2PlxuICAgIDwvYT5cbiAgICA8YSBjbGFzcz1cImJhY2tcIiBocmVmPVwiL1wiPuKGkCBCYWNrIHRvIGhvbWU8L2E+XG4gIDwvZGl2PlxuPC9uYXY+XG5cbjxtYWluPlxuICA8ZGl2IGNsYXNzPVwic2hlbGxcIj5cbiAgICA8aDE+VGVybXMgb2YgU2VydmljZTwvaDE+XG4gICAgPHAgY2xhc3M9XCJsZWRlXCI+VGhlIHN0cmFpZ2h0Zm9yd2FyZCB2ZXJzaW9uIG9mIHdoYXQgeW91IGFncmVlIHRvIHdoZW4gd2UgaW5zdGFsbCBzb21ldGhpbmcgZm9yIHlvdS48L3A+XG4gICAgPHAgY2xhc3M9XCJ1cGRhdGVkXCI+TGFzdCB1cGRhdGVkIMK3IEphbnVhcnkgMjAyNjwvcD5cblxuICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0XCI+XG4gICAgICA8c3Ryb25nPlBsYWluIEVuZ2xpc2ggZmlyc3QuPC9zdHJvbmc+IFdoZW4geW91IGJvb2sgdXMsIHdlIGFncmVlIHRvIHNob3cgdXAgb24gdGltZSwgZG8gdGhlIGpvYiB3ZSBxdW90ZWQsIHN0YW5kIGJlaGluZCBvdXIgd29yaywgYW5kIG5vdCBzdXJwcmlzZSB5b3Ugd2l0aCBoaWRkZW4gY2hhcmdlcy4gWW91IGFncmVlIHRvIHBheSB1cyB3aGVuIHdlIGZpbmlzaCwgZ2l2ZSB1cyBzYWZlIGFjY2VzcyB0byB0aGUgaW5zdGFsbCBsb2NhdGlvbiwgYW5kIHRlbGwgdXMgYWJvdXQgYW55dGhpbmcgd2Ugc2hvdWxkIGtub3cgKHBldHMsIGdhdGUgY29kZXMsIGFsbGVyZ2llcywgYnVpbGRpbmcgcnVsZXMpLlxuICAgIDwvZGl2PlxuXG4gICAgPGgyPjEuIFNlcnZpY2VzIHdlIHByb3ZpZGU8L2gyPlxuICAgIDxwPmluZnJhc3RydVF0dXJlIHByb3ZpZGVzIGluc3RhbGxhdGlvbiwgZGVwbG95bWVudCwgYW5kIG1haW50ZW5hbmNlIHNlcnZpY2VzIGZvciBzbWFydCBob21lIGRldmljZXMsIGNvbW1lcmNpYWwgbG93LXZvbHRhZ2Ugc3lzdGVtcyAobmV0d29ya2luZywgQVYsIHNlY3VyaXR5LCBhY2Nlc3MgY29udHJvbCksIGFuZCBhdXRvbm9tb3VzIHJvYm90aWNzIChtb3dpbmcsIGFjdHVhdG9ycywgaW5kdXN0cmlhbCBhdXRvbWF0aW9uKS4gU3BlY2lmaWMgc2NvcGUgaXMgc2V0IG91dCBpbiB5b3VyIGJvb2tpbmcgY29uZmlybWF0aW9uLjwvcD5cblxuICAgIDxoMj4yLiBRdW90ZXMgYW5kIHByaWNpbmc8L2gyPlxuICAgIDxwPlRoZSBwcmljZSByYW5nZSBzaG93biBpbiBvdXIgY29uY2llcmdlIG9yIGVzdGltYXRvciBpcyBhbiA8c3Ryb25nPmVzdGltYXRlPC9zdHJvbmc+LCBub3QgYSBjb21taXRtZW50LiBZb3VyIGZpbmFsIHByaWNlIGlzIGNvbmZpcm1lZCBhZnRlciB0aGUgb24tc2l0ZSBhc3Nlc3NtZW50IChyZXNpZGVudGlhbCkgb3Igc2NvcGluZyBjYWxsIChjb21tZXJjaWFsIC8gcm9ib3RpY3MpLiBPbmNlIHdlJ3ZlIHF1b3RlZCBhIGZpeGVkIHByaWNlIGFuZCB5b3UndmUgYXBwcm92ZWQgaXQsIHdlIGRvbid0IGFkZCB1bmFubm91bmNlZCBjaGFyZ2VzLjwvcD5cbiAgICA8cD5JZiB3ZSBkaXNjb3ZlciBzb21ldGhpbmcgZHVyaW5nIHRoZSBqb2IgdGhhdCBtYXRlcmlhbGx5IGNoYW5nZXMgdGhlIHNjb3BlLCB3ZSBzdG9wLCBjYWxsIHlvdSwgYW5kIGdldCB5b3VyIHNpZ24tb2ZmIGJlZm9yZSBjb250aW51aW5nLjwvcD5cblxuICAgIDxoMj4zLiBCb29raW5nIGFuZCBjYW5jZWxsYXRpb248L2gyPlxuICAgIDxwPllvdSBjYW4gcmVzY2hlZHVsZSBvciBjYW5jZWwgYW55IGFwcG9pbnRtZW50IHVwIHRvIDI0IGhvdXJzIGJlZm9yZSB0aGUgc2NoZWR1bGVkIHRpbWUgd2l0aG91dCBwZW5hbHR5LiBTYW1lLWRheSBjYW5jZWxsYXRpb25zIG1heSBpbmN1ciBhICQ3NSBkaXNwYXRjaCBmZWUgZm9yIHJlc2lkZW50aWFsIGFuZCAyNSUgb2YgdGhlIHNjb3BlZCB0b3RhbCBmb3IgY29tbWVyY2lhbC48L3A+XG5cbiAgICA8aDI+NC4gUGF5bWVudDwvaDI+XG4gICAgPHA+UmVzaWRlbnRpYWw6IHBheW1lbnQgZHVlIG9uIGNvbXBsZXRpb24uIFdlIGFjY2VwdCBjYXJkLCBBQ0gsIEFwcGxlIFBheSwgYW5kIEdvb2dsZSBQYXkuIENvbW1lcmNpYWw6IE5ldC0zMCB3aXRoIGFwcHJvdmVkIGNyZWRpdCwgb3IgNTAlIGRlcG9zaXQgLyA1MCUgb24gY29tcGxldGlvbi48L3A+XG5cbiAgICA8aDI+NS4gT3VyIHdvcmttYW5zaGlwIGd1YXJhbnRlZTwvaDI+XG4gICAgPHA+SWYgc29tZXRoaW5nIHdlIGluc3RhbGxlZCBpc24ndCB3b3JraW5nIHJpZ2h0IHdpdGhpbiA5MCBkYXlzIG9mIHRoZSBpbnN0YWxsLCB3ZSBjb21lIGJhY2sgYW5kIGZpeCBpdC4gTm8gYXJndW1lbnRzLCBubyBleHRyYSBjaGFyZ2VzLiBUaGlzIGNvdmVycyBvdXIgd29yazsgaXQgZG9lcyBub3QgY292ZXIgZGV2aWNlIGZhaWx1cmVzICh0aG9zZSBnbyB0byBtYW51ZmFjdHVyZXIgd2FycmFudHkpLCBjdXN0b21lci1jYXVzZWQgZGFtYWdlLCBvciBtb2RpZmljYXRpb25zIGJ5IG90aGVyIHBhcnRpZXMuPC9wPlxuXG4gICAgPGgyPjYuIFlvdXIgcmVzcG9uc2liaWxpdGllczwvaDI+XG4gICAgPHVsPlxuICAgICAgPGxpPlByb3ZpZGUgc2FmZSwgbGVnYWwgYWNjZXNzIHRvIHRoZSBpbnN0YWxsIGxvY2F0aW9uLjwvbGk+XG4gICAgICA8bGk+RGlzY2xvc2UgcGV0cywgYWxhcm1zLCBidWlsZGluZyBydWxlcywgYW5kIGFueSBoYXphcmRzIChhc2Jlc3RvcywgbGVhZCBwYWludCwgc3RydWN0dXJhbCBpc3N1ZXMpLjwvbGk+XG4gICAgICA8bGk+QmUgcmVhY2hhYmxlIGR1cmluZyB0aGUgaW5zdGFsbCB3aW5kb3cgZm9yIGRlY2lzaW9ucy48L2xpPlxuICAgICAgPGxpPlBheSBvbiB0aGUgYWdyZWVkIHRlcm1zLjwvbGk+XG4gICAgPC91bD5cblxuICAgIDxoMj43LiBMaW1pdHMgb2YgbGlhYmlsaXR5PC9oMj5cbiAgICA8cD5XZSdyZSBpbnN1cmVkIGFuZCBib25kZWQuIElmIHdlIGRhbWFnZSB5b3VyIHByb3BlcnR5IHRocm91Z2ggb3VyIG5lZ2xpZ2VuY2UsIHdlIGZpeCBvciByZXBsYWNlIGl0IHVwIHRvIHRoZSBjb3N0IG9mIHRoZSB3b3JrIHdlIHBlcmZvcm1lZC4gV2UgYXJlIG5vdCBsaWFibGUgZm9yIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcywgbWFudWZhY3R1cmVyIGRldmljZSBmYWlsdXJlcywgb3IgcHJlLWV4aXN0aW5nIGNvbmRpdGlvbnMgd2UgZGlkIG5vdCBjYXVzZS48L3A+XG5cbiAgICA8aDI+OC4gR292ZXJuaW5nIGxhdzwvaDI+XG4gICAgPHA+VGhlc2UgdGVybXMgYXJlIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIHRoZSBTdGF0ZSBvZiBUZXhhcy4gRGlzcHV0ZXMgYXJlIHJlc29sdmVkIGluIFRyYXZpcyBDb3VudHksIFRleGFzLCB1bmxlc3MgeW91ciBjb250cmFjdCBzcGVjaWZpZXMgYXJiaXRyYXRpb24uPC9wPlxuXG4gICAgPGgyPjkuIFF1ZXN0aW9uczwvaDI+XG4gICAgPHA+RW1haWwgPGEgaHJlZj1cIm1haWx0bzpoZWxsb0BpbmZyYXN0cnVxdHVyZS5jb21cIiBzdHlsZT1cImNvbG9yOnZhcigtLWhhbG8tZGVlcCk7Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkO1wiPmhlbGxvQGluZnJhc3RydXF0dXJlLmNvbTwvYT4gb3IgY2FsbCA8YSBocmVmPVwidGVsOisxNTEyNjQ5NDU2N1wiIHN0eWxlPVwiY29sb3I6dmFyKC0taGFsby1kZWVwKTtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQ7XCI+KDUxMikgNjQ5LTQ1Njc8L2E+LjwvcD5cblxuICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0XCIgc3R5bGU9XCJtYXJnaW4tdG9wOjQwcHg7XCI+XG4gICAgICA8c3Ryb25nPlNhbXBsZSBkb2N1bWVudC48L3N0cm9uZz4gVGhpcyBpcyBhIHN0YXJ0aW5nLXBvaW50IFRlcm1zIGRyYWZ0IGZvciByZXZpZXcuIEhhdmUgYSBUZXhhcy1saWNlbnNlZCBhdHRvcm5leSByZXZpZXcgYmVmb3JlIGdvaW5nIGxpdmU7IGxlZ2FsLXN1ZmZpY2llbmN5IHZhcmllcyBieSBzZXJ2aWNlIG1peCwgY3VzdG9tZXIgY2F0ZWdvcnksIGFuZCBqdXJpc2RpY3Rpb24uXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYWluPlxuXG48Zm9vdGVyPlxuICA8ZGl2IGNsYXNzPVwic2hlbGxcIj5cbiAgICDCqSAyMDI2IGluZnJhc3RydVF0dXJlLCBJbmMuIMK3IDxhIGhyZWY9XCIvdGVybXNcIiBzdHlsZT1cImNvbG9yOiBpbmhlcml0O1wiPlRlcm1zPC9hPiDCtyA8YSBocmVmPVwiL3ByaXZhY3lcIiBzdHlsZT1cImNvbG9yOiBpbmhlcml0O1wiPlByaXZhY3k8L2E+IMK3IDxhIGhyZWY9XCIvYWktZGlzY2xvc3VyZVwiIHN0eWxlPVwiY29sb3I6IGluaGVyaXQ7XCI+QUkgZGlzY2xvc3VyZTwvYT5cbiAgPC9kaXY+XG48L2Zvb3Rlcj5cblxuPC9ib2R5PlxuPC9odG1sPlxuIiwgIi9wcml2YWN5IjogIjwhRE9DVFlQRSBodG1sPlxuPGh0bWwgbGFuZz1cImVuXCI+XG48aGVhZD5cbjxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPlxuPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCI+XG48dGl0bGU+UHJpdmFjeSBQb2xpY3kgwrcgaW5mcmFzdHJ1UXR1cmU8L3RpdGxlPlxuPG1ldGEgbmFtZT1cImRlc2NyaXB0aW9uXCIgY29udGVudD1cIldoYXQgaW5mcmFzdHJ1UXR1cmUgY29sbGVjdHMsIHdoYXQgd2UgZG8gd2l0aCBpdCwgYW5kIHdoYXQgd2UgbmV2ZXIgZG8uXCI+XG48bWV0YSBuYW1lPVwicm9ib3RzXCIgY29udGVudD1cImluZGV4LGZvbGxvd1wiPlxuPGxpbmsgcmVsPVwiaWNvblwiIHR5cGU9XCJpbWFnZS9zdmcreG1sXCIgaHJlZj1cImZhdmljb24uc3ZnXCI+XG48c3R5bGU+XG5AaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZmYW1pbHk9SW50ZXIrVGlnaHQ6d2dodEA1MDA7NjAwOzcwMCZmYW1pbHk9R2Vpc3QrTW9ubzp3Z2h0QDQwMDs1MDAmZGlzcGxheT1zd2FwJyk7XG46cm9vdCB7IC0tcGFwZXI6ICNGQkZDRkU7IC0tcGFwZXItMjogI0YyRjVGQTsgLS1ydWxlOiAjRTRFOUYyOyAtLWluazogIzA3MTAxRjsgLS1pbmstMjogIzFBMjc0MDsgLS1zdGVlbDogIzVDNkI4NTsgLS1oYWxvOiAjNEY4Q0ZGOyAtLWhhbG8tZGVlcDogIzJDNUJFMDsgLS1pcmktYTogI0IxOUJGRjsgLS1pcmktYjogIzZGQTdGRjsgLS1pcmktYzogIzkyRTVGRjsgfVxuKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbmJvZHkgeyBtYXJnaW46IDA7IGJhY2tncm91bmQ6IHZhcigtLXBhcGVyKTsgY29sb3I6IHZhcigtLWluayk7IGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7IC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyBsZXR0ZXItc3BhY2luZzogLTAuMDA1ZW07IGxpbmUtaGVpZ2h0OiAxLjY7IH1cbmEgeyBjb2xvcjogaW5oZXJpdDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4uc2hlbGwgeyBtYXgtd2lkdGg6IDc2MHB4OyBtYXJnaW46IDAgYXV0bzsgcGFkZGluZzogMCAyNHB4OyB9XG5uYXYgeyBwYWRkaW5nOiAyMnB4IDA7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ydWxlKTsgYmFja2dyb3VuZDogcmdiYSgyNTEsMjUyLDI1NCwwLjg1KTsgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpOyBwb3NpdGlvbjogc3RpY2t5OyB0b3A6IDA7IHotaW5kZXg6IDEwOyB9XG4ubmF2LWlubmVyIHsgbWF4LXdpZHRoOiA3NjBweDsgbWFyZ2luOiAwIGF1dG87IHBhZGRpbmc6IDAgMjRweDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4uYnJhbmQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7IH1cbi5icmFuZC10ZXh0IHsgZm9udC1mYW1pbHk6ICdJbnRlciBUaWdodCcsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTlweDsgZm9udC13ZWlnaHQ6IDUwMDsgbGV0dGVyLXNwYWNpbmc6IC0wLjAyNWVtOyB9XG4uYnJhbmQtdGV4dCAucS1hY2NlbnQgeyBmb250LXdlaWdodDogNzAwOyBmb250LXN0eWxlOiBpdGFsaWM7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWlyaS1hKSAwJSwgdmFyKC0taGFsbykgNTUlLCB2YXIoLS1pcmktYykgMTAwJSk7IC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OyBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7IC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsgcGFkZGluZzogMCAwLjAyZW07IH1cbi5iYWNrIHsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tc3RlZWwpOyB9XG4uYmFjazpob3ZlciB7IGNvbG9yOiB2YXIoLS1pbmspOyB9XG5tYWluIHsgcGFkZGluZzogNTZweCAwIDk2cHg7IH1cbmgxIHsgZm9udC1mYW1pbHk6ICdJbnRlciBUaWdodCc7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogY2xhbXAoMzJweCwgNXZ3LCA0NHB4KTsgbGV0dGVyLXNwYWNpbmc6IC0uMDNlbTsgbGluZS1oZWlnaHQ6IDEuMTsgbWFyZ2luOiAwIDAgMTBweDsgfVxuLmxlZGUgeyBmb250LXNpemU6IDE3cHg7IGNvbG9yOiB2YXIoLS1pbmstMik7IG1hcmdpbjogMCAwIDhweDsgbGluZS1oZWlnaHQ6IDEuNTU7IH1cbi51cGRhdGVkIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDExcHg7IGxldHRlci1zcGFjaW5nOiAuMTRlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHZhcigtLXN0ZWVsKTsgbWFyZ2luOiAwIDAgNDBweDsgfVxuaDIgeyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAyMnB4OyBsZXR0ZXItc3BhY2luZzogLS4wMmVtOyBtYXJnaW46IDM2cHggMCAxMnB4OyB9XG5wLCBsaSB7IGZvbnQtc2l6ZTogMTVweDsgY29sb3I6IHZhcigtLWluay0yKTsgfVxucCB7IG1hcmdpbjogMCAwIDE0cHg7IH1cbnVsLCBvbCB7IHBhZGRpbmctbGVmdDogMjJweDsgbWFyZ2luOiAwIDAgMTRweDsgfVxubGkgeyBtYXJnaW4tYm90dG9tOiA2cHg7IH1cbnN0cm9uZyB7IGNvbG9yOiB2YXIoLS1pbmspOyBmb250LXdlaWdodDogNjAwOyB9XG4uY2FsbG91dCB7IGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLTIpOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ydWxlKTsgYm9yZGVyLXJhZGl1czogMTRweDsgcGFkZGluZzogMThweCAyMnB4OyBtYXJnaW46IDI0cHggMDsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS41NTsgfVxuLmNhbGxvdXQud2FybiB7IGJhY2tncm91bmQ6IHJnYmEoMjQ0LDE2MSwyOCwuMDgpOyBib3JkZXItY29sb3I6IHJnYmEoMjQ0LDE2MSwyOCwuMyk7IH1cbmZvb3RlciB7IGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ydWxlKTsgcGFkZGluZzogMzJweCAwOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS1zdGVlbCk7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuLmJyYW5kLW1hcmsgLmJtLXJpbmcsIC5icmFuZC1tYXJrIC5ibS10YWlsIHsgc3Ryb2tlOiBjdXJyZW50Q29sb3I7IH1cbi5icmFuZC1tYXJrIC5ibS1yaW5nIHsgZmlsbDogbm9uZTsgfVxuLmJyYW5kLW1hcmsgLmJtLXRhaWwgeyBmaWxsOiBub25lOyBzdHJva2UtbGluZWNhcDogcm91bmQ7IH1cbnRhYmxlIHsgd2lkdGg6IDEwMCU7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IG1hcmdpbjogMTRweCAwOyBmb250LXNpemU6IDE0cHg7IH1cbnRoLCB0ZCB7IHRleHQtYWxpZ246IGxlZnQ7IHBhZGRpbmc6IDEwcHggMTRweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXJ1bGUpOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyB9XG50aCB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMC41cHg7IGxldHRlci1zcGFjaW5nOiAuMTJlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHZhcigtLXN0ZWVsKTsgZm9udC13ZWlnaHQ6IDUwMDsgfVxuPC9zdHlsZT5cbjwvaGVhZD5cbjxib2R5PlxuXG48bmF2PlxuICA8ZGl2IGNsYXNzPVwibmF2LWlubmVyXCI+XG4gICAgPGEgY2xhc3M9XCJicmFuZFwiIGhyZWY9XCIvXCI+XG4gICAgICA8c3ZnIGNsYXNzPVwiYnJhbmQtbWFya1wiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyOFwiIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiYm0tcmluZ1wiIGN4PVwiNDZcIiBjeT1cIjQ2XCIgcj1cIjMwXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgb3BhY2l0eT1cIi4yMlwiLz5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImJtLXJpbmdcIiBjeD1cIjQ2XCIgY3k9XCI0NlwiIHI9XCIyMlwiIHN0cm9rZS13aWR0aD1cIjJcIiBvcGFjaXR5PVwiLjU1XCIvPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiYm0tcmluZ1wiIGN4PVwiNDZcIiBjeT1cIjQ2XCIgcj1cIjE0XCIgc3Ryb2tlLXdpZHRoPVwiNC41XCIvPlxuICAgICAgICA8bGluZSBjbGFzcz1cImJtLXRhaWxcIiB4MT1cIjU0XCIgeTE9XCI1NFwiIHgyPVwiNzZcIiB5Mj1cIjc2XCIgc3Ryb2tlLXdpZHRoPVwiNS41XCIvPlxuICAgICAgPC9zdmc+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnJhbmQtdGV4dFwiPmluZnJhc3RydTxzcGFuIGNsYXNzPVwicS1hY2NlbnRcIj5RPC9zcGFuPnR1cmU8L2Rpdj5cbiAgICA8L2E+XG4gICAgPGEgY2xhc3M9XCJiYWNrXCIgaHJlZj1cIi9cIj7ihpAgQmFjayB0byBob21lPC9hPlxuICA8L2Rpdj5cbjwvbmF2PlxuXG48bWFpbj5cbiAgPGRpdiBjbGFzcz1cInNoZWxsXCI+XG4gICAgPGgxPlByaXZhY3kgUG9saWN5PC9oMT5cbiAgICA8cCBjbGFzcz1cImxlZGVcIj5XaGF0IHdlIGNvbGxlY3QsIHdoYXQgd2UgZG8gd2l0aCBpdCwgYW5kIHdoYXQgd2UgbmV2ZXIgZG8uPC9wPlxuICAgIDxwIGNsYXNzPVwidXBkYXRlZFwiPkxhc3QgdXBkYXRlZCDCtyBKYW51YXJ5IDIwMjY8L3A+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsbG91dFwiPlxuICAgICAgPHN0cm9uZz5UaGUgc2hvcnQgdmVyc2lvbi48L3N0cm9uZz4gV2UgY29sbGVjdCB3aGF0IHdlIG5lZWQgdG8gc2NvcGUgeW91ciBqb2IsIHNjaGVkdWxlIGl0LCBhbmQgZm9sbG93IHVwLiBXZSBkb24ndCBzZWxsIHlvdXIgZGF0YS4gV2UgZG9uJ3Qgc2hhcmUgaXQgYmV5b25kIHRoZSB0ZWNocyB3b3JraW5nIG9uIHlvdXIgam9iIGFuZCB0aGUgcGFydG5lcnMgd2UgY29udHJhY3Qgd2l0aCBmb3IgaXQuIFlvdSBjYW4gYXNrIHVzIHRvIGRlbGV0ZSBldmVyeXRoaW5nIGF0IGFueSB0aW1lIGFuZCB3ZSdsbCBkbyBpdCB3aXRoaW4gMzAgZGF5cy5cbiAgICA8L2Rpdj5cblxuICAgIDxoMj5XaGF0IHdlIGNvbGxlY3Q8L2gyPlxuICAgIDx0YWJsZT5cbiAgICAgIDx0aGVhZD48dHI+PHRoPkNhdGVnb3J5PC90aD48dGg+V2hhdCBhbmQgd2h5PC90aD48L3RyPjwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj48dGQ+PHN0cm9uZz5Db250YWN0PC9zdHJvbmc+PC90ZD48dGQ+TmFtZSwgcGhvbmUsIGVtYWlsLCBzZXJ2aWNlIGFkZHJlc3MgLSBzbyB3ZSBjYW4gc2NvcGUsIHNjaGVkdWxlLCBhbmQgZGlzcGF0Y2guPC90ZD48L3RyPlxuICAgICAgICA8dHI+PHRkPjxzdHJvbmc+Sm9iIGNvbnRleHQ8L3N0cm9uZz48L3RkPjx0ZD5DaGF0IHRyYW5zY3JpcHRzIHdpdGggb3VyIGNvbmNpZXJnZSwgcGhvdG9zIHlvdSB1cGxvYWQsIG5vdGVzIHlvdSBzaGFyZSAtIHNvIHRoZSB0ZWNoIGFycml2ZXMgcHJlcGFyZWQuPC90ZD48L3RyPlxuICAgICAgICA8dHI+PHRkPjxzdHJvbmc+UGF5bWVudDwvc3Ryb25nPjwvdGQ+PHRkPkJpbGxpbmcgZGV0YWlscyBwcm9jZXNzZWQgYnkgU3RyaXBlOyB3ZSBkb24ndCBzdG9yZSBmdWxsIGNhcmQgbnVtYmVycy48L3RkPjwvdHI+XG4gICAgICAgIDx0cj48dGQ+PHN0cm9uZz5Sb2JvdGljcyB0ZWxlbWV0cnk8L3N0cm9uZz48L3RkPjx0ZD5Gb3IgZmxlZXQgY3VzdG9tZXJzOiBwb3NpdGlvbiwgc3RhdHVzLCBmYXVsdCBzdGF0ZSBvZiByb2JvdHMgd2UgbWFuYWdlIGZvciB5b3UgLSBuZWVkZWQgdG8gcHJvdmlkZSB0aGUgc2VydmljZS48L3RkPjwvdHI+XG4gICAgICAgIDx0cj48dGQ+PHN0cm9uZz5TaXRlIGFuYWx5dGljczwvc3Ryb25nPjwvdGQ+PHRkPkFub255bW91cywgY29va2llbGVzcyBhbmFseXRpY3MgZm9yIHRoZSB3ZWJzaXRlIChwYWdlIHZpZXdzLCBzb3VyY2UpLiBObyB0aGlyZC1wYXJ0eSB0cmFja2luZy48L3RkPjwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG5cbiAgICA8aDI+V2hhdCB3ZSBkbyB3aXRoIGl0PC9oMj5cbiAgICA8dWw+XG4gICAgICA8bGk+U2NvcGUgeW91ciBqb2IgYW5kIHByaWNlIGl0IGFjY3VyYXRlbHkuPC9saT5cbiAgICAgIDxsaT5TY2hlZHVsZSBhbmQgZGlzcGF0Y2ggdGhlIHJpZ2h0IHRlY2ggd2l0aCB0aGUgcmlnaHQgY29udGV4dC48L2xpPlxuICAgICAgPGxpPlNlbmQgY29uZmlybWF0aW9uLCByZW1pbmRlciwgYW5kIGZvbGxvdy11cCBtZXNzYWdlcy48L2xpPlxuICAgICAgPGxpPkltcHJvdmUgb3VyIHNlcnZpY2UgLSBhbm9ueW1pemVkIGluIGFnZ3JlZ2F0ZSwgbmV2ZXIgdGllZCB0byB5b3UgcGVyc29uYWxseS48L2xpPlxuICAgICAgPGxpPkNvbXBseSB3aXRoIGxlZ2FsIG9ibGlnYXRpb25zICh0YXggcmVjb3JkcywgZXRjKS48L2xpPlxuICAgIDwvdWw+XG5cbiAgICA8aDI+V2hhdCB3ZSBkb24ndCBkbzwvaDI+XG4gICAgPHVsPlxuICAgICAgPGxpPldlIGRvbid0IHNlbGwgeW91ciBkYXRhLiBFdmVyLjwvbGk+XG4gICAgICA8bGk+V2UgZG9uJ3Qgc2hhcmUgaXQgd2l0aCBhZHZlcnRpc2VycyBvciBtYXJrZXRpbmcgc2VydmljZXMuPC9saT5cbiAgICAgIDxsaT5XZSBkb24ndCB1c2UgeW91ciBwaG90b3MsIGNoYXQgaGlzdG9yeSwgb3Igcm9ib3QgdGVsZW1ldHJ5IHRvIHRyYWluIHRoaXJkLXBhcnR5IEFJIG1vZGVscy48L2xpPlxuICAgICAgPGxpPldlIGRvbid0IHNlbmQgbWFya2V0aW5nIGVtYWlsIG9yIFNNUyB3aXRob3V0IHlvdXIgY29uc2VudC48L2xpPlxuICAgIDwvdWw+XG5cbiAgICA8aDI+V2hvIHdlIHNoYXJlIHdpdGg8L2gyPlxuICAgIDxwPk9ubHkgdGhlIHBlb3BsZSBkb2luZyB5b3VyIGpvYjogdGhlIGFzc2lnbmVkIHRlY2gsIHRoZSBwcm9qZWN0IGxlYWQgKGZvciBjb21tZXJjaWFsKSwgdGhlIGZsZWV0IGVuZ2luZWVyIChmb3Igcm9ib3RpY3MpLCBvdXIgc3VicHJvY2Vzc29ycyBmb3IgYmlsbGluZyAoU3RyaXBlKSwgZW1haWwgKFBvc3RtYXJrKSwgYW5kIFNNUyAoVHdpbGlvKS4gV2UgaGF2ZSBkYXRhLXByb2Nlc3NpbmcgYWdyZWVtZW50cyB3aXRoIGVhY2gsIGFuZCB0aGV5IGNhbm5vdCB1c2UgeW91ciBkYXRhIGZvciBhbnkgb3RoZXIgcHVycG9zZS48L3A+XG5cbiAgICA8aDI+QUkgYW5kIG1hY2hpbmUgbGVhcm5pbmc8L2gyPlxuICAgIDxwPk91ciBjb25jaWVyZ2UgcnVucyBvbiBsYW5ndWFnZSBtb2RlbHMgd2UgaG9zdCBsb2NhbGx5LCBwbHVzIGEgY2xvdWQtaG9zdGVkIGZhbGxiYWNrLiBQaG90b3MgeW91IHVwbG9hZCBhcmUgYW5hbHl6ZWQgYnkgYSBsb2NhbCB2aXNpb24gbW9kZWwgYW5kIHNlbnQgdG8gdGhlIGNsb3VkIGZhbGxiYWNrIG9ubHkgd2hlbiB0aGUgbG9jYWwgbW9kZWwgaXMgdW5hdmFpbGFibGUuIDxzdHJvbmc+Tm9uZSBvZiB5b3VyIGRhdGEgaXMgdXNlZCB0byB0cmFpbiBtb2RlbHMuPC9zdHJvbmc+IFNlZSB0aGUgPGEgaHJlZj1cIi9haS1kaXNjbG9zdXJlXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1oYWxvLWRlZXApO2JvcmRlci1ib3R0b206MXB4IGRvdHRlZDtcIj5BSSBkaXNjbG9zdXJlPC9hPiBmb3IgdGhlIGZ1bGwgcGljdHVyZS48L3A+XG5cbiAgICA8aDI+SG93IGxvbmcgd2Uga2VlcCBpdDwvaDI+XG4gICAgPHVsPlxuICAgICAgPGxpPkFjdGl2ZSBjdXN0b21lciByZWNvcmRzOiBhcyBsb25nIGFzIHlvdSByZW1haW4gYSBjdXN0b21lci48L2xpPlxuICAgICAgPGxpPkNoYXQgdHJhbnNjcmlwdHM6IDI0IG1vbnRocywgdGhlbiBkZWxldGVkLjwvbGk+XG4gICAgICA8bGk+UGhvdG9zOiAyNCBtb250aHMgdW5sZXNzIHlvdSBhc2sgc29vbmVyLjwvbGk+XG4gICAgICA8bGk+Sm9iIHJlY29yZHMgKGludm9pY2VzLCBTT1dzKTogNyB5ZWFycyBmb3IgdGF4IHB1cnBvc2VzLjwvbGk+XG4gICAgICA8bGk+Um9ib3RpY3MgdGVsZW1ldHJ5OiA5MCBkYXlzIHJvbGxpbmcgZm9yIGFjdGl2ZSBmbGVldHMuPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPGgyPllvdXIgcmlnaHRzPC9oMj5cbiAgICA8cD5Zb3UgY2FuIGFzayB1cyB0bzo8L3A+XG4gICAgPHVsPlxuICAgICAgPGxpPlNlZSB3aGF0IHdlIGhhdmUgYWJvdXQgeW91LjwvbGk+XG4gICAgICA8bGk+Q29ycmVjdCBhbnl0aGluZyB0aGF0J3Mgd3JvbmcuPC9saT5cbiAgICAgIDxsaT5EZWxldGUgaXQgKHN1YmplY3QgdG8gbGVnYWwgcmV0ZW50aW9uIG9ibGlnYXRpb25zIGxpa2UgdGF4IHJlY29yZHMpLjwvbGk+XG4gICAgICA8bGk+RXhwb3J0IGl0IGluIGEgcG9ydGFibGUgZm9ybWF0LjwvbGk+XG4gICAgICA8bGk+U3RvcCByZWNlaXZpbmcgYW55IG5vbi1lc3NlbnRpYWwgY29tbXVuaWNhdGlvbnMuPC9saT5cbiAgICA8L3VsPlxuICAgIDxwPkVtYWlsIDxhIGhyZWY9XCJtYWlsdG86aGVsbG9AaW5mcmFzdHJ1cXR1cmUuY29tXCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1oYWxvLWRlZXApO2JvcmRlci1ib3R0b206MXB4IGRvdHRlZDtcIj5oZWxsb0BpbmZyYXN0cnVxdHVyZS5jb208L2E+IHdpdGggdGhlIHN1YmplY3QgbGluZSBcIlByaXZhY3kgcmVxdWVzdFwiIGFuZCB3ZSdsbCByZXNwb25kIHdpdGhpbiAzMCBkYXlzLjwvcD5cblxuICAgIDxoMj5DYWxpZm9ybmlhIC8gc3RhdGUtc3BlY2lmaWMgcmlnaHRzPC9oMj5cbiAgICA8cD5JZiB5b3UncmUgYSBDYWxpZm9ybmlhIHJlc2lkZW50LCB5b3UgaGF2ZSBhZGRpdGlvbmFsIHJpZ2h0cyB1bmRlciB0aGUgQ0NQQSAvIENQUkEsIGluY2x1ZGluZyB0aGUgcmlnaHQgdG8gb3B0IG91dCBvZiBhbnkgXCJzYWxlXCIgb2YgcGVyc29uYWwgaW5mb3JtYXRpb24gKHdlIGRvbid0IHNlbGwsIHNvIHRoaXMgaXMgbW9vdCBmb3IgdXMsIGJ1dCBpdCdzIHlvdXIgcmlnaHQpLiBTaW1pbGFyIHJpZ2h0cyBhcHBseSBmb3IgcmVzaWRlbnRzIG9mIFZpcmdpbmlhLCBDb2xvcmFkbywgQ29ubmVjdGljdXQsIGFuZCBVdGFoIHVuZGVyIHRoZWlyIHJlc3BlY3RpdmUgc3RhdGUgcHJpdmFjeSBsYXdzLjwvcD5cblxuICAgIDxoMj5DaGlsZHJlbjwvaDI+XG4gICAgPHA+V2UgZG9uJ3Qga25vd2luZ2x5IGNvbGxlY3QgZGF0YSBmcm9tIGFueW9uZSB1bmRlciAxNi4gSWYgeW91IGJlbGlldmUgYSBtaW5vciBoYXMgc2hhcmVkIGRhdGEgd2l0aCB1cywgY29udGFjdCB1cyBhbmQgd2UnbGwgZGVsZXRlIGl0LjwvcD5cblxuICAgIDxoMj5DaGFuZ2VzPC9oMj5cbiAgICA8cD5JZiB3ZSBjaGFuZ2UgdGhpcyBwb2xpY3kgbWF0ZXJpYWxseSwgd2UnbGwgbm90aWZ5IGFjdGl2ZSBjdXN0b21lcnMgYnkgZW1haWwgYW5kIHBvc3QgYSBub3RpY2Ugb24gdGhpcyBwYWdlIGF0IGxlYXN0IDMwIGRheXMgYmVmb3JlIHRoZSBjaGFuZ2UgdGFrZXMgZWZmZWN0LjwvcD5cblxuICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0IHdhcm5cIiBzdHlsZT1cIm1hcmdpbi10b3A6NDBweDtcIj5cbiAgICAgIDxzdHJvbmc+U2FtcGxlIGRvY3VtZW50Ljwvc3Ryb25nPiBUaGlzIGlzIGEgc3RhcnRpbmctcG9pbnQgUHJpdmFjeSBkcmFmdC4gQ29tcGxpYW5jZSBkZXRhaWxzIHZhcnkgYnkgc3RhdGUgKENDUEEsIFZDRFBBLCBDUEEpLCBzZXJ2aWNlIHR5cGUgKEhJUEFBIGZvciBhbnkgaGVhbHRoLWFkamFjZW50IGRhdGEpLCBhbmQgY3VzdG9tZXIgY2F0ZWdvcnkgKGNvbW1lcmNpYWwgY3VzdG9tZXJzIG9mdGVuIGhhdmUgdGhlaXIgb3duIERQQXMpLiBIYXZlIGEgcHJpdmFjeSBhdHRvcm5leSByZXZpZXcgYmVmb3JlIGdvaW5nIGxpdmUuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYWluPlxuXG48Zm9vdGVyPlxuICA8ZGl2IGNsYXNzPVwic2hlbGxcIj5cbiAgICDCqSAyMDI2IGluZnJhc3RydVF0dXJlLCBJbmMuIMK3IDxhIGhyZWY9XCIvdGVybXNcIiBzdHlsZT1cImNvbG9yOiBpbmhlcml0O1wiPlRlcm1zPC9hPiDCtyA8YSBocmVmPVwiL3ByaXZhY3lcIiBzdHlsZT1cImNvbG9yOiBpbmhlcml0O1wiPlByaXZhY3k8L2E+IMK3IDxhIGhyZWY9XCIvYWktZGlzY2xvc3VyZVwiIHN0eWxlPVwiY29sb3I6IGluaGVyaXQ7XCI+QUkgZGlzY2xvc3VyZTwvYT5cbiAgPC9kaXY+XG48L2Zvb3Rlcj5cblxuPC9ib2R5PlxuPC9odG1sPlxuIiwgIi9haS1kaXNjbG9zdXJlIjogIjwhRE9DVFlQRSBodG1sPlxuPGh0bWwgbGFuZz1cImVuXCI+XG48aGVhZD5cbjxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPlxuPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCI+XG48dGl0bGU+QUkgRGlzY2xvc3VyZSDCtyBpbmZyYXN0cnVRdHVyZTwvdGl0bGU+XG48bWV0YSBuYW1lPVwiZGVzY3JpcHRpb25cIiBjb250ZW50PVwiRXhhY3RseSB3aGVyZSBBSSBpcyB1c2VkIGluIG91ciBzZXJ2aWNlLCB3aGVyZSBodW1hbnMgdGFrZSBvdmVyLCBhbmQgd2hhdCB3ZSBuZXZlciBkbyB3aXRoIHlvdXIgZGF0YS5cIj5cbjxtZXRhIG5hbWU9XCJyb2JvdHNcIiBjb250ZW50PVwiaW5kZXgsZm9sbG93XCI+XG48bGluayByZWw9XCJpY29uXCIgdHlwZT1cImltYWdlL3N2Zyt4bWxcIiBocmVmPVwiZmF2aWNvbi5zdmdcIj5cbjxzdHlsZT5cbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRANDAwOzUwMDs2MDA7NzAwJmZhbWlseT1JbnRlcitUaWdodDp3Z2h0QDUwMDs2MDA7NzAwJmZhbWlseT1HZWlzdCtNb25vOndnaHRANDAwOzUwMCZkaXNwbGF5PXN3YXAnKTtcbjpyb290IHsgLS1wYXBlcjogI0ZCRkNGRTsgLS1wYXBlci0yOiAjRjJGNUZBOyAtLXJ1bGU6ICNFNEU5RjI7IC0taW5rOiAjMDcxMDFGOyAtLWluay0yOiAjMUEyNzQwOyAtLXN0ZWVsOiAjNUM2Qjg1OyAtLWhhbG86ICM0RjhDRkY7IC0taGFsby1kZWVwOiAjMkM1QkUwOyAtLWlyaS1hOiAjQjE5QkZGOyAtLWlyaS1iOiAjNkZBN0ZGOyAtLWlyaS1jOiAjOTJFNUZGOyB9XG4qLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfVxuYm9keSB7IG1hcmdpbjogMDsgYmFja2dyb3VuZDogdmFyKC0tcGFwZXIpOyBjb2xvcjogdmFyKC0taW5rKTsgZm9udC1mYW1pbHk6ICdJbnRlcicsIHN5c3RlbS11aSwgc2Fucy1zZXJpZjsgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7IGxldHRlci1zcGFjaW5nOiAtMC4wMDVlbTsgbGluZS1oZWlnaHQ6IDEuNjsgfVxuYSB7IGNvbG9yOiBpbmhlcml0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbi5zaGVsbCB7IG1heC13aWR0aDogNzYwcHg7IG1hcmdpbjogMCBhdXRvOyBwYWRkaW5nOiAwIDI0cHg7IH1cbm5hdiB7IHBhZGRpbmc6IDIycHggMDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXJ1bGUpOyBiYWNrZ3JvdW5kOiByZ2JhKDI1MSwyNTIsMjU0LDAuODUpOyBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7IHBvc2l0aW9uOiBzdGlja3k7IHRvcDogMDsgei1pbmRleDogMTA7IH1cbi5uYXYtaW5uZXIgeyBtYXgtd2lkdGg6IDc2MHB4OyBtYXJnaW46IDAgYXV0bzsgcGFkZGluZzogMCAyNHB4OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbi5icmFuZCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTBweDsgfVxuLmJyYW5kLXRleHQgeyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0Jywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxOXB4OyBmb250LXdlaWdodDogNTAwOyBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07IH1cbi5icmFuZC10ZXh0IC5xLWFjY2VudCB7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc3R5bGU6IGl0YWxpYzsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0taXJpLWEpIDAlLCB2YXIoLS1oYWxvKSA1NSUsIHZhcigtLWlyaS1jKSAxMDAlKTsgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7IGJhY2tncm91bmQtY2xpcDogdGV4dDsgLXdlYmtpdC10ZXh0LWZpbGwtY29sb3I6IHRyYW5zcGFyZW50OyBwYWRkaW5nOiAwIDAuMDJlbTsgfVxuLmJhY2sgeyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS1zdGVlbCk7IH1cbi5iYWNrOmhvdmVyIHsgY29sb3I6IHZhcigtLWluayk7IH1cbm1haW4geyBwYWRkaW5nOiA1NnB4IDAgOTZweDsgfVxuaDEgeyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiBjbGFtcCgzMnB4LCA1dncsIDQ0cHgpOyBsZXR0ZXItc3BhY2luZzogLS4wM2VtOyBsaW5lLWhlaWdodDogMS4xOyBtYXJnaW46IDAgMCAxMHB4OyB9XG4ubGVkZSB7IGZvbnQtc2l6ZTogMTdweDsgY29sb3I6IHZhcigtLWluay0yKTsgbWFyZ2luOiAwIDAgOHB4OyBsaW5lLWhlaWdodDogMS41NTsgfVxuLnVwZGF0ZWQgeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTFweDsgbGV0dGVyLXNwYWNpbmc6IC4xNGVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogdmFyKC0tc3RlZWwpOyBtYXJnaW46IDAgMCA0MHB4OyB9XG5oMiB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDIycHg7IGxldHRlci1zcGFjaW5nOiAtLjAyZW07IG1hcmdpbjogMzZweCAwIDEycHg7IH1cbnAsIGxpIHsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjogdmFyKC0taW5rLTIpOyB9XG5wIHsgbWFyZ2luOiAwIDAgMTRweDsgfVxudWwsIG9sIHsgcGFkZGluZy1sZWZ0OiAyMnB4OyBtYXJnaW46IDAgMCAxNHB4OyB9XG5saSB7IG1hcmdpbi1ib3R0b206IDZweDsgfVxuc3Ryb25nIHsgY29sb3I6IHZhcigtLWluayk7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cbi5jYWxsb3V0IHsgYmFja2dyb3VuZDogdmFyKC0tcGFwZXItMik7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJ1bGUpOyBib3JkZXItcmFkaXVzOiAxNHB4OyBwYWRkaW5nOiAxOHB4IDIycHg7IG1hcmdpbjogMjRweCAwOyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjU1OyB9XG5mb290ZXIgeyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tcnVsZSk7IHBhZGRpbmc6IDMycHggMDsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tc3RlZWwpOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH1cbi5icmFuZC1tYXJrIC5ibS1yaW5nLCAuYnJhbmQtbWFyayAuYm0tdGFpbCB7IHN0cm9rZTogY3VycmVudENvbG9yOyB9XG4uYnJhbmQtbWFyayAuYm0tcmluZyB7IGZpbGw6IG5vbmU7IH1cbi5icmFuZC1tYXJrIC5ibS10YWlsIHsgZmlsbDogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOyB9XG50YWJsZSB7IHdpZHRoOiAxMDAlOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBtYXJnaW46IDE0cHggMDsgZm9udC1zaXplOiAxNHB4OyB9XG50aCwgdGQgeyB0ZXh0LWFsaWduOiBsZWZ0OyBwYWRkaW5nOiAxMHB4IDE0cHg7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ydWxlKTsgdmVydGljYWwtYWxpZ246IHRvcDsgfVxudGggeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTAuNXB4OyBsZXR0ZXItc3BhY2luZzogLjEyZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiB2YXIoLS1zdGVlbCk7IGZvbnQtd2VpZ2h0OiA1MDA7IH1cbi5kb3QtcmVhbCwgLmRvdC1haSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDhweDsgaGVpZ2h0OiA4cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgbWFyZ2luLXJpZ2h0OiA2cHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbi5kb3QtcmVhbCB7IGJhY2tncm91bmQ6ICNlZjQ0NDQ7IH1cbi5kb3QtYWkgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1pcmktYSksIHZhcigtLWhhbG8pKTsgfVxuPC9zdHlsZT5cbjwvaGVhZD5cbjxib2R5PlxuXG48bmF2PlxuICA8ZGl2IGNsYXNzPVwibmF2LWlubmVyXCI+XG4gICAgPGEgY2xhc3M9XCJicmFuZFwiIGhyZWY9XCIvXCI+XG4gICAgICA8c3ZnIGNsYXNzPVwiYnJhbmQtbWFya1wiIHdpZHRoPVwiMjhcIiBoZWlnaHQ9XCIyOFwiIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiYm0tcmluZ1wiIGN4PVwiNDZcIiBjeT1cIjQ2XCIgcj1cIjMwXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgb3BhY2l0eT1cIi4yMlwiLz5cbiAgICAgICAgPGNpcmNsZSBjbGFzcz1cImJtLXJpbmdcIiBjeD1cIjQ2XCIgY3k9XCI0NlwiIHI9XCIyMlwiIHN0cm9rZS13aWR0aD1cIjJcIiBvcGFjaXR5PVwiLjU1XCIvPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiYm0tcmluZ1wiIGN4PVwiNDZcIiBjeT1cIjQ2XCIgcj1cIjE0XCIgc3Ryb2tlLXdpZHRoPVwiNC41XCIvPlxuICAgICAgICA8bGluZSBjbGFzcz1cImJtLXRhaWxcIiB4MT1cIjU0XCIgeTE9XCI1NFwiIHgyPVwiNzZcIiB5Mj1cIjc2XCIgc3Ryb2tlLXdpZHRoPVwiNS41XCIvPlxuICAgICAgPC9zdmc+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnJhbmQtdGV4dFwiPmluZnJhc3RydTxzcGFuIGNsYXNzPVwicS1hY2NlbnRcIj5RPC9zcGFuPnR1cmU8L2Rpdj5cbiAgICA8L2E+XG4gICAgPGEgY2xhc3M9XCJiYWNrXCIgaHJlZj1cIi9cIj7ihpAgQmFjayB0byBob21lPC9hPlxuICA8L2Rpdj5cbjwvbmF2PlxuXG48bWFpbj5cbiAgPGRpdiBjbGFzcz1cInNoZWxsXCI+XG4gICAgPGgxPkFJIERpc2Nsb3N1cmU8L2gxPlxuICAgIDxwIGNsYXNzPVwibGVkZVwiPkV4YWN0bHkgd2hlcmUgQUkgaXMgdXNlZCBpbiBvdXIgc2VydmljZSwgd2hlcmUgYSBodW1hbiB0YWtlcyBvdmVyLCBhbmQgd2hhdCB3ZSBuZXZlciBkby48L3A+XG4gICAgPHAgY2xhc3M9XCJ1cGRhdGVkXCI+TGFzdCB1cGRhdGVkIMK3IEphbnVhcnkgMjAyNjwvcD5cblxuICAgIDxkaXYgY2xhc3M9XCJjYWxsb3V0XCI+XG4gICAgICA8c3Ryb25nPlRoZSBzaG9ydCB2ZXJzaW9uLjwvc3Ryb25nPiBXZSB1c2UgQUkgaGVhdmlseSBpbiB0aGUgYmFjayBvZmZpY2UgKGRyYWZ0aW5nIG1lc3NhZ2VzLCBzdW1tYXJpemluZyBjaGF0cywgYnJpZWZpbmcgdGVjaHMpLiBXZSB1c2UgQUkgY29udmVyc2F0aW9uYWxseSBvbiB0aGUgZnJvbnQgZW5kIChvdXIgY29uY2llcmdlLCBwaG90by10by1xdW90ZSkuIEV2ZXJ5IGN1c3RvbWVyLWZhY2luZyBtZXNzYWdlIGlzIGh1bWFuLWFwcHJvdmVkLiBXZSBuZXZlciB0cmFpbiBleHRlcm5hbCBtb2RlbHMgb24geW91ciBkYXRhLlxuICAgIDwvZGl2PlxuXG4gICAgPGgyPldoZXJlIHlvdSdsbCBtZWV0IEFJPC9oMj5cbiAgICA8dGFibGU+XG4gICAgICA8dGhlYWQ+PHRyPjx0aD5TdXJmYWNlPC90aD48dGg+V2hhdCBpdCBkb2VzPC90aD48dGg+SHVtYW4gaW4gbG9vcDwvdGg+PC90cj48L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPjxzdHJvbmc+Q29uY2llcmdlIGNoYXQ8L3N0cm9uZz48L3RkPlxuICAgICAgICAgIDx0ZD5TY29wZXMgeW91ciBqb2IsIGdpdmVzIGEgcHJpY2UgcmFuZ2UsIHN1Z2dlc3RzIGEgc2xvdC4gUnVucyBvbiBhIGxhbmd1YWdlIG1vZGVsIHdlIGhvc3QgbG9jYWxseS48L3RkPlxuICAgICAgICAgIDx0ZD5BbHdheXMgb25lIHRhcCBhd2F5IC0gcHJlc3MgXCJUYWxrIHRvIGEgcGVyc29uXCIgYW55IHRpbWUuPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD48c3Ryb25nPlBob3RvLXRvLXF1b3RlPC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICA8dGQ+WW91IGF0dGFjaCBhIHBob3RvOyBhIHZpc2lvbiBtb2RlbCBpZGVudGlmaWVzIHRoZSBpbnN0YWxsIHNjZW5hcmlvOyB0aGUgY29uY2llcmdlIHVzZXMgdGhhdCB0byBzY29wZS48L3RkPlxuICAgICAgICAgIDx0ZD5GaW5hbCBwcmljZSBjb25maXJtZWQgYnkgeW91ciBhc3NpZ25lZCB0ZWNoIG9uIGFycml2YWwuPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD48c3Ryb25nPkZvbGxvdy11cCBTTVM8L3N0cm9uZz48L3RkPlxuICAgICAgICAgIDx0ZD5JZiB5b3UgZG9uJ3QgYm9vaywgd2Ugc2VuZCB1cCB0byB0d28gZm9sbG93LXVwcy4gQUkgZHJhZnRzOyB3ZSBhcHByb3ZlIGV2ZXJ5IHNlbmQuPC90ZD5cbiAgICAgICAgICA8dGQ+RXZlcnkgbWVzc2FnZSByZXZpZXdlZCBieSBhIGh1bWFuIGJlZm9yZSBpdCBnb2VzIG91dC48L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPjxzdHJvbmc+VGVjaCBwcmUtYnJpZWY8L3N0cm9uZz48L3RkPlxuICAgICAgICAgIDx0ZD4zMCBtaW4gYmVmb3JlIGFycml2YWwsIHlvdXIgdGVjaCBnZXRzIGEgYnJpZWYgc3VtbWFyaXplZCBmcm9tIHlvdXIgY2hhdCArIHBob3RvcyArIG5vdGVzLjwvdGQ+XG4gICAgICAgICAgPHRkPlRoZSB0ZWNoIHJlYWRzIGl0IGJlZm9yZSB0aGV5IGtub2NrIG9uIHlvdXIgZG9vci48L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPjxzdHJvbmc+UG9zdC1pbnN0YWxsIGNoZWNrLWluPC9zdHJvbmc+PC90ZD5cbiAgICAgICAgICA8dGQ+NDggaG91cnMgYWZ0ZXIgdGhlIGpvYiwgYW4gQUktZHJhZnRlZCBjaGVjay1pbiBnb2VzIG91dC4gSWYgeW91IGZsYWcgYSBwcm9ibGVtLCBhIGh1bWFuIGNhbGxzIHlvdS48L3RkPlxuICAgICAgICAgIDx0ZD5BbGwgcmVwbGllcyByb3V0ZWQgdG8gYSBodW1hbiB3aXRoaW4gaG91cnMuPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD48c3Ryb25nPlByZWRpY3RpdmUgbWFpbnRlbmFuY2UgKHJvYm90aWNzKTwvc3Ryb25nPjwvdGQ+XG4gICAgICAgICAgPHRkPk1MIG1vZGVscyBmbGFnIHdlYXIgaW4gYXV0b25vbW91cyBtb3dlcnMgYW5kIGluZHVzdHJpYWwgY2VsbHMgYmVmb3JlIHRoZXkgZmFpbC48L3RkPlxuICAgICAgICAgIDx0ZD5GbGVldCBlbmdpbmVlciByZXZpZXdzIHRoZSBhbGVydCBhbmQgZGlzcGF0Y2hlcy48L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuXG4gICAgPGgyPk1vZGVscyB3ZSB1c2U8L2gyPlxuICAgIDxwPldlIGRvbid0IGxvY2sgb3VyIGN1c3RvbWVycyBpbnRvIGEgc3BlY2lmaWMgQUkgdmVuZG9yLiBUaGUgbW9kZWxzIHdlIHVzZSBjaGFuZ2UgYXMgdGhlIHRlY2hub2xvZ3kgaW1wcm92ZXMuIEFzIG9mIHRoZSBkYXRlIGFib3ZlOjwvcD5cbiAgICA8dWw+XG4gICAgICA8bGk+PHN0cm9uZz5Db25jaWVyZ2UgdGV4dDo8L3N0cm9uZz4gYSBzZWxmLWhvc3RlZCBvcGVuLXdlaWdodHMgbGFuZ3VhZ2UgbW9kZWwgcnVubmluZyBvbiBpbmZyYXN0cnVjdHVyZSB3ZSBvd24uPC9saT5cbiAgICAgIDxsaT48c3Ryb25nPlZpc2lvbiAocGhvdG8tdG8tcXVvdGUpOjwvc3Ryb25nPiBhIHNlbGYtaG9zdGVkIHZpc2lvbi1jYXBhYmxlIG1vZGVsLjwvbGk+XG4gICAgICA8bGk+PHN0cm9uZz5DbG91ZCBmYWxsYmFjazo8L3N0cm9uZz4gd2hlbiBvdXIgbG9jYWwgc3RhY2sgaXMgdW5hdmFpbGFibGUsIHRoZSBjb25jaWVyZ2UgZmFsbHMgYmFjayB0byBhIGNsb3VkLWhvc3RlZCBjb21tZXJjaWFsIG1vZGVsLiBUaGUgZmFsbGJhY2sgcHJvdmlkZXIgaGFzIGEgemVyby1yZXRlbnRpb24gZGF0YSBhZ3JlZW1lbnQgd2l0aCB1cy48L2xpPlxuICAgICAgPGxpPjxzdHJvbmc+RW1iZWRkaW5ncyAoZm9yIHNlYXJjaCBhbmQgcm91dGluZyk6PC9zdHJvbmc+IHNlbGYtaG9zdGVkLjwvbGk+XG4gICAgPC91bD5cblxuICAgIDxoMj5XaGF0IHdlIG5ldmVyIGRvPC9oMj5cbiAgICA8dWw+XG4gICAgICA8bGk+V2UgbmV2ZXIgdHJhaW4gZXh0ZXJuYWwgQUkgbW9kZWxzIG9uIHlvdXIgcGhvdG9zLCBjaGF0IGhpc3RvcnksIG9yIGpvYiBkZXRhaWxzLjwvbGk+XG4gICAgICA8bGk+V2UgbmV2ZXIgdXNlIEFJIHRvIHByZXRlbmQgdG8gYmUgYSBzcGVjaWZpYyBodW1hbiBvbiBvdXIgdGVhbS4gVGhlIGNvbmNpZXJnZSBzYXlzIFwiSSdtIHRoZSBpbmZyYXN0cnVRdHVyZSBDb25jaWVyZ2UuXCI8L2xpPlxuICAgICAgPGxpPldlIG5ldmVyIGxldCBBSSBzaWduIGNvbnRyYWN0cywgcnVuIHBheW1lbnRzLCBvciBjb21taXQgdG8gYSBwcmljZSB3aXRob3V0IGh1bWFuIGFwcHJvdmFsLjwvbGk+XG4gICAgICA8bGk+V2UgbmV2ZXIgdXNlIEFJIHRvIGRlcGljdCBhIGN1c3RvbWVyLCBhIHRlY2gsIG9yIGEgam9iIHRoYXQgZGlkbid0IGhhcHBlbi4gQW55IEFJLWdlbmVyYXRlZCB2aXN1YWwgb24gb3VyIHdlYnNpdGUgaXMgbGFiZWxlZCBcIkFJIHZpc3VhbGl6YXRpb25cIiB3aXRoIGEgc3BhcmtsZSBiYWRnZS48L2xpPlxuICAgIDwvdWw+XG5cbiAgICA8aDI+TGFiZWxpbmcgd2UgdXNlPC9oMj5cbiAgICA8cCBzdHlsZT1cIm1hcmdpbi1ib3R0b206OHB4O1wiPjxzcGFuIGNsYXNzPVwiZG90LXJlYWxcIj48L3NwYW4+IDxzdHJvbmc+UmVhbCBmb290YWdlPC9zdHJvbmc+IC0gdW5lZGl0ZWQgY2FtZXJhIGNhcHR1cmUgb2YgYSByZWFsIGpvYi48L3A+XG4gICAgPHA+PHNwYW4gY2xhc3M9XCJkb3QtYWlcIj48L3NwYW4+IDxzdHJvbmc+QUkgdmlzdWFsaXphdGlvbjwvc3Ryb25nPiAtIGEgZ2VuZXJhdGVkIGNsaXAsIGNvbmNlcHQgcmVuZGVyLCBvciBjdXRhd2F5LiBMYWJlbGVkIHdoZXJldmVyIGl0IGFwcGVhcnMuPC9wPlxuXG4gICAgPGgyPk9wdGluZyBvdXQ8L2gyPlxuICAgIDxwPllvdSBjYW4gb3B0IG91dCBvZiB0aGUgQUkgY29uY2llcmdlIGF0IGFueSB0aW1lLiBFbWFpbCA8YSBocmVmPVwibWFpbHRvOmhlbGxvQGluZnJhc3RydXF0dXJlLmNvbVwiIHN0eWxlPVwiY29sb3I6dmFyKC0taGFsby1kZWVwKTtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQ7XCI+aGVsbG9AaW5mcmFzdHJ1cXR1cmUuY29tPC9hPiBvciBjYWxsIDxhIGhyZWY9XCJ0ZWw6KzE1MTI2NDk0NTY3XCIgc3R5bGU9XCJjb2xvcjp2YXIoLS1oYWxvLWRlZXApO2JvcmRlci1ib3R0b206MXB4IGRvdHRlZDtcIj4oNTEyKSA2NDktNDU2NzwvYT4gYW5kIHdlJ2xsIGhhbmRsZSBldmVyeXRoaW5nIGh1bWFuLXRvLWh1bWFuLjwvcD5cblxuICAgIDxoMj5RdWVzdGlvbnMgYWJvdXQgYSBzcGVjaWZpYyBBSSBpbnRlcmFjdGlvbj88L2gyPlxuICAgIDxwPklmIGEgY29uY2llcmdlIG1lc3NhZ2UgZmVsdCBvZmYgLSB3cm9uZyBwcmljZSwgd2VpcmQgdG9uZSwgbWlzc2luZyBjb250ZXh0LCBhbnl0aGluZyAtIHBsZWFzZSBsZXQgdXMga25vdy4gV2UgcmV2aWV3IGZsYWdnZWQgY29udmVyc2F0aW9ucywgZml4IHdoYXQgd2UgY2FuLCBhbmQgdXNlIHRoZSBmZWVkYmFjayB0byB0dW5lIG91ciBwcm9tcHRzLiBBSSBpbXByb3ZlbWVudCBpcyBkb3duc3RyZWFtIG9mIGN1c3RvbWVyIHNpZ25hbC48L3A+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsbG91dFwiIHN0eWxlPVwibWFyZ2luLXRvcDo0MHB4O1wiPlxuICAgICAgPHN0cm9uZz5TYW1wbGUgZGlzY2xvc3VyZS48L3N0cm9uZz4gVGhpcyBwYWdlIGlzIGludGVuZGVkIHRvIHNhdGlzZnkgZW1lcmdpbmcgQUktdHJhbnNwYXJlbmN5IGV4cGVjdGF0aW9ucyAoQ29sb3JhZG8gQUkgQWN0LCBDYWxpZm9ybmlhIEFCIDIwMTMsIHRoZSBFVSBBSSBBY3QsIEZUQyBBSSBndWlkYW5jZSkuIEV4YWN0IG9ibGlnYXRpb25zIHZhcnkgYnkganVyaXNkaWN0aW9uIGFuZCBzZXJ2aWNlIG1peC4gSGF2ZSBhbiBhdHRvcm5leSByZXZpZXcgYmVmb3JlIGdvaW5nIGxpdmUuXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9tYWluPlxuXG48Zm9vdGVyPlxuICA8ZGl2IGNsYXNzPVwic2hlbGxcIj5cbiAgICDCqSAyMDI2IGluZnJhc3RydVF0dXJlLCBJbmMuIMK3IDxhIGhyZWY9XCIvdGVybXNcIiBzdHlsZT1cImNvbG9yOiBpbmhlcml0O1wiPlRlcm1zPC9hPiDCtyA8YSBocmVmPVwiL3ByaXZhY3lcIiBzdHlsZT1cImNvbG9yOiBpbmhlcml0O1wiPlByaXZhY3k8L2E+IMK3IDxhIGhyZWY9XCIvYWktZGlzY2xvc3VyZVwiIHN0eWxlPVwiY29sb3I6IGluaGVyaXQ7XCI+QUkgZGlzY2xvc3VyZTwvYT5cbiAgPC9kaXY+XG48L2Zvb3Rlcj5cblxuPC9ib2R5PlxuPC9odG1sPlxuIiwgIi93b3JsZC1tb2RlbCI6ICI8IURPQ1RZUEUgaHRtbD5cbjxodG1sIGxhbmc9XCJlblwiPlxuPGhlYWQ+XG48bWV0YSBjaGFyc2V0PVwidXRmLThcIj5cbjxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiPlxuPHRpdGxlPmluZnJhc3RydVF0dXJlIMK3IFRoZSBXb3JsZCBNb2RlbDwvdGl0bGU+XG48bWV0YSBuYW1lPVwiZGVzY3JpcHRpb25cIiBjb250ZW50PVwiUm9ib3RzIGFyZSBsZWFybmluZyB0aGUgd29ybGQuIFdlIHRlYWNoIHRoZW0geW91cnMuIEEgd29ya2luZyBjb25jZXB0IGZvciB0aGUgaG9tZSB0aGF0IHVuZGVyc3RhbmRzIGl0c2VsZiwgd2l0aCBhIGh1bWFuIGFsd2F5cyBpbiBjaGFyZ2UuXCI+XG48bWV0YSBuYW1lPVwidGhlbWUtY29sb3JcIiBjb250ZW50PVwiIzA3MTAxRlwiPlxuPHN0eWxlPlxuQGltcG9ydCB1cmwoJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW50ZXI6d2dodEA0MDA7NTAwOzYwMDs3MDAmZmFtaWx5PUludGVyK1RpZ2h0OndnaHRANTAwOzYwMDs3MDA7ODAwJmZhbWlseT1HZWlzdCtNb25vOndnaHRANDAwOzUwMCZkaXNwbGF5PXN3YXAnKTtcblxuOnJvb3Qge1xuICAtLXBhcGVyOiAgICAgI0ZCRkNGRTtcbiAgLS1wYXBlci0yOiAgICNGMkY1RkE7XG4gIC0tcnVsZTogICAgICAjRTRFOUYyO1xuICAtLXJ1bGUtMjogICAgI0Q2RENFNztcbiAgLS1pbms6ICAgICAgICMwNzEwMUY7XG4gIC0taW5rLTI6ICAgICAjMUEyNzQwO1xuICAtLXN0ZWVsOiAgICAgIzVDNkI4NTtcbiAgLS1zdGVlbC0yOiAgICM2OTc0OEI7XG4gIC0taGFsbzogICAgICAjNEY4Q0ZGO1xuICAtLWhhbG8tMjogICAgIzZGQTdGRjtcbiAgLS1oYWxvLWRlZXA6ICMyQzVCRTA7XG4gIC0taGFsby1zb2Z0OiAjRENFOEZGO1xuICAtLWlyaS1hOiAgICAgI0IxOUJGRjtcbiAgLS1pcmktYzogICAgICM5MkU1RkY7XG4gIC0tc2lnbmFsOiAgICAjRjRBMTFDO1xuICAtLWdvb2Q6ICAgICAgIzM2QzI4QjtcbiAgLS13YXJuOiAgICAgICNGNEExMUM7XG4gIC0tYmctaW52ZXJ0ZWQ6ICMwNzEwMUY7XG4gIC0tZmctaW52ZXJ0ZWQ6ICNGQkZDRkU7XG59XG5cbiogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG5odG1sIHsgY29sb3Itc2NoZW1lOiBsaWdodDsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyB9XG5ib2R5IHtcbiAgbWFyZ2luOiAwOyBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlcik7IGNvbG9yOiB2YXIoLS1pbmspO1xuICBmb250LWZhbWlseTogJ0ludGVyJywgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmO1xuICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwic3MwMVwiLFwiY3YxMVwiO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgbGluZS1oZWlnaHQ6IDEuNTtcbn1cbmEgeyBjb2xvcjogaW5oZXJpdDsgfVxuLnNoZWxsIHsgbWF4LXdpZHRoOiAxMTgwcHg7IG1hcmdpbjogMCBhdXRvOyBwYWRkaW5nOiAwIDI4cHg7IH1cblxuLyogPT09PT09PT09PT09IE5BViA9PT09PT09PT09PT0gKi9cbm5hdiB7XG4gIHBvc2l0aW9uOiBzdGlja3k7IHRvcDogMDsgei1pbmRleDogNjA7XG4gIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KSBzYXR1cmF0ZSgxODAlKTsgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCkgc2F0dXJhdGUoMTgwJSk7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjUxLCAyNTIsIDI1NCwgMC43KTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXJ1bGUpO1xufVxuLm5hdi1pbm5lciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcGFkZGluZzogMTZweCAwOyB9XG4uYnJhbmQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6IGluaGVyaXQ7IH1cbi5icmFuZC1tYXJrIHsgY29sb3I6IHZhcigtLWluayk7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cbi5icmFuZC1tYXJrIC5ibS1yaW5nLCAuYnJhbmQtbWFyayAuYm0tdGFpbCB7IHN0cm9rZTogY3VycmVudENvbG9yOyB9XG4uYnJhbmQtbWFyayAuYm0tcmluZyB7IGZpbGw6IG5vbmU7IH1cbi5icmFuZC1tYXJrIC5ibS10YWlsIHsgZmlsbDogbm9uZTsgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOyB9XG4uYnJhbmQtdGV4dCB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE5cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGxldHRlci1zcGFjaW5nOiAtMC4wMjVlbTsgfVxuLmJyYW5kLXRleHQgLnEtYWNjZW50IHsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zdHlsZTogaXRhbGljOyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1pcmktYSkgMCUsIHZhcigtLWhhbG8pIDU1JSwgdmFyKC0taXJpLWMpIDEwMCUpOyAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsgYmFja2dyb3VuZC1jbGlwOiB0ZXh0OyAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7IHBhZGRpbmc6IDAgMC4wMmVtOyB9XG4ubmF2LWxpbmtzIHsgZGlzcGxheTogZmxleDsgZ2FwOiAzMnB4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9XG5AbWVkaWEgKG1heC13aWR0aDogNzYwcHgpIHsgLm5hdi1saW5rcyB7IGdhcDogMThweDsgfSAubmF2LWxpbmtzIGE6bm90KC5uYXYtY3RhKSB7IGRpc3BsYXk6IG5vbmU7IH0gfVxuLm5hdi1saW5rcyBhIHsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogdmFyKC0taW5rLTIpOyBmb250LXdlaWdodDogNTAwOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGN1cnNvcjogcG9pbnRlcjsgfVxuLm5hdi1saW5rcyBhOmhvdmVyIHsgY29sb3I6IHZhcigtLWhhbG8tZGVlcCk7IH1cbi5uYXYtbGlua3MgYS5pcy1jdXJyZW50IHsgY29sb3I6IHZhcigtLWhhbG8tZGVlcCk7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cbi5uYXYtbGlua3MgYS5uYXYtY3RhIHsgY29sb3I6IHZhcigtLXBhcGVyKSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiB2YXIoLS1pbmspOyBwYWRkaW5nOiAxMHB4IDE4cHg7IGJvcmRlci1yYWRpdXM6IDk5OXB4OyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGxldHRlci1zcGFjaW5nOiAtMC4wMDVlbTsgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAxNjBtcyBlYXNlOyB9XG4ubmF2LWxpbmtzIGEubmF2LWN0YTpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWhhbG8tZGVlcCk7IH1cblxuLyogPT09PT09PT09PT09IEhFUk8gPT09PT09PT09PT09ICovXG4uaGVybyB7IHBhZGRpbmc6IDkycHggMCA1NnB4OyB9XG4uZXllYnJvdyB7XG4gIGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMS41cHg7IGxldHRlci1zcGFjaW5nOiAuMTRlbTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHZhcigtLWhhbG8tZGVlcCk7IG1hcmdpbjogMCAwIDIwcHg7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDlweDtcbn1cbi5leWVicm93IC5waXAgeyB3aWR0aDogN3B4OyBoZWlnaHQ6IDdweDsgYm9yZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kOiB2YXIoLS1oYWxvKTsgYm94LXNoYWRvdzogMCAwIDAgNHB4IHZhcigtLWhhbG8tc29mdCk7IGFuaW1hdGlvbjogcHVsc2UgMi40cyBlYXNlLWluLW91dCBpbmZpbml0ZTsgfVxuQGtleWZyYW1lcyBwdWxzZSB7IDAlLDEwMCUgeyBvcGFjaXR5OiAxOyB9IDUwJSB7IG9wYWNpdHk6IC4zNTsgfSB9XG4uaGVybyBoMSB7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNzAwOyBsZXR0ZXItc3BhY2luZzogLS4wMzVlbTtcbiAgZm9udC1zaXplOiBjbGFtcCgzOHB4LCA2LjR2dywgNzhweCk7IGxpbmUtaGVpZ2h0OiAuOTg7IG1hcmdpbjogMCAwIDI2cHg7IG1heC13aWR0aDogMTZjaDtcbiAgdGV4dC13cmFwOiBiYWxhbmNlO1xufVxuLmhlcm8gaDEgLmdyYWQgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTAyZGVnLCB2YXIoLS1oYWxvLWRlZXApLCB2YXIoLS1pcmktYSkgNjAlLCB2YXIoLS1pcmktYykpOyAtd2Via2l0LWJhY2tncm91bmQtY2xpcDogdGV4dDsgYmFja2dyb3VuZC1jbGlwOiB0ZXh0OyBjb2xvcjogdHJhbnNwYXJlbnQ7IH1cbi5oZXJvLXN1YiB7IGZvbnQtc2l6ZTogY2xhbXAoMTdweCwgMnZ3LCAyMHB4KTsgY29sb3I6IHZhcigtLWluay0yKTsgbWF4LXdpZHRoOiA2MmNoOyBtYXJnaW46IDA7IGxpbmUtaGVpZ2h0OiAxLjU1OyB9XG4uaGVyby1zdWIgc3Ryb25nIHsgY29sb3I6IHZhcigtLWluayk7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuLyogPT09PT09PT09PT09IFNFQ1RJT04gU0NBRkZPTEQgPT09PT09PT09PT09ICovXG4uYmxvY2sgeyBwYWRkaW5nOiA3MnB4IDA7IH1cbi5zZWMtZXllYnJvdyB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMS41cHg7IGxldHRlci1zcGFjaW5nOiAuMTRlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHZhcigtLXN0ZWVsKTsgbWFyZ2luOiAwIDAgMTRweDsgfVxuLnNlYy1oIHsgZm9udC1mYW1pbHk6ICdJbnRlciBUaWdodCc7IGZvbnQtd2VpZ2h0OiA3MDA7IGxldHRlci1zcGFjaW5nOiAtLjAzZW07IGZvbnQtc2l6ZTogY2xhbXAoMjhweCwgNHZ3LCA0NnB4KTsgbGluZS1oZWlnaHQ6IDEuMDQ7IG1hcmdpbjogMCAwIDE2cHg7IHRleHQtd3JhcDogYmFsYW5jZTsgfVxuLnNlYy1sZWRlIHsgZm9udC1zaXplOiBjbGFtcCgxNnB4LCAxLjh2dywgMTlweCk7IGNvbG9yOiB2YXIoLS1pbmstMik7IG1heC13aWR0aDogNjRjaDsgbWFyZ2luOiAwOyBsaW5lLWhlaWdodDogMS41NTsgfVxuXG4vKiA9PT09PT09PT09PT0gVEhFIFNUQUdFIChpbnRlcmFjdGl2ZSkgPT09PT09PT09PT09ICovXG4uc3RhZ2Utd3JhcCB7IG1hcmdpbi10b3A6IDM4cHg7IH1cbi5zdGFnZSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJnLWludmVydGVkKTsgY29sb3I6IHZhcigtLWZnLWludmVydGVkKTtcbiAgYm9yZGVyLXJhZGl1czogMjZweDsgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm94LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoNywxNiwzMSwuNSksIDAgNDBweCA5MHB4IC00MHB4IHJnYmEoNywxNiwzMSwuNTUpLCAwIDEwcHggNDBweCAtMTZweCByZ2JhKDc5LDE0MCwyNTUsLjI4KTtcbiAgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxLjU1ZnIgMWZyO1xufVxuQG1lZGlhIChtYXgtd2lkdGg6IDg4MHB4KSB7IC5zdGFnZSB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9IH1cblxuLnN0YWdlLWNhbnZhcyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYmFja2dyb3VuZDpcbiAgcmFkaWFsLWdyYWRpZW50KDEyMCUgOTAlIGF0IDMwJSAwJSwgcmdiYSg3OSwxNDAsMjU1LC4xMiksIHRyYW5zcGFyZW50IDYwJSksXG4gIGxpbmVhci1ncmFkaWVudCgxODBkZWcsICMwQTEzMjIsICMwNzBEMTgpOyBwYWRkaW5nOiAxOHB4OyB9XG4uc3RhZ2UtY2FudmFzIHN2ZyB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyBib3JkZXItcmFkaXVzOiAxNHB4OyB9XG5cbi5zdGFnZS10YWcgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMzBweDsgbGVmdDogMzBweDsgei1pbmRleDogNDsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDEwLjVweDsgbGV0dGVyLXNwYWNpbmc6IC4xMmVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuNSk7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyB9XG4uc3RhZ2UtdGFnIC5saXZlIHsgd2lkdGg6IDdweDsgaGVpZ2h0OiA3cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogdmFyKC0tZ29vZCk7IGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKDU0LDE5NCwxMzksLjE4KTsgYW5pbWF0aW9uOiBwdWxzZSAycyBpbmZpbml0ZTsgfVxuXG4vKiB3b3JsZCBnZW9tZXRyeSAqL1xuLnctbG90ICAgeyBmaWxsOiAjMTYzNjFmOyB9XG4udy1sb3QtMiB7IGZpbGw6ICMxNDMwMTg7IH1cbi53LWhvdXNlIHsgZmlsbDogIzFiMjc0MDsgc3Ryb2tlOiAjMzg1MDdmOyBzdHJva2Utd2lkdGg6IDI7IH1cbi53LXJvb20gIHsgc3Ryb2tlOiAjMmEzYzYzOyBzdHJva2Utd2lkdGg6IDEuNDsgZmlsbDogbm9uZTsgfVxuLnctcm9vbWZpbGwgeyBmaWxsOiByZ2JhKDc5LDE0MCwyNTUsLjA1KTsgfVxuLnctZHJpdmUgeyBmaWxsOiAjMjMyYjNiOyB9XG4udy10cmVlICB7IGZpbGw6ICMxZjdhM2U7IHN0cm9rZTogIzJmYWY1Yjsgc3Ryb2tlLXdpZHRoOiAxLjU7IH1cbi53LWJlZCAgIHsgZmlsbDogIzVhM2E2Yjsgc3Ryb2tlOiAjOGQ1YmE2OyBzdHJva2Utd2lkdGg6IDEuMzsgb3BhY2l0eTogLjg1OyB9XG4udy1wYXRpbyB7IGZpbGw6ICMyYTMxNDI7IHN0cm9rZTogIzNkNDY1ZDsgc3Ryb2tlLXdpZHRoOiAxLjI7IH1cbi53LWxhYmVsIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDExcHg7IGZpbGw6IHJnYmEoMjU1LDI1NSwyNTUsLjM0KTsgbGV0dGVyLXNwYWNpbmc6IC4wNGVtOyB9XG4udy1vYmpsYWJlbCB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiA5LjVweDsgZmlsbDogcmdiYSgyNTUsMjU1LDI1NSwuNDIpOyB9XG4udy1nYXRlICB7IHN0cm9rZTogdmFyKC0tc2lnbmFsKTsgc3Ryb2tlLXdpZHRoOiAyLjU7IHN0cm9rZS1kYXNoYXJyYXk6IDQgNDsgfVxuXG4uZGV2IHsgZmlsbDogdmFyKC0taGFsbyk7IH1cbi5kZXYtcmluZyB7IGZpbGw6IG5vbmU7IHN0cm9rZTogdmFyKC0taGFsbyk7IHN0cm9rZS13aWR0aDogMS40OyBvcGFjaXR5OiAuNTsgfVxuLmRldi1wdWxzZSB7IGZpbGw6IG5vbmU7IHN0cm9rZTogdmFyKC0taGFsbyk7IHN0cm9rZS13aWR0aDogMS4yOyB0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7IH1cblxuI3ByZWRpY3RlZCB7IGZpbGw6IG5vbmU7IHN0cm9rZTogdmFyKC0taGFsby0yKTsgc3Ryb2tlLXdpZHRoOiAyLjQ7IHN0cm9rZS1kYXNoYXJyYXk6IDcgNzsgb3BhY2l0eTogLjg7IH1cbiN0cmFpbCB7IGZpbGw6IG5vbmU7IHN0cm9rZTogdXJsKCN0cmFpbGdyYWQpOyBzdHJva2Utd2lkdGg6IDMuNjsgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOyB9XG5cbi5yb2JvdC1ib2R5IHsgZmlsbDogI2ZmZjsgc3Ryb2tlOiB2YXIoLS1oYWxvLWRlZXApOyBzdHJva2Utd2lkdGg6IDI7IH1cbi5yb2JvdC1leWUgeyBmaWxsOiB2YXIoLS1oYWxvLWRlZXApOyB9XG4ucm9ib3QtaGFsbyB7IGZpbGw6IG5vbmU7IHN0cm9rZTogdmFyKC0taGFsby0yKTsgc3Ryb2tlLXdpZHRoOiAxLjU7IG9wYWNpdHk6IC42OyB9XG5cbi5kb2NrIHsgZmlsbDogbm9uZTsgc3Ryb2tlOiByZ2JhKDI1NSwyNTUsMjU1LC4zKTsgc3Ryb2tlLXdpZHRoOiAxLjY7IHN0cm9rZS1kYXNoYXJyYXk6IDMgNDsgfVxuLmRvY2stbGFiZWwgeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogOXB4OyBmaWxsOiByZ2JhKDI1NSwyNTUsMjU1LC40KTsgfVxuXG4vKiB1bmtub3duIG9iamVjdCAqL1xuLnVua25vd24geyBvcGFjaXR5OiAwOyB0cmFuc2l0aW9uOiBvcGFjaXR5IC40czsgfVxuLnVua25vd24uc2hvdyB7IG9wYWNpdHk6IDE7IH1cbi51bmtub3duLWJveCB7IGZpbGw6IHJnYmEoMjQ0LDE2MSwyOCwuMTYpOyBzdHJva2U6IHZhcigtLXNpZ25hbCk7IHN0cm9rZS13aWR0aDogMjsgc3Ryb2tlLWRhc2hhcnJheTogNSA0OyB9XG4udW5rbm93bi1xIHsgZmlsbDogdmFyKC0tc2lnbmFsKTsgZm9udC1mYW1pbHk6ICdJbnRlciBUaWdodCc7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogMjBweDsgdGV4dC1hbmNob3I6IG1pZGRsZTsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVBU09OSU5HIFBBTkVMID09PT09PT09PT09PSAqL1xuLnBhbmVsIHsgYmFja2dyb3VuZDogIzBjMTMyMjsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4wOCk7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IHBhZGRpbmc6IDIycHg7IGdhcDogMTZweDsgcG9zaXRpb246IHJlbGF0aXZlOyBtaW4taGVpZ2h0OiA1MjBweDsgfVxuLnBhbmVsLWggeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH1cbi5wYW5lbC10aXRsZSB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiAjZmZmOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDlweDsgfVxuLnBhbmVsLXRpdGxlIHN2ZyB7IGNvbG9yOiB2YXIoLS1oYWxvLTIpOyB9XG4uY29uZiB7IHRleHQtYWxpZ246IHJpZ2h0OyB9XG4uY29uZi1udW0geyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMjJweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6IHZhcigtLWdvb2QpOyBsaW5lLWhlaWdodDogMTsgdHJhbnNpdGlvbjogY29sb3IgLjNzOyB9XG4uY29uZi1udW0ubG93IHsgY29sb3I6IHZhcigtLXdhcm4pOyB9XG4uY29uZi1sYmwgeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogOXB4OyBsZXR0ZXItc3BhY2luZzogLjEyZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC40KTsgbWFyZ2luLXRvcDogM3B4OyB9XG5cbi50YXNrcyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogOHB4OyB9XG4udGFza3MtbGJsIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDkuNXB4OyBsZXR0ZXItc3BhY2luZzogLjEyZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC40KTsgbWFyZ2luLWJvdHRvbTogMnB4OyB9XG4udGFzay1idG4ge1xuICB0ZXh0LWFsaWduOiBsZWZ0OyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC4wNCk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjEpO1xuICBjb2xvcjogI2ZmZjsgcGFkZGluZzogMTJweCAxNHB4OyBib3JkZXItcmFkaXVzOiAxMnB4OyBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInOyBmb250LXNpemU6IDEzLjVweDsgZm9udC13ZWlnaHQ6IDUwMDtcbiAgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMXB4OyB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgLjE1cywgYmFja2dyb3VuZCAuMTVzLCB0cmFuc2Zvcm0gLjFzO1xufVxuLnRhc2stYnRuOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiB2YXIoLS1oYWxvKTsgYmFja2dyb3VuZDogcmdiYSg3OSwxNDAsMjU1LC4xKTsgfVxuLnRhc2stYnRuOmFjdGl2ZSB7IHRyYW5zZm9ybTogc2NhbGUoLjk5KTsgfVxuLnRhc2stYnRuLmlzLWFjdGl2ZSB7IGJvcmRlci1jb2xvcjogdmFyKC0taGFsbyk7IGJhY2tncm91bmQ6IHJnYmEoNzksMTQwLDI1NSwuMTYpOyB9XG4udGFzay1idG4gLmljIHsgd2lkdGg6IDMwcHg7IGhlaWdodDogMzBweDsgYm9yZGVyLXJhZGl1czogOHB4OyBiYWNrZ3JvdW5kOiByZ2JhKDc5LDE0MCwyNTUsLjE2KTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGZsZXgtc2hyaW5rOiAwOyBjb2xvcjogdmFyKC0taGFsby0yKTsgfVxuLnRhc2stYnRuIC5zdWIgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuNDUpOyBtYXJnaW4tdG9wOiAxcHg7IGZvbnQtd2VpZ2h0OiA0MDA7IH1cblxuLmxvZyB7IGZsZXg6IDE7IG92ZXJmbG93OiBoaWRkZW47IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogN3B4OyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTEuNXB4OyBsaW5lLWhlaWdodDogMS40NTsgfVxuLmxvZy1saW5lIHsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjYyKTsgZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IG9wYWNpdHk6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0cHgpOyBhbmltYXRpb246IGxvZ0luIC4zcyBmb3J3YXJkczsgfVxuLmxvZy1saW5lIC50IHsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjI4KTsgZmxleC1zaHJpbms6IDA7IH1cbi5sb2ctbGluZS53YXJuIHsgY29sb3I6IHZhcigtLXdhcm4pOyB9XG4ubG9nLWxpbmUuaHVtYW4geyBjb2xvcjogdmFyKC0taGFsby0yKTsgfVxuLmxvZy1saW5lLm9rIHsgY29sb3I6IHZhcigtLWdvb2QpOyB9XG5Aa2V5ZnJhbWVzIGxvZ0luIHsgdG8geyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IG5vbmU7IH0gfVxuLmxvZy1lbXB0eSB7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC4zMik7IGZvbnQtZmFtaWx5OiAnSW50ZXInOyBmb250LXNpemU6IDEzcHg7IGxpbmUtaGVpZ2h0OiAxLjU7IG1hcmdpbjogYXV0byAwOyB9XG5cbi8qIGh1bWFuIGNoZWNrcG9pbnQgY2FyZCAqL1xuLmNoZWNrcG9pbnQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDE2cHg7IHJpZ2h0OiAxNnB4OyBib3R0b206IDE2cHg7IHotaW5kZXg6IDg7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICMxNDIxNDIsICMwZDE4MmYpO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1oYWxvKTsgYm9yZGVyLXJhZGl1czogMTZweDsgcGFkZGluZzogMTZweDtcbiAgYm94LXNoYWRvdzogMCAtOHB4IDQwcHggLTEwcHggcmdiYSgwLDAsMCwuNik7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDAlKTsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4zNXMgY3ViaWMtYmV6aWVyKC4yLC44LC4yLDEpO1xufVxuLmNoZWNrcG9pbnQuc2hvdyB7IHRyYW5zZm9ybTogbm9uZTsgfVxuLmNwLWhlYWQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7IG1hcmdpbi1ib3R0b206IDlweDsgfVxuLmNwLW1vbm8geyB3aWR0aDogMzRweDsgaGVpZ2h0OiAzNHB4OyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWhhbG8pLCB2YXIoLS1pbmspKTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjZmZmOyBmbGV4LXNocmluazogMDsgfVxuLmNwLXdobyB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDEzLjVweDsgY29sb3I6ICNmZmY7IH1cbi5jcC1yb2xlIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDkuNXB4OyBsZXR0ZXItc3BhY2luZzogLjFlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHZhcigtLWhhbG8tMik7IG1hcmdpbi10b3A6IDFweDsgfVxuLmNwLXEgeyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC44KTsgbGluZS1oZWlnaHQ6IDEuNDU7IG1hcmdpbjogMCAwIDEycHg7IH1cbi5jcC1yb3cgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDhweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfVxuLmNwLWJ0biB7IGZsZXg6IDE7IGJhY2tncm91bmQ6IHZhcigtLWhhbG8pOyBjb2xvcjogI2ZmZjsgYm9yZGVyOiAwOyBwYWRkaW5nOiAxMHB4OyBib3JkZXItcmFkaXVzOiAxMHB4OyBmb250LWZhbWlseTogJ0ludGVyJzsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxM3B4OyBjdXJzb3I6IHBvaW50ZXI7IHRyYW5zaXRpb246IGJhY2tncm91bmQgLjE1czsgfVxuLmNwLWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWhhbG8tZGVlcCk7IH1cbi5jcC1idG4uYWx0IHsgZmxleDogMCAwIGF1dG87IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsLjA2KTsgY29sb3I6ICNmZmY7IHBhZGRpbmc6IDEwcHggMTRweDsgfVxuLmNwLWJ0bi5hbHQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC4xMik7IH1cbi5jcC1hdXRvIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDkuNXB4OyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuNCk7IG1hcmdpbi10b3A6IDlweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5cbi8qIG1vZGVsIHN0YXRzIHN0cmlwICovXG4ubW9kZWxiYXIgeyBkaXNwbGF5OiBmbGV4OyBnYXA6IDA7IGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4wNyk7IHBhZGRpbmctdG9wOiAxNHB4OyB9XG4ubW9kZWxiYXIgLm0geyBmbGV4OiAxOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjA3KTsgfVxuLm1vZGVsYmFyIC5tOmxhc3QtY2hpbGQgeyBib3JkZXItcmlnaHQ6IDA7IH1cbi5tb2RlbGJhciAubXYgeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTVweDsgY29sb3I6ICNmZmY7IH1cbi5tb2RlbGJhciAubWwgeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogOC41cHg7IGxldHRlci1zcGFjaW5nOiAuMWVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuNCk7IG1hcmdpbi10b3A6IDNweDsgfVxuXG4uc3RhZ2UtY2FwIHsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tc3RlZWwpOyBtYXJnaW46IDE2cHggMnB4IDA7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyB9XG4uc3RhZ2UtY2FwIHN2ZyB7IGZsZXgtc2hyaW5rOiAwOyBjb2xvcjogdmFyKC0taGFsby1kZWVwKTsgfVxuXG4vKiA9PT09PT09PT09PT0gVFdPLUNPTFVNTiBDT01QQVJFID09PT09PT09PT09PSAqL1xuLmNvbXBhcmUgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7IGdhcDogMjBweDsgbWFyZ2luLXRvcDogNDBweDsgfVxuQG1lZGlhIChtYXgtd2lkdGg6IDc2MHB4KSB7IC5jb21wYXJlIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH0gfVxuLmNtcC1jYXJkIHsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnVsZSk7IGJvcmRlci1yYWRpdXM6IDIwcHg7IHBhZGRpbmc6IDI4cHg7IGJhY2tncm91bmQ6IHZhcigtLXBhcGVyKTsgfVxuLmNtcC1jYXJkLndvcmxkIHsgYmFja2dyb3VuZDogdmFyKC0tYmctaW52ZXJ0ZWQpOyBjb2xvcjogdmFyKC0tZmctaW52ZXJ0ZWQpOyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyB9XG4uY21wLWtpY2tlciB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMC41cHg7IGxldHRlci1zcGFjaW5nOiAuMTJlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHZhcigtLXN0ZWVsKTsgbWFyZ2luOiAwIDAgMTRweDsgfVxuLmNtcC1jYXJkLndvcmxkIC5jbXAta2lja2VyIHsgY29sb3I6IHZhcigtLWhhbG8tMik7IH1cbi5jbXAtaCB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IDIzcHg7IGxldHRlci1zcGFjaW5nOiAtLjAyZW07IG1hcmdpbjogMCAwIDEwcHg7IH1cbi5jbXAtcCB7IGZvbnQtc2l6ZTogMTVweDsgbGluZS1oZWlnaHQ6IDEuNTU7IGNvbG9yOiB2YXIoLS1pbmstMik7IG1hcmdpbjogMCAwIDE4cHg7IH1cbi5jbXAtY2FyZC53b3JsZCAuY21wLXAgeyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuNzIpOyB9XG4uY21wLWVnIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDEycHg7IGxpbmUtaGVpZ2h0OiAxLjU7IHBhZGRpbmc6IDE0cHg7IGJvcmRlci1yYWRpdXM6IDEycHg7IGJhY2tncm91bmQ6IHZhcigtLXBhcGVyLTIpOyBjb2xvcjogdmFyKC0taW5rLTIpOyB9XG4uY21wLWNhcmQud29ybGQgLmNtcC1lZyB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsLjA1KTsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjcpOyB9XG4uY21wLWVnIGIgeyBjb2xvcjogdmFyKC0taGFsby1kZWVwKTsgZm9udC13ZWlnaHQ6IDUwMDsgfVxuLmNtcC1jYXJkLndvcmxkIC5jbXAtZWcgYiB7IGNvbG9yOiB2YXIoLS1oYWxvLTIpOyB9XG5cbi8qID09PT09PT09PT09PSBTVEVQUyA9PT09PT09PT09PT0gKi9cbi5zdGVwcyB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7IGdhcDogMThweDsgbWFyZ2luLXRvcDogMzhweDsgfVxuQG1lZGlhIChtYXgtd2lkdGg6IDgyMHB4KSB7IC5zdGVwcyB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9IH1cbi5zdGVwIHsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnVsZSk7IGJvcmRlci1yYWRpdXM6IDE4cHg7IHBhZGRpbmc6IDI2cHg7IGJhY2tncm91bmQ6IHZhcigtLXBhcGVyKTsgfVxuLnN0ZXAtbiB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogdmFyKC0taGFsby1kZWVwKTsgbWFyZ2luLWJvdHRvbTogMTRweDsgfVxuLnN0ZXAtaCB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IDE5cHg7IGxldHRlci1zcGFjaW5nOiAtLjAyZW07IG1hcmdpbjogMCAwIDhweDsgfVxuLnN0ZXAtcCB7IGZvbnQtc2l6ZTogMTQuNXB4OyBsaW5lLWhlaWdodDogMS41NTsgY29sb3I6IHZhcigtLWluay0yKTsgbWFyZ2luOiAwOyB9XG5cbi8qID09PT09PT09PT09PSBQSVRGQUxMUyA9PT09PT09PT09PT0gKi9cbi5waXRmYWxscyB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWludmVydGVkKTsgY29sb3I6IHZhcigtLWZnLWludmVydGVkKTsgfVxuLnBmLWdyaWQgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpOyBnYXA6IDE2cHg7IG1hcmdpbi10b3A6IDM4cHg7IH1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjBweCkgeyAucGYtZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9IH1cbi5wZiB7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsLjEpOyBib3JkZXItcmFkaXVzOiAxNnB4OyBwYWRkaW5nOiAyNHB4OyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC4wMjUpOyB9XG4ucGYtcmlzayB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMC41cHg7IGxldHRlci1zcGFjaW5nOiAuMWVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogdmFyKC0tc2lnbmFsKTsgbWFyZ2luOiAwIDAgOHB4OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgfVxuLnBmLXJpc2s6OmJlZm9yZSB7IGNvbnRlbnQ6ICcnOyB3aWR0aDogN3B4OyBoZWlnaHQ6IDdweDsgYm9yZGVyLXJhZGl1czogMnB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1zaWduYWwpOyB9XG4ucGYtaCB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNjAwOyBmb250LXNpemU6IDE3cHg7IG1hcmdpbjogMCAwIDEwcHg7IGNvbG9yOiAjZmZmOyB9XG4ucGYtcCB7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNTU7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC42Nik7IG1hcmdpbjogMCAwIDE0cHg7IH1cbi5wZi1hbnMgeyBmb250LXNpemU6IDEzLjVweDsgbGluZS1oZWlnaHQ6IDEuNTsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjkpOyBwYWRkaW5nLWxlZnQ6IDE0cHg7IGJvcmRlci1sZWZ0OiAycHggc29saWQgdmFyKC0tZ29vZCk7IH1cbi5wZi1hbnMgYiB7IGNvbG9yOiB2YXIoLS1nb29kKTsgZm9udC13ZWlnaHQ6IDYwMDsgfVxuXG4vKiA9PT09PT09PT09PT0gQ0xPU0lORyA9PT09PT09PT09PT0gKi9cbi5jbG9zZS1jdGEgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDk2cHggMDsgfVxuLmNsb3NlLWN0YSBoMiB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IGNsYW1wKDMwcHgsIDQuNnZ3LCA1NHB4KTsgbGV0dGVyLXNwYWNpbmc6IC0uMDNlbTsgbGluZS1oZWlnaHQ6IDEuMDI7IG1hcmdpbjogMCAwIDE4cHg7IHRleHQtd3JhcDogYmFsYW5jZTsgfVxuLmNsb3NlLWN0YSBwIHsgZm9udC1zaXplOiAxOHB4OyBjb2xvcjogdmFyKC0taW5rLTIpOyBtYXgtd2lkdGg6IDUyY2g7IG1hcmdpbjogMCBhdXRvIDMwcHg7IH1cbi5idG4tcm93IHsgZGlzcGxheTogZmxleDsgZ2FwOiAxMnB4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZmxleC13cmFwOiB3cmFwOyB9XG4uYnRuIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOXB4OyBwYWRkaW5nOiAxNXB4IDI2cHg7IGJvcmRlci1yYWRpdXM6IDk5OXB4OyBmb250LWZhbWlseTogJ0ludGVyJzsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxNXB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMTJzLCBiYWNrZ3JvdW5kIC4xNXMsIGJvcmRlci1jb2xvciAuMTVzOyB9XG4uYnRuLXByaW1hcnkgeyBiYWNrZ3JvdW5kOiB2YXIoLS1pbmspOyBjb2xvcjogdmFyKC0tcGFwZXIpOyB9XG4uYnRuLXByaW1hcnk6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1oYWxvLWRlZXApOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IH1cbi5idG4tZ2hvc3QgeyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ydWxlLTIpOyBjb2xvcjogdmFyKC0taW5rKTsgfVxuLmJ0bi1naG9zdDpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0taW5rKTsgfVxuXG5mb290ZXIgeyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tcnVsZSk7IHBhZGRpbmc6IDMwcHggMDsgfVxuLmZvb3QtaW4geyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGZsZXgtd3JhcDogd3JhcDsgZ2FwOiAxNHB4OyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS1zdGVlbCk7IH1cbi5mb290LW5vdGUgeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTFweDsgbGV0dGVyLXNwYWNpbmc6IC4wNGVtOyB9XG4uZm9vdC1ncmlkIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAyZnIgMWZyIDFmciAxZnIgMWZyOyBnYXA6IDQwcHg7IG1hcmdpbjogMjhweCAwIDQwcHg7IH1cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkgeyAuZm9vdC1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsgfSAuZm9vdC1ncmlkID4gZGl2OmZpcnN0LWNoaWxkIHsgZ3JpZC1jb2x1bW46IDEgLyAtMTsgfSB9XG4uZm9vdC1icmFuZC10ZXh0IHsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tc3RlZWwpOyBtYXJnaW4tdG9wOiAxMnB4OyBtYXgtd2lkdGg6IDI4MHB4OyBsaW5lLWhlaWdodDogMS41NTsgfVxuLmZvb3QtaCB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IG1hcmdpbjogMCAwIDEycHggMDsgfVxuLmZvb3QtbGlzdCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogOHB4OyB9XG4uZm9vdC1saXN0IGEgeyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS1zdGVlbCk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfVxuLmZvb3QtbGlzdCBhOmhvdmVyIHsgY29sb3I6IHZhcigtLWluayk7IH1cbi5mb290LWJvdHRvbSB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxNnB4OyBmbGV4LXdyYXA6IHdyYXA7IHBhZGRpbmctdG9wOiAyNHB4OyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tcnVsZSk7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLXN0ZWVsLTIpOyB9XG5mb290ZXI6aGFzKC5mb290LWdyaWQpIHsgcGFkZGluZzogNTZweCAwIDQwcHg7IH1cblxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsgKiB7IGFuaW1hdGlvbi1kdXJhdGlvbjogLjAxbXMgIWltcG9ydGFudDsgfSB9XG48L3N0eWxlPlxuPC9oZWFkPlxuPGJvZHk+XG5cbjxuYXY+XG4gIDxkaXYgY2xhc3M9XCJzaGVsbCBuYXYtaW5uZXJcIj5cbiAgICA8YSBjbGFzcz1cImJyYW5kXCIgaHJlZj1cIi9cIj5cbiAgICAgIDxzdmcgY2xhc3M9XCJicmFuZC1tYXJrXCIgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgdmlld0JveD1cIjAgMCAxMDAgMTAwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJibS1yaW5nXCIgY3g9XCI0NlwiIGN5PVwiNDZcIiByPVwiMzBcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBvcGFjaXR5PVwiLjIyXCIvPlxuICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiYm0tcmluZ1wiIGN4PVwiNDZcIiBjeT1cIjQ2XCIgcj1cIjIyXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIG9wYWNpdHk9XCIuNTVcIi8+XG4gICAgICAgIDxjaXJjbGUgY2xhc3M9XCJibS1yaW5nXCIgY3g9XCI0NlwiIGN5PVwiNDZcIiByPVwiMTRcIiBzdHJva2Utd2lkdGg9XCI0LjVcIi8+XG4gICAgICAgIDxsaW5lIGNsYXNzPVwiYm0tdGFpbFwiIHgxPVwiNTRcIiB5MT1cIjU0XCIgeDI9XCI3NlwiIHkyPVwiNzZcIiBzdHJva2Utd2lkdGg9XCI1LjVcIi8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDxkaXYgY2xhc3M9XCJicmFuZC10ZXh0XCI+aW5mcmFzdHJ1PHNwYW4gY2xhc3M9XCJxLWFjY2VudFwiPlE8L3NwYW4+dHVyZTwvZGl2PlxuICAgIDwvYT5cbiAgICA8ZGl2IGNsYXNzPVwibmF2LWxpbmtzXCI+XG4gICAgICA8YSBocmVmPVwiLyNyZXNpZGVudGlhbFwiPkZvciBob21lczwvYT5cbiAgICAgIDxhIGhyZWY9XCIvI2NvbW1lcmNpYWxcIj5Gb3IgYnVzaW5lc3M8L2E+XG4gICAgICA8YSBocmVmPVwiLyNyb2JvdGljc1wiPlJvYm90aWNzICZhbXA7IEFJPC9hPlxuICAgICAgPGEgaHJlZj1cIi93b3JsZC1tb2RlbFwiIGNsYXNzPVwiaXMtY3VycmVudFwiPldvcmxkIG1vZGVsPC9hPlxuICAgICAgPGEgY2xhc3M9XCJuYXYtY3RhXCIgaHJlZj1cIi8jZXN0aW1hdG9yXCI+R2V0IGEgbGl2ZSBxdW90ZSDihpI8L2E+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uYXY+XG5cbjxoZWFkZXIgY2xhc3M9XCJoZXJvXCI+XG4gIDxkaXYgY2xhc3M9XCJzaGVsbFwiPlxuICAgIDxwIGNsYXNzPVwiZXllYnJvd1wiPjxzcGFuIGNsYXNzPVwicGlwXCI+PC9zcGFuPldoZXJlIHRoaXMgaXMgZ29pbmcgwrcgYSB3b3JraW5nIGNvbmNlcHQ8L3A+XG4gICAgPGgxPlJvYm90cyBhcmUgbGVhcm5pbmcgdGhlIHdvcmxkLiBXZSB0ZWFjaCB0aGVtIDxzcGFuIGNsYXNzPVwiZ3JhZFwiPnlvdXJzPC9zcGFuPi48L2gxPlxuICAgIDxwIGNsYXNzPVwiaGVyby1zdWJcIj5BIDxzdHJvbmc+d29ybGQgbW9kZWw8L3N0cm9uZz4gaXMgYSByb2JvdOKAmXMgc2Vuc2Ugb2YgcGh5c2ljYWwgcmVhbGl0eTogc3BhY2UsIG1vdGlvbiwgYW5kIHdoYXQgaGFwcGVucyBuZXh0IGlmIGl0IG1vdmVzLiBUaGUgbW9kZWwga25vd3MgcGh5c2ljcyBpbiBnZW5lcmFsLiBJdCBkb2VzIG5vdCBrbm93IHlvdXIgaG91c2UsIHlvdXIgb2FrIHRyZWUsIG9yIHRoZSBraWTigJlzIGJpa2UgbGVmdCBieSB0aGUgZ2F0ZS4gPHN0cm9uZz5UaGF0IGlzIHRoZSBqb2Igd2UgYXJlIGJ1aWxkaW5nIHRvd2FyZC48L3N0cm9uZz4gV2UgbWFwIHlvdXIgc3BhY2UsIHNpbXVsYXRlIHRoZSB3b3JrIGJlZm9yZSBhbnl0aGluZyBtb3ZlcywgYW5kIHN0YXkgb24gdGhlIGhvb2sgdGhlIG1vbWVudCB0aGUgbW9kZWwgaXMgdW5zdXJlLiBUcnkgaXQgYmVsb3cuPC9wPlxuICA8L2Rpdj5cbjwvaGVhZGVyPlxuXG48IS0tID09PT09PT09PT09PSBUSEUgTElWRSBTVEFHRSA9PT09PT09PT09PT0gLS0+XG48c2VjdGlvbiBjbGFzcz1cImJsb2NrXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogOHB4O1wiPlxuICA8ZGl2IGNsYXNzPVwic2hlbGxcIj5cbiAgICA8cCBjbGFzcz1cInNlYy1leWVicm93XCI+TGl2ZSBjb25jZXB0IMK3IGRyYWctZnJlZSwganVzdCBwaWNrIGEgdGFzazwvcD5cbiAgICA8aDIgY2xhc3M9XCJzZWMtaFwiPllvdXIgaG9tZSwgYXMgYSBtb2RlbCBpdCBjYW4gdGhpbmsgd2l0aC48L2gyPlxuICAgIDxwIGNsYXNzPVwic2VjLWxlZGVcIj5UaGlzIGlzIGEgZGlnaXRhbCB0d2luIG9mIG9uZSBwcm9wZXJ0eS4gRXZlcnl0aGluZyB3ZSBoYXZlIGluc3RhbGxlZCBpcyBhbHJlYWR5IGluIGl0LiBHaXZlIHRoZSByb2JvdCBhIGpvYiBhbmQgd2F0Y2ggaXQgcHJlZGljdCB0aGUgcGF0aCwgcnVuIGl0LCBhbmQgcGF1c2UgdGhlIGluc3RhbnQgaXQgc2VlcyBzb21ldGhpbmcgdGhlIG1vZGVsIGRvZXMgbm90IHJlY29nbml6ZS48L3A+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3RhZ2Utd3JhcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0YWdlXCI+XG4gICAgICAgIDwhLS0gQ0FOVkFTIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhZ2UtY2FudmFzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0YWdlLXRhZ1wiPjxzcGFuIGNsYXNzPVwibGl2ZVwiPjwvc3Bhbj5Xb3JsZCBtb2RlbCDCtyAxMjQwIEF1cm9yYSBBdmU8L2Rpdj5cbiAgICAgICAgICA8c3ZnIGlkPVwic2NlbmVcIiB2aWV3Qm94PVwiMCAwIDcyMCA1NjBcIiBhcmlhLWxhYmVsPVwiVG9wLWRvd24gZGlnaXRhbCB0d2luIG9mIGEgaG9tZSBhbmQgeWFyZFwiPlxuICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInRyYWlsZ3JhZFwiIHgxPVwiMFwiIHkxPVwiMFwiIHgyPVwiMVwiIHkyPVwiMVwiPlxuICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzkyRTVGRlwiLz5cbiAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM0RjhDRkZcIi8+XG4gICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgICA8L2RlZnM+XG5cbiAgICAgICAgICAgIDwhLS0gbG90IC0tPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9XCJ3LWxvdFwiIHg9XCIxNlwiIHk9XCIxNlwiIHdpZHRoPVwiNjg4XCIgaGVpZ2h0PVwiNTI4XCIgcng9XCIxNFwiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPVwidy1sb3QtMlwiIHg9XCIzNjBcIiB5PVwiOTJcIiB3aWR0aD1cIjMyOFwiIGhlaWdodD1cIjQzMFwiIHJ4PVwiOFwiLz5cblxuICAgICAgICAgICAgPCEtLSBkcml2ZXdheSArIHN0cmVldCAtLT5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPVwidy1kcml2ZVwiIHg9XCIxNTBcIiB5PVwiNDMwXCIgd2lkdGg9XCI5MFwiIGhlaWdodD1cIjExNFwiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPVwidy1kcml2ZVwiIHg9XCIxNlwiIHk9XCI1MjBcIiB3aWR0aD1cIjY4OFwiIGhlaWdodD1cIjI0XCIvPlxuXG4gICAgICAgICAgICA8IS0tIGhvdXNlIC0tPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9XCJ3LWhvdXNlXCIgeD1cIjYwXCIgeT1cIjgwXCIgd2lkdGg9XCIzMDBcIiBoZWlnaHQ9XCIzMjBcIiByeD1cIjZcIi8+XG4gICAgICAgICAgICA8IS0tIHJvb21zIC0tPlxuICAgICAgICAgICAgPGxpbmUgY2xhc3M9XCJ3LXJvb21cIiB4MT1cIjIxMFwiIHkxPVwiODBcIiB4Mj1cIjIxMFwiIHkyPVwiNDAwXCIvPlxuICAgICAgICAgICAgPGxpbmUgY2xhc3M9XCJ3LXJvb21cIiB4MT1cIjYwXCIgeTE9XCIyNDBcIiB4Mj1cIjIxMFwiIHkyPVwiMjQwXCIvPlxuICAgICAgICAgICAgPGxpbmUgY2xhc3M9XCJ3LXJvb21cIiB4MT1cIjIxMFwiIHkxPVwiMjAwXCIgeDI9XCIzNjBcIiB5Mj1cIjIwMFwiLz5cbiAgICAgICAgICAgIDx0ZXh0IGNsYXNzPVwidy1sYWJlbFwiIHg9XCI4NFwiIHk9XCIxNzBcIj5MSVZJTkc8L3RleHQ+XG4gICAgICAgICAgICA8dGV4dCBjbGFzcz1cInctbGFiZWxcIiB4PVwiODRcIiB5PVwiMzMwXCI+S0lUQ0hFTjwvdGV4dD5cbiAgICAgICAgICAgIDx0ZXh0IGNsYXNzPVwidy1sYWJlbFwiIHg9XCIyMzZcIiB5PVwiMTUwXCI+QkVEUk9PTTwvdGV4dD5cbiAgICAgICAgICAgIDx0ZXh0IGNsYXNzPVwidy1sYWJlbFwiIHg9XCIyMzZcIiB5PVwiMzEwXCI+T0ZGSUNFPC90ZXh0PlxuICAgICAgICAgICAgPCEtLSBmcm9udCBkb29yIC0tPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjE5NVwiIHk9XCIzOTZcIiB3aWR0aD1cIjM0XCIgaGVpZ2h0PVwiOFwiIHJ4PVwiM1wiIGZpbGw9XCIjMzg1MDdmXCIvPlxuXG4gICAgICAgICAgICA8IS0tIHlhcmQgb2JqZWN0cyAoa25vd24gdG8gdGhlIG1vZGVsKSAtLT5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJ3LXRyZWVcIiBjeD1cIjYyMFwiIGN5PVwiMTUwXCIgcj1cIjQwXCIvPlxuICAgICAgICAgICAgPHRleHQgY2xhc3M9XCJ3LW9iamxhYmVsXCIgeD1cIjYyMFwiIHk9XCIxNTNcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIHN0eWxlPVwiZmlsbDpyZ2JhKDI1NSwyNTUsMjU1LC41KVwiPk9BSzwvdGV4dD5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPVwidy1iZWRcIiB4PVwiNDMwXCIgeT1cIjQ3MFwiIHdpZHRoPVwiMjIwXCIgaGVpZ2h0PVwiMzRcIiByeD1cIjhcIi8+XG4gICAgICAgICAgICA8dGV4dCBjbGFzcz1cInctb2JqbGFiZWxcIiB4PVwiNTQwXCIgeT1cIjQ5MVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCI+RkxPV0VSIEJFRDwvdGV4dD5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPVwidy1wYXRpb1wiIHg9XCIzOTJcIiB5PVwiMTIwXCIgd2lkdGg9XCI5MlwiIGhlaWdodD1cIjc0XCIgcng9XCI2XCIvPlxuICAgICAgICAgICAgPHRleHQgY2xhc3M9XCJ3LW9iamxhYmVsXCIgeD1cIjQzOFwiIHk9XCIxNjFcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiPlBBVElPPC90ZXh0PlxuICAgICAgICAgICAgPCEtLSBzaWRlIGdhdGUgLS0+XG4gICAgICAgICAgICA8bGluZSBjbGFzcz1cInctZ2F0ZVwiIHgxPVwiNjg4XCIgeTE9XCIzMDBcIiB4Mj1cIjY4OFwiIHkyPVwiMzYwXCIvPlxuICAgICAgICAgICAgPHRleHQgY2xhc3M9XCJ3LW9iamxhYmVsXCIgeD1cIjY0OFwiIHk9XCIzMzRcIiBzdHlsZT1cImZpbGw6dmFyKC0tc2lnbmFsKVwiPkdBVEU8L3RleHQ+XG5cbiAgICAgICAgICAgIDwhLS0gaW5zdGFsbGVkIGRldmljZXMgKHRoZSBtb2RlbCBpcyBidWlsdCBmcm9tIHRoZXNlKSAtLT5cbiAgICAgICAgICAgIDxnIGlkPVwiZGV2aWNlc1wiPjwvZz5cblxuICAgICAgICAgICAgPCEtLSBkb2NrIC0tPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9XCJkb2NrXCIgeD1cIjM5MlwiIHk9XCI0MDRcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjhcIi8+XG4gICAgICAgICAgICA8dGV4dCBjbGFzcz1cImRvY2stbGFiZWxcIiB4PVwiNDEyXCIgeT1cIjQ1OFwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCI+RE9DSzwvdGV4dD5cblxuICAgICAgICAgICAgPCEtLSBkeW5hbWljIHBhdGhzIC0tPlxuICAgICAgICAgICAgPHBhdGggaWQ9XCJwcmVkaWN0ZWRcIiBkPVwiXCIvPlxuICAgICAgICAgICAgPHBhdGggaWQ9XCJ0cmFpbFwiIGQ9XCJcIi8+XG5cbiAgICAgICAgICAgIDwhLS0gdW5rbm93biBvYmplY3QgLS0+XG4gICAgICAgICAgICA8ZyBjbGFzcz1cInVua25vd25cIiBpZD1cInVua25vd25cIj5cbiAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9XCJ1bmtub3duLWJveFwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQ2XCIgaGVpZ2h0PVwiMzRcIiByeD1cIjZcIi8+XG4gICAgICAgICAgICAgIDx0ZXh0IGNsYXNzPVwidW5rbm93bi1xXCIgeD1cIjIzXCIgeT1cIjI0XCI+PzwvdGV4dD5cbiAgICAgICAgICAgIDwvZz5cblxuICAgICAgICAgICAgPCEtLSByb2JvdCAtLT5cbiAgICAgICAgICAgIDxnIGlkPVwicm9ib3RcIiBzdHlsZT1cIm9wYWNpdHk6MFwiPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwicm9ib3QtaGFsb1wiIGN4PVwiMFwiIGN5PVwiMFwiIHI9XCIxNlwiLz5cbiAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cInJvYm90LWJvZHlcIiBjeD1cIjBcIiBjeT1cIjBcIiByPVwiMTBcIi8+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJyb2JvdC1leWVcIiBjeD1cIjBcIiBjeT1cIi00XCIgcj1cIjIuNFwiLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBQQU5FTCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxuICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj48cGF0aCBkPVwiTTEyIDJhMTAgMTAgMCAxMDAgMjAgMTAgMTAgMCAwMDAtMjB6XCIvPjxwYXRoIGQ9XCJNMiAxMmgyME0xMiAyYTE1IDE1IDAgMDEwIDIwTTEyIDJhMTUgMTUgMCAwMDAgMjBcIi8+PC9zdmc+XG4gICAgICAgICAgICAgIFdvcmxkIG1vZGVsXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25mXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25mLW51bVwiIGlkPVwiY29uZk51bVwiPi0tPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25mLWxibFwiPmNvbmZpZGVuY2U8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhc2tzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFza3MtbGJsXCI+R2l2ZSBpdCBhIGpvYjwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRhc2stYnRuXCIgZGF0YS10YXNrPVwibW93XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNcIj48c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj48cGF0aCBkPVwiTTMgMjBoMThNNSAyMHYtNmg2djZNNSAxNGMwLTQgMy03IDctN00xMiA3bDQtMlwiLz48L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPk1vdyB0aGUgYmFjayBsYXduPHNwYW4gY2xhc3M9XCJzdWJcIj5hdXRvbm9tb3VzIG1vd2VyIMK3IH4wLjQgYWNyZTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0YXNrLWJ0blwiIGRhdGEtdGFzaz1cInBhdHJvbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljXCI+PHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+PHBhdGggZD1cIk0xMiAybDggNHY2YzAgNS0zLjUgOC04IDEwLTQuNS0yLTgtNS04LTEwVjZ6XCIvPjwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+RXZlbmluZyBzZWN1cml0eSBwYXRyb2w8c3BhbiBjbGFzcz1cInN1YlwiPnBlcmltZXRlciBsb29wIMK3IGNoZWNrcyBjYW1lcmFzPC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRhc2stYnRuXCIgZGF0YS10YXNrPVwiZGVsaXZlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljXCI+PHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+PHBhdGggZD1cIk0zIDdsOS00IDkgNHYxMGwtOSA0LTktNHpcIi8+PHBhdGggZD1cIk0zIDdsOSA0IDktNE0xMiAxMXYxMFwiLz48L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPkNhcnJ5IHRoZSBwYWNrYWdlIHRvIHRoZSBkb29yPHNwYW4gY2xhc3M9XCJzdWJcIj5kZWxpdmVyeSBib3QgwrcgMTQgbGIgcGFyY2VsPC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ1wiIGlkPVwibG9nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9nLWVtcHR5XCI+UGljayBhIGpvYi4gVGhlIG1vZGVsIHdpbGwgbG9hZCB0aGUgcHJvcGVydHksIHByZWRpY3QgYSByb3V0ZSwgYW5kIG5hcnJhdGUgZXZlcnkgZGVjaXNpb24gaGVyZS48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlbGJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1cIj48ZGl2IGNsYXNzPVwibXZcIiBpZD1cIm1PYmpcIj4zNzwvZGl2PjxkaXYgY2xhc3M9XCJtbFwiPm9iamVjdHMgbWFwcGVkPC9kaXY+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibVwiPjxkaXYgY2xhc3M9XCJtdlwiIGlkPVwibVVwXCI+MTQ8L2Rpdj48ZGl2IGNsYXNzPVwibWxcIj5pbnN0YWxscyBsb2dnZWQ8L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtXCI+PGRpdiBjbGFzcz1cIm12XCIgaWQ9XCJtSHVtYW5cIj4xPC9kaXY+PGRpdiBjbGFzcz1cIm1sXCI+aHVtYW4gaW4gbG9vcDwvZGl2PjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBodW1hbiBjaGVja3BvaW50IC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja3BvaW50XCIgaWQ9XCJjaGVja3BvaW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3AtaGVhZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3AtbW9ub1wiPk48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Atd2hvXCI+TmR1PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNwLXJvbGVcIj5odW1hbiBjaGVja3BvaW50IMK3IG9uIGNhbGw8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiY3AtcVwiIGlkPVwiY3BRXCI+VGhlIGJvdCBmb3VuZCBzb21ldGhpbmcgbm90IGluIHRoZSBtb2RlbC4gSG93IHNob3VsZCBpdCBwcm9jZWVkPzwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcC1yb3dcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNwLWJ0blwiIGlkPVwiY3BDb25maXJtXCI+Q29uZmlybSAmYW1wOyByZXN1bWU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNwLWJ0biBhbHRcIiBpZD1cImNwUmVyb3V0ZVwiPlJlcm91dGU8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNwLWF1dG9cIiBpZD1cImNwQXV0b1wiPmF1dG8tcmVzb2x2aW5nIGluIDRzPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxwIGNsYXNzPVwic3RhZ2UtY2FwXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE1XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPjxwYXRoIGQ9XCJNMTIgMmwzIDdoN2wtNS41IDQuNUwxOCAyMWwtNi00LTYgNCAxLjUtNy41TDIgOWg3elwiLz48L3N2Zz5cbiAgICAgICAgQSBjb25jZXB0IGRlbW8uIFJlYWwgZGVwbG95bWVudHMgcnVuIHRoZSBzYW1lIGxvb3A6IG1hcCwgc2ltdWxhdGUsIGRlcGxveSwgZXNjYWxhdGUgdG8gYSBwZXJzb24gd2hlbiB0aGUgbW9kZWwgaXMgdW5zdXJlLlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cblxuPCEtLSA9PT09PT09PT09PT0gTExNIHZzIFdPUkxEIE1PREVMID09PT09PT09PT09PSAtLT5cbjxzZWN0aW9uIGNsYXNzPVwiYmxvY2tcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAyNHB4O1wiPlxuICA8ZGl2IGNsYXNzPVwic2hlbGxcIj5cbiAgICA8cCBjbGFzcz1cInNlYy1leWVicm93XCI+VGhlIHNoaWZ0IHVuZGVybmVhdGggYWxsIG9mIHRoaXM8L3A+XG4gICAgPGgyIGNsYXNzPVwic2VjLWhcIj5Ud28ga2luZHMgb2YgaW50ZWxsaWdlbmNlLiBPbmx5IG9uZSBjYW4gd2FsayBpbnRvIHlvdXIga2l0Y2hlbi48L2gyPlxuICAgIDxkaXYgY2xhc3M9XCJjb21wYXJlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY21wLWNhcmRcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJjbXAta2lja2VyXCI+TGFyZ2UgbGFuZ3VhZ2UgbW9kZWw8L3A+XG4gICAgICAgIDxoMyBjbGFzcz1cImNtcC1oXCI+TGVhcm5zIGZyb20gd2hhdCBwZW9wbGUgc2FpZC48L2gzPlxuICAgICAgICA8cCBjbGFzcz1cImNtcC1wXCI+VHJhaW5lZCBvbiB0ZXh0LiBJdCBwcmVkaWN0cyB0aGUgbmV4dCB3b3JkLCBzbyBpdCBpcyBicmlsbGlhbnQgYXQgbGFuZ3VhZ2UsIGtub3dsZWRnZSwgYW5kIHJlYXNvbmluZy4gQnV0IGl0IGhhcyBubyByZWFsIGdyaXAgb24gcGh5c2ljcy4gSXQgY2FuIGRlc2NyaWJlIHRoZSBqb2IgcGVyZmVjdGx5IHdpdGhvdXQga25vd2luZyB5b3VyIGFjdHVhbCB3YWxsLjwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNtcC1lZ1wiPuKAnFRvIG1vdW50IGEgNzUmUHJpbWU7IFRWLCBsb2NhdGUgdGhlIHN0dWRzLCB1c2UgYSB0aWx0aW5nIGJyYWNrZXQsIGFuZCByb3V0ZSB0aGUgY2FibGUgdGhyb3VnaCB0aGUgd2FsbC7igJ0gPGJyPjxicj48Yj5Lbm93cyB0aGUgcmVjaXBlLiBOb3QgdGhlIHJvb20uPC9iPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY21wLWNhcmQgd29ybGRcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJjbXAta2lja2VyXCI+V29ybGQgbW9kZWw8L3A+XG4gICAgICAgIDxoMyBjbGFzcz1cImNtcC1oXCI+TGVhcm5zIGhvdyB0aGUgd29ybGQgYmVoYXZlcy48L2gzPlxuICAgICAgICA8cCBjbGFzcz1cImNtcC1wXCI+VHJhaW5lZCBvbiBzcGFjZSBhbmQgbW90aW9uLiBJdCBjYW4gaW1hZ2luZSB3aGF0IGhhcHBlbnMgbmV4dDogdHVybiBsZWZ0LCB0aGUgc2xvcGUgc3RlZXBlbnMsIHRoZSBjYWJsZSB3aWxsIHNhZy4gVGhpcyBpcyB0aGUgbWlzc2luZyBsYXllciB0aGF0IGxldHMgYSByb2JvdCBhY3QgaW4gYSByZWFsIHJvb20gaW5zdGVhZCBvZiBhIGRlbW8gdmlkZW8uPC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY21wLWVnXCI+4oCcU3R1ZHMgYXQgNDEmUHJpbWU7IGFuZCA1NyZQcmltZTsuIE91dGxldCAxMSZQcmltZTsgYmVsb3cgbW91bnQgbGluZS4gQ2FibGUgZHJvcCBjbGVhcnMgdGhlIGJhc2Vib2FyZCB3aXRoIDMmUHJpbWU7IHRvIHNwYXJlLuKAnSA8YnI+PGJyPjxiPktub3dzIHRoZSByb29tLiBQcmVkaWN0cyB0aGUgcmVzdWx0LjwvYj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cblxuPCEtLSA9PT09PT09PT09PT0gSE9XIFdFIEZJVCA9PT09PT09PT09PT0gLS0+XG48c2VjdGlvbiBjbGFzcz1cImJsb2NrXCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogOHB4O1wiPlxuICA8ZGl2IGNsYXNzPVwic2hlbGxcIj5cbiAgICA8cCBjbGFzcz1cInNlYy1leWVicm93XCI+T3VyIHBhcnQgb2YgaXQ8L3A+XG4gICAgPGgyIGNsYXNzPVwic2VjLWhcIj5XZSBhcmUgdGhlIGhhbmRzIG9mIHRoZSB3b3JsZCBtb2RlbC48L2gyPlxuICAgIDxwIGNsYXNzPVwic2VjLWxlZGVcIj5BIHJvYm90IGFycml2ZXMga25vd2luZyBwaHlzaWNzIGluIGdlbmVyYWwuIFNvbWVvbmUgaGFzIHRvIGdyb3VuZCBpdCBpbiBvbmUgc3BlY2lmaWMgcGxhY2UsIGFuZCBzdGF5IGFjY291bnRhYmxlIHdoZW4gdGhlIG1vZGVsIGlzIHdyb25nLiBUaGF0IGhhcyBhbHdheXMgYmVlbiBvdXIgam9iLiBUaGUgcm9ib3RzIGp1c3QgbWFrZSBpdCBiaWdnZXIuPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJzdGVwc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ZXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXAtblwiPjAxIC8gTUFQPC9kaXY+XG4gICAgICAgIDxoMyBjbGFzcz1cInN0ZXAtaFwiPkV2ZXJ5IGluc3RhbGwgYnVpbGRzIHRoZSBtb2RlbC48L2gzPlxuICAgICAgICA8cCBjbGFzcz1cInN0ZXAtcFwiPkEgY2FtZXJhIGhlcmUsIGEgbWVzaCBub2RlIHRoZXJlLCBhIGxvY2sgb24gdGhlIGRvb3IuIEVhY2ggam9iIGxlYXZlcyBhIHN0cnVjdHVyZWQgcmVjb3JkIG9mIHdoYXQgaXMgd2hlcmUuIE92ZXIgdGltZSB0aGF0IHJlY29yZCBiZWNvbWVzIGEgbGl2aW5nIG1hcCBvZiB5b3VyIGhvbWUsIHNvIHRoZSBuZXh0IHJvYm90IGFycml2ZXMgYWxyZWFkeSBrbm93aW5nIHRoZSBzcGFjZS48L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGVwLW5cIj4wMiAvIFNJTVVMQVRFPC9kaXY+XG4gICAgICAgIDxoMyBjbGFzcz1cInN0ZXAtaFwiPlNlZSB0aGUgcGxhbiBiZWZvcmUgaXQgbW92ZXMuPC9oMz5cbiAgICAgICAgPHAgY2xhc3M9XCJzdGVwLXBcIj5XZSBydW4gdGhlIHRhc2sgaW4gdGhlIG1vZGVsIGZpcnN0LiBUaGUgcm91dGUsIHRoZSBjb3ZlcmFnZSwgdGhlIGNoYXJnZSBjeWNsZXMuIFlvdSBzZWUgaXQsIHlvdSBhcHByb3ZlIGl0LCBhbmQgb25seSB0aGVuIGRvZXMgYW55dGhpbmcgcGh5c2ljYWwgaGFwcGVuLiBObyBzdXJwcmlzZXMgb24gdGhlIGRheSwgbm8gZ3Vlc3NpbmcuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RlcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC1uXCI+MDMgLyBERVBMT1k8L2Rpdj5cbiAgICAgICAgPGgzIGNsYXNzPVwic3RlcC1oXCI+QSBwZXJzb24gc3RheXMgb24gdGhlIGhvb2suPC9oMz5cbiAgICAgICAgPHAgY2xhc3M9XCJzdGVwLXBcIj5UaGUgcm9ib3QgZG9lcyB0aGUgd29yay4gV2hlbiBpdCBoaXRzIHNvbWV0aGluZyB0aGUgbW9kZWwgZGlkIG5vdCBwcmVkaWN0LCBpdCBzdG9wcyBhbmQgY2FsbHMgYSBodW1hbiB3aXRoIGEgbmFtZSB5b3Uga25vdy4gVHJ1c3QgaXMgZWFybmVkIG9uZSB0YXNrIGF0IGEgdGltZSwgbmV2ZXIgYXNzdW1lZC48L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG5cbjwhLS0gPT09PT09PT09PT09IFBJVEZBTExTID09PT09PT09PT09PSAtLT5cbjxzZWN0aW9uIGNsYXNzPVwiYmxvY2sgcGl0ZmFsbHNcIj5cbiAgPGRpdiBjbGFzcz1cInNoZWxsXCI+XG4gICAgPHAgY2xhc3M9XCJzZWMtZXllYnJvd1wiIHN0eWxlPVwiY29sb3I6dmFyKC0taGFsby0yKVwiPldlIGFyZSBub3QgZ29pbmcgdG8gcHJldGVuZCB0aGVzZSBhd2F5PC9wPlxuICAgIDxoMiBjbGFzcz1cInNlYy1oXCI+VGhlIGhvbmVzdCByaXNrcywgYW5kIHdoZXJlIHdlIHN0YW5kIG9uIGVhY2guPC9oMj5cbiAgICA8cCBjbGFzcz1cInNlYy1sZWRlXCIgc3R5bGU9XCJjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC43KVwiPkEgd29ybGQgbW9kZWwgY2FuIGJlIGNvbmZpZGVudGx5IHdyb25nLiBBbnlvbmUgc2VsbGluZyB5b3Ugcm9ib3RzIHdobyBza2lwcyB0aGlzIHBhcnQgaXMgdGhlIHdyb25nIHBlcnNvbiB0byBpbnN0YWxsIHRoZW0uIEhlcmUgaXMgdGhlIHVuY29tZm9ydGFibGUgbGlzdCwgd2l0aCBvdXIgYWN0dWFsIGFuc3dlciBuZXh0IHRvIGl0LjwvcD5cbiAgICA8ZGl2IGNsYXNzPVwicGYtZ3JpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBmXCI+XG4gICAgICAgIDxwIGNsYXNzPVwicGYtcmlza1wiPkNvbmZpZGVudGx5IHdyb25nPC9wPlxuICAgICAgICA8aDMgY2xhc3M9XCJwZi1oXCI+VGhlIG1vZGVsIGNhbiBoYWxsdWNpbmF0ZSBhIGNsZWFyIHBhdGguPC9oMz5cbiAgICAgICAgPHAgY2xhc3M9XCJwZi1wXCI+SXQgY2FuIG1pc3JlYWQgYW4gb2JzdGFjbGUsIG1pc2p1ZGdlIGEgc2xvcGUsIG9yIG1pc3RpbWUgYSBjdXQsIGFuZCByZXBvcnQgaGlnaCBjb25maWRlbmNlIHRoZSB3aG9sZSB3YXkuIEEgd3JvbmcgYW5zd2VyIHRoYXQgc291bmRzIHN1cmUgaXMgdGhlIG1vc3QgZGFuZ2Vyb3VzIGtpbmQuPC9wPlxuICAgICAgICA8cCBjbGFzcz1cInBmLWFuc1wiPjxiPk91ciBzdGFuZDo8L2I+IHRoZSBtb2RlbCBjYW4gaW1hZ2luZSB5b3VyIGxpdmluZyByb29tLiBPbmx5IGEgcGVyc29uIGNhbiB3YWxrIGludG8gaXQuIFVuY2VydGFpbnR5IGVzY2FsYXRlcyB0byBhIGh1bWFuIGJlZm9yZSBhbnl0aGluZyBtb3Zlcy48L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwZlwiPlxuICAgICAgICA8cCBjbGFzcz1cInBmLXJpc2tcIj5Qcml2YWN5PC9wPlxuICAgICAgICA8aDMgY2xhc3M9XCJwZi1oXCI+QSBob21lIG1vZGVsIGlzIGludGltYXRlIGRhdGEuPC9oMz5cbiAgICAgICAgPHAgY2xhc3M9XCJwZi1wXCI+QSBtYXAgb2Ygd2hlcmUgeW91IHNsZWVwLCB3aGVuIHlvdSBsZWF2ZSwgd2hhdCBpcyB3b3J0aCB0YWtpbmcuIFRoYXQgaXMgdGhlIG1vc3Qgc2Vuc2l0aXZlIGZpbGUgeW91IHdpbGwgZXZlciBvd24sIGFuZCBtb3N0IHZlbmRvcnMgcXVpZXRseSB3YW50IHRvIGtlZXAgaXQuPC9wPlxuICAgICAgICA8cCBjbGFzcz1cInBmLWFuc1wiPjxiPk91ciBzdGFuZDo8L2I+IHlvdSBvd24geW91ciBob21l4oCZcyBtb2RlbCwgbm90IHVzLCBub3QgdGhlIHJvYm90IG1ha2VyLiBJdCBpcyBwb3J0YWJsZSwgZXhwb3J0YWJsZSwgYW5kIGRlbGV0YWJsZSBvbiB5b3VyIHdvcmQuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicGZcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJwZi1yaXNrXCI+T3Zlci10cnVzdDwvcD5cbiAgICAgICAgPGgzIGNsYXNzPVwicGYtaFwiPlBlb3BsZSBzdG9wIHdhdGNoaW5nLjwvaDM+XG4gICAgICAgIDxwIGNsYXNzPVwicGYtcFwiPlRoZSBtb3JlIHJlbGlhYmxlIGF1dG9tYXRpb24gZ2V0cywgdGhlIGxlc3MgYW55b25lIHBheXMgYXR0ZW50aW9uLCByaWdodCB1cCB1bnRpbCB0aGUgb25lIHRpbWUgaXQgbWF0dGVycy4gQ29tZm9ydCBxdWlldGx5IGJlY29tZXMgY29tcGxhY2VuY3kuPC9wPlxuICAgICAgICA8cCBjbGFzcz1cInBmLWFuc1wiPjxiPk91ciBzdGFuZDo8L2I+IHdlIGRlc2lnbiBmb3IgdGhlIGhhbmRvZmYsIG5vdCB0aGUgYXV0b3BpbG90LiBUaGUgc3lzdGVtIGlzIGxvdWRlc3QgZXhhY3RseSB3aGVuIGl0IGlzIGxlYXN0IHN1cmUsIGFuZCBhIHBlcnNvbiBpcyBhbHdheXMgcmVhY2hhYmxlLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBmXCI+XG4gICAgICAgIDxwIGNsYXNzPVwicGYtcmlza1wiPkFjY291bnRhYmlsaXR5PC9wPlxuICAgICAgICA8aDMgY2xhc3M9XCJwZi1oXCI+V2hlbiBhIG1hY2hpbmUgZXJycywgd2hvIGFuc3dlcnM/PC9oMz5cbiAgICAgICAgPHAgY2xhc3M9XCJwZi1wXCI+QSByb2JvdCBjYW5ub3QgYmUgc29ycnkuIEl0IGNhbm5vdCBzdGFuZCBpbiB5b3VyIGtpdGNoZW4gYW5kIG1ha2UgaXQgcmlnaHQuIERpZmZ1c2UgYmxhbWUgYmV0d2VlbiBhIHZlbmRvciwgYSBtb2RlbCwgYW5kIGFuIGluc3RhbGxlciBoZWxwcyBubyBvbmUuPC9wPlxuICAgICAgICA8cCBjbGFzcz1cInBmLWFuc1wiPjxiPk91ciBzdGFuZDo8L2I+IHRoZSBzYW1lIHBlcnNvbiB3aG8gc2lnbnMgdGhlIHdvcmsgYW5zd2VycyBmb3IgaXQuIE9uZSBuYW1lLCBvbmUgbnVtYmVyLCBiZWZvcmUgYW5kIGFmdGVyIHRoZSByb2JvdCBzaG93cyB1cC48L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG5cbjwhLS0gPT09PT09PT09PT09IENMT1NFID09PT09PT09PT09PSAtLT5cbjxzZWN0aW9uIGNsYXNzPVwiY2xvc2UtY3RhXCI+XG4gIDxkaXYgY2xhc3M9XCJzaGVsbFwiPlxuICAgIDxoMj5UaGUgZnV0dXJlIGluc3RhbGxzIGNsZWFubHksPGJyPm9yIGl0IGRvZXMgbm90IGFycml2ZS48L2gyPlxuICAgIDxwPldoYXRldmVyIGxhbmRzIGluIHlvdXIgaG9tZSBuZXh0LCBzbWFydCBvciBhdXRvbm9tb3VzIG9yIHNvbWV0aGluZyB3ZSBjYW5ub3QgbmFtZSB5ZXQsIGEgcmVhbCBwZXJzb24gc2hvdWxkIHB1dCBpdCB0aGVyZS4gVGhhdCBwYXJ0IGlzIG5vdCBjaGFuZ2luZy48L3A+XG4gICAgPGRpdiBjbGFzcz1cImJ0bi1yb3dcIj5cbiAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgaHJlZj1cIi8jZXN0aW1hdG9yXCI+R2V0IGEgbGl2ZSBxdW90ZTwvYT5cbiAgICAgIDxhIGNsYXNzPVwiYnRuIGJ0bi1naG9zdFwiIGhyZWY9XCIvXCI+QmFjayB0byB0aGUgc2l0ZTwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3NlY3Rpb24+XG5cbjxmb290ZXI+XG4gIDxkaXYgY2xhc3M9XCJzaGVsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb290LWdyaWRcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJicmFuZFwiPlxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJicmFuZC1tYXJrXCIgd2lkdGg9XCIyOFwiIGhlaWdodD1cIjI4XCIgdmlld0JveD1cIjAgMCAxMDAgMTAwXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwiYm0tcmluZ1wiIGN4PVwiNDZcIiBjeT1cIjQ2XCIgcj1cIjMwXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgb3BhY2l0eT1cIi4yMlwiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJibS1yaW5nXCIgY3g9XCI0NlwiIGN5PVwiNDZcIiByPVwiMjJcIiBzdHJva2Utd2lkdGg9XCIyXCIgb3BhY2l0eT1cIi41NVwiLz5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJibS1yaW5nXCIgY3g9XCI0NlwiIGN5PVwiNDZcIiByPVwiMTRcIiBzdHJva2Utd2lkdGg9XCI0LjVcIi8+XG4gICAgICAgICAgICA8bGluZSBjbGFzcz1cImJtLXRhaWxcIiB4MT1cIjU0XCIgeTE9XCI1NFwiIHgyPVwiNzZcIiB5Mj1cIjc2XCIgc3Ryb2tlLXdpZHRoPVwiNS41XCIvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmFuZC10ZXh0XCI+aW5mcmFzdHJ1PHNwYW4gY2xhc3M9XCJxLWFjY2VudFwiPlE8L3NwYW4+dHVyZTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHAgY2xhc3M9XCJmb290LWJyYW5kLXRleHRcIj5JbnN0YWxsYXRpb24sIGRvbmUgd2l0aCBRdWFsaXR5LiBSZXNpZGVudGlhbCBhbmQgY29tbWVyY2lhbC4gT3BlcmF0aW5nIGFjcm9zcyAyNCBtZXRyb3MsIHBvd2VyZWQgYnkgNSwwMDArIHZldHRlZCB0ZWNobmljaWFucy4gRm9ybWVybHkgSW5zdGFsbFNtYXJ0bHkuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdC1oXCI+U2VydmljZXM8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3QtbGlzdFwiPlxuICAgICAgICAgIDxhIGhyZWY9XCIvI3Jlc2lkZW50aWFsXCIgdGFyZ2V0PVwiX3RvcFwiPlRWIG1vdW50aW5nPC9hPlxuICAgICAgICAgIDxhIGhyZWY9XCIvI3Jlc2lkZW50aWFsXCIgdGFyZ2V0PVwiX3RvcFwiPlNtYXJ0IGRvb3JiZWxsczwvYT5cbiAgICAgICAgICA8YSBocmVmPVwiLyNyZXNpZGVudGlhbFwiIHRhcmdldD1cIl90b3BcIj5XaS1GaSAmIG1lc2g8L2E+XG4gICAgICAgICAgPGEgaHJlZj1cIi8jcmVzaWRlbnRpYWxcIiB0YXJnZXQ9XCJfdG9wXCI+Q2FtZXJhczwvYT5cbiAgICAgICAgICA8YSBocmVmPVwiLyNyZXNpZGVudGlhbFwiIHRhcmdldD1cIl90b3BcIj5WaWV3IGFsbCDihpI8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdC1oXCI+Q29tcGFueTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdC1saXN0XCI+XG4gICAgICAgICAgPGEgaHJlZj1cIi8jdGVhbVwiIHRhcmdldD1cIl90b3BcIj5BYm91dDwvYT5cbiAgICAgICAgICA8YSBocmVmPVwiLyN0ZWFtXCIgdGFyZ2V0PVwiX3RvcFwiPlRlY2huaWNpYW5zPC9hPlxuICAgICAgICAgIDxhIGhyZWY9XCIvI3RlYW1cIiB0YXJnZXQ9XCJfdG9wXCI+Q2FyZWVyczwvYT5cbiAgICAgICAgICA8YSBocmVmPVwiLyN0ZWFtXCIgdGFyZ2V0PVwiX3RvcFwiPlByZXNzPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3QtaFwiPkhlbHA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvb3QtbGlzdFwiPlxuICAgICAgICAgIDxhIGhyZWY9XCIvI2VzdGltYXRvclwiIHRhcmdldD1cIl90b3BcIj5HZXQgYSBsaXZlIHF1b3RlPC9hPlxuICAgICAgICAgIDxhIGhyZWY9XCIvI2VzdGltYXRvclwiIHRhcmdldD1cIl90b3BcIj5UcmFjayBhIGpvYjwvYT5cbiAgICAgICAgICA8YSBocmVmPVwiLyNob3dcIiB0YXJnZXQ9XCJfdG9wXCI+RkFRPC9hPlxuICAgICAgICAgIDxhIGhyZWY9XCJ0ZWw6KzE1MTI2NDk0NTY3XCI+Q29udGFjdCB1czwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290LWhcIj5MZWdhbDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdC1saXN0XCI+XG4gICAgICAgICAgPGEgaHJlZj1cIi90ZXJtc1wiIHRhcmdldD1cIl90b3BcIj5UZXJtczwvYT5cbiAgICAgICAgICA8YSBocmVmPVwiL3ByaXZhY3lcIiB0YXJnZXQ9XCJfdG9wXCI+UHJpdmFjeTwvYT5cbiAgICAgICAgICA8YSBocmVmPVwiL2FpLWRpc2Nsb3N1cmVcIiB0YXJnZXQ9XCJfdG9wXCI+QUkgZGlzY2xvc3VyZTwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9vdC1ib3R0b21cIj5cbiAgICAgIDxkaXY+wqkgMjAyNiBpbmZyYXN0cnVRdHVyZSwgSW5jLiDCtyBBdXN0aW4sIFRYIMK3IFNhbWUgY3Jldy4gU2hhcnBlciBuYW1lLjwvZGl2PlxuICAgICAgPGRpdj52Mi4wIMK3IFRoZSBRIGlzIGZvciBRdWFsaXR5PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9mb290ZXI+XG5cbjxzY3JpcHQ+XG4oZnVuY3Rpb24oKXtcbiAgY29uc3QgTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuICBjb25zdCBzY2VuZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2VuZScpO1xuICBjb25zdCByb2JvdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb2JvdCcpO1xuICBjb25zdCBwcmVkaWN0ZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJlZGljdGVkJyk7XG4gIGNvbnN0IHRyYWlsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RyYWlsJyk7XG4gIGNvbnN0IHVua25vd24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndW5rbm93bicpO1xuICBjb25zdCBsb2dFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTtcbiAgY29uc3QgY29uZk51bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25mTnVtJyk7XG4gIGNvbnN0IGNoZWNrcG9pbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2hlY2twb2ludCcpO1xuICBjb25zdCBjcFEgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3BRJyk7XG4gIGNvbnN0IGNwQXV0byA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcEF1dG8nKTtcbiAgY29uc3QgY3BDb25maXJtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NwQ29uZmlybScpO1xuICBjb25zdCBjcFJlcm91dGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3BSZXJvdXRlJyk7XG4gIGNvbnN0IG1IdW1hbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtSHVtYW4nKTtcbiAgY29uc3QgdGFza0J0bnMgPSBbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRhc2stYnRuJyldO1xuXG4gIC8vIC0tLS0gZGV2aWNlcyAoYnVpbHQgaW50byB0aGUgbW9kZWwpIC0tLS1cbiAgY29uc3QgREVWSUNFUyA9IFtcbiAgICB7eDoyMDAsIHk6MzkyLCBsYWJlbDonbG9jayd9LCAgIC8vIGZyb250IGRvb3JcbiAgICB7eDoxMjAsIHk6MTUwLCBsYWJlbDonbWVzaCd9LCAgIC8vIGxpdmluZ1xuICAgIHt4OjI4NSwgeTozMDAsIGxhYmVsOidtZXNoJ30sICAgLy8gb2ZmaWNlXG4gICAge3g6NDcwLCB5OjEzMCwgbGFiZWw6J2NhbSd9LCAgICAvLyBwYXRpbyBjYW1cbiAgICB7eDo1NjAsIHk6NDcwLCBsYWJlbDonY2FtJ30gICAgIC8vIHlhcmQgY2FtXG4gIF07XG4gIGNvbnN0IGRldkxheWVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RldmljZXMnKTtcbiAgREVWSUNFUy5mb3JFYWNoKChkLGkpPT57XG4gICAgY29uc3QgcmluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywnY2lyY2xlJyk7XG4gICAgcmluZy5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywnZGV2LXJpbmcnKTsgcmluZy5zZXRBdHRyaWJ1dGUoJ2N4JyxkLngpOyByaW5nLnNldEF0dHJpYnV0ZSgnY3knLGQueSk7IHJpbmcuc2V0QXR0cmlidXRlKCdyJywnNycpO1xuICAgIGNvbnN0IGRvdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywnY2lyY2xlJyk7XG4gICAgZG90LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCdkZXYnKTsgZG90LnNldEF0dHJpYnV0ZSgnY3gnLGQueCk7IGRvdC5zZXRBdHRyaWJ1dGUoJ2N5JyxkLnkpOyBkb3Quc2V0QXR0cmlidXRlKCdyJywnMycpO1xuICAgIGNvbnN0IHB1bHNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKE5TLCdjaXJjbGUnKTtcbiAgICBwdWxzZS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywnZGV2LXB1bHNlJyk7IHB1bHNlLnNldEF0dHJpYnV0ZSgnY3gnLGQueCk7IHB1bHNlLnNldEF0dHJpYnV0ZSgnY3knLGQueSk7IHB1bHNlLnNldEF0dHJpYnV0ZSgncicsJzcnKTtcbiAgICBwdWxzZS5pbm5lckhUTUwgPSBgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT1cInJcIiB2YWx1ZXM9XCI3OzEzOzdcIiBkdXI9XCIzc1wiIGJlZ2luPVwiJHtpKjAuNH1zXCIgcmVwZWF0Q291bnQ9XCJpbmRlZmluaXRlXCIvPjxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9XCJvcGFjaXR5XCIgdmFsdWVzPVwiLjU7MDsuNVwiIGR1cj1cIjNzXCIgYmVnaW49XCIke2kqMC40fXNcIiByZXBlYXRDb3VudD1cImluZGVmaW5pdGVcIi8+YDtcbiAgICBkZXZMYXllci5hcHBlbmQocmluZywgcHVsc2UsIGRvdCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0gdGFzayBkZWZpbml0aW9ucyAtLS0tXG4gIC8vIHBhdGg6IFNWRyBwYXRoIHN0cmluZy4gdW5rbm93bkF0OiBmcmFjdGlvbiBhbG9uZyBwYXRoIHdoZXJlIGJvdCBtZWV0cyB0aGUgdW5rbm93biBvYmplY3QuXG4gIGZ1bmN0aW9uIHNlcnBlbnRpbmUoeDAseDEseXMpe1xuICAgIGxldCBkID0gYE0gJHs0MTJ9ICR7NDI0fWA7IC8vIHN0YXJ0IGF0IGRvY2tcbiAgICBkICs9IGAgTCAke3gwfSAke3lzWzBdfWA7XG4gICAgbGV0IGxlZnQgPSB0cnVlO1xuICAgIHlzLmZvckVhY2goKHkpPT57XG4gICAgICBkICs9IGAgTCAke2xlZnQ/eDE6eDB9ICR7eX1gO1xuICAgICAgLy8gc3RlcCBkb3duIGhhbmRsZWQgYnkgbmV4dCB5XG4gICAgICBsZWZ0ID0gIWxlZnQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIGQ7XG4gIH1cblxuICBjb25zdCBUQVNLUyA9IHtcbiAgICBtb3c6IHtcbiAgICAgIGxhYmVsOiAnTW93IHRoZSBiYWNrIGxhd24nLFxuICAgICAgLy8gYm91c3Ryb3BoZWRvbiBhY3Jvc3MgdGhlIG9wZW4gYmFjayBsYXduIChyaWdodCBvZiBob3VzZSwgY2xlYXIgb2Ygb2FrL2JlZC9wYXRpbylcbiAgICAgIGQ6ICdNIDQxMiA0MjQgTCA0MTAgNDEwIEwgNjYwIDQxMCBMIDY2MCAzNjAgTCA0MTAgMzYwIEwgNDEwIDMxMCBMIDY2MCAzMTAgTCA2NjAgMjYwIEwgNDEwIDI2MCBMIDQxMCAyMzAgTCA2NjAgMjMwIEwgNDEyIDQyNCcsXG4gICAgICBkdXI6IDEyMDAwLFxuICAgICAgdW5rbm93bkF0OiAwLjQ2LFxuICAgICAgY29uZjogOTUsIGxvdzogMzgsXG4gICAgICBsb2dzOiBbXG4gICAgICAgIHtwOjAuMDAsIHQ6JzAwOjAwJywgdGV4dDonTG9hZGluZyBzcGF0aWFsIG1vZGVsIMK3IDEyNDAgQXVyb3JhIEF2ZSd9LFxuICAgICAgICB7cDowLjA0LCB0OicwMDowMScsIHRleHQ6J0tub3duIG9iamVjdHM6IG9hayAoTkUpLCBmbG93ZXIgYmVkIChTKSwgcGF0aW8gc2V0J30sXG4gICAgICAgIHtwOjAuMDgsIHQ6JzAwOjAyJywgdGV4dDonTW93YWJsZSByZWdpb246IDAuNDEgYWNyZSDCtyA2IHBhc3NlcyBwbGFubmVkJ30sXG4gICAgICAgIHtwOjAuMTIsIHQ6JzAwOjAzJywgdGV4dDonUHJlZGljdGluZyByb3V0ZS4uLiA5NSUgY29uZmlkZW5jZScsIGNsczonJ30sXG4gICAgICAgIHtwOjAuMjAsIHQ6JzAwOjA1JywgdGV4dDonUGFzcyAxIG9mIDYgwrcgY3V0dGluZyd9LFxuICAgICAgICB7cDowLjM0LCB0OicwMDowOCcsIHRleHQ6J1Bhc3MgMiBvZiA2IMK3IGNsZWFyJ30sXG4gICAgICAgIHtwOjAuNDUsIHQ6JzAwOjExJywgdGV4dDonTmV3IG9iamVjdCBvbiBwYXRoIMK3IG5vdCBpbiBtb2RlbCcsIGNsczond2Fybid9LFxuICAgICAgICB7cDowLjQ1NSwgdDonMDA6MTEnLCB0ZXh0OidDb25maWRlbmNlIGRyb3BwZWQgdG8gMzglJywgY2xzOid3YXJuJ30sXG4gICAgICAgIHtwOjAuNDYsIHQ6JzAwOjExJywgdGV4dDonSG9sZGluZy4gRXNjYWxhdGluZyB0byBodW1hbiAoTmR1KScsIGNsczonaHVtYW4nfSxcbiAgICAgICAge3A6MC41MCwgdDonUkVTVU1FJywgdGV4dDonSHVtYW4gY29uZmlybWVkOiBnYXJkZW4gaG9zZSwgc2FmZSB0byBza2lwJywgY2xzOidvayd9LFxuICAgICAgICB7cDowLjUyLCB0OicwMDoxNCcsIHRleHQ6J09iamVjdCBhZGRlZCB0byBtb2RlbCDCtyByb3V0aW5nIGFyb3VuZCcsIGNsczonJ30sXG4gICAgICAgIHtwOjAuNzAsIHQ6JzAwOjE4JywgdGV4dDonUGFzcyA0IG9mIDYgwrcgY2xlYXInfSxcbiAgICAgICAge3A6MC45NiwgdDonMDA6MjQnLCB0ZXh0OidUYXNrIGNvbXBsZXRlIMK3IG1vZGVsIHVwZGF0ZWQgKCsxIG9iamVjdCknLCBjbHM6J29rJ31cbiAgICAgIF0sXG4gICAgICBjcFE6ICdBIDE2LWluY2ggb2JqZWN0IGlzIGJsb2NraW5nIHBhc3MgMywgfjEyIGluY2hlcyBvZmYgdGhlIHBsYW5uZWQgbGluZS4gVGhlIG1vZGVsIGhhcyBuZXZlciBzZWVuIGl0IGhlcmUuIE1vdyBhcm91bmQgaXQgb3Igc3RvcD8nXG4gICAgfSxcbiAgICBwYXRyb2w6IHtcbiAgICAgIGxhYmVsOiAnRXZlbmluZyBzZWN1cml0eSBwYXRyb2wnLFxuICAgICAgLy8gcGVyaW1ldGVyIGxvb3AganVzdCBvdXRzaWRlIHRoZSBob3VzZSwgc3dlZXBpbmcgdGhlIHlhcmQsIHBhdXNpbmcgbmVhciBnYXRlXG4gICAgICBkOiAnTSA0MTIgNDI0IEwgNDEyIDU2IEwgNjAgNTYgTCA0NCA0MDAgTCAxNTAgNDcwIEwgNDEyIDQ3MCBMIDY2MCA0NzAgTCA2ODggMzMwIEwgNjYwIDIwMCBMIDU0MCA5MiBMIDQxMiA0MjQnLFxuICAgICAgZHVyOiAxMzAwMCxcbiAgICAgIHVua25vd25BdDogMC43NCxcbiAgICAgIGNvbmY6IDkzLCBsb3c6IDMxLFxuICAgICAgbG9nczogW1xuICAgICAgICB7cDowLjAwLCB0OicwMDowMCcsIHRleHQ6J0xvYWRpbmcgc3BhdGlhbCBtb2RlbCDCtyBuaWdodCBwcm9maWxlJ30sXG4gICAgICAgIHtwOjAuMDUsIHQ6JzAwOjAxJywgdGV4dDonQ2FtZXJhcyBvbmxpbmU6IDIgwrcgbWVzaCBub2RlczogMiDCtyBsb2NrOiBhcm1lZCd9LFxuICAgICAgICB7cDowLjEwLCB0OicwMDowMicsIHRleHQ6J1ByZWRpY3RpbmcgcGVyaW1ldGVyIGxvb3AuLi4gOTMlIGNvbmZpZGVuY2UnfSxcbiAgICAgICAge3A6MC4zMCwgdDonMDA6MDUnLCB0ZXh0OidOb3J0aCB3YWxsIGNsZWFyIMK3IGNyb3NzLWNoZWNraW5nIHBhdGlvIGNhbSd9LFxuICAgICAgICB7cDowLjU1LCB0OicwMDowOScsIHRleHQ6J0RyaXZld2F5IGNsZWFyIMK3IGxvY2sgY29uZmlybWVkIGFybWVkJ30sXG4gICAgICAgIHtwOjAuNzIsIHQ6JzAwOjEzJywgdGV4dDonTW90aW9uIGF0IHNpZGUgZ2F0ZSDCtyBub3QgbWF0Y2hlZCB0byBtb2RlbCcsIGNsczond2Fybid9LFxuICAgICAgICB7cDowLjczLCB0OicwMDoxMycsIHRleHQ6J0NvbmZpZGVuY2UgZHJvcHBlZCB0byAzMSUnLCBjbHM6J3dhcm4nfSxcbiAgICAgICAge3A6MC43NCwgdDonMDA6MTMnLCB0ZXh0OidIb2xkaW5nIGF0IGdhdGUuIEVzY2FsYXRpbmcgdG8gaHVtYW4gKE5kdSknLCBjbHM6J2h1bWFuJ30sXG4gICAgICAgIHtwOjAuNzgsIHQ6J1JFU1VNRScsIHRleHQ6J0h1bWFuIGNvbmZpcm1lZDogbmVpZ2hib3JcXCdzIGNhdC4gU3RhbmQgZG93bicsIGNsczonb2snfSxcbiAgICAgICAge3A6MC44MiwgdDonMDA6MTYnLCB0ZXh0OidSZXN1bWluZyBsb29wIMK3IGxvZ2dlZCBmb3IgcmV2aWV3JywgY2xzOicnfSxcbiAgICAgICAge3A6MC45NywgdDonMDA6MjEnLCB0ZXh0OidQYXRyb2wgY29tcGxldGUgwrcgYWxsIHpvbmVzIGNsZWFyJywgY2xzOidvayd9XG4gICAgICBdLFxuICAgICAgY3BROiAnSGVhdCBzaWduYXR1cmUgYXQgdGhlIHNpZGUgZ2F0ZSwgbW92aW5nLCB0b28gc21hbGwgdG8gY2xhc3NpZnkuIENvdWxkIGJlIGFuIGFuaW1hbCwgY291bGQgYmUgYSBwZXJzb24gY3JvdWNoaW5nLiBXYWtlIHlvdSwgb3Iga2VlcCB3YXRjaGluZz8nXG4gICAgfSxcbiAgICBkZWxpdmVyOiB7XG4gICAgICBsYWJlbDogJ0NhcnJ5IHRoZSBwYWNrYWdlIHRvIHRoZSBkb29yJyxcbiAgICAgIGQ6ICdNIDQxMiA0MjQgTCAzMDAgNDcwIEwgMTk1IDQ3MCBMIDE5NSA0MDggTCAyMTIgNDAwIEwgMjE0IDQwMicsXG4gICAgICBkdXI6IDgwMDAsXG4gICAgICB1bmtub3duQXQ6IDAuOTMsXG4gICAgICBjb25mOiA5NiwgbG93OiA0NCxcbiAgICAgIGxvZ3M6IFtcbiAgICAgICAge3A6MC4wMCwgdDonMDA6MDAnLCB0ZXh0OidMb2FkaW5nIHNwYXRpYWwgbW9kZWwgwrcgYXBwcm9hY2g6IGZyb250IGRvb3InfSxcbiAgICAgICAge3A6MC4wOCwgdDonMDA6MDEnLCB0ZXh0OidQYXJjZWw6IDE0IGxiIMK3IDIyIMOXIDE2IMOXIDEwIGluJ30sXG4gICAgICAgIHtwOjAuMTYsIHQ6JzAwOjAyJywgdGV4dDonUHJlZGljdGluZyByb3V0ZSB0byBkb29yLi4uIDk2JSBjb25maWRlbmNlJ30sXG4gICAgICAgIHtwOjAuNDUsIHQ6JzAwOjA0JywgdGV4dDonQ3Jvc3NpbmcgZHJpdmV3YXkgwrcgcGF0aCBjbGVhcid9LFxuICAgICAgICB7cDowLjcyLCB0OicwMDowNScsIHRleHQ6J09uIHRoZSBmcm9udCB3YWxrIMK3IGFwcHJvYWNoaW5nIHRoZSBzdGVwJ30sXG4gICAgICAgIHtwOjAuOTEsIHQ6JzAwOjA3JywgdGV4dDonRG9vciBtYXQgb2NjdXBpZWQgwrcgb2JqZWN0IG5vdCBpbiBtb2RlbCcsIGNsczond2Fybid9LFxuICAgICAgICB7cDowLjkyLCB0OicwMDowNycsIHRleHQ6J0NvbmZpZGVuY2UgZHJvcHBlZCB0byA0NCUnLCBjbHM6J3dhcm4nfSxcbiAgICAgICAge3A6MC45MywgdDonMDA6MDcnLCB0ZXh0OidIb2xkaW5nIGF0IHN0ZXAuIEVzY2FsYXRpbmcgdG8gaHVtYW4gKE5kdSknLCBjbHM6J2h1bWFuJ30sXG4gICAgICAgIHtwOjAuOTYsIHQ6J1JFU1VNRScsIHRleHQ6J0h1bWFuIGNvbmZpcm1lZDogZXhpc3RpbmcgcGFyY2VsLiBTZXQgYmVzaWRlIGl0JywgY2xzOidvayd9LFxuICAgICAgICB7cDowLjk5LCB0OicwMDowOScsIHRleHQ6J0RlbGl2ZXJlZCDCtyBwaG90byBzZW50IHRvIGhvbWVvd25lcicsIGNsczonb2snfVxuICAgICAgXSxcbiAgICAgIGNwUTogJ1NvbWV0aGluZyBpcyBhbHJlYWR5IG9uIHRoZSBkb29ybWF0IHdoZXJlIHRoZSBkcm9wIHBvaW50IGlzLiBTdGFjayBvbiB0b3AsIG9yIHBsYWNlIGl0IHRvIHRoZSBzaWRlPydcbiAgICB9XG4gIH07XG5cbiAgLy8gLS0tLSBhbmltYXRpb24gc3RhdGUgLS0tLVxuICBsZXQgcmFmID0gbnVsbCwgY3VycmVudCA9IG51bGwsIHBhdXNlZCA9IGZhbHNlLCByZXNvbHZlZCA9IGZhbHNlO1xuICBsZXQgZWxhcHNlZCA9IDAsIGxhc3RUcyA9IDAsIGF1dG9UaW1lciA9IG51bGwsIGF1dG9MZWZ0ID0gMCwgYXV0b0ludGVydmFsID0gbnVsbDtcbiAgbGV0IGVtaXR0ZWQgPSBuZXcgU2V0KCk7XG5cbiAgZnVuY3Rpb24gY2xlYXJSdW4oKXtcbiAgICBpZiAocmFmKSBjYW5jZWxBbmltYXRpb25GcmFtZShyYWYpOyByYWYgPSBudWxsO1xuICAgIGlmIChhdXRvVGltZXIpIGNsZWFyVGltZW91dChhdXRvVGltZXIpO1xuICAgIGlmIChhdXRvSW50ZXJ2YWwpIGNsZWFySW50ZXJ2YWwoYXV0b0ludGVydmFsKTtcbiAgICBwYXVzZWQgPSBmYWxzZTsgcmVzb2x2ZWQgPSBmYWxzZTsgZWxhcHNlZCA9IDA7IGxhc3RUcyA9IDA7IGVtaXR0ZWQgPSBuZXcgU2V0KCk7XG4gICAgdW5rbm93bi5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7XG4gICAgY2hlY2twb2ludC5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7XG4gICAgcm9ib3Quc3R5bGUub3BhY2l0eSA9ICcwJztcbiAgICBwcmVkaWN0ZWQuc2V0QXR0cmlidXRlKCdkJywnJyk7XG4gICAgdHJhaWwuc2V0QXR0cmlidXRlKCdkJywnJyk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRDb25mKHYsIGxvdyl7XG4gICAgY29uZk51bS50ZXh0Q29udGVudCA9IE1hdGgucm91bmQodikgKyAnJSc7XG4gICAgY29uZk51bS5jbGFzc0xpc3QudG9nZ2xlKCdsb3cnLCAhIWxvdyk7XG4gIH1cblxuICBmdW5jdGlvbiBhZGRMb2cobGluZSl7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGl2LmNsYXNzTmFtZSA9ICdsb2ctbGluZScgKyAobGluZS5jbHMgPyAnICcgKyBsaW5lLmNscyA6ICcnKTtcbiAgICBkaXYuaW5uZXJIVE1MID0gYDxzcGFuIGNsYXNzPVwidFwiPiR7bGluZS50fTwvc3Bhbj48c3Bhbj4ke2xpbmUudGV4dH08L3NwYW4+YDtcbiAgICBsb2dFbC5hcHBlbmQoZGl2KTtcbiAgICBsb2dFbC5zY3JvbGxUb3AgPSBsb2dFbC5zY3JvbGxIZWlnaHQ7XG4gIH1cblxuICBmdW5jdGlvbiBzdGFydCh0YXNrS2V5KXtcbiAgICBjbGVhclJ1bigpO1xuICAgIGN1cnJlbnQgPSBUQVNLU1t0YXNrS2V5XTtcbiAgICBsb2dFbC5pbm5lckhUTUwgPSAnJztcbiAgICB0YXNrQnRucy5mb3JFYWNoKGIgPT4gYi5jbGFzc0xpc3QudG9nZ2xlKCdpcy1hY3RpdmUnLCBiLmRhdGFzZXQudGFzayA9PT0gdGFza0tleSkpO1xuICAgIHNldENvbmYoY3VycmVudC5jb25mLCBmYWxzZSk7XG5cbiAgICAvLyBwbGFjZSB1bmtub3duIG9iamVjdFxuICAgIC8vIHBsYW5uaW5nIHBoYXNlOiBkcmF3IHByZWRpY3RlZCBwYXRoXG4gICAgcHJlZGljdGVkLnNldEF0dHJpYnV0ZSgnZCcsIGN1cnJlbnQuZCk7XG4gICAgY29uc3QgdG90YWwgPSBwcmVkaWN0ZWQuZ2V0VG90YWxMZW5ndGgoKTtcbiAgICAvLyBwb3NpdGlvbiB0aGUgdW5rbm93biBvYmplY3QgZXhhY3RseSB3aGVyZSB0aGUgcm9ib3Qgd2lsbCBwYXVzZVxuICAgIGNvbnN0IHVwdCA9IHByZWRpY3RlZC5nZXRQb2ludEF0TGVuZ3RoKHRvdGFsICogY3VycmVudC51bmtub3duQXQpO1xuICAgIHVua25vd24uc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7dXB0LngtMjN9LCAke3VwdC55LTE3fSlgKTtcbiAgICBwcmVkaWN0ZWQuc3R5bGUudHJhbnNpdGlvbiA9ICdub25lJztcbiAgICBwcmVkaWN0ZWQuc3R5bGUuc3Ryb2tlRGFzaGFycmF5ID0gdG90YWw7XG4gICAgcHJlZGljdGVkLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSB0b3RhbDtcbiAgICAvLyBmb3JjZSByZWZsb3dcbiAgICBwcmVkaWN0ZWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcHJlZGljdGVkLnN0eWxlLnRyYW5zaXRpb24gPSAnc3Ryb2tlLWRhc2hvZmZzZXQgMS4xcyBlYXNlJztcbiAgICBwcmVkaWN0ZWQuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9ICcwJztcblxuICAgIGFkZExvZyhjdXJyZW50LmxvZ3NbMF0pOyBlbWl0dGVkLmFkZCgwKTtcbiAgICAvLyBiZWdpbiBydW5uaW5nIGFmdGVyIHRoZSBwbGFuIGlzIGRyYXduXG4gICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgaWYgKGN1cnJlbnQgIT09IFRBU0tTW3Rhc2tLZXldKSByZXR1cm47XG4gICAgICB0cmFpbC5zZXRBdHRyaWJ1dGUoJ2QnLCBjdXJyZW50LmQpO1xuICAgICAgLy8gZGFzaGVkIHByZWRpY3RlZCBmYWRlcyB0byBhIGZhaW50IGd1aWRlXG4gICAgICBwcmVkaWN0ZWQuc3R5bGUudHJhbnNpdGlvbiA9ICdzdHJva2UtZGFzaG9mZnNldCAxLjFzIGVhc2UsIG9wYWNpdHkgLjZzJztcbiAgICAgIHByZWRpY3RlZC5zdHlsZS5vcGFjaXR5ID0gJy4zNSc7XG4gICAgICBwcmVkaWN0ZWQuc3R5bGUuc3Ryb2tlRGFzaGFycmF5ID0gJzQgOCc7XG4gICAgICByb2JvdC5zdHlsZS5vcGFjaXR5ID0gJzEnO1xuICAgICAgbGFzdFRzID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgICByYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCk7XG4gICAgfSwgMTE1MCk7XG4gIH1cblxuICBmdW5jdGlvbiBsb29wKHRzKXtcbiAgICBpZiAoIWN1cnJlbnQpIHJldHVybjtcbiAgICBjb25zdCBkdCA9IHRzIC0gbGFzdFRzOyBsYXN0VHMgPSB0cztcbiAgICBpZiAoIXBhdXNlZCkgZWxhcHNlZCArPSBkdDtcbiAgICBsZXQgcCA9IE1hdGgubWluKGVsYXBzZWQgLyBjdXJyZW50LmR1ciwgMSk7XG5cbiAgICAvLyBwYXVzZSBleGFjdGx5IGF0IHRoZSB1bmtub3duIGJlYXQgdW50aWwgcmVzb2x2ZWRcbiAgICBpZiAoIXJlc29sdmVkICYmIHAgPj0gY3VycmVudC51bmtub3duQXQpIHtcbiAgICAgIHAgPSBjdXJyZW50LnVua25vd25BdDtcbiAgICAgIGlmICghcGF1c2VkKSB0cmlnZ2VyQ2hlY2twb2ludCgpO1xuICAgIH1cblxuICAgIC8vIHBvc2l0aW9uIHJvYm90ICsgcmV2ZWFsIHRyYWlsXG4gICAgY29uc3QgdG90YWwgPSB0cmFpbC5nZXRUb3RhbExlbmd0aCgpO1xuICAgIGNvbnN0IGxlbiA9IHRvdGFsICogcDtcbiAgICBjb25zdCBwdCA9IHRyYWlsLmdldFBvaW50QXRMZW5ndGgobGVuKTtcbiAgICBjb25zdCBhaGVhZCA9IHRyYWlsLmdldFBvaW50QXRMZW5ndGgoTWF0aC5taW4obGVuICsgNCwgdG90YWwpKTtcbiAgICBjb25zdCBhbmcgPSBNYXRoLmF0YW4yKGFoZWFkLnkgLSBwdC55LCBhaGVhZC54IC0gcHQueCkgKiAxODAgLyBNYXRoLlBJO1xuICAgIHJvYm90LnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke3B0Lnh9LCAke3B0Lnl9KSByb3RhdGUoJHthbmd9KWApO1xuICAgIHRyYWlsLnN0eWxlLnN0cm9rZURhc2hhcnJheSA9IHRvdGFsO1xuICAgIHRyYWlsLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSB0b3RhbCAtIGxlbjtcblxuICAgIC8vIGVtaXQgbG9nc1xuICAgIGN1cnJlbnQubG9ncy5mb3JFYWNoKChsaW5lLCBpKT0+e1xuICAgICAgaWYgKCFlbWl0dGVkLmhhcyhpKSAmJiBwID49IGxpbmUucCAmJiBsaW5lLnQgIT09ICdSRVNVTUUnKSB7IGFkZExvZyhsaW5lKTsgZW1pdHRlZC5hZGQoaSk7IH1cbiAgICB9KTtcblxuICAgIC8vIGNvbmZpZGVuY2UgZGlwIGFwcHJvYWNoaW5nIHRoZSBiZWF0XG4gICAgaWYgKCFyZXNvbHZlZCAmJiBwID49IGN1cnJlbnQudW5rbm93bkF0IC0gMC4wNikge1xuICAgICAgY29uc3QgZGlwVCA9IE1hdGgubWluKChwIC0gKGN1cnJlbnQudW5rbm93bkF0IC0gMC4wNikpIC8gMC4wNiwgMSk7XG4gICAgICBzZXRDb25mKGN1cnJlbnQuY29uZiAtIGRpcFQgKiAoY3VycmVudC5jb25mIC0gY3VycmVudC5sb3cpLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAocCA+PSAxKSB7IGZpbmlzaCgpOyByZXR1cm47IH1cbiAgICByYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmlnZ2VyQ2hlY2twb2ludCgpe1xuICAgIHBhdXNlZCA9IHRydWU7XG4gICAgdW5rbm93bi5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7XG4gICAgY3BRLnRleHRDb250ZW50ID0gY3VycmVudC5jcFE7XG4gICAgc2V0Q29uZihjdXJyZW50LmxvdywgdHJ1ZSk7XG4gICAgc2V0VGltZW91dCgoKT0+IGNoZWNrcG9pbnQuY2xhc3NMaXN0LmFkZCgnc2hvdycpLCAyNTApO1xuICAgIC8vIGF1dG8tcmVzb2x2ZSBjb3VudGRvd25cbiAgICBhdXRvTGVmdCA9IDQ7XG4gICAgY3BBdXRvLnRleHRDb250ZW50ID0gYGF1dG8tcmVzb2x2aW5nIGluICR7YXV0b0xlZnR9c2A7XG4gICAgY3BBdXRvLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgIGF1dG9JbnRlcnZhbCA9IHNldEludGVydmFsKCgpPT57XG4gICAgICBhdXRvTGVmdC0tO1xuICAgICAgY3BBdXRvLnRleHRDb250ZW50ID0gYXV0b0xlZnQgPiAwID8gYGF1dG8tcmVzb2x2aW5nIGluICR7YXV0b0xlZnR9c2AgOiAncmVzb2x2aW5nLi4uJztcbiAgICAgIGlmIChhdXRvTGVmdCA8PSAwKSBjbGVhckludGVydmFsKGF1dG9JbnRlcnZhbCk7XG4gICAgfSwgMTAwMCk7XG4gICAgYXV0b1RpbWVyID0gc2V0VGltZW91dCgoKT0+IHJlc29sdmVDaGVja3BvaW50KGZhbHNlKSwgNDAwMCk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNvbHZlQ2hlY2twb2ludChyZXJvdXRlZCl7XG4gICAgaWYgKHJlc29sdmVkKSByZXR1cm47XG4gICAgcmVzb2x2ZWQgPSB0cnVlO1xuICAgIGlmIChhdXRvVGltZXIpIGNsZWFyVGltZW91dChhdXRvVGltZXIpO1xuICAgIGlmIChhdXRvSW50ZXJ2YWwpIGNsZWFySW50ZXJ2YWwoYXV0b0ludGVydmFsKTtcbiAgICBjaGVja3BvaW50LmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTtcbiAgICAvLyBidW1wIGh1bWFuLWluLWxvb3AgY291bnRlclxuICAgIG1IdW1hbi50ZXh0Q29udGVudCA9IChwYXJzZUludChtSHVtYW4udGV4dENvbnRlbnQsMTApICsgMSk7XG4gICAgLy8gZW1pdCB0aGUgUkVTVU1FIGxvZyBsaW5lXG4gICAgY29uc3QgcmVzdW1lTGluZSA9IGN1cnJlbnQubG9ncy5maW5kKGwgPT4gbC50ID09PSAnUkVTVU1FJyk7XG4gICAgaWYgKHJlc3VtZUxpbmUpIHtcbiAgICAgIGlmIChyZXJvdXRlZCkgYWRkTG9nKHt0OidSRVNVTUUnLCB0ZXh0OidIdW1hbiBjaG9zZSByZXJvdXRlIMK3IHBsYW5uaW5nIG5ldyBsaW5lJywgY2xzOidodW1hbid9KTtcbiAgICAgIGFkZExvZyhyZXN1bWVMaW5lKTtcbiAgICB9XG4gICAgLy8gcmVjb3ZlciBjb25maWRlbmNlXG4gICAgbGV0IGMgPSBjdXJyZW50LmxvdzsgY29uc3QgdGFyZ2V0ID0gY3VycmVudC5jb25mIC0gNDtcbiAgICBjb25zdCByZWMgPSBzZXRJbnRlcnZhbCgoKT0+e1xuICAgICAgYyArPSAodGFyZ2V0IC0gYykgKiAwLjI1O1xuICAgICAgc2V0Q29uZihjLCBjIDwgNzApO1xuICAgICAgaWYgKHRhcmdldCAtIGMgPCAxKSB7IHNldENvbmYodGFyZ2V0LCBmYWxzZSk7IGNsZWFySW50ZXJ2YWwocmVjKTsgfVxuICAgIH0sIDQwKTtcbiAgICBzZXRUaW1lb3V0KCgpPT57IHVua25vd24uY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpOyB9LCA2MDApO1xuICAgIC8vIHJlc3VtZSBtb3Rpb25cbiAgICBwYXVzZWQgPSBmYWxzZTsgbGFzdFRzID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgaWYgKCFyYWYpIHJhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShsb29wKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbmlzaCgpe1xuICAgIGlmIChyYWYpIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZik7IHJhZiA9IG51bGw7XG4gICAgcm9ib3QucXVlcnlTZWxlY3RvcignLnJvYm90LWhhbG8nKS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsJyMzNkMyOEInKTtcbiAgICBzZXRDb25mKGN1cnJlbnQuY29uZiwgZmFsc2UpO1xuICB9XG5cbiAgY3BDb25maXJtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCk9PiByZXNvbHZlQ2hlY2twb2ludChmYWxzZSkpO1xuICBjcFJlcm91dGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKT0+IHJlc29sdmVDaGVja3BvaW50KHRydWUpKTtcbiAgdGFza0J0bnMuZm9yRWFjaChiID0+IGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKT0+IHN0YXJ0KGIuZGF0YXNldC50YXNrKSkpO1xufSkoKTtcbjwvc2NyaXB0PlxuXG48L2JvZHk+XG48L2h0bWw+XG4iLCAiL3dvcmxkLW1vZGVsL3N0YWdlIjogIjwhRE9DVFlQRSBodG1sPlxuPGh0bWwgbGFuZz1cImVuXCI+XG48aGVhZD5cbjxtZXRhIGNoYXJzZXQ9XCJ1dGYtOFwiPlxuPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCI+XG48dGl0bGU+aW5mcmFzdHJ1UXR1cmUgwrcgVGhlIFdvcmxkIE1vZGVsPC90aXRsZT5cbjxtZXRhIG5hbWU9XCJkZXNjcmlwdGlvblwiIGNvbnRlbnQ9XCJSb2JvdHMgYXJlIGxlYXJuaW5nIHRoZSB3b3JsZC4gV2UgdGVhY2ggdGhlbSB5b3Vycy4gQSB3b3JraW5nIGNvbmNlcHQgZm9yIHRoZSBob21lIHRoYXQgdW5kZXJzdGFuZHMgaXRzZWxmLCB3aXRoIGEgaHVtYW4gYWx3YXlzIGluIGNoYXJnZS5cIj5cbjxtZXRhIG5hbWU9XCJ0aGVtZS1jb2xvclwiIGNvbnRlbnQ9XCIjMDcxMDFGXCI+XG48c3R5bGU+XG5AaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZmYW1pbHk9SW50ZXIrVGlnaHQ6d2dodEA1MDA7NjAwOzcwMDs4MDAmZmFtaWx5PUdlaXN0K01vbm86d2dodEA0MDA7NTAwJmRpc3BsYXk9c3dhcCcpO1xuXG46cm9vdCB7XG4gIC0tcGFwZXI6ICAgICAjRkJGQ0ZFO1xuICAtLXBhcGVyLTI6ICAgI0YyRjVGQTtcbiAgLS1ydWxlOiAgICAgICNFNEU5RjI7XG4gIC0tcnVsZS0yOiAgICAjRDZEQ0U3O1xuICAtLWluazogICAgICAgIzA3MTAxRjtcbiAgLS1pbmstMjogICAgICMxQTI3NDA7XG4gIC0tc3RlZWw6ICAgICAjNUM2Qjg1O1xuICAtLXN0ZWVsLTI6ICAgIzhBOTVBODtcbiAgLS1oYWxvOiAgICAgICM0RjhDRkY7XG4gIC0taGFsby0yOiAgICAjNkZBN0ZGO1xuICAtLWhhbG8tZGVlcDogIzJDNUJFMDtcbiAgLS1oYWxvLXNvZnQ6ICNEQ0U4RkY7XG4gIC0taXJpLWE6ICAgICAjQjE5QkZGO1xuICAtLWlyaS1jOiAgICAgIzkyRTVGRjtcbiAgLS1zaWduYWw6ICAgICNGNEExMUM7XG4gIC0tZ29vZDogICAgICAjMzZDMjhCO1xuICAtLXdhcm46ICAgICAgI0Y0QTExQztcbiAgLS1iZy1pbnZlcnRlZDogIzA3MTAxRjtcbiAgLS1mZy1pbnZlcnRlZDogI0ZCRkNGRTtcbn1cblxuKiB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cbmh0bWwgeyBjb2xvci1zY2hlbWU6IGxpZ2h0OyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IH1cbmJvZHkge1xuICBtYXJnaW46IDA7IGJhY2tncm91bmQ6IHZhcigtLXBhcGVyKTsgY29sb3I6IHZhcigtLWluayk7XG4gIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyBsaW5lLWhlaWdodDogMS41O1xufVxuYSB7IGNvbG9yOiBpbmhlcml0OyB9XG4uc2hlbGwgeyBtYXgtd2lkdGg6IDExODBweDsgbWFyZ2luOiAwIGF1dG87IHBhZGRpbmc6IDAgMjhweDsgfVxuXG4vKiA9PT09PT09PT09PT0gTkFWID09PT09PT09PT09PSAqL1xubmF2IHtcbiAgcG9zaXRpb246IHN0aWNreTsgdG9wOiAwOyB6LWluZGV4OiA2MDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTEsMjUyLDI1NCwuODIpOyBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTRweCk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ydWxlKTtcbn1cbi5uYXYtaW4geyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGhlaWdodDogNjRweDsgfVxuLmJyYW5kIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiAxOHB4OyBsZXR0ZXItc3BhY2luZzogLS4wMmVtOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH1cbi5icmFuZCAucSB7IGNvbG9yOiB2YXIoLS1oYWxvLWRlZXApOyB9XG4uYnJhbmQtZG90IHsgd2lkdGg6IDI2cHg7IGhlaWdodDogMjZweDsgYm9yZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDM1JSAzMCUsIHZhcigtLWhhbG8tMiksIHZhcigtLWhhbG8tZGVlcCkpOyBib3gtc2hhZG93OiAwIDAgMCA0cHggdmFyKC0taGFsby1zb2Z0KTsgfVxuLm5hdi1iYWNrIHsgZm9udC1zaXplOiAxMy41cHg7IGNvbG9yOiB2YXIoLS1zdGVlbCk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogN3B4OyBwYWRkaW5nOiA4cHggMTRweDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnVsZS0yKTsgYm9yZGVyLXJhZGl1czogOTk5cHg7IHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAuMTVzLCBjb2xvciAuMTVzOyB9XG4ubmF2LWJhY2s6aG92ZXIgeyBjb2xvcjogdmFyKC0taW5rKTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1pbmspOyB9XG5cbi8qID09PT09PT09PT09PSBIRVJPID09PT09PT09PT09PSAqL1xuLmhlcm8geyBwYWRkaW5nOiA5MnB4IDAgNTZweDsgfVxuLmV5ZWJyb3cge1xuICBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTEuNXB4OyBsZXR0ZXItc3BhY2luZzogLjE0ZW07XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiB2YXIoLS1oYWxvLWRlZXApOyBtYXJnaW46IDAgMCAyMHB4O1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA5cHg7XG59XG4uZXllYnJvdyAucGlwIHsgd2lkdGg6IDdweDsgaGVpZ2h0OiA3cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogdmFyKC0taGFsbyk7IGJveC1zaGFkb3c6IDAgMCAwIDRweCB2YXIoLS1oYWxvLXNvZnQpOyBhbmltYXRpb246IHB1bHNlIDIuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7IH1cbkBrZXlmcmFtZXMgcHVsc2UgeyAwJSwxMDAlIHsgb3BhY2l0eTogMTsgfSA1MCUgeyBvcGFjaXR5OiAuMzU7IH0gfVxuLmhlcm8gaDEge1xuICBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDcwMDsgbGV0dGVyLXNwYWNpbmc6IC0uMDM1ZW07XG4gIGZvbnQtc2l6ZTogY2xhbXAoMzhweCwgNi40dncsIDc4cHgpOyBsaW5lLWhlaWdodDogLjk4OyBtYXJnaW46IDAgMCAyNnB4OyBtYXgtd2lkdGg6IDE2Y2g7XG4gIHRleHQtd3JhcDogYmFsYW5jZTtcbn1cbi5oZXJvIGgxIC5ncmFkIHsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEwMmRlZywgdmFyKC0taGFsby1kZWVwKSwgdmFyKC0taXJpLWEpIDYwJSwgdmFyKC0taXJpLWMpKTsgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7IGJhY2tncm91bmQtY2xpcDogdGV4dDsgY29sb3I6IHRyYW5zcGFyZW50OyB9XG4uaGVyby1zdWIgeyBmb250LXNpemU6IGNsYW1wKDE3cHgsIDJ2dywgMjBweCk7IGNvbG9yOiB2YXIoLS1pbmstMik7IG1heC13aWR0aDogNjJjaDsgbWFyZ2luOiAwOyBsaW5lLWhlaWdodDogMS41NTsgfVxuLmhlcm8tc3ViIHN0cm9uZyB7IGNvbG9yOiB2YXIoLS1pbmspOyBmb250LXdlaWdodDogNjAwOyB9XG5cbi8qID09PT09PT09PT09PSBTRUNUSU9OIFNDQUZGT0xEID09PT09PT09PT09PSAqL1xuLmJsb2NrIHsgcGFkZGluZzogNzJweCAwOyB9XG4uc2VjLWV5ZWJyb3cgeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTEuNXB4OyBsZXR0ZXItc3BhY2luZzogLjE0ZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiB2YXIoLS1zdGVlbCk7IG1hcmdpbjogMCAwIDE0cHg7IH1cbi5zZWMtaCB7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNzAwOyBsZXR0ZXItc3BhY2luZzogLS4wM2VtOyBmb250LXNpemU6IGNsYW1wKDI4cHgsIDR2dywgNDZweCk7IGxpbmUtaGVpZ2h0OiAxLjA0OyBtYXJnaW46IDAgMCAxNnB4OyB0ZXh0LXdyYXA6IGJhbGFuY2U7IH1cbi5zZWMtbGVkZSB7IGZvbnQtc2l6ZTogY2xhbXAoMTZweCwgMS44dncsIDE5cHgpOyBjb2xvcjogdmFyKC0taW5rLTIpOyBtYXgtd2lkdGg6IDY0Y2g7IG1hcmdpbjogMDsgbGluZS1oZWlnaHQ6IDEuNTU7IH1cblxuLyogPT09PT09PT09PT09IFRIRSBTVEFHRSAoaW50ZXJhY3RpdmUpID09PT09PT09PT09PSAqL1xuLnN0YWdlLXdyYXAgeyBtYXJnaW4tdG9wOiAzOHB4OyB9XG4uc3RhZ2Uge1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1pbnZlcnRlZCk7IGNvbG9yOiB2YXIoLS1mZy1pbnZlcnRlZCk7XG4gIGJvcmRlci1yYWRpdXM6IDI2cHg7IG92ZXJmbG93OiBoaWRkZW47XG4gIGJveC1zaGFkb3c6IDAgMXB4IDJweCByZ2JhKDcsMTYsMzEsLjUpLCAwIDQwcHggOTBweCAtNDBweCByZ2JhKDcsMTYsMzEsLjU1KSwgMCAxMHB4IDQwcHggLTE2cHggcmdiYSg3OSwxNDAsMjU1LC4yOCk7XG4gIGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMS41NWZyIDFmcjtcbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA4ODBweCkgeyAuc3RhZ2UgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfSB9XG5cbi5zdGFnZS1jYW52YXMgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGJhY2tncm91bmQ6XG4gIHJhZGlhbC1ncmFkaWVudCgxMjAlIDkwJSBhdCAzMCUgMCUsIHJnYmEoNzksMTQwLDI1NSwuMTIpLCB0cmFuc3BhcmVudCA2MCUpLFxuICBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjMEExMzIyLCAjMDcwRDE4KTsgcGFkZGluZzogMThweDsgfVxuLnN0YWdlLWNhbnZhcyBzdmcgeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiBhdXRvOyBkaXNwbGF5OiBibG9jazsgYm9yZGVyLXJhZGl1czogMTRweDsgfVxuXG4uc3RhZ2UtdGFnIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDMwcHg7IGxlZnQ6IDMwcHg7IHotaW5kZXg6IDQ7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMC41cHg7IGxldHRlci1zcGFjaW5nOiAuMTJlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjUpOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgfVxuLnN0YWdlLXRhZyAubGl2ZSB7IHdpZHRoOiA3cHg7IGhlaWdodDogN3B4OyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6IHZhcigtLWdvb2QpOyBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSg1NCwxOTQsMTM5LC4xOCk7IGFuaW1hdGlvbjogcHVsc2UgMnMgaW5maW5pdGU7IH1cblxuLyogd29ybGQgZ2VvbWV0cnkgKi9cbi53LWxvdCAgIHsgZmlsbDogIzE2MzYxZjsgfVxuLnctbG90LTIgeyBmaWxsOiAjMTQzMDE4OyB9XG4udy1ob3VzZSB7IGZpbGw6ICMxYjI3NDA7IHN0cm9rZTogIzM4NTA3Zjsgc3Ryb2tlLXdpZHRoOiAyOyB9XG4udy1yb29tICB7IHN0cm9rZTogIzJhM2M2Mzsgc3Ryb2tlLXdpZHRoOiAxLjQ7IGZpbGw6IG5vbmU7IH1cbi53LXJvb21maWxsIHsgZmlsbDogcmdiYSg3OSwxNDAsMjU1LC4wNSk7IH1cbi53LWRyaXZlIHsgZmlsbDogIzIzMmIzYjsgfVxuLnctdHJlZSAgeyBmaWxsOiAjMWY3YTNlOyBzdHJva2U6ICMyZmFmNWI7IHN0cm9rZS13aWR0aDogMS41OyB9XG4udy1iZWQgICB7IGZpbGw6ICM1YTNhNmI7IHN0cm9rZTogIzhkNWJhNjsgc3Ryb2tlLXdpZHRoOiAxLjM7IG9wYWNpdHk6IC44NTsgfVxuLnctcGF0aW8geyBmaWxsOiAjMmEzMTQyOyBzdHJva2U6ICMzZDQ2NWQ7IHN0cm9rZS13aWR0aDogMS4yOyB9XG4udy1sYWJlbCB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMXB4OyBmaWxsOiByZ2JhKDI1NSwyNTUsMjU1LC4zNCk7IGxldHRlci1zcGFjaW5nOiAuMDRlbTsgfVxuLnctb2JqbGFiZWwgeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogOS41cHg7IGZpbGw6IHJnYmEoMjU1LDI1NSwyNTUsLjQyKTsgfVxuLnctZ2F0ZSAgeyBzdHJva2U6IHZhcigtLXNpZ25hbCk7IHN0cm9rZS13aWR0aDogMi41OyBzdHJva2UtZGFzaGFycmF5OiA0IDQ7IH1cblxuLmRldiB7IGZpbGw6IHZhcigtLWhhbG8pOyB9XG4uZGV2LXJpbmcgeyBmaWxsOiBub25lOyBzdHJva2U6IHZhcigtLWhhbG8pOyBzdHJva2Utd2lkdGg6IDEuNDsgb3BhY2l0eTogLjU7IH1cbi5kZXYtcHVsc2UgeyBmaWxsOiBub25lOyBzdHJva2U6IHZhcigtLWhhbG8pOyBzdHJva2Utd2lkdGg6IDEuMjsgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyOyB9XG5cbiNwcmVkaWN0ZWQgeyBmaWxsOiBub25lOyBzdHJva2U6IHZhcigtLWhhbG8tMik7IHN0cm9rZS13aWR0aDogMi40OyBzdHJva2UtZGFzaGFycmF5OiA3IDc7IG9wYWNpdHk6IC44OyB9XG4jdHJhaWwgeyBmaWxsOiBub25lOyBzdHJva2U6IHVybCgjdHJhaWxncmFkKTsgc3Ryb2tlLXdpZHRoOiAzLjY7IHN0cm9rZS1saW5lY2FwOiByb3VuZDsgfVxuXG4ucm9ib3QtYm9keSB7IGZpbGw6ICNmZmY7IHN0cm9rZTogdmFyKC0taGFsby1kZWVwKTsgc3Ryb2tlLXdpZHRoOiAyOyB9XG4ucm9ib3QtZXllIHsgZmlsbDogdmFyKC0taGFsby1kZWVwKTsgfVxuLnJvYm90LWhhbG8geyBmaWxsOiBub25lOyBzdHJva2U6IHZhcigtLWhhbG8tMik7IHN0cm9rZS13aWR0aDogMS41OyBvcGFjaXR5OiAuNjsgfVxuXG4uZG9jayB7IGZpbGw6IG5vbmU7IHN0cm9rZTogcmdiYSgyNTUsMjU1LDI1NSwuMyk7IHN0cm9rZS13aWR0aDogMS42OyBzdHJva2UtZGFzaGFycmF5OiAzIDQ7IH1cbi5kb2NrLWxhYmVsIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDlweDsgZmlsbDogcmdiYSgyNTUsMjU1LDI1NSwuNCk7IH1cblxuLyogdW5rbm93biBvYmplY3QgKi9cbi51bmtub3duIHsgb3BhY2l0eTogMDsgdHJhbnNpdGlvbjogb3BhY2l0eSAuNHM7IH1cbi51bmtub3duLnNob3cgeyBvcGFjaXR5OiAxOyB9XG4udW5rbm93bi1ib3ggeyBmaWxsOiByZ2JhKDI0NCwxNjEsMjgsLjE2KTsgc3Ryb2tlOiB2YXIoLS1zaWduYWwpOyBzdHJva2Utd2lkdGg6IDI7IHN0cm9rZS1kYXNoYXJyYXk6IDUgNDsgfVxuLnVua25vd24tcSB7IGZpbGw6IHZhcigtLXNpZ25hbCk7IGZvbnQtZmFtaWx5OiAnSW50ZXIgVGlnaHQnOyBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IDIwcHg7IHRleHQtYW5jaG9yOiBtaWRkbGU7IH1cblxuLyogPT09PT09PT09PT09IFJFQVNPTklORyBQQU5FTCA9PT09PT09PT09PT0gKi9cbi5wYW5lbCB7IGJhY2tncm91bmQ6ICMwYzEzMjI7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMDgpOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBwYWRkaW5nOiAyMnB4OyBnYXA6IDE2cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgbWluLWhlaWdodDogNTIwcHg7IH1cbi5wYW5lbC1oIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9XG4ucGFuZWwtdGl0bGUgeyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogI2ZmZjsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA5cHg7IH1cbi5wYW5lbC10aXRsZSBzdmcgeyBjb2xvcjogdmFyKC0taGFsby0yKTsgfVxuLmNvbmYgeyB0ZXh0LWFsaWduOiByaWdodDsgfVxuLmNvbmYtbnVtIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDIycHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiB2YXIoLS1nb29kKTsgbGluZS1oZWlnaHQ6IDE7IHRyYW5zaXRpb246IGNvbG9yIC4zczsgfVxuLmNvbmYtbnVtLmxvdyB7IGNvbG9yOiB2YXIoLS13YXJuKTsgfVxuLmNvbmYtbGJsIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDlweDsgbGV0dGVyLXNwYWNpbmc6IC4xMmVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuNCk7IG1hcmdpbi10b3A6IDNweDsgfVxuXG4udGFza3MgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDhweDsgfVxuLnRhc2tzLWxibCB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiA5LjVweDsgbGV0dGVyLXNwYWNpbmc6IC4xMmVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuNCk7IG1hcmdpbi1ib3R0b206IDJweDsgfVxuLnRhc2stYnRuIHtcbiAgdGV4dC1hbGlnbjogbGVmdDsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuMDQpOyBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xKTtcbiAgY29sb3I6ICNmZmY7IHBhZGRpbmc6IDEycHggMTRweDsgYm9yZGVyLXJhZGl1czogMTJweDsgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LWZhbWlseTogJ0ludGVyJzsgZm9udC1zaXplOiAxMy41cHg7IGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTFweDsgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIC4xNXMsIGJhY2tncm91bmQgLjE1cywgdHJhbnNmb3JtIC4xcztcbn1cbi50YXNrLWJ0bjpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0taGFsbyk7IGJhY2tncm91bmQ6IHJnYmEoNzksMTQwLDI1NSwuMSk7IH1cbi50YXNrLWJ0bjphY3RpdmUgeyB0cmFuc2Zvcm06IHNjYWxlKC45OSk7IH1cbi50YXNrLWJ0bi5pcy1hY3RpdmUgeyBib3JkZXItY29sb3I6IHZhcigtLWhhbG8pOyBiYWNrZ3JvdW5kOiByZ2JhKDc5LDE0MCwyNTUsLjE2KTsgfVxuLnRhc2stYnRuIC5pYyB7IHdpZHRoOiAzMHB4OyBoZWlnaHQ6IDMwcHg7IGJvcmRlci1yYWRpdXM6IDhweDsgYmFja2dyb3VuZDogcmdiYSg3OSwxNDAsMjU1LC4xNik7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBmbGV4LXNocmluazogMDsgY29sb3I6IHZhcigtLWhhbG8tMik7IH1cbi50YXNrLWJ0biAuc3ViIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjQ1KTsgbWFyZ2luLXRvcDogMXB4OyBmb250LXdlaWdodDogNDAwOyB9XG5cbi5sb2cgeyBmbGV4OiAxOyBvdmVyZmxvdzogaGlkZGVuOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDdweDsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDExLjVweDsgbGluZS1oZWlnaHQ6IDEuNDU7IH1cbi5sb2ctbGluZSB7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC42Mik7IGRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KTsgYW5pbWF0aW9uOiBsb2dJbiAuM3MgZm9yd2FyZHM7IH1cbi5sb2ctbGluZSAudCB7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC4yOCk7IGZsZXgtc2hyaW5rOiAwOyB9XG4ubG9nLWxpbmUud2FybiB7IGNvbG9yOiB2YXIoLS13YXJuKTsgfVxuLmxvZy1saW5lLmh1bWFuIHsgY29sb3I6IHZhcigtLWhhbG8tMik7IH1cbi5sb2ctbGluZS5vayB7IGNvbG9yOiB2YXIoLS1nb29kKTsgfVxuQGtleWZyYW1lcyBsb2dJbiB7IHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiBub25lOyB9IH1cbi5sb2ctZW1wdHkgeyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuMzIpOyBmb250LWZhbWlseTogJ0ludGVyJzsgZm9udC1zaXplOiAxM3B4OyBsaW5lLWhlaWdodDogMS41OyBtYXJnaW46IGF1dG8gMDsgfVxuXG4vKiBodW1hbiBjaGVja3BvaW50IGNhcmQgKi9cbi5jaGVja3BvaW50IHtcbiAgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxNnB4OyByaWdodDogMTZweDsgYm90dG9tOiAxNnB4OyB6LWluZGV4OiA4O1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjMTQyMTQyLCAjMGQxODJmKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taGFsbyk7IGJvcmRlci1yYWRpdXM6IDE2cHg7IHBhZGRpbmc6IDE2cHg7XG4gIGJveC1zaGFkb3c6IDAgLThweCA0MHB4IC0xMHB4IHJnYmEoMCwwLDAsLjYpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTQwJSk7IHRyYW5zaXRpb246IHRyYW5zZm9ybSAuMzVzIGN1YmljLWJlemllciguMiwuOCwuMiwxKTtcbn1cbi5jaGVja3BvaW50LnNob3cgeyB0cmFuc2Zvcm06IG5vbmU7IH1cbi5jcC1oZWFkIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyBtYXJnaW4tYm90dG9tOiA5cHg7IH1cbi5jcC1tb25vIHsgd2lkdGg6IDM0cHg7IGhlaWdodDogMzRweDsgYm9yZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1oYWxvKSwgdmFyKC0taW5rKSk7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogI2ZmZjsgZmxleC1zaHJpbms6IDA7IH1cbi5jcC13aG8geyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxMy41cHg7IGNvbG9yOiAjZmZmOyB9XG4uY3Atcm9sZSB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiA5LjVweDsgbGV0dGVyLXNwYWNpbmc6IC4xZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiB2YXIoLS1oYWxvLTIpOyBtYXJnaW4tdG9wOiAxcHg7IH1cbi5jcC1xIHsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuOCk7IGxpbmUtaGVpZ2h0OiAxLjQ1OyBtYXJnaW46IDAgMCAxMnB4OyB9XG4uY3Atcm93IHsgZGlzcGxheTogZmxleDsgZ2FwOiA4cHg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH1cbi5jcC1idG4geyBmbGV4OiAxOyBiYWNrZ3JvdW5kOiB2YXIoLS1oYWxvKTsgY29sb3I6ICNmZmY7IGJvcmRlcjogMDsgcGFkZGluZzogMTBweDsgYm9yZGVyLXJhZGl1czogMTBweDsgZm9udC1mYW1pbHk6ICdJbnRlcic7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTNweDsgY3Vyc29yOiBwb2ludGVyOyB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIC4xNXM7IH1cbi5jcC1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1oYWxvLWRlZXApOyB9XG4uY3AtYnRuLmFsdCB7IGZsZXg6IDAgMCBhdXRvOyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC4wNik7IGNvbG9yOiAjZmZmOyBwYWRkaW5nOiAxMHB4IDE0cHg7IH1cbi5jcC1idG4uYWx0OmhvdmVyIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuMTIpOyB9XG4uY3AtYXV0byB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiA5LjVweDsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjQpOyBtYXJnaW4tdG9wOiA5cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgfVxuXG4vKiBtb2RlbCBzdGF0cyBzdHJpcCAqL1xuLm1vZGVsYmFyIHsgZGlzcGxheTogZmxleDsgZ2FwOiAwOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMDcpOyBwYWRkaW5nLXRvcDogMTRweDsgfVxuLm1vZGVsYmFyIC5tIHsgZmxleDogMTsgdGV4dC1hbGlnbjogY2VudGVyOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4wNyk7IH1cbi5tb2RlbGJhciAubTpsYXN0LWNoaWxkIHsgYm9yZGVyLXJpZ2h0OiAwOyB9XG4ubW9kZWxiYXIgLm12IHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDE1cHg7IGNvbG9yOiAjZmZmOyB9XG4ubW9kZWxiYXIgLm1sIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDguNXB4OyBsZXR0ZXItc3BhY2luZzogLjFlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjQpOyBtYXJnaW4tdG9wOiAzcHg7IH1cblxuLnN0YWdlLWNhcCB7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHZhcigtLXN0ZWVsKTsgbWFyZ2luOiAxNnB4IDJweCAwOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgfVxuLnN0YWdlLWNhcCBzdmcgeyBmbGV4LXNocmluazogMDsgY29sb3I6IHZhcigtLWhhbG8tZGVlcCk7IH1cblxuLyogPT09PT09PT09PT09IFRXTy1DT0xVTU4gQ09NUEFSRSA9PT09PT09PT09PT0gKi9cbi5jb21wYXJlIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyBnYXA6IDIwcHg7IG1hcmdpbi10b3A6IDQwcHg7IH1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjBweCkgeyAuY29tcGFyZSB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOyB9IH1cbi5jbXAtY2FyZCB7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJ1bGUpOyBib3JkZXItcmFkaXVzOiAyMHB4OyBwYWRkaW5nOiAyOHB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlcik7IH1cbi5jbXAtY2FyZC53b3JsZCB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWludmVydGVkKTsgY29sb3I6IHZhcigtLWZnLWludmVydGVkKTsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfVxuLmNtcC1raWNrZXIgeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTAuNXB4OyBsZXR0ZXItc3BhY2luZzogLjEyZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGNvbG9yOiB2YXIoLS1zdGVlbCk7IG1hcmdpbjogMCAwIDE0cHg7IH1cbi5jbXAtY2FyZC53b3JsZCAuY21wLWtpY2tlciB7IGNvbG9yOiB2YXIoLS1oYWxvLTIpOyB9XG4uY21wLWggeyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiAyM3B4OyBsZXR0ZXItc3BhY2luZzogLS4wMmVtOyBtYXJnaW46IDAgMCAxMHB4OyB9XG4uY21wLXAgeyBmb250LXNpemU6IDE1cHg7IGxpbmUtaGVpZ2h0OiAxLjU1OyBjb2xvcjogdmFyKC0taW5rLTIpOyBtYXJnaW46IDAgMCAxOHB4OyB9XG4uY21wLWNhcmQud29ybGQgLmNtcC1wIHsgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsLjcyKTsgfVxuLmNtcC1lZyB7IGZvbnQtZmFtaWx5OiAnR2Vpc3QgTW9ubycsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxMnB4OyBsaW5lLWhlaWdodDogMS41OyBwYWRkaW5nOiAxNHB4OyBib3JkZXItcmFkaXVzOiAxMnB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlci0yKTsgY29sb3I6IHZhcigtLWluay0yKTsgfVxuLmNtcC1jYXJkLndvcmxkIC5jbXAtZWcgeyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LC4wNSk7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC43KTsgfVxuLmNtcC1lZyBiIHsgY29sb3I6IHZhcigtLWhhbG8tZGVlcCk7IGZvbnQtd2VpZ2h0OiA1MDA7IH1cbi5jbXAtY2FyZC53b3JsZCAuY21wLWVnIGIgeyBjb2xvcjogdmFyKC0taGFsby0yKTsgfVxuXG4vKiA9PT09PT09PT09PT0gU1RFUFMgPT09PT09PT09PT09ICovXG4uc3RlcHMgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOyBnYXA6IDE4cHg7IG1hcmdpbi10b3A6IDM4cHg7IH1cbkBtZWRpYSAobWF4LXdpZHRoOiA4MjBweCkgeyAuc3RlcHMgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfSB9XG4uc3RlcCB7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXJ1bGUpOyBib3JkZXItcmFkaXVzOiAxOHB4OyBwYWRkaW5nOiAyNnB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlcik7IH1cbi5zdGVwLW4geyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLWhhbG8tZGVlcCk7IG1hcmdpbi1ib3R0b206IDE0cHg7IH1cbi5zdGVwLWggeyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiAxOXB4OyBsZXR0ZXItc3BhY2luZzogLS4wMmVtOyBtYXJnaW46IDAgMCA4cHg7IH1cbi5zdGVwLXAgeyBmb250LXNpemU6IDE0LjVweDsgbGluZS1oZWlnaHQ6IDEuNTU7IGNvbG9yOiB2YXIoLS1pbmstMik7IG1hcmdpbjogMDsgfVxuXG4vKiA9PT09PT09PT09PT0gUElURkFMTFMgPT09PT09PT09PT09ICovXG4ucGl0ZmFsbHMgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1pbnZlcnRlZCk7IGNvbG9yOiB2YXIoLS1mZy1pbnZlcnRlZCk7IH1cbi5wZi1ncmlkIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsgZ2FwOiAxNnB4OyBtYXJnaW4tdG9wOiAzOHB4OyB9XG5AbWVkaWEgKG1heC13aWR0aDogNzYwcHgpIHsgLnBmLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfSB9XG4ucGYgeyBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4xKTsgYm9yZGVyLXJhZGl1czogMTZweDsgcGFkZGluZzogMjRweDsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwuMDI1KTsgfVxuLnBmLXJpc2sgeyBmb250LWZhbWlseTogJ0dlaXN0IE1vbm8nLCBtb25vc3BhY2U7IGZvbnQtc2l6ZTogMTAuNXB4OyBsZXR0ZXItc3BhY2luZzogLjFlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6IHZhcigtLXNpZ25hbCk7IG1hcmdpbjogMCAwIDhweDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7IH1cbi5wZi1yaXNrOjpiZWZvcmUgeyBjb250ZW50OiAnJzsgd2lkdGg6IDdweDsgaGVpZ2h0OiA3cHg7IGJvcmRlci1yYWRpdXM6IDJweDsgYmFja2dyb3VuZDogdmFyKC0tc2lnbmFsKTsgfVxuLnBmLWggeyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDYwMDsgZm9udC1zaXplOiAxN3B4OyBtYXJnaW46IDAgMCAxMHB4OyBjb2xvcjogI2ZmZjsgfVxuLnBmLXAgeyBmb250LXNpemU6IDE0cHg7IGxpbmUtaGVpZ2h0OiAxLjU1OyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwuNjYpOyBtYXJnaW46IDAgMCAxNHB4OyB9XG4ucGYtYW5zIHsgZm9udC1zaXplOiAxMy41cHg7IGxpbmUtaGVpZ2h0OiAxLjU7IGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC45KTsgcGFkZGluZy1sZWZ0OiAxNHB4OyBib3JkZXItbGVmdDogMnB4IHNvbGlkIHZhcigtLWdvb2QpOyB9XG4ucGYtYW5zIGIgeyBjb2xvcjogdmFyKC0tZ29vZCk7IGZvbnQtd2VpZ2h0OiA2MDA7IH1cblxuLyogPT09PT09PT09PT09IENMT1NJTkcgPT09PT09PT09PT09ICovXG4uY2xvc2UtY3RhIHsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiA5NnB4IDA7IH1cbi5jbG9zZS1jdGEgaDIgeyBmb250LWZhbWlseTogJ0ludGVyIFRpZ2h0JzsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiBjbGFtcCgzMHB4LCA0LjZ2dywgNTRweCk7IGxldHRlci1zcGFjaW5nOiAtLjAzZW07IGxpbmUtaGVpZ2h0OiAxLjAyOyBtYXJnaW46IDAgMCAxOHB4OyB0ZXh0LXdyYXA6IGJhbGFuY2U7IH1cbi5jbG9zZS1jdGEgcCB7IGZvbnQtc2l6ZTogMThweDsgY29sb3I6IHZhcigtLWluay0yKTsgbWF4LXdpZHRoOiA1MmNoOyBtYXJnaW46IDAgYXV0byAzMHB4OyB9XG4uYnRuLXJvdyB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTJweDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGZsZXgtd3JhcDogd3JhcDsgfVxuLmJ0biB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDlweDsgcGFkZGluZzogMTVweCAyNnB4OyBib3JkZXItcmFkaXVzOiA5OTlweDsgZm9udC1mYW1pbHk6ICdJbnRlcic7IGZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMTVweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjEycywgYmFja2dyb3VuZCAuMTVzLCBib3JkZXItY29sb3IgLjE1czsgfVxuLmJ0bi1wcmltYXJ5IHsgYmFja2dyb3VuZDogdmFyKC0taW5rKTsgY29sb3I6IHZhcigtLXBhcGVyKTsgfVxuLmJ0bi1wcmltYXJ5OmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0taGFsby1kZWVwKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOyB9XG4uYnRuLWdob3N0IHsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcnVsZS0yKTsgY29sb3I6IHZhcigtLWluayk7IH1cbi5idG4tZ2hvc3Q6aG92ZXIgeyBib3JkZXItY29sb3I6IHZhcigtLWluayk7IH1cblxuZm9vdGVyIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXJ1bGUpOyBwYWRkaW5nOiAzMHB4IDA7IH1cbi5mb290LWluIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LXdyYXA6IHdyYXA7IGdhcDogMTRweDsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogdmFyKC0tc3RlZWwpOyB9XG4uZm9vdC1ub3RlIHsgZm9udC1mYW1pbHk6ICdHZWlzdCBNb25vJywgbW9ub3NwYWNlOyBmb250LXNpemU6IDExcHg7IGxldHRlci1zcGFjaW5nOiAuMDRlbTsgfVxuXG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgeyAqIHsgYW5pbWF0aW9uLWR1cmF0aW9uOiAuMDFtcyAhaW1wb3J0YW50OyB9IH1cbi8qIGVtYmVkIG1vZGUgKi9cbmh0bWwsIGJvZHkgeyBiYWNrZ3JvdW5kOiB2YXIoLS1wYXBlcik7IH1cbi5lbWJlZC1wYWQgLmJsb2NrIHsgcGFkZGluZzogNnB4IDA7IH1cbi5lbWJlZC1wYWQgLnNoZWxsIHsgcGFkZGluZzogMCAxNnB4OyB9XG4uZW1iZWQtcGFkIC5zdGFnZS13cmFwIHsgbWFyZ2luLXRvcDogMDsgfVxuPC9zdHlsZT5cbjwvaGVhZD5cbjxib2R5PlxuPGRpdiBjbGFzcz1cImVtYmVkLXBhZFwiPlxuPCEtLSA9PT09PT09PT09PT0gVEhFIExJVkUgU1RBR0UgPT09PT09PT09PT09IC0tPlxuPHNlY3Rpb24gY2xhc3M9XCJibG9ja1wiIHN0eWxlPVwicGFkZGluZy10b3A6IDhweDtcIj5cbiAgPGRpdiBjbGFzcz1cInNoZWxsXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwic3RhZ2Utd3JhcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0YWdlXCI+XG4gICAgICAgIDwhLS0gQ0FOVkFTIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhZ2UtY2FudmFzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0YWdlLXRhZ1wiPjxzcGFuIGNsYXNzPVwibGl2ZVwiPjwvc3Bhbj5Xb3JsZCBtb2RlbCDCtyAxMjQwIEF1cm9yYSBBdmU8L2Rpdj5cbiAgICAgICAgICA8c3ZnIGlkPVwic2NlbmVcIiB2aWV3Qm94PVwiMCAwIDcyMCA1NjBcIiBhcmlhLWxhYmVsPVwiVG9wLWRvd24gZGlnaXRhbCB0d2luIG9mIGEgaG9tZSBhbmQgeWFyZFwiPlxuICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInRyYWlsZ3JhZFwiIHgxPVwiMFwiIHkxPVwiMFwiIHgyPVwiMVwiIHkyPVwiMVwiPlxuICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjBcIiBzdG9wLWNvbG9yPVwiIzkyRTVGRlwiLz5cbiAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiM0RjhDRkZcIi8+XG4gICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgICA8L2RlZnM+XG5cbiAgICAgICAgICAgIDwhLS0gbG90IC0tPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9XCJ3LWxvdFwiIHg9XCIxNlwiIHk9XCIxNlwiIHdpZHRoPVwiNjg4XCIgaGVpZ2h0PVwiNTI4XCIgcng9XCIxNFwiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPVwidy1sb3QtMlwiIHg9XCIzNjBcIiB5PVwiOTJcIiB3aWR0aD1cIjMyOFwiIGhlaWdodD1cIjQzMFwiIHJ4PVwiOFwiLz5cblxuICAgICAgICAgICAgPCEtLSBkcml2ZXdheSArIHN0cmVldCAtLT5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPVwidy1kcml2ZVwiIHg9XCIxNTBcIiB5PVwiNDMwXCIgd2lkdGg9XCI5MFwiIGhlaWdodD1cIjExNFwiLz5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPVwidy1kcml2ZVwiIHg9XCIxNlwiIHk9XCI1MjBcIiB3aWR0aD1cIjY4OFwiIGhlaWdodD1cIjI0XCIvPlxuXG4gICAgICAgICAgICA8IS0tIGhvdXNlIC0tPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9XCJ3LWhvdXNlXCIgeD1cIjYwXCIgeT1cIjgwXCIgd2lkdGg9XCIzMDBcIiBoZWlnaHQ9XCIzMjBcIiByeD1cIjZcIi8+XG4gICAgICAgICAgICA8IS0tIHJvb21zIC0tPlxuICAgICAgICAgICAgPGxpbmUgY2xhc3M9XCJ3LXJvb21cIiB4MT1cIjIxMFwiIHkxPVwiODBcIiB4Mj1cIjIxMFwiIHkyPVwiNDAwXCIvPlxuICAgICAgICAgICAgPGxpbmUgY2xhc3M9XCJ3LXJvb21cIiB4MT1cIjYwXCIgeTE9XCIyNDBcIiB4Mj1cIjIxMFwiIHkyPVwiMjQwXCIvPlxuICAgICAgICAgICAgPGxpbmUgY2xhc3M9XCJ3LXJvb21cIiB4MT1cIjIxMFwiIHkxPVwiMjAwXCIgeDI9XCIzNjBcIiB5Mj1cIjIwMFwiLz5cbiAgICAgICAgICAgIDx0ZXh0IGNsYXNzPVwidy1sYWJlbFwiIHg9XCI4NFwiIHk9XCIxNzBcIj5MSVZJTkc8L3RleHQ+XG4gICAgICAgICAgICA8dGV4dCBjbGFzcz1cInctbGFiZWxcIiB4PVwiODRcIiB5PVwiMzMwXCI+S0lUQ0hFTjwvdGV4dD5cbiAgICAgICAgICAgIDx0ZXh0IGNsYXNzPVwidy1sYWJlbFwiIHg9XCIyMzZcIiB5PVwiMTUwXCI+QkVEUk9PTTwvdGV4dD5cbiAgICAgICAgICAgIDx0ZXh0IGNsYXNzPVwidy1sYWJlbFwiIHg9XCIyMzZcIiB5PVwiMzEwXCI+T0ZGSUNFPC90ZXh0PlxuICAgICAgICAgICAgPCEtLSBmcm9udCBkb29yIC0tPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjE5NVwiIHk9XCIzOTZcIiB3aWR0aD1cIjM0XCIgaGVpZ2h0PVwiOFwiIHJ4PVwiM1wiIGZpbGw9XCIjMzg1MDdmXCIvPlxuXG4gICAgICAgICAgICA8IS0tIHlhcmQgb2JqZWN0cyAoa25vd24gdG8gdGhlIG1vZGVsKSAtLT5cbiAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJ3LXRyZWVcIiBjeD1cIjYyMFwiIGN5PVwiMTUwXCIgcj1cIjQwXCIvPlxuICAgICAgICAgICAgPHRleHQgY2xhc3M9XCJ3LW9iamxhYmVsXCIgeD1cIjYyMFwiIHk9XCIxNTNcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIHN0eWxlPVwiZmlsbDpyZ2JhKDI1NSwyNTUsMjU1LC41KVwiPk9BSzwvdGV4dD5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPVwidy1iZWRcIiB4PVwiNDMwXCIgeT1cIjQ3MFwiIHdpZHRoPVwiMjIwXCIgaGVpZ2h0PVwiMzRcIiByeD1cIjhcIi8+XG4gICAgICAgICAgICA8dGV4dCBjbGFzcz1cInctb2JqbGFiZWxcIiB4PVwiNTQwXCIgeT1cIjQ5MVwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCI+RkxPV0VSIEJFRDwvdGV4dD5cbiAgICAgICAgICAgIDxyZWN0IGNsYXNzPVwidy1wYXRpb1wiIHg9XCIzOTJcIiB5PVwiMTIwXCIgd2lkdGg9XCI5MlwiIGhlaWdodD1cIjc0XCIgcng9XCI2XCIvPlxuICAgICAgICAgICAgPHRleHQgY2xhc3M9XCJ3LW9iamxhYmVsXCIgeD1cIjQzOFwiIHk9XCIxNjFcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiPlBBVElPPC90ZXh0PlxuICAgICAgICAgICAgPCEtLSBzaWRlIGdhdGUgLS0+XG4gICAgICAgICAgICA8bGluZSBjbGFzcz1cInctZ2F0ZVwiIHgxPVwiNjg4XCIgeTE9XCIzMDBcIiB4Mj1cIjY4OFwiIHkyPVwiMzYwXCIvPlxuICAgICAgICAgICAgPHRleHQgY2xhc3M9XCJ3LW9iamxhYmVsXCIgeD1cIjY0OFwiIHk9XCIzMzRcIiBzdHlsZT1cImZpbGw6dmFyKC0tc2lnbmFsKVwiPkdBVEU8L3RleHQ+XG5cbiAgICAgICAgICAgIDwhLS0gaW5zdGFsbGVkIGRldmljZXMgKHRoZSBtb2RlbCBpcyBidWlsdCBmcm9tIHRoZXNlKSAtLT5cbiAgICAgICAgICAgIDxnIGlkPVwiZGV2aWNlc1wiPjwvZz5cblxuICAgICAgICAgICAgPCEtLSBkb2NrIC0tPlxuICAgICAgICAgICAgPHJlY3QgY2xhc3M9XCJkb2NrXCIgeD1cIjM5MlwiIHk9XCI0MDRcIiB3aWR0aD1cIjQwXCIgaGVpZ2h0PVwiNDBcIiByeD1cIjhcIi8+XG4gICAgICAgICAgICA8dGV4dCBjbGFzcz1cImRvY2stbGFiZWxcIiB4PVwiNDEyXCIgeT1cIjQ1OFwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCI+RE9DSzwvdGV4dD5cblxuICAgICAgICAgICAgPCEtLSBkeW5hbWljIHBhdGhzIC0tPlxuICAgICAgICAgICAgPHBhdGggaWQ9XCJwcmVkaWN0ZWRcIiBkPVwiXCIvPlxuICAgICAgICAgICAgPHBhdGggaWQ9XCJ0cmFpbFwiIGQ9XCJcIi8+XG5cbiAgICAgICAgICAgIDwhLS0gdW5rbm93biBvYmplY3QgLS0+XG4gICAgICAgICAgICA8ZyBjbGFzcz1cInVua25vd25cIiBpZD1cInVua25vd25cIj5cbiAgICAgICAgICAgICAgPHJlY3QgY2xhc3M9XCJ1bmtub3duLWJveFwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjQ2XCIgaGVpZ2h0PVwiMzRcIiByeD1cIjZcIi8+XG4gICAgICAgICAgICAgIDx0ZXh0IGNsYXNzPVwidW5rbm93bi1xXCIgeD1cIjIzXCIgeT1cIjI0XCI+PzwvdGV4dD5cbiAgICAgICAgICAgIDwvZz5cblxuICAgICAgICAgICAgPCEtLSByb2JvdCAtLT5cbiAgICAgICAgICAgIDxnIGlkPVwicm9ib3RcIiBzdHlsZT1cIm9wYWNpdHk6MFwiPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGNsYXNzPVwicm9ib3QtaGFsb1wiIGN4PVwiMFwiIGN5PVwiMFwiIHI9XCIxNlwiLz5cbiAgICAgICAgICAgICAgPGNpcmNsZSBjbGFzcz1cInJvYm90LWJvZHlcIiBjeD1cIjBcIiBjeT1cIjBcIiByPVwiMTBcIi8+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY2xhc3M9XCJyb2JvdC1leWVcIiBjeD1cIjBcIiBjeT1cIi00XCIgcj1cIjIuNFwiLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBQQU5FTCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxuICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj48cGF0aCBkPVwiTTEyIDJhMTAgMTAgMCAxMDAgMjAgMTAgMTAgMCAwMDAtMjB6XCIvPjxwYXRoIGQ9XCJNMiAxMmgyME0xMiAyYTE1IDE1IDAgMDEwIDIwTTEyIDJhMTUgMTUgMCAwMDAgMjBcIi8+PC9zdmc+XG4gICAgICAgICAgICAgIFdvcmxkIG1vZGVsXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25mXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25mLW51bVwiIGlkPVwiY29uZk51bVwiPi0tPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25mLWxibFwiPmNvbmZpZGVuY2U8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhc2tzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFza3MtbGJsXCI+R2l2ZSBpdCBhIGpvYjwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRhc2stYnRuXCIgZGF0YS10YXNrPVwibW93XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNcIj48c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj48cGF0aCBkPVwiTTMgMjBoMThNNSAyMHYtNmg2djZNNSAxNGMwLTQgMy03IDctN00xMiA3bDQtMlwiLz48L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPk1vdyB0aGUgYmFjayBsYXduPHNwYW4gY2xhc3M9XCJzdWJcIj5hdXRvbm9tb3VzIG1vd2VyIMK3IH4wLjQgYWNyZTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0YXNrLWJ0blwiIGRhdGEtdGFzaz1cInBhdHJvbFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljXCI+PHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+PHBhdGggZD1cIk0xMiAybDggNHY2YzAgNS0zLjUgOC04IDEwLTQuNS0yLTgtNS04LTEwVjZ6XCIvPjwvc3ZnPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+RXZlbmluZyBzZWN1cml0eSBwYXRyb2w8c3BhbiBjbGFzcz1cInN1YlwiPnBlcmltZXRlciBsb29wIMK3IGNoZWNrcyBjYW1lcmFzPC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRhc2stYnRuXCIgZGF0YS10YXNrPVwiZGVsaXZlclwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljXCI+PHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCI+PHBhdGggZD1cIk0zIDdsOS00IDkgNHYxMGwtOSA0LTktNHpcIi8+PHBhdGggZD1cIk0zIDdsOSA0IDktNE0xMiAxMXYxMFwiLz48L3N2Zz48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPkNhcnJ5IHRoZSBwYWNrYWdlIHRvIHRoZSBkb29yPHNwYW4gY2xhc3M9XCJzdWJcIj5kZWxpdmVyeSBib3QgwrcgMTQgbGIgcGFyY2VsPC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxvZ1wiIGlkPVwibG9nXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9nLWVtcHR5XCI+UGljayBhIGpvYi4gVGhlIG1vZGVsIHdpbGwgbG9hZCB0aGUgcHJvcGVydHksIHByZWRpY3QgYSByb3V0ZSwgYW5kIG5hcnJhdGUgZXZlcnkgZGVjaXNpb24gaGVyZS48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RlbGJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1cIj48ZGl2IGNsYXNzPVwibXZcIiBpZD1cIm1PYmpcIj4zNzwvZGl2PjxkaXYgY2xhc3M9XCJtbFwiPm9iamVjdHMgbWFwcGVkPC9kaXY+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibVwiPjxkaXYgY2xhc3M9XCJtdlwiIGlkPVwibVVwXCI+MTQ8L2Rpdj48ZGl2IGNsYXNzPVwibWxcIj5pbnN0YWxscyBsb2dnZWQ8L2Rpdj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtXCI+PGRpdiBjbGFzcz1cIm12XCIgaWQ9XCJtSHVtYW5cIj4xPC9kaXY+PGRpdiBjbGFzcz1cIm1sXCI+aHVtYW4gaW4gbG9vcDwvZGl2PjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBodW1hbiBjaGVja3BvaW50IC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja3BvaW50XCIgaWQ9XCJjaGVja3BvaW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3AtaGVhZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3AtbW9ub1wiPk48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Atd2hvXCI+TmR1PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNwLXJvbGVcIj5odW1hbiBjaGVja3BvaW50IMK3IG9uIGNhbGw8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiY3AtcVwiIGlkPVwiY3BRXCI+VGhlIGJvdCBmb3VuZCBzb21ldGhpbmcgbm90IGluIHRoZSBtb2RlbC4gSG93IHNob3VsZCBpdCBwcm9jZWVkPzwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcC1yb3dcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNwLWJ0blwiIGlkPVwiY3BDb25maXJtXCI+Q29uZmlybSAmYW1wOyByZXN1bWU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNwLWJ0biBhbHRcIiBpZD1cImNwUmVyb3V0ZVwiPlJlcm91dGU8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNwLWF1dG9cIiBpZD1cImNwQXV0b1wiPmF1dG8tcmVzb2x2aW5nIGluIDRzPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxwIGNsYXNzPVwic3RhZ2UtY2FwXCI+XG4gICAgICAgIDxzdmcgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE1XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPjxwYXRoIGQ9XCJNMTIgMmwzIDdoN2wtNS41IDQuNUwxOCAyMWwtNi00LTYgNCAxLjUtNy41TDIgOWg3elwiLz48L3N2Zz5cbiAgICAgICAgQSBjb25jZXB0IGRlbW8uIFJlYWwgZGVwbG95bWVudHMgcnVuIHRoZSBzYW1lIGxvb3A6IG1hcCwgc2ltdWxhdGUsIGRlcGxveSwgZXNjYWxhdGUgdG8gYSBwZXJzb24gd2hlbiB0aGUgbW9kZWwgaXMgdW5zdXJlLlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cblxuPC9kaXY+XG48c2NyaXB0PlxuKGZ1bmN0aW9uKCl7XG4gIGNvbnN0IE5TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcbiAgY29uc3Qgc2NlbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2NlbmUnKTtcbiAgY29uc3Qgcm9ib3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncm9ib3QnKTtcbiAgY29uc3QgcHJlZGljdGVkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZWRpY3RlZCcpO1xuICBjb25zdCB0cmFpbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0cmFpbCcpO1xuICBjb25zdCB1bmtub3duID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Vua25vd24nKTtcbiAgY29uc3QgbG9nRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7XG4gIGNvbnN0IGNvbmZOdW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uZk51bScpO1xuICBjb25zdCBjaGVja3BvaW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoZWNrcG9pbnQnKTtcbiAgY29uc3QgY3BRID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NwUScpO1xuICBjb25zdCBjcEF1dG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3BBdXRvJyk7XG4gIGNvbnN0IGNwQ29uZmlybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjcENvbmZpcm0nKTtcbiAgY29uc3QgY3BSZXJvdXRlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NwUmVyb3V0ZScpO1xuICBjb25zdCBtSHVtYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbUh1bWFuJyk7XG4gIGNvbnN0IHRhc2tCdG5zID0gWy4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50YXNrLWJ0bicpXTtcblxuICAvLyAtLS0tIGRldmljZXMgKGJ1aWx0IGludG8gdGhlIG1vZGVsKSAtLS0tXG4gIGNvbnN0IERFVklDRVMgPSBbXG4gICAge3g6MjAwLCB5OjM5MiwgbGFiZWw6J2xvY2snfSwgICAvLyBmcm9udCBkb29yXG4gICAge3g6MTIwLCB5OjE1MCwgbGFiZWw6J21lc2gnfSwgICAvLyBsaXZpbmdcbiAgICB7eDoyODUsIHk6MzAwLCBsYWJlbDonbWVzaCd9LCAgIC8vIG9mZmljZVxuICAgIHt4OjQ3MCwgeToxMzAsIGxhYmVsOidjYW0nfSwgICAgLy8gcGF0aW8gY2FtXG4gICAge3g6NTYwLCB5OjQ3MCwgbGFiZWw6J2NhbSd9ICAgICAvLyB5YXJkIGNhbVxuICBdO1xuICBjb25zdCBkZXZMYXllciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXZpY2VzJyk7XG4gIERFVklDRVMuZm9yRWFjaCgoZCxpKT0+e1xuICAgIGNvbnN0IHJpbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsJ2NpcmNsZScpO1xuICAgIHJpbmcuc2V0QXR0cmlidXRlKCdjbGFzcycsJ2Rldi1yaW5nJyk7IHJpbmcuc2V0QXR0cmlidXRlKCdjeCcsZC54KTsgcmluZy5zZXRBdHRyaWJ1dGUoJ2N5JyxkLnkpOyByaW5nLnNldEF0dHJpYnV0ZSgncicsJzcnKTtcbiAgICBjb25zdCBkb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoTlMsJ2NpcmNsZScpO1xuICAgIGRvdC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywnZGV2Jyk7IGRvdC5zZXRBdHRyaWJ1dGUoJ2N4JyxkLngpOyBkb3Quc2V0QXR0cmlidXRlKCdjeScsZC55KTsgZG90LnNldEF0dHJpYnV0ZSgncicsJzMnKTtcbiAgICBjb25zdCBwdWxzZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhOUywnY2lyY2xlJyk7XG4gICAgcHVsc2Uuc2V0QXR0cmlidXRlKCdjbGFzcycsJ2Rldi1wdWxzZScpOyBwdWxzZS5zZXRBdHRyaWJ1dGUoJ2N4JyxkLngpOyBwdWxzZS5zZXRBdHRyaWJ1dGUoJ2N5JyxkLnkpOyBwdWxzZS5zZXRBdHRyaWJ1dGUoJ3InLCc3Jyk7XG4gICAgcHVsc2UuaW5uZXJIVE1MID0gYDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9XCJyXCIgdmFsdWVzPVwiNzsxMzs3XCIgZHVyPVwiM3NcIiBiZWdpbj1cIiR7aSowLjR9c1wiIHJlcGVhdENvdW50PVwiaW5kZWZpbml0ZVwiLz48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPVwib3BhY2l0eVwiIHZhbHVlcz1cIi41OzA7LjVcIiBkdXI9XCIzc1wiIGJlZ2luPVwiJHtpKjAuNH1zXCIgcmVwZWF0Q291bnQ9XCJpbmRlZmluaXRlXCIvPmA7XG4gICAgZGV2TGF5ZXIuYXBwZW5kKHJpbmcsIHB1bHNlLCBkb3QpO1xuICB9KTtcblxuICAvLyAtLS0tIHRhc2sgZGVmaW5pdGlvbnMgLS0tLVxuICAvLyBwYXRoOiBTVkcgcGF0aCBzdHJpbmcuIHVua25vd25BdDogZnJhY3Rpb24gYWxvbmcgcGF0aCB3aGVyZSBib3QgbWVldHMgdGhlIHVua25vd24gb2JqZWN0LlxuICBmdW5jdGlvbiBzZXJwZW50aW5lKHgwLHgxLHlzKXtcbiAgICBsZXQgZCA9IGBNICR7NDEyfSAkezQyNH1gOyAvLyBzdGFydCBhdCBkb2NrXG4gICAgZCArPSBgIEwgJHt4MH0gJHt5c1swXX1gO1xuICAgIGxldCBsZWZ0ID0gdHJ1ZTtcbiAgICB5cy5mb3JFYWNoKCh5KT0+e1xuICAgICAgZCArPSBgIEwgJHtsZWZ0P3gxOngwfSAke3l9YDtcbiAgICAgIC8vIHN0ZXAgZG93biBoYW5kbGVkIGJ5IG5leHQgeVxuICAgICAgbGVmdCA9ICFsZWZ0O1xuICAgIH0pO1xuICAgIHJldHVybiBkO1xuICB9XG5cbiAgY29uc3QgVEFTS1MgPSB7XG4gICAgbW93OiB7XG4gICAgICBsYWJlbDogJ01vdyB0aGUgYmFjayBsYXduJyxcbiAgICAgIC8vIGJvdXN0cm9waGVkb24gYWNyb3NzIHRoZSBvcGVuIGJhY2sgbGF3biAocmlnaHQgb2YgaG91c2UsIGNsZWFyIG9mIG9hay9iZWQvcGF0aW8pXG4gICAgICBkOiAnTSA0MTIgNDI0IEwgNDEwIDQxMCBMIDY2MCA0MTAgTCA2NjAgMzYwIEwgNDEwIDM2MCBMIDQxMCAzMTAgTCA2NjAgMzEwIEwgNjYwIDI2MCBMIDQxMCAyNjAgTCA0MTAgMjMwIEwgNjYwIDIzMCBMIDQxMiA0MjQnLFxuICAgICAgZHVyOiAxMjAwMCxcbiAgICAgIHVua25vd25BdDogMC40NixcbiAgICAgIGNvbmY6IDk1LCBsb3c6IDM4LFxuICAgICAgbG9nczogW1xuICAgICAgICB7cDowLjAwLCB0OicwMDowMCcsIHRleHQ6J0xvYWRpbmcgc3BhdGlhbCBtb2RlbCDCtyAxMjQwIEF1cm9yYSBBdmUnfSxcbiAgICAgICAge3A6MC4wNCwgdDonMDA6MDEnLCB0ZXh0OidLbm93biBvYmplY3RzOiBvYWsgKE5FKSwgZmxvd2VyIGJlZCAoUyksIHBhdGlvIHNldCd9LFxuICAgICAgICB7cDowLjA4LCB0OicwMDowMicsIHRleHQ6J01vd2FibGUgcmVnaW9uOiAwLjQxIGFjcmUgwrcgNiBwYXNzZXMgcGxhbm5lZCd9LFxuICAgICAgICB7cDowLjEyLCB0OicwMDowMycsIHRleHQ6J1ByZWRpY3Rpbmcgcm91dGUuLi4gOTUlIGNvbmZpZGVuY2UnLCBjbHM6Jyd9LFxuICAgICAgICB7cDowLjIwLCB0OicwMDowNScsIHRleHQ6J1Bhc3MgMSBvZiA2IMK3IGN1dHRpbmcnfSxcbiAgICAgICAge3A6MC4zNCwgdDonMDA6MDgnLCB0ZXh0OidQYXNzIDIgb2YgNiDCtyBjbGVhcid9LFxuICAgICAgICB7cDowLjQ1LCB0OicwMDoxMScsIHRleHQ6J05ldyBvYmplY3Qgb24gcGF0aCDCtyBub3QgaW4gbW9kZWwnLCBjbHM6J3dhcm4nfSxcbiAgICAgICAge3A6MC40NTUsIHQ6JzAwOjExJywgdGV4dDonQ29uZmlkZW5jZSBkcm9wcGVkIHRvIDM4JScsIGNsczond2Fybid9LFxuICAgICAgICB7cDowLjQ2LCB0OicwMDoxMScsIHRleHQ6J0hvbGRpbmcuIEVzY2FsYXRpbmcgdG8gaHVtYW4gKE5kdSknLCBjbHM6J2h1bWFuJ30sXG4gICAgICAgIHtwOjAuNTAsIHQ6J1JFU1VNRScsIHRleHQ6J0h1bWFuIGNvbmZpcm1lZDogZ2FyZGVuIGhvc2UsIHNhZmUgdG8gc2tpcCcsIGNsczonb2snfSxcbiAgICAgICAge3A6MC41MiwgdDonMDA6MTQnLCB0ZXh0OidPYmplY3QgYWRkZWQgdG8gbW9kZWwgwrcgcm91dGluZyBhcm91bmQnLCBjbHM6Jyd9LFxuICAgICAgICB7cDowLjcwLCB0OicwMDoxOCcsIHRleHQ6J1Bhc3MgNCBvZiA2IMK3IGNsZWFyJ30sXG4gICAgICAgIHtwOjAuOTYsIHQ6JzAwOjI0JywgdGV4dDonVGFzayBjb21wbGV0ZSDCtyBtb2RlbCB1cGRhdGVkICgrMSBvYmplY3QpJywgY2xzOidvayd9XG4gICAgICBdLFxuICAgICAgY3BROiAnQSAxNi1pbmNoIG9iamVjdCBpcyBibG9ja2luZyBwYXNzIDMsIH4xMiBpbmNoZXMgb2ZmIHRoZSBwbGFubmVkIGxpbmUuIFRoZSBtb2RlbCBoYXMgbmV2ZXIgc2VlbiBpdCBoZXJlLiBNb3cgYXJvdW5kIGl0IG9yIHN0b3A/J1xuICAgIH0sXG4gICAgcGF0cm9sOiB7XG4gICAgICBsYWJlbDogJ0V2ZW5pbmcgc2VjdXJpdHkgcGF0cm9sJyxcbiAgICAgIC8vIHBlcmltZXRlciBsb29wIGp1c3Qgb3V0c2lkZSB0aGUgaG91c2UsIHN3ZWVwaW5nIHRoZSB5YXJkLCBwYXVzaW5nIG5lYXIgZ2F0ZVxuICAgICAgZDogJ00gNDEyIDQyNCBMIDQxMiA1NiBMIDYwIDU2IEwgNDQgNDAwIEwgMTUwIDQ3MCBMIDQxMiA0NzAgTCA2NjAgNDcwIEwgNjg4IDMzMCBMIDY2MCAyMDAgTCA1NDAgOTIgTCA0MTIgNDI0JyxcbiAgICAgIGR1cjogMTMwMDAsXG4gICAgICB1bmtub3duQXQ6IDAuNzQsXG4gICAgICBjb25mOiA5MywgbG93OiAzMSxcbiAgICAgIGxvZ3M6IFtcbiAgICAgICAge3A6MC4wMCwgdDonMDA6MDAnLCB0ZXh0OidMb2FkaW5nIHNwYXRpYWwgbW9kZWwgwrcgbmlnaHQgcHJvZmlsZSd9LFxuICAgICAgICB7cDowLjA1LCB0OicwMDowMScsIHRleHQ6J0NhbWVyYXMgb25saW5lOiAyIMK3IG1lc2ggbm9kZXM6IDIgwrcgbG9jazogYXJtZWQnfSxcbiAgICAgICAge3A6MC4xMCwgdDonMDA6MDInLCB0ZXh0OidQcmVkaWN0aW5nIHBlcmltZXRlciBsb29wLi4uIDkzJSBjb25maWRlbmNlJ30sXG4gICAgICAgIHtwOjAuMzAsIHQ6JzAwOjA1JywgdGV4dDonTm9ydGggd2FsbCBjbGVhciDCtyBjcm9zcy1jaGVja2luZyBwYXRpbyBjYW0nfSxcbiAgICAgICAge3A6MC41NSwgdDonMDA6MDknLCB0ZXh0OidEcml2ZXdheSBjbGVhciDCtyBsb2NrIGNvbmZpcm1lZCBhcm1lZCd9LFxuICAgICAgICB7cDowLjcyLCB0OicwMDoxMycsIHRleHQ6J01vdGlvbiBhdCBzaWRlIGdhdGUgwrcgbm90IG1hdGNoZWQgdG8gbW9kZWwnLCBjbHM6J3dhcm4nfSxcbiAgICAgICAge3A6MC43MywgdDonMDA6MTMnLCB0ZXh0OidDb25maWRlbmNlIGRyb3BwZWQgdG8gMzElJywgY2xzOid3YXJuJ30sXG4gICAgICAgIHtwOjAuNzQsIHQ6JzAwOjEzJywgdGV4dDonSG9sZGluZyBhdCBnYXRlLiBFc2NhbGF0aW5nIHRvIGh1bWFuIChOZHUpJywgY2xzOidodW1hbid9LFxuICAgICAgICB7cDowLjc4LCB0OidSRVNVTUUnLCB0ZXh0OidIdW1hbiBjb25maXJtZWQ6IG5laWdoYm9yXFwncyBjYXQuIFN0YW5kIGRvd24nLCBjbHM6J29rJ30sXG4gICAgICAgIHtwOjAuODIsIHQ6JzAwOjE2JywgdGV4dDonUmVzdW1pbmcgbG9vcCDCtyBsb2dnZWQgZm9yIHJldmlldycsIGNsczonJ30sXG4gICAgICAgIHtwOjAuOTcsIHQ6JzAwOjIxJywgdGV4dDonUGF0cm9sIGNvbXBsZXRlIMK3IGFsbCB6b25lcyBjbGVhcicsIGNsczonb2snfVxuICAgICAgXSxcbiAgICAgIGNwUTogJ0hlYXQgc2lnbmF0dXJlIGF0IHRoZSBzaWRlIGdhdGUsIG1vdmluZywgdG9vIHNtYWxsIHRvIGNsYXNzaWZ5LiBDb3VsZCBiZSBhbiBhbmltYWwsIGNvdWxkIGJlIGEgcGVyc29uIGNyb3VjaGluZy4gV2FrZSB5b3UsIG9yIGtlZXAgd2F0Y2hpbmc/J1xuICAgIH0sXG4gICAgZGVsaXZlcjoge1xuICAgICAgbGFiZWw6ICdDYXJyeSB0aGUgcGFja2FnZSB0byB0aGUgZG9vcicsXG4gICAgICBkOiAnTSA0MTIgNDI0IEwgMzAwIDQ3MCBMIDE5NSA0NzAgTCAxOTUgNDA4IEwgMjEyIDQwMCBMIDIxNCA0MDInLFxuICAgICAgZHVyOiA4MDAwLFxuICAgICAgdW5rbm93bkF0OiAwLjkzLFxuICAgICAgY29uZjogOTYsIGxvdzogNDQsXG4gICAgICBsb2dzOiBbXG4gICAgICAgIHtwOjAuMDAsIHQ6JzAwOjAwJywgdGV4dDonTG9hZGluZyBzcGF0aWFsIG1vZGVsIMK3IGFwcHJvYWNoOiBmcm9udCBkb29yJ30sXG4gICAgICAgIHtwOjAuMDgsIHQ6JzAwOjAxJywgdGV4dDonUGFyY2VsOiAxNCBsYiDCtyAyMiDDlyAxNiDDlyAxMCBpbid9LFxuICAgICAgICB7cDowLjE2LCB0OicwMDowMicsIHRleHQ6J1ByZWRpY3Rpbmcgcm91dGUgdG8gZG9vci4uLiA5NiUgY29uZmlkZW5jZSd9LFxuICAgICAgICB7cDowLjQ1LCB0OicwMDowNCcsIHRleHQ6J0Nyb3NzaW5nIGRyaXZld2F5IMK3IHBhdGggY2xlYXInfSxcbiAgICAgICAge3A6MC43MiwgdDonMDA6MDUnLCB0ZXh0OidPbiB0aGUgZnJvbnQgd2FsayDCtyBhcHByb2FjaGluZyB0aGUgc3RlcCd9LFxuICAgICAgICB7cDowLjkxLCB0OicwMDowNycsIHRleHQ6J0Rvb3IgbWF0IG9jY3VwaWVkIMK3IG9iamVjdCBub3QgaW4gbW9kZWwnLCBjbHM6J3dhcm4nfSxcbiAgICAgICAge3A6MC45MiwgdDonMDA6MDcnLCB0ZXh0OidDb25maWRlbmNlIGRyb3BwZWQgdG8gNDQlJywgY2xzOid3YXJuJ30sXG4gICAgICAgIHtwOjAuOTMsIHQ6JzAwOjA3JywgdGV4dDonSG9sZGluZyBhdCBzdGVwLiBFc2NhbGF0aW5nIHRvIGh1bWFuIChOZHUpJywgY2xzOidodW1hbid9LFxuICAgICAgICB7cDowLjk2LCB0OidSRVNVTUUnLCB0ZXh0OidIdW1hbiBjb25maXJtZWQ6IGV4aXN0aW5nIHBhcmNlbC4gU2V0IGJlc2lkZSBpdCcsIGNsczonb2snfSxcbiAgICAgICAge3A6MC45OSwgdDonMDA6MDknLCB0ZXh0OidEZWxpdmVyZWQgwrcgcGhvdG8gc2VudCB0byBob21lb3duZXInLCBjbHM6J29rJ31cbiAgICAgIF0sXG4gICAgICBjcFE6ICdTb21ldGhpbmcgaXMgYWxyZWFkeSBvbiB0aGUgZG9vcm1hdCB3aGVyZSB0aGUgZHJvcCBwb2ludCBpcy4gU3RhY2sgb24gdG9wLCBvciBwbGFjZSBpdCB0byB0aGUgc2lkZT8nXG4gICAgfVxuICB9O1xuXG4gIC8vIC0tLS0gYW5pbWF0aW9uIHN0YXRlIC0tLS1cbiAgbGV0IHJhZiA9IG51bGwsIGN1cnJlbnQgPSBudWxsLCBwYXVzZWQgPSBmYWxzZSwgcmVzb2x2ZWQgPSBmYWxzZTtcbiAgbGV0IGVsYXBzZWQgPSAwLCBsYXN0VHMgPSAwLCBhdXRvVGltZXIgPSBudWxsLCBhdXRvTGVmdCA9IDAsIGF1dG9JbnRlcnZhbCA9IG51bGw7XG4gIGxldCBlbWl0dGVkID0gbmV3IFNldCgpO1xuXG4gIGZ1bmN0aW9uIGNsZWFyUnVuKCl7XG4gICAgaWYgKHJhZikgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmKTsgcmFmID0gbnVsbDtcbiAgICBpZiAoYXV0b1RpbWVyKSBjbGVhclRpbWVvdXQoYXV0b1RpbWVyKTtcbiAgICBpZiAoYXV0b0ludGVydmFsKSBjbGVhckludGVydmFsKGF1dG9JbnRlcnZhbCk7XG4gICAgcGF1c2VkID0gZmFsc2U7IHJlc29sdmVkID0gZmFsc2U7IGVsYXBzZWQgPSAwOyBsYXN0VHMgPSAwOyBlbWl0dGVkID0gbmV3IFNldCgpO1xuICAgIHVua25vd24uY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpO1xuICAgIGNoZWNrcG9pbnQuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpO1xuICAgIHJvYm90LnN0eWxlLm9wYWNpdHkgPSAnMCc7XG4gICAgcHJlZGljdGVkLnNldEF0dHJpYnV0ZSgnZCcsJycpO1xuICAgIHRyYWlsLnNldEF0dHJpYnV0ZSgnZCcsJycpO1xuICB9XG5cbiAgZnVuY3Rpb24gc2V0Q29uZih2LCBsb3cpe1xuICAgIGNvbmZOdW0udGV4dENvbnRlbnQgPSBNYXRoLnJvdW5kKHYpICsgJyUnO1xuICAgIGNvbmZOdW0uY2xhc3NMaXN0LnRvZ2dsZSgnbG93JywgISFsb3cpO1xuICB9XG5cbiAgZnVuY3Rpb24gYWRkTG9nKGxpbmUpe1xuICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGRpdi5jbGFzc05hbWUgPSAnbG9nLWxpbmUnICsgKGxpbmUuY2xzID8gJyAnICsgbGluZS5jbHMgOiAnJyk7XG4gICAgZGl2LmlubmVySFRNTCA9IGA8c3BhbiBjbGFzcz1cInRcIj4ke2xpbmUudH08L3NwYW4+PHNwYW4+JHtsaW5lLnRleHR9PC9zcGFuPmA7XG4gICAgbG9nRWwuYXBwZW5kKGRpdik7XG4gICAgbG9nRWwuc2Nyb2xsVG9wID0gbG9nRWwuc2Nyb2xsSGVpZ2h0O1xuICB9XG5cbiAgZnVuY3Rpb24gc3RhcnQodGFza0tleSl7XG4gICAgY2xlYXJSdW4oKTtcbiAgICBjdXJyZW50ID0gVEFTS1NbdGFza0tleV07XG4gICAgbG9nRWwuaW5uZXJIVE1MID0gJyc7XG4gICAgdGFza0J0bnMuZm9yRWFjaChiID0+IGIuY2xhc3NMaXN0LnRvZ2dsZSgnaXMtYWN0aXZlJywgYi5kYXRhc2V0LnRhc2sgPT09IHRhc2tLZXkpKTtcbiAgICBzZXRDb25mKGN1cnJlbnQuY29uZiwgZmFsc2UpO1xuXG4gICAgLy8gcGxhY2UgdW5rbm93biBvYmplY3RcbiAgICAvLyBwbGFubmluZyBwaGFzZTogZHJhdyBwcmVkaWN0ZWQgcGF0aFxuICAgIHByZWRpY3RlZC5zZXRBdHRyaWJ1dGUoJ2QnLCBjdXJyZW50LmQpO1xuICAgIGNvbnN0IHRvdGFsID0gcHJlZGljdGVkLmdldFRvdGFsTGVuZ3RoKCk7XG4gICAgLy8gcG9zaXRpb24gdGhlIHVua25vd24gb2JqZWN0IGV4YWN0bHkgd2hlcmUgdGhlIHJvYm90IHdpbGwgcGF1c2VcbiAgICBjb25zdCB1cHQgPSBwcmVkaWN0ZWQuZ2V0UG9pbnRBdExlbmd0aCh0b3RhbCAqIGN1cnJlbnQudW5rbm93bkF0KTtcbiAgICB1bmtub3duLnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke3VwdC54LTIzfSwgJHt1cHQueS0xN30pYCk7XG4gICAgcHJlZGljdGVkLnN0eWxlLnRyYW5zaXRpb24gPSAnbm9uZSc7XG4gICAgcHJlZGljdGVkLnN0eWxlLnN0cm9rZURhc2hhcnJheSA9IHRvdGFsO1xuICAgIHByZWRpY3RlZC5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gdG90YWw7XG4gICAgLy8gZm9yY2UgcmVmbG93XG4gICAgcHJlZGljdGVkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHByZWRpY3RlZC5zdHlsZS50cmFuc2l0aW9uID0gJ3N0cm9rZS1kYXNob2Zmc2V0IDEuMXMgZWFzZSc7XG4gICAgcHJlZGljdGVkLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSAnMCc7XG5cbiAgICBhZGRMb2coY3VycmVudC5sb2dzWzBdKTsgZW1pdHRlZC5hZGQoMCk7XG4gICAgLy8gYmVnaW4gcnVubmluZyBhZnRlciB0aGUgcGxhbiBpcyBkcmF3blxuICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgIGlmIChjdXJyZW50ICE9PSBUQVNLU1t0YXNrS2V5XSkgcmV0dXJuO1xuICAgICAgdHJhaWwuc2V0QXR0cmlidXRlKCdkJywgY3VycmVudC5kKTtcbiAgICAgIC8vIGRhc2hlZCBwcmVkaWN0ZWQgZmFkZXMgdG8gYSBmYWludCBndWlkZVxuICAgICAgcHJlZGljdGVkLnN0eWxlLnRyYW5zaXRpb24gPSAnc3Ryb2tlLWRhc2hvZmZzZXQgMS4xcyBlYXNlLCBvcGFjaXR5IC42cyc7XG4gICAgICBwcmVkaWN0ZWQuc3R5bGUub3BhY2l0eSA9ICcuMzUnO1xuICAgICAgcHJlZGljdGVkLnN0eWxlLnN0cm9rZURhc2hhcnJheSA9ICc0IDgnO1xuICAgICAgcm9ib3Quc3R5bGUub3BhY2l0eSA9ICcxJztcbiAgICAgIGxhc3RUcyA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgICAgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApO1xuICAgIH0sIDExNTApO1xuICB9XG5cbiAgZnVuY3Rpb24gbG9vcCh0cyl7XG4gICAgaWYgKCFjdXJyZW50KSByZXR1cm47XG4gICAgY29uc3QgZHQgPSB0cyAtIGxhc3RUczsgbGFzdFRzID0gdHM7XG4gICAgaWYgKCFwYXVzZWQpIGVsYXBzZWQgKz0gZHQ7XG4gICAgbGV0IHAgPSBNYXRoLm1pbihlbGFwc2VkIC8gY3VycmVudC5kdXIsIDEpO1xuXG4gICAgLy8gcGF1c2UgZXhhY3RseSBhdCB0aGUgdW5rbm93biBiZWF0IHVudGlsIHJlc29sdmVkXG4gICAgaWYgKCFyZXNvbHZlZCAmJiBwID49IGN1cnJlbnQudW5rbm93bkF0KSB7XG4gICAgICBwID0gY3VycmVudC51bmtub3duQXQ7XG4gICAgICBpZiAoIXBhdXNlZCkgdHJpZ2dlckNoZWNrcG9pbnQoKTtcbiAgICB9XG5cbiAgICAvLyBwb3NpdGlvbiByb2JvdCArIHJldmVhbCB0cmFpbFxuICAgIGNvbnN0IHRvdGFsID0gdHJhaWwuZ2V0VG90YWxMZW5ndGgoKTtcbiAgICBjb25zdCBsZW4gPSB0b3RhbCAqIHA7XG4gICAgY29uc3QgcHQgPSB0cmFpbC5nZXRQb2ludEF0TGVuZ3RoKGxlbik7XG4gICAgY29uc3QgYWhlYWQgPSB0cmFpbC5nZXRQb2ludEF0TGVuZ3RoKE1hdGgubWluKGxlbiArIDQsIHRvdGFsKSk7XG4gICAgY29uc3QgYW5nID0gTWF0aC5hdGFuMihhaGVhZC55IC0gcHQueSwgYWhlYWQueCAtIHB0LngpICogMTgwIC8gTWF0aC5QSTtcbiAgICByb2JvdC5zZXRBdHRyaWJ1dGUoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHtwdC54fSwgJHtwdC55fSkgcm90YXRlKCR7YW5nfSlgKTtcbiAgICB0cmFpbC5zdHlsZS5zdHJva2VEYXNoYXJyYXkgPSB0b3RhbDtcbiAgICB0cmFpbC5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gdG90YWwgLSBsZW47XG5cbiAgICAvLyBlbWl0IGxvZ3NcbiAgICBjdXJyZW50LmxvZ3MuZm9yRWFjaCgobGluZSwgaSk9PntcbiAgICAgIGlmICghZW1pdHRlZC5oYXMoaSkgJiYgcCA+PSBsaW5lLnAgJiYgbGluZS50ICE9PSAnUkVTVU1FJykgeyBhZGRMb2cobGluZSk7IGVtaXR0ZWQuYWRkKGkpOyB9XG4gICAgfSk7XG5cbiAgICAvLyBjb25maWRlbmNlIGRpcCBhcHByb2FjaGluZyB0aGUgYmVhdFxuICAgIGlmICghcmVzb2x2ZWQgJiYgcCA+PSBjdXJyZW50LnVua25vd25BdCAtIDAuMDYpIHtcbiAgICAgIGNvbnN0IGRpcFQgPSBNYXRoLm1pbigocCAtIChjdXJyZW50LnVua25vd25BdCAtIDAuMDYpKSAvIDAuMDYsIDEpO1xuICAgICAgc2V0Q29uZihjdXJyZW50LmNvbmYgLSBkaXBUICogKGN1cnJlbnQuY29uZiAtIGN1cnJlbnQubG93KSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHAgPj0gMSkgeyBmaW5pc2goKTsgcmV0dXJuOyB9XG4gICAgcmFmID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGxvb3ApO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJpZ2dlckNoZWNrcG9pbnQoKXtcbiAgICBwYXVzZWQgPSB0cnVlO1xuICAgIHVua25vd24uY2xhc3NMaXN0LmFkZCgnc2hvdycpO1xuICAgIGNwUS50ZXh0Q29udGVudCA9IGN1cnJlbnQuY3BRO1xuICAgIHNldENvbmYoY3VycmVudC5sb3csIHRydWUpO1xuICAgIHNldFRpbWVvdXQoKCk9PiBjaGVja3BvaW50LmNsYXNzTGlzdC5hZGQoJ3Nob3cnKSwgMjUwKTtcbiAgICAvLyBhdXRvLXJlc29sdmUgY291bnRkb3duXG4gICAgYXV0b0xlZnQgPSA0O1xuICAgIGNwQXV0by50ZXh0Q29udGVudCA9IGBhdXRvLXJlc29sdmluZyBpbiAke2F1dG9MZWZ0fXNgO1xuICAgIGNwQXV0by5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICBhdXRvSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKT0+e1xuICAgICAgYXV0b0xlZnQtLTtcbiAgICAgIGNwQXV0by50ZXh0Q29udGVudCA9IGF1dG9MZWZ0ID4gMCA/IGBhdXRvLXJlc29sdmluZyBpbiAke2F1dG9MZWZ0fXNgIDogJ3Jlc29sdmluZy4uLic7XG4gICAgICBpZiAoYXV0b0xlZnQgPD0gMCkgY2xlYXJJbnRlcnZhbChhdXRvSW50ZXJ2YWwpO1xuICAgIH0sIDEwMDApO1xuICAgIGF1dG9UaW1lciA9IHNldFRpbWVvdXQoKCk9PiByZXNvbHZlQ2hlY2twb2ludChmYWxzZSksIDQwMDApO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzb2x2ZUNoZWNrcG9pbnQocmVyb3V0ZWQpe1xuICAgIGlmIChyZXNvbHZlZCkgcmV0dXJuO1xuICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICBpZiAoYXV0b1RpbWVyKSBjbGVhclRpbWVvdXQoYXV0b1RpbWVyKTtcbiAgICBpZiAoYXV0b0ludGVydmFsKSBjbGVhckludGVydmFsKGF1dG9JbnRlcnZhbCk7XG4gICAgY2hlY2twb2ludC5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7XG4gICAgLy8gYnVtcCBodW1hbi1pbi1sb29wIGNvdW50ZXJcbiAgICBtSHVtYW4udGV4dENvbnRlbnQgPSAocGFyc2VJbnQobUh1bWFuLnRleHRDb250ZW50LDEwKSArIDEpO1xuICAgIC8vIGVtaXQgdGhlIFJFU1VNRSBsb2cgbGluZVxuICAgIGNvbnN0IHJlc3VtZUxpbmUgPSBjdXJyZW50LmxvZ3MuZmluZChsID0+IGwudCA9PT0gJ1JFU1VNRScpO1xuICAgIGlmIChyZXN1bWVMaW5lKSB7XG4gICAgICBpZiAocmVyb3V0ZWQpIGFkZExvZyh7dDonUkVTVU1FJywgdGV4dDonSHVtYW4gY2hvc2UgcmVyb3V0ZSDCtyBwbGFubmluZyBuZXcgbGluZScsIGNsczonaHVtYW4nfSk7XG4gICAgICBhZGRMb2cocmVzdW1lTGluZSk7XG4gICAgfVxuICAgIC8vIHJlY292ZXIgY29uZmlkZW5jZVxuICAgIGxldCBjID0gY3VycmVudC5sb3c7IGNvbnN0IHRhcmdldCA9IGN1cnJlbnQuY29uZiAtIDQ7XG4gICAgY29uc3QgcmVjID0gc2V0SW50ZXJ2YWwoKCk9PntcbiAgICAgIGMgKz0gKHRhcmdldCAtIGMpICogMC4yNTtcbiAgICAgIHNldENvbmYoYywgYyA8IDcwKTtcbiAgICAgIGlmICh0YXJnZXQgLSBjIDwgMSkgeyBzZXRDb25mKHRhcmdldCwgZmFsc2UpOyBjbGVhckludGVydmFsKHJlYyk7IH1cbiAgICB9LCA0MCk7XG4gICAgc2V0VGltZW91dCgoKT0+eyB1bmtub3duLmNsYXNzTGlzdC5yZW1vdmUoJ3Nob3cnKTsgfSwgNjAwKTtcbiAgICAvLyByZXN1bWUgbW90aW9uXG4gICAgcGF1c2VkID0gZmFsc2U7IGxhc3RUcyA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGlmICghcmFmKSByYWYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUobG9vcCk7XG4gIH1cblxuICBmdW5jdGlvbiBmaW5pc2goKXtcbiAgICBpZiAocmFmKSBjYW5jZWxBbmltYXRpb25GcmFtZShyYWYpOyByYWYgPSBudWxsO1xuICAgIHJvYm90LnF1ZXJ5U2VsZWN0b3IoJy5yb2JvdC1oYWxvJykuc2V0QXR0cmlidXRlKCdzdHJva2UnLCcjMzZDMjhCJyk7XG4gICAgc2V0Q29uZihjdXJyZW50LmNvbmYsIGZhbHNlKTtcbiAgfVxuXG4gIGNwQ29uZmlybS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpPT4gcmVzb2x2ZUNoZWNrcG9pbnQoZmFsc2UpKTtcbiAgY3BSZXJvdXRlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCk9PiByZXNvbHZlQ2hlY2twb2ludCh0cnVlKSk7XG4gIHRhc2tCdG5zLmZvckVhY2goYiA9PiBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCk9PiBzdGFydChiLmRhdGFzZXQudGFzaykpKTtcblxuICAvLyAtLS0tIGVtYmVkIGJyaWRnZTogcmVwb3J0IGhlaWdodCArIGF1dG8tcGxheSB3aGVuIHBhcmVudCBzY3JvbGxzIGl0IGludG8gdmlldyAtLS0tXG4gIGZ1bmN0aW9uIHJlcG9ydEhlaWdodCgpeyB0cnkgeyBwYXJlbnQucG9zdE1lc3NhZ2UoeyB3bUhlaWdodDogZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQgfSwgJyonKTsgfSBjYXRjaChlKXt9IH1cbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCByZXBvcnRIZWlnaHQpO1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVwb3J0SGVpZ2h0KTtcbiAgc2V0SW50ZXJ2YWwocmVwb3J0SGVpZ2h0LCAxNTAwKTtcbiAgbGV0IGF1dG9TdGFydGVkID0gZmFsc2U7XG4gIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKGUpPT57XG4gICAgaWYgKGUuZGF0YSAmJiBlLmRhdGEud21QbGF5ICYmICFhdXRvU3RhcnRlZCkgeyBhdXRvU3RhcnRlZCA9IHRydWU7IHN0YXJ0KCdtb3cnKTsgfVxuICB9KTtcbn0pKCk7XG48L3NjcmlwdD5cblxuPC9ib2R5PlxuPC9odG1sPlxuIn0=
Leave a Reply