LyoNCiAgIElNUE9SVEFOVDogSWYgeW91J3JlIGVkaXRpbmcgdGhpcyBmaWxlIGluIHRoZSBvdXRwdXQgZGlyZWN0b3J5IG9mIG9uZSBvZg0KICAgeW91ciBwcm9qZWN0cywgeW91ciBjaGFuZ2VzIHdpbGwgYmUgb3ZlcndyaXR0ZW4gdGhlIG5leHQgdGltZSB5b3UgcnVuDQogICBOYXR1cmFsIERvY3MuICBJbnN0ZWFkLCBjb3B5IHRoaXMgZmlsZSB0byB5b3VyIHByb2plY3QgZGlyZWN0b3J5LCBtYWtlIHlvdXINCiAgIGNoYW5nZXMsIGFuZCB5b3UgY2FuIHVzZSBpdCB3aXRoIC1zLiAgRXZlbiBiZXR0ZXIgd291bGQgYmUgdG8gbWFrZSBhIENTUw0KICAgZmlsZSBpbiB5b3VyIHByb2plY3QgZGlyZWN0b3J5IHdpdGggb25seSB5b3VyIGNoYW5nZXMsIHdoaWNoIHlvdSBjYW4gdGhlbg0KICAgdXNlIHdpdGggLXMgW29yaWdpbmFsIHN0eWxlXSBbeW91ciBjaGFuZ2VzXS4NCg0KICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHlvdSdyZSBlZGl0aW5nIHRoaXMgZmlsZSBpbiB0aGUgTmF0dXJhbCBEb2NzIHN0eWxlcw0KICAgZGlyZWN0b3J5LCB0aGUgY2hhbmdlcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYXBwbGllZCB0byBhbGwgeW91ciBwcm9qZWN0cw0KICAgdGhhdCB1c2UgdGhpcyBzdHlsZSB0aGUgbmV4dCB0aW1lIE5hdHVyYWwgRG9jcyBpcyBydW4gb24gdGhlbS4NCg0KICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgTmF0dXJhbCBEb2NzLCB3aGljaCBpcyBDb3B5cmlnaHQgqSAyMDAzLTIwMTAgR3JlZyBWYWx1cmUuDQogICBOYXR1cmFsIERvY3MgaXMgbGljZW5zZWQgdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljDQogICBMaWNlbnNlIChBR1BMKS4gIFJlZmVyIHRvIExpY2Vuc2UudHh0IGZvciB0aGUgY29tcGxldGUgZGV0YWlscy4NCg0KICAgVGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCB3aXRoIGRvY3VtZW50YXRpb24gZmlsZXMgZ2VuZXJhdGVkIGJ5IE5hdHVyYWwgRG9jcy4NCiAgIFN1Y2ggZG9jdW1lbnRhdGlvbiBpcyBub3QgY292ZXJlZCBieSBOYXR1cmFsIERvY3MnIGNvcHlyaWdodCBhbmQgbGljZW5zaW5nLA0KICAgYW5kIG1heSBoYXZlIGl0cyBvd24gY29weXJpZ2h0IGFuZCBkaXN0cmlidXRpb24gdGVybXMgYXMgZGVjaWRlZCBieSBpdHMgYXV0aG9yLg0KKi8NCg0KYm9keSB7DQogICAgZm9udDogMTBwdCBWZXJkYW5hLCBBcmlhbCwgc2Fucy1zZXJpZjsNCiAgICBjb2xvcjogIzAwMDAwMDsNCiAgICBtYXJnaW46IDA7IHBhZGRpbmc6IDA7DQogICAgfQ0KDQouQ29udGVudFBhZ2UsDQouSW5kZXhQYWdlLA0KLkZyYW1lZE1lbnVQYWdlIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRThFOEU4Ow0KICAgIH0NCi5GcmFtZWRDb250ZW50UGFnZSwNCi5GcmFtZWRJbmRleFBhZ2UsDQouRnJhbWVkU2VhcmNoUmVzdWx0c1BhZ2UsDQouUG9wdXBTZWFyY2hSZXN1bHRzUGFnZSB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsNCiAgICB9DQoNCg0KYTpsaW5rLA0KYTp2aXNpdGVkIHsgY29sb3I6ICM5MDAwMDA7IHRleHQtZGVjb3JhdGlvbjogbm9uZSB9DQphOmhvdmVyIHsgY29sb3I6ICM5MDAwMDA7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIH0NCmE6YWN0aXZlIHsgY29sb3I6ICNGRjAwMDA7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIH0NCg0KdGQgew0KICAgIHZlcnRpY2FsLWFsaWduOiB0b3AgfQ0KDQppbWcgeyBib3JkZXI6IDA7ICB9DQoNCg0KLyoNCiAgICBDb21tZW50IG91dCB0aGlzIGxpbmUgdG8gdXNlIHdlYi1zdHlsZSBwYXJhZ3JhcGhzIChibGFuayBsaW5lIGJldHdlZW4NCiAgICBwYXJhZ3JhcGhzLCBubyBpbmRlbnQpIGluc3RlYWQgb2YgcHJpbnQtc3R5bGUgcGFyYWdyYXBocyAobm8gYmxhbmsgbGluZSwNCiAgICBpbmRlbnRlZC4pDQoqLw0KcCB7DQogICAgdGV4dC1pbmRlbnQ6IDVleDsgbWFyZ2luOiAwIH0NCg0KDQovKiAgT3BlcmEgZG9lc24ndCBicmVhayB3aXRoIGp1c3Qgd2JyLCBidXQgd2lsbCBpZiB5b3UgYWRkIHRoaXMuICAqLw0KLk9wZXJhIHdicjphZnRlciB7DQoJY29udGVudDogIlwwMDIwMEIiOw0KCX0NCg0KDQovKiAgQmxvY2txdW90ZXMgYXJlIHVzZWQgYXMgY29udGFpbmVycyBmb3IgdGhpbmdzIHRoYXQgbWF5IG5lZWQgdG8gc2Nyb2xsLiAgKi8NCmJsb2NrcXVvdGUgew0KICAgIHBhZGRpbmc6IDA7DQogICAgbWFyZ2luOiAwOw0KICAgIG92ZXJmbG93OiBhdXRvOw0KICAgIH0NCg0KDQouRmlyZWZveDEgYmxvY2txdW90ZSB7DQogICAgcGFkZGluZy1ib3R0b206IC41ZW07DQogICAgfQ0KDQovKiAgVHVybiBvZmYgc2Nyb2xsaW5nIHdoZW4gcHJpbnRpbmcuICAqLw0KQG1lZGlhIHByaW50IHsNCiAgICBibG9ja3F1b3RlIHsNCiAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7DQogICAgICAgIH0NCiAgICAuSUUgYmxvY2txdW90ZSB7DQogICAgICAgIHdpZHRoOiBhdXRvOw0KICAgICAgICB9DQogICAgfQ0KDQoNCg0KI01lbnUgew0KICAgIGZvbnQtc2l6ZTogOXB0Ow0KICAgIHBhZGRpbmc6IDEwcHggMCAwIDA7DQogICAgfQ0KLkNvbnRlbnRQYWdlICNNZW51LA0KLkluZGV4UGFnZSAjTWVudSB7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIHRvcDogMDsNCiAgICBsZWZ0OiAwOw0KICAgIHdpZHRoOiAzMWV4Ow0KICAgIG92ZXJmbG93OiBoaWRkZW47DQogICAgfQ0KLkNvbnRlbnRQYWdlIC5GaXJlZm94ICNNZW51LA0KLkluZGV4UGFnZSAuRmlyZWZveCAjTWVudSB7DQogICAgd2lkdGg6IDI3ZXg7DQogICAgfQ0KDQoNCiAgICAuTVRpdGxlIHsNCiAgICAgICAgZm9udC1zaXplOiAxNnB0OyBmb250LXdlaWdodDogYm9sZDsgZm9udC12YXJpYW50OiBzbWFsbC1jYXBzOw0KICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgICAgIHBhZGRpbmc6IDVweCAxMHB4IDE1cHggMTBweDsNCiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZCAjMDAwMDAwOw0KICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4IH0NCg0KICAgIC5NU3ViVGl0bGUgew0KICAgICAgICBmb250LXNpemU6IDlwdDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7DQogICAgICAgIG1hcmdpbi10b3A6IDFleDsgbWFyZ2luLWJvdHRvbTogNXB4IH0NCg0KDQogICAgLk1FbnRyeSBhOmxpbmssDQogICAgLk1FbnRyeSBhOmhvdmVyLA0KICAgIC5NRW50cnkgYTp2aXNpdGVkIHsgY29sb3I6ICM2MDYwNjA7IG1hcmdpbi1yaWdodDogMCB9DQogICAgLk1FbnRyeSBhOmFjdGl2ZSB7IGNvbG9yOiAjQTAwMDAwOyBtYXJnaW4tcmlnaHQ6IDAgfQ0KDQoNCiAgICAuTUdyb3VwIHsNCiAgICAgICAgZm9udC12YXJpYW50OiBzbWFsbC1jYXBzOyBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgbWFyZ2luOiAxZW0gMCAxZW0gMTBweDsNCiAgICAgICAgfQ0KDQogICAgLk1Hcm91cENvbnRlbnQgew0KICAgICAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbCB9DQoNCiAgICAuTUdyb3VwIGE6bGluaywNCiAgICAuTUdyb3VwIGE6aG92ZXIsDQogICAgLk1Hcm91cCBhOnZpc2l0ZWQgeyBjb2xvcjogIzU0NTQ1NDsgbWFyZ2luLXJpZ2h0OiAxMHB4IH0NCiAgICAuTUdyb3VwIGE6YWN0aXZlIHsgY29sb3I6ICNBMDAwMDA7IG1hcmdpbi1yaWdodDogMTBweCB9DQoNCg0KICAgIC5NRmlsZSwNCiAgICAuTVRleHQsDQogICAgLk1MaW5rLA0KICAgIC5NSW5kZXggew0KICAgICAgICBwYWRkaW5nOiAxcHggMTdweCAycHggMTBweDsNCiAgICAgICAgbWFyZ2luOiAuMjVlbSAwIC4yNWVtIDA7DQogICAgICAgIH0NCg0KICAgIC5NVGV4dCB7DQogICAgICAgIGZvbnQtc2l6ZTogOHB0OyBmb250LXN0eWxlOiBpdGFsaWMgfQ0KDQogICAgLk1MaW5rIHsNCiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljIH0NCg0KICAgICNNU2VsZWN0ZWQgew0KICAgICAgICBjb2xvcjogIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsNCiAgICAgICAgLyogIFJlcGxhY2UgcGFkZGluZyB3aXRoIGJvcmRlci4gICovDQogICAgICAgIHBhZGRpbmc6IDAgMTBweCAwIDEwcHg7DQogICAgICAgIGJvcmRlci13aWR0aDogMXB4IDJweCAycHggMDsgYm9yZGVyLXN0eWxlOiBzb2xpZDsgYm9yZGVyLWNvbG9yOiAjMDAwMDAwOw0KICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDsNCiAgICAgICAgfQ0KDQogICAgLyogIENsb3NlIG9mZiB0aGUgbGVmdCBzaWRlIHdoZW4gaXRzIGluIGEgZ3JvdXAuICAqLw0KICAgIC5NR3JvdXAgI01TZWxlY3RlZCB7DQogICAgICAgIHBhZGRpbmctbGVmdDogOXB4OyBib3JkZXItbGVmdC13aWR0aDogMXB4IH0NCg0KICAgIC8qICBBIHRyZWF0IGZvciBNb3ppbGxhIHVzZXJzLiAgQmxhdGFudGx5IG5vbi1zdGFuZGFyZC4gIFdpbGwgYmUgcmVwbGFjZWQgd2l0aCBDU1MgMyBhdHRyaWJ1dGVzIHdoZW4gZmluYWxpemVkL3N1cHBvcnRlZC4gICovDQogICAgLkZpcmVmb3ggI01TZWxlY3RlZCB7DQogICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDogMTBweDsNCiAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiAxMHB4IH0NCiAgICAuRmlyZWZveCAuTUdyb3VwICNNU2VsZWN0ZWQgew0KICAgICAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogMTBweDsNCiAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDEwcHggfQ0KDQoNCiAgICAjTVNlYXJjaFBhbmVsIHsNCiAgICAgICAgcGFkZGluZzogMHB4IDZweDsNCiAgICAgICAgbWFyZ2luOiAuMjVlbSAwOw0KICAgICAgICB9DQoNCg0KICAgICNNU2VhcmNoRmllbGQgew0KICAgICAgICBmb250OiBpdGFsaWMgOXB0IFZlcmRhbmEsIHNhbnMtc2VyaWY7DQogICAgICAgIGNvbG9yOiAjNjA2MDYwOw0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRThFOEU4Ow0KICAgICAgICBib3JkZXI6IG5vbmU7DQogICAgICAgIHBhZGRpbmc6IDJweCA0cHg7DQogICAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgICB9DQogICAgLyogT25seSBPcGVyYSBnZXRzIGl0IHJpZ2h0LiAqLw0KICAgIC5GaXJlZm94ICNNU2VhcmNoRmllbGQsDQogICAgLklFICNNU2VhcmNoRmllbGQsDQogICAgLlNhZmFyaSAjTVNlYXJjaEZpZWxkIHsNCiAgICAgICAgd2lkdGg6IDk0JTsNCiAgICAgICAgfQ0KICAgIC5PcGVyYTkgI01TZWFyY2hGaWVsZCwNCiAgICAuS29ucXVlcm9yICNNU2VhcmNoRmllbGQgew0KICAgICAgICB3aWR0aDogOTclOw0KICAgICAgICB9DQogICAgLkZyYW1lZE1lbnVQYWdlIC5GaXJlZm94ICNNU2VhcmNoRmllbGQsDQogICAgLkZyYW1lZE1lbnVQYWdlIC5TYWZhcmkgI01TZWFyY2hGaWVsZCwNCiAgICAuRnJhbWVkTWVudVBhZ2UgLktvbnF1ZXJvciAjTVNlYXJjaEZpZWxkIHsNCiAgICAgICAgd2lkdGg6IDk4JTsNCiAgICAgICAgfQ0KDQogICAgLyogRmlyZWZveCBkb2Vzbid0IGRvIHRoaXMgcmlnaHQgaW4gZnJhbWVzIHdpdGhvdXQgI01TZWFyY2hQYW5lbCBhZGRlZCBvbi4NCiAgICAgICAgSXQncyBwcmVzZW5jZSBkb2Vzbid0IGh1cnQgYW55dGhpbmcgb3RoZXIgYnJvd3NlcnMuICovDQogICAgI01TZWFyY2hQYW5lbC5NU2VhcmNoUGFuZWxJbmFjdGl2ZTpob3ZlciAjTVNlYXJjaEZpZWxkIHsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsNCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0MwQzBDMDsNCiAgICAgICAgcGFkZGluZzogMXB4IDNweDsNCiAgICAgICAgfQ0KICAgIC5NU2VhcmNoUGFuZWxBY3RpdmUgI01TZWFyY2hGaWVsZCB7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7DQogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNDMEMwQzA7DQogICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsNCiAgICAgICAgcGFkZGluZzogMXB4IDNweDsNCiAgICAgICAgfQ0KDQogICAgI01TZWFyY2hUeXBlIHsNCiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOw0KICAgICAgICBmb250OiA4cHQgVmVyZGFuYSwgc2Fucy1zZXJpZjsNCiAgICAgICAgd2lkdGg6IDk4JTsNCiAgICAgICAgcGFkZGluZzogMDsNCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI0MwQzBDMDsNCiAgICAgICAgfQ0KICAgIC5NU2VhcmNoUGFuZWxBY3RpdmUgI01TZWFyY2hUeXBlLA0KICAgIC8qICBBcyBtZW50aW9uZWQgYWJvdmUsIEZpcmVmb3ggZG9lc24ndCBkbyB0aGlzIHJpZ2h0IGluIGZyYW1lcyB3aXRob3V0ICNNU2VhcmNoUGFuZWwgYWRkZWQgb24uICovDQogICAgI01TZWFyY2hQYW5lbC5NU2VhcmNoUGFuZWxJbmFjdGl2ZTpob3ZlciAjTVNlYXJjaFR5cGUsDQogICAgI01TZWFyY2hUeXBlOmZvY3VzIHsNCiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsNCiAgICAgICAgY29sb3I6ICM2MDYwNjA7DQogICAgICAgIH0NCiAgICAjTVNlYXJjaFR5cGUgb3B0aW9uI01TZWFyY2hFdmVyeXRoaW5nIHsNCiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgIH0NCg0KICAgIC5PcGVyYTggLk1TZWFyY2hQYW5lbEluYWN0aXZlOmhvdmVyLA0KICAgIC5PcGVyYTggLk1TZWFyY2hQYW5lbEFjdGl2ZSB7DQogICAgICAgIG1hcmdpbi1sZWZ0OiAtMXB4Ow0KICAgICAgICB9DQoNCg0KICAgIGlmcmFtZSNNU2VhcmNoUmVzdWx0cyB7DQogICAgICAgIHdpZHRoOiA2MGV4Ow0KICAgICAgICBoZWlnaHQ6IDE1ZW07DQogICAgICAgIH0NCiAgICAjTVNlYXJjaFJlc3VsdHNXaW5kb3cgew0KICAgICAgICBkaXNwbGF5OiBub25lOw0KICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgIGxlZnQ6IDA7IHRvcDogMDsNCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0U4RThFODsNCiAgICAgICAgfQ0KICAgICNNU2VhcmNoUmVzdWx0c1dpbmRvd0Nsb3NlIHsNCiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgIGZvbnQtc2l6ZTogOHB0Ow0KICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgcGFkZGluZzogMnB4IDVweDsNCiAgICAgICAgfQ0KICAgICNNU2VhcmNoUmVzdWx0c1dpbmRvd0Nsb3NlOmxpbmssDQogICAgI01TZWFyY2hSZXN1bHRzV2luZG93Q2xvc2U6dmlzaXRlZCB7DQogICAgICAgIGNvbG9yOiAjMDAwMDAwOw0KICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgICAgIH0NCiAgICAjTVNlYXJjaFJlc3VsdHNXaW5kb3dDbG9zZTphY3RpdmUsDQogICAgI01TZWFyY2hSZXN1bHRzV2luZG93Q2xvc2U6aG92ZXIgew0KICAgICAgICBjb2xvcjogIzgwMDAwMDsNCiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEY0Ow0KICAgICAgICB9DQoNCg0KDQoNCiNDb250ZW50IHsNCiAgICBwYWRkaW5nLWJvdHRvbTogMTVweDsNCiAgICB9DQoNCi5Db250ZW50UGFnZSAjQ29udGVudCB7DQogICAgYm9yZGVyLXdpZHRoOiAwIDAgMXB4IDFweDsNCiAgICBib3JkZXItc3R5bGU6IHNvbGlkOw0KICAgIGJvcmRlci1jb2xvcjogIzAwMDAwMDsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOw0KICAgIGZvbnQtc2l6ZTogOXB0OyAgLyogVG8gbWFrZSAzMWV4IG1hdGNoIHRoZSBtZW51J3MgMzFleC4gKi8NCiAgICBtYXJnaW4tbGVmdDogMzFleDsNCiAgICB9DQouQ29udGVudFBhZ2UgLkZpcmVmb3ggI0NvbnRlbnQgew0KICAgIG1hcmdpbi1sZWZ0OiAyN2V4Ow0KICAgIH0NCg0KDQoNCiAgICAuQ1RvcGljIHsNCiAgICAgICAgZm9udC1zaXplOiAxMHB0Ow0KICAgICAgICBtYXJnaW4tYm90dG9tOiAzZW07DQogICAgICAgIH0NCg0KDQogICAgLkNUaXRsZSB7DQogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgIGJvcmRlci13aWR0aDogMCAwIDFweCAwOyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6ICNBMEEwQTA7DQogICAgICAgIG1hcmdpbjogMCAxNXB4IC41ZW0gMTVweCB9DQoNCiAgICAuQ0dyb3VwIC5DVGl0bGUgew0KICAgICAgICBmb250LXNpemU6IDE2cHQ7IGZvbnQtdmFyaWFudDogc21hbGwtY2FwczsNCiAgICAgICAgcGFkZGluZy1sZWZ0OiAxNXB4OyBwYWRkaW5nLXJpZ2h0OiAxNXB4Ow0KICAgICAgICBib3JkZXItd2lkdGg6IDAgMCAycHggMDsgYm9yZGVyLWNvbG9yOiAjMDAwMDAwOw0KICAgICAgICBtYXJnaW4tbGVmdDogMDsgbWFyZ2luLXJpZ2h0OiAwIH0NCg0KICAgIC5DQ2xhc3MgLkNUaXRsZSwNCiAgICAuQ0ludGVyZmFjZSAuQ1RpdGxlLA0KICAgIC5DRGF0YWJhc2UgLkNUaXRsZSwNCiAgICAuQ0RhdGFiYXNlVGFibGUgLkNUaXRsZSwNCiAgICAuQ1NlY3Rpb24gLkNUaXRsZSB7DQogICAgICAgIGZvbnQtc2l6ZTogMThwdDsNCiAgICAgICAgY29sb3I6ICNGRkZGRkY7IGJhY2tncm91bmQtY29sb3I6ICNBMEEwQTA7DQogICAgICAgIHBhZGRpbmc6IDEwcHggMTVweCAxMHB4IDE1cHg7DQogICAgICAgIGJvcmRlci13aWR0aDogMnB4IDA7IGJvcmRlci1jb2xvcjogIzAwMDAwMDsNCiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7IG1hcmdpbi1yaWdodDogMCB9DQoNCiAgICAjTWFpblRvcGljIC5DVGl0bGUgew0KICAgICAgICBmb250LXNpemU6IDIwcHQ7DQogICAgICAgIGNvbG9yOiAjRkZGRkZGOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNzA3MEMwOw0KICAgICAgICBwYWRkaW5nOiAxMHB4IDE1cHggMTBweCAxNXB4Ow0KICAgICAgICBib3JkZXItd2lkdGg6IDAgMCAzcHggMDsgYm9yZGVyLWNvbG9yOiAjMDAwMDAwOw0KICAgICAgICBtYXJnaW4tbGVmdDogMDsgbWFyZ2luLXJpZ2h0OiAwIH0NCg0KICAgIC5DQm9keSB7DQogICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4OyBtYXJnaW4tcmlnaHQ6IDE1cHggfQ0KDQoNCiAgICAuQ1Rvb2xUaXAgew0KICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7IHZpc2liaWxpdHk6IGhpZGRlbjsNCiAgICAgICAgbGVmdDogMDsgdG9wOiAwOw0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkUwOw0KICAgICAgICBwYWRkaW5nOiA1cHg7DQogICAgICAgIGJvcmRlci13aWR0aDogMXB4IDJweCAycHggMXB4OyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6ICMwMDAwMDA7DQogICAgICAgIGZvbnQtc2l6ZTogOHB0Ow0KICAgICAgICB9DQoNCiAgICAuT3BlcmEgLkNUb29sVGlwIHsNCiAgICAgICAgbWF4LXdpZHRoOiA5OCU7DQogICAgICAgIH0NCg0KICAgIC8qICBTY3JvbGxiYXJzIHdvdWxkIGJlIHVzZWxlc3MuICAqLw0KICAgIC5DVG9vbFRpcCBibG9ja3F1b3RlIHsNCiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgICAgICAgfQ0KICAgIC5JRTYgLkNUb29sVGlwIGJsb2NrcXVvdGUgew0KICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTsNCiAgICAgICAgfQ0KDQogICAgLkNIZWFkaW5nIHsNCiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTBwdDsNCiAgICAgICAgbWFyZ2luOiAxLjVlbSAwIC41ZW0gMDsNCiAgICAgICAgfQ0KDQogICAgLkNCb2R5IHByZSB7DQogICAgICAgIGZvbnQ6IDEwcHQgIkNvdXJpZXIgTmV3IiwgQ291cmllciwgbW9ub3NwYWNlOw0KCSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkNGQ0ZDOw0KCSAgICBtYXJnaW46IDFlbSAzNXB4Ow0KCSAgICBwYWRkaW5nOiAxMHB4IDE1cHggMTBweCAxMHB4Ow0KCSAgICBib3JkZXItY29sb3I6ICNFMEUwRTAgI0UwRTBFMCAjRTBFMEUwICNFNEU0RTQ7DQoJICAgIGJvcmRlci13aWR0aDogMXB4IDFweCAxcHggNnB4Ow0KCSAgICBib3JkZXItc3R5bGU6IGRhc2hlZCBkYXNoZWQgZGFzaGVkIHNvbGlkOw0KICAgICAgICB9DQoNCiAgICAuQ0JvZHkgdWwgew0KICAgICAgICAvKiAgSSBkb24ndCBrbm93IHdoeSBDQm9keSdzIG1hcmdpbiBkb2Vzbid0IGFwcGx5LCBidXQgaXQncyBjb25zaXN0ZW50IGFjcm9zcyBicm93c2VycyBzbyB3aGF0ZXZlci4NCiAgICAgICAgICAgICBSZWFwcGx5IGl0IGhlcmUgYXMgcGFkZGluZy4gICovDQogICAgICAgIHBhZGRpbmctbGVmdDogMTVweDsgcGFkZGluZy1yaWdodDogMTVweDsNCiAgICAgICAgbWFyZ2luOiAuNWVtIDVleCAuNWVtIDVleDsNCiAgICAgICAgfQ0KDQogICAgLkNEZXNjcmlwdGlvbkxpc3Qgew0KICAgICAgICBtYXJnaW46IC41ZW0gNWV4IDAgNWV4IH0NCg0KICAgICAgICAuQ0RMRW50cnkgew0KICAgICAgICAgICAgZm9udDogMTBwdCAiQ291cmllciBOZXciLCBDb3VyaWVyLCBtb25vc3BhY2U7IGNvbG9yOiAjODA4MDgwOw0KICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IC4yNWVtOw0KICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCB9DQoNCiAgICAgICAgLkNETERlc2NyaXB0aW9uIHsNCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTBwdDsgIC8qICBGb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBpbmhlcml0IGNvcnJlY3RseSwgbGlrZSBPcGVyYSA1LiAgKi8NCiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAuNWVtOyBwYWRkaW5nLWxlZnQ6IDVleCB9DQoNCg0KICAgIC5DVG9waWMgaW1nIHsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgbWFyZ2luOiAxZW0gYXV0bzsNCiAgICAgICAgfQ0KICAgIC5DSW1hZ2VDYXB0aW9uIHsNCiAgICAgICAgZm9udC12YXJpYW50OiBzbWFsbC1jYXBzOw0KICAgICAgICBmb250LXNpemU6IDhwdDsNCiAgICAgICAgY29sb3I6ICM4MDgwODA7DQogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgICAgICB0b3A6IDFlbTsNCiAgICAgICAgfQ0KDQogICAgLkNJbWFnZUxpbmsgew0KICAgICAgICBjb2xvcjogIzgwODA4MDsNCiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOw0KICAgICAgICB9DQogICAgYS5DSW1hZ2VMaW5rOmxpbmssDQogICAgYS5DSW1hZ2VMaW5rOnZpc2l0ZWQsDQogICAgYS5DSW1hZ2VMaW5rOmhvdmVyIHsgY29sb3I6ICM4MDgwODAgfQ0KDQoNCg0KDQoNCi5Qcm90b3R5cGUgew0KICAgIGZvbnQ6IDEwcHQgIkNvdXJpZXIgTmV3IiwgQ291cmllciwgbW9ub3NwYWNlOw0KICAgIHBhZGRpbmc6IDVweCAzZXg7DQogICAgYm9yZGVyLXdpZHRoOiAxcHg7IGJvcmRlci1zdHlsZTogc29saWQ7DQogICAgbWFyZ2luOiAwIDVleCAxLjVlbSA1ZXg7DQogICAgfQ0KDQogICAgLlByb3RvdHlwZSB0ZCB7DQogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsNCiAgICAgICAgfQ0KDQogICAgLlBEZWZhdWx0VmFsdWUsDQogICAgLlBEZWZhdWx0VmFsdWVQcmVmaXgsDQogICAgLlBUeXBlUHJlZml4IHsNCiAgICAgICAgY29sb3I6ICM4RjhGOEY7DQogICAgICAgIH0NCiAgICAuUFR5cGVQcmVmaXggew0KICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsNCiAgICAgICAgfQ0KICAgIC5QQWZ0ZXJQYXJhbWV0ZXJzIHsNCiAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsNCiAgICAgICAgfQ0KDQogICAgLklFIC5Qcm90b3R5cGUgdGFibGUgew0KICAgICAgICBwYWRkaW5nOiAwOw0KICAgICAgICB9DQoNCiAgICAuQ0Z1bmN0aW9uIC5Qcm90b3R5cGUgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNEY0OyBib3JkZXItY29sb3I6ICNEMEQwRDAgfQ0KICAgIC5DUHJvcGVydHkgLlByb3RvdHlwZSB7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNEY0RkY7IGJvcmRlci1jb2xvcjogI0MwQzBFOCB9DQogICAgLkNWYXJpYWJsZSAuUHJvdG90eXBlIHsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGMDsgYm9yZGVyLWNvbG9yOiAjRTBFMEEwIH0NCg0KICAgIC5DQ2xhc3MgLlByb3RvdHlwZSB7DQogICAgICAgIGJvcmRlci13aWR0aDogMXB4IDJweCAycHggMXB4OyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6ICNBMEEwQTA7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNEY0RjQ7DQogICAgICAgIH0NCiAgICAuQ0ludGVyZmFjZSAuUHJvdG90eXBlIHsNCiAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMnB4IDJweCAxcHg7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjogI0EwQTBEMDsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0Y0RjRGRjsNCiAgICAgICAgfQ0KDQogICAgLkNEYXRhYmFzZUluZGV4IC5Qcm90b3R5cGUsDQogICAgLkNDb25zdGFudCAuUHJvdG90eXBlIHsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0QwRDBEMDsgYm9yZGVyLWNvbG9yOiAjMDAwMDAwIH0NCiAgICAuQ1R5cGUgLlByb3RvdHlwZSwNCiAgICAuQ0VudW1lcmF0aW9uIC5Qcm90b3R5cGUgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkFGMEYwOyBib3JkZXItY29sb3I6ICNFMEIwQjA7DQogICAgICAgIH0NCiAgICAuQ0RhdGFiYXNlVHJpZ2dlciAuUHJvdG90eXBlLA0KICAgIC5DRXZlbnQgLlByb3RvdHlwZSwNCiAgICAuQ0RlbGVnYXRlIC5Qcm90b3R5cGUgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGQ0YwOyBib3JkZXItY29sb3I6ICNCOEU0QjggfQ0KDQogICAgLkNUb29sVGlwIC5Qcm90b3R5cGUgew0KICAgICAgICBtYXJnaW46IDAgMCAuNWVtIDA7DQogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7DQogICAgICAgIH0NCg0KDQoNCg0KDQouU3VtbWFyeSB7DQogICAgbWFyZ2luOiAxLjVlbSA1ZXggMCA1ZXggfQ0KDQogICAgLlNUaXRsZSB7DQogICAgICAgIGZvbnQtc2l6ZTogMTJwdDsgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgIG1hcmdpbi1ib3R0b206IC41ZW0gfQ0KDQoNCiAgICAuU0JvcmRlciB7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRjA7DQogICAgICAgIHBhZGRpbmc6IDE1cHg7DQogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNDMEMwNjAgfQ0KDQogICAgLyogSW4gYSBmcmFtZSBJRSA2IHdpbGwgbWFrZSB0aGVtIHRvbyBsb25nIHVubGVzcyB5b3Ugc2V0IHRoZSB3aWR0aCB0byAxMDAlLiAgV2l0aG91dCBmcmFtZXMgaXQgd2lsbCBiZSBjb3JyZWN0IHdpdGhvdXQgYSB3aWR0aA0KICAgICAgICBvciBzbGlnaHRseSB0b28gbG9uZyAoYnV0IG5vdCBlbm91Z2ggdG8gc2Nyb2xsKSB3aXRoIGEgd2lkdGguICBUaGlzIGFyYml0cmFyeSB3ZWlyZG5lc3Mgc2ltcGx5IGFzdG91bmRzIG1lLiAgSUUgNyBoYXMgdGhlIHNhbWUNCiAgICAgICAgcHJvYmxlbSB3aXRoIGZyYW1lcywgaGF2ZW4ndCB0ZXN0ZWQgaXQgd2l0aG91dC4gICovDQogICAgLkZyYW1lZENvbnRlbnRQYWdlIC5JRSAuU0JvcmRlciB7DQogICAgICAgIHdpZHRoOiAxMDAlIH0NCg0KICAgIC8qICBBIHRyZWF0IGZvciBNb3ppbGxhIHVzZXJzLiAgQmxhdGFudGx5IG5vbi1zdGFuZGFyZC4gIFdpbGwgYmUgcmVwbGFjZWQgd2l0aCBDU1MgMyBhdHRyaWJ1dGVzIHdoZW4gZmluYWxpemVkL3N1cHBvcnRlZC4gICovDQogICAgLkZpcmVmb3ggLlNCb3JkZXIgew0KICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDIwcHggfQ0KDQoNCiAgICAuU1RhYmxlIHsNCiAgICAgICAgZm9udC1zaXplOiA5cHQ7IHdpZHRoOiAxMDAlIH0NCg0KICAgIC5TRW50cnkgew0KICAgICAgICB3aWR0aDogMzAlIH0NCiAgICAuU0Rlc2NyaXB0aW9uIHsNCiAgICAgICAgd2lkdGg6IDcwJSB9DQoNCg0KICAgIC5TTWFya2VkIHsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0Y4RjhEOCB9DQoNCiAgICAuU0Rlc2NyaXB0aW9uIHsgcGFkZGluZy1sZWZ0OiAyZXggfQ0KICAgIC5TSW5kZW50MSAuU0VudHJ5IHsgcGFkZGluZy1sZWZ0OiAxLjVleCB9ICAgLlNJbmRlbnQxIC5TRGVzY3JpcHRpb24geyBwYWRkaW5nLWxlZnQ6IDMuNWV4IH0NCiAgICAuU0luZGVudDIgLlNFbnRyeSB7IHBhZGRpbmctbGVmdDogMy4wZXggfSAgIC5TSW5kZW50MiAuU0Rlc2NyaXB0aW9uIHsgcGFkZGluZy1sZWZ0OiA1LjBleCB9DQogICAgLlNJbmRlbnQzIC5TRW50cnkgeyBwYWRkaW5nLWxlZnQ6IDQuNWV4IH0gICAuU0luZGVudDMgLlNEZXNjcmlwdGlvbiB7IHBhZGRpbmctbGVmdDogNi41ZXggfQ0KICAgIC5TSW5kZW50NCAuU0VudHJ5IHsgcGFkZGluZy1sZWZ0OiA2LjBleCB9ICAgLlNJbmRlbnQ0IC5TRGVzY3JpcHRpb24geyBwYWRkaW5nLWxlZnQ6IDguMGV4IH0NCiAgICAuU0luZGVudDUgLlNFbnRyeSB7IHBhZGRpbmctbGVmdDogNy41ZXggfSAgIC5TSW5kZW50NSAuU0Rlc2NyaXB0aW9uIHsgcGFkZGluZy1sZWZ0OiA5LjVleCB9DQoNCiAgICAuU0Rlc2NyaXB0aW9uIGEgeyBjb2xvcjogIzgwMDAwMH0NCiAgICAuU0Rlc2NyaXB0aW9uIGE6YWN0aXZlIHsgY29sb3I6ICNBMDAwMDAgfQ0KDQogICAgLlNHcm91cCB0ZCB7DQogICAgICAgIHBhZGRpbmctdG9wOiAuNWVtOyBwYWRkaW5nLWJvdHRvbTogLjI1ZW0gfQ0KDQogICAgLlNHcm91cCAuU0VudHJ5IHsNCiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtdmFyaWFudDogc21hbGwtY2FwcyB9DQoNCiAgICAuU0dyb3VwIC5TRW50cnkgYSB7IGNvbG9yOiAjODAwMDAwIH0NCiAgICAuU0dyb3VwIC5TRW50cnkgYTphY3RpdmUgeyBjb2xvcjogI0YwMDAwMCB9DQoNCg0KICAgIC5TTWFpbiB0ZCwNCiAgICAuU0NsYXNzIHRkLA0KICAgIC5TRGF0YWJhc2UgdGQsDQogICAgLlNEYXRhYmFzZVRhYmxlIHRkLA0KICAgIC5TU2VjdGlvbiB0ZCB7DQogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsNCiAgICAgICAgcGFkZGluZy1ib3R0b206IC4yNWVtIH0NCg0KICAgIC5TQ2xhc3MgdGQsDQogICAgLlNEYXRhYmFzZSB0ZCwNCiAgICAuU0RhdGFiYXNlVGFibGUgdGQsDQogICAgLlNTZWN0aW9uIHRkIHsNCiAgICAgICAgcGFkZGluZy10b3A6IDFlbSB9DQoNCiAgICAuU01haW4gLlNFbnRyeSwNCiAgICAuU0NsYXNzIC5TRW50cnksDQogICAgLlNEYXRhYmFzZSAuU0VudHJ5LA0KICAgIC5TRGF0YWJhc2VUYWJsZSAuU0VudHJ5LA0KICAgIC5TU2VjdGlvbiAuU0VudHJ5IHsNCiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgIH0NCg0KICAgIC5TTWFpbiAuU0VudHJ5IGEsDQogICAgLlNDbGFzcyAuU0VudHJ5IGEsDQogICAgLlNEYXRhYmFzZSAuU0VudHJ5IGEsDQogICAgLlNEYXRhYmFzZVRhYmxlIC5TRW50cnkgYSwNCiAgICAuU1NlY3Rpb24gLlNFbnRyeSBhIHsgY29sb3I6ICMwMDAwMDAgfQ0KDQogICAgLlNNYWluIC5TRW50cnkgYTphY3RpdmUsDQogICAgLlNDbGFzcyAuU0VudHJ5IGE6YWN0aXZlLA0KICAgIC5TRGF0YWJhc2UgLlNFbnRyeSBhOmFjdGl2ZSwNCiAgICAuU0RhdGFiYXNlVGFibGUgLlNFbnRyeSBhOmFjdGl2ZSwNCiAgICAuU1NlY3Rpb24gLlNFbnRyeSBhOmFjdGl2ZSB7IGNvbG9yOiAjQTAwMDAwIH0NCg0KDQoNCg0KDQouQ2xhc3NIaWVyYXJjaHkgew0KICAgIG1hcmdpbjogMCAxNXB4IDFlbSAxNXB4IH0NCg0KICAgIC5DSEVudHJ5IHsNCiAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMnB4IDJweCAxcHg7IGJvcmRlci1zdHlsZTogc29saWQ7IGJvcmRlci1jb2xvcjogI0EwQTBBMDsNCiAgICAgICAgbWFyZ2luLWJvdHRvbTogM3B4Ow0KICAgICAgICBwYWRkaW5nOiAycHggMmV4Ow0KICAgICAgICBmb250LXNpemU6IDEwcHQ7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNEY0RjQ7IGNvbG9yOiAjNjA2MDYwOw0KICAgICAgICB9DQoNCiAgICAuRmlyZWZveCAuQ0hFbnRyeSB7DQogICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4Ow0KICAgICAgICB9DQoNCiAgICAuQ0hDdXJyZW50IC5DSEVudHJ5IHsNCiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgICAgIGJvcmRlci1jb2xvcjogIzAwMDAwMDsNCiAgICAgICAgY29sb3I6ICMwMDAwMDA7DQogICAgICAgIH0NCg0KICAgIC5DSENoaWxkTm90ZSAuQ0hFbnRyeSB7DQogICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsNCiAgICAgICAgZm9udC1zaXplOiA4cHQ7DQogICAgICAgIH0NCg0KICAgIC5DSEluZGVudCB7DQogICAgICAgIG1hcmdpbi1sZWZ0OiAzZXg7DQogICAgICAgIH0NCg0KICAgIC5DSEVudHJ5IGE6bGluaywNCiAgICAuQ0hFbnRyeSBhOnZpc2l0ZWQsDQogICAgLkNIRW50cnkgYTpob3ZlciB7DQogICAgICAgIGNvbG9yOiAjNjA2MDYwOw0KICAgICAgICB9DQogICAgLkNIRW50cnkgYTphY3RpdmUgew0KICAgICAgICBjb2xvcjogIzgwMDAwMDsNCiAgICAgICAgfQ0KDQoNCg0KDQoNCiNJbmRleCB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsNCiAgICB9DQoNCi8qICBBcyBvcHBvc2VkIHRvIC5Qb3B1cFNlYXJjaFJlc3VsdHNQYWdlICNJbmRleCAgKi8NCi5JbmRleFBhZ2UgI0luZGV4LA0KLkZyYW1lZEluZGV4UGFnZSAjSW5kZXgsDQouRnJhbWVkU2VhcmNoUmVzdWx0c1BhZ2UgI0luZGV4IHsNCiAgICBwYWRkaW5nOiAxNXB4Ow0KICAgIH0NCg0KLkluZGV4UGFnZSAjSW5kZXggew0KICAgIGJvcmRlci13aWR0aDogMCAwIDFweCAxcHg7DQogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsNCiAgICBib3JkZXItY29sb3I6ICMwMDAwMDA7DQogICAgZm9udC1zaXplOiA5cHQ7ICAvKiBUbyBtYWtlIDI3ZXggbWF0Y2ggdGhlIG1lbnUncyAyN2V4LiAqLw0KICAgIG1hcmdpbi1sZWZ0OiAyN2V4Ow0KICAgIH0NCg0KDQogICAgLklQYWdlVGl0bGUgew0KICAgICAgICBmb250LXNpemU6IDIwcHQ7IGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgICAgICBjb2xvcjogI0ZGRkZGRjsgYmFja2dyb3VuZC1jb2xvcjogIzcwNzBDMDsNCiAgICAgICAgcGFkZGluZzogMTBweCAxNXB4IDEwcHggMTVweDsNCiAgICAgICAgYm9yZGVyLXdpZHRoOiAwIDAgM3B4IDA7IGJvcmRlci1jb2xvcjogIzAwMDAwMDsgYm9yZGVyLXN0eWxlOiBzb2xpZDsNCiAgICAgICAgbWFyZ2luOiAtMTVweCAtMTVweCAwIC0xNXB4IH0NCg0KICAgIC5GcmFtZWRTZWFyY2hSZXN1bHRzUGFnZSAuSVBhZ2VUaXRsZSB7DQogICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7DQogICAgICAgIH0NCg0KICAgIC5JTmF2aWdhdGlvbkJhciB7DQogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsNCiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkYwOw0KICAgICAgICBwYWRkaW5nOiA1cHg7DQogICAgICAgIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCBibGFjazsNCiAgICAgICAgbWFyZ2luOiAwIC0xNXB4IDE1cHggLTE1cHg7DQogICAgICAgIH0NCg0KICAgIC5JTmF2aWdhdGlvbkJhciBhIHsNCiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQgfQ0KDQogICAgLklIZWFkaW5nIHsNCiAgICAgICAgZm9udC1zaXplOiAxNnB0OyBmb250LXdlaWdodDogYm9sZDsNCiAgICAgICAgcGFkZGluZzogMi41ZW0gMCAuNWVtIDA7DQogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgd2lkdGg6IDMuNWV4Ow0KICAgICAgICB9DQogICAgI0lGaXJzdEhlYWRpbmcgew0KICAgICAgICBwYWRkaW5nLXRvcDogMDsNCiAgICAgICAgfQ0KDQogICAgLklFbnRyeSB7DQogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsNCiAgICAgICAgcGFkZGluZy1sZWZ0OiAxZXg7DQogICAgICAgIH0NCiAgICAuUG9wdXBTZWFyY2hSZXN1bHRzUGFnZSAuSUVudHJ5IHsNCiAgICAgICAgZm9udC1zaXplOiA4cHQ7DQogICAgICAgIHBhZGRpbmc6IDFweCA1cHg7DQogICAgICAgIH0NCiAgICAuUG9wdXBTZWFyY2hSZXN1bHRzUGFnZSAuT3BlcmE5IC5JRW50cnksDQogICAgLkZyYW1lZFNlYXJjaFJlc3VsdHNQYWdlIC5PcGVyYTkgLklFbnRyeSB7DQogICAgICAgIHRleHQtYWxpZ246IGxlZnQ7DQogICAgICAgIH0NCiAgICAuRnJhbWVkU2VhcmNoUmVzdWx0c1BhZ2UgLklFbnRyeSB7DQogICAgICAgIHBhZGRpbmc6IDA7DQogICAgICAgIH0NCg0KICAgIC5JU3ViSW5kZXggew0KICAgICAgICBwYWRkaW5nLWxlZnQ6IDNleDsgcGFkZGluZy1ib3R0b206IC41ZW0gfQ0KICAgIC5Qb3B1cFNlYXJjaFJlc3VsdHNQYWdlIC5JU3ViSW5kZXggew0KICAgICAgICBkaXNwbGF5OiBub25lOw0KICAgICAgICB9DQoNCiAgICAvKiAgV2hpbGUgaXQgbWF5IGNhdXNlIHNvbWUgZW50cmllcyB0byBsb29rIGxpa2UgbGlua3Mgd2hlbiB0aGV5IGFyZW4ndCwgSSBmb3VuZCBpdCdzIG11Y2ggZWFzaWVyIHRvIHJlYWQgdGhlDQogICAgICAgICBpbmRleCBpZiBldmVyeXRoaW5nJ3MgdGhlIHNhbWUgY29sb3IuICAqLw0KICAgIC5JU3ltYm9sIHsNCiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjOTAwMDAwICB9DQoNCiAgICAuSW5kZXhQYWdlIC5JU3ltYm9sUHJlZml4LA0KICAgIC5GcmFtZWRJbmRleFBhZ2UgLklTeW1ib2xQcmVmaXggew0KICAgICAgICBmb250LXNpemU6IDEwcHQ7DQogICAgICAgIHRleHQtYWxpZ246IHJpZ2h0Ow0KICAgICAgICBjb2xvcjogI0M0N0M3QzsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0Y4RjhGODsNCiAgICAgICAgYm9yZGVyLXJpZ2h0OiAzcHggc29saWQgI0UwRTBFMDsNCiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRTBFMEUwOw0KICAgICAgICBwYWRkaW5nOiAwIDFweCAwIDJweDsNCiAgICAgICAgfQ0KICAgIC5Qb3B1cFNlYXJjaFJlc3VsdHNQYWdlIC5JU3ltYm9sUHJlZml4LA0KICAgIC5GcmFtZWRTZWFyY2hSZXN1bHRzUGFnZSAuSVN5bWJvbFByZWZpeCB7DQogICAgICAgIGNvbG9yOiAjOTAwMDAwOw0KICAgICAgICB9DQogICAgLlBvcHVwU2VhcmNoUmVzdWx0c1BhZ2UgLklTeW1ib2xQcmVmaXggew0KICAgICAgICBmb250LXNpemU6IDhwdDsNCiAgICAgICAgfQ0KDQogICAgLkluZGV4UGFnZSAjSUZpcnN0U3ltYm9sUHJlZml4LA0KICAgIC5GcmFtZWRJbmRleFBhZ2UgI0lGaXJzdFN5bWJvbFByZWZpeCB7DQogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRTBFMEUwOw0KICAgICAgICB9DQogICAgLkluZGV4UGFnZSAjSUxhc3RTeW1ib2xQcmVmaXgsDQogICAgLkZyYW1lZEluZGV4UGFnZSAjSUxhc3RTeW1ib2xQcmVmaXggew0KICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0UwRTBFMDsNCiAgICAgICAgfQ0KICAgIC5JbmRleFBhZ2UgI0lPbmx5U3ltYm9sUHJlZml4LA0KICAgIC5GcmFtZWRJbmRleFBhZ2UgI0lPbmx5U3ltYm9sUHJlZml4IHsNCiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNFMEUwRTA7DQogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRTBFMEUwOw0KICAgICAgICB9DQoNCiAgICBhLklQYXJlbnQsDQogICAgYS5JRmlsZSB7DQogICAgICAgIGRpc3BsYXk6IGJsb2NrOw0KICAgICAgICB9DQoNCiAgICAuUG9wdXBTZWFyY2hSZXN1bHRzUGFnZSAuU1JTdGF0dXMgew0KICAgICAgICBwYWRkaW5nOiAycHggNXB4Ow0KICAgICAgICBmb250LXNpemU6IDhwdDsNCiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOw0KICAgICAgICB9DQogICAgLkZyYW1lZFNlYXJjaFJlc3VsdHNQYWdlIC5TUlN0YXR1cyB7DQogICAgICAgIGZvbnQtc2l6ZTogMTBwdDsNCiAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOw0KICAgICAgICB9DQoNCiAgICAuU1JSZXN1bHQgew0KICAgICAgICBkaXNwbGF5OiBub25lOw0KICAgICAgICB9DQoNCg0KDQojRm9vdGVyIHsNCiAgICBmb250LXNpemU6IDhwdDsNCiAgICBjb2xvcjogIzk4OTg5ODsNCiAgICB0ZXh0LWFsaWduOiByaWdodDsNCiAgICB9DQoNCiNGb290ZXIgcCB7DQogICAgdGV4dC1pbmRlbnQ6IDA7DQogICAgbWFyZ2luLWJvdHRvbTogLjVlbTsNCiAgICB9DQoNCi5Db250ZW50UGFnZSAjRm9vdGVyLA0KLkluZGV4UGFnZSAjRm9vdGVyIHsNCiAgICB0ZXh0LWFsaWduOiByaWdodDsNCiAgICBtYXJnaW46IDJweDsNCiAgICB9DQoNCi5GcmFtZWRNZW51UGFnZSAjRm9vdGVyIHsNCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogICAgbWFyZ2luOiA1ZW0gMTBweCAxMHB4IDEwcHg7DQogICAgcGFkZGluZy10b3A6IDFlbTsNCiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0M4QzhDODsNCiAgICB9DQoNCiAgICAjRm9vdGVyIGE6bGluaywNCiAgICAjRm9vdGVyIGE6aG92ZXIsDQogICAgI0Zvb3RlciBhOnZpc2l0ZWQgeyBjb2xvcjogIzk4OTg5OCB9DQogICAgI0Zvb3RlciBhOmFjdGl2ZSB7IGNvbG9yOiAjQTAwMDAwIH0NCg0KDQoNCi5wcmV0dHlwcmludCAua3dkIHsgY29sb3I6ICM4MDAwMDA7IH0gIC8qIGtleXdvcmRzICovDQoNCiAgICAucHJldHR5cHJpbnQuUERlZmF1bHRWYWx1ZSAua3dkLA0KICAgIC5wcmV0dHlwcmludC5QRGVmYXVsdFZhbHVlUHJlZml4IC5rd2QsDQogICAgLnByZXR0eXByaW50LlBUeXBlUHJlZml4IC5rd2Qgew0KICAgICAgICBjb2xvcjogI0M4OEY4RjsNCiAgICAgICAgfQ0KDQoucHJldHR5cHJpbnQgLmNvbSB7IGNvbG9yOiAjMDA4MDAwOyB9ICAvKiBjb21tZW50cyAqLw0KDQogICAgLnByZXR0eXByaW50LlBEZWZhdWx0VmFsdWUgLmNvbSwNCiAgICAucHJldHR5cHJpbnQuUERlZmF1bHRWYWx1ZVByZWZpeCAuY29tLA0KICAgIC5wcmV0dHlwcmludC5QVHlwZVByZWZpeCAuY29tIHsNCiAgICAgICAgY29sb3I6ICM4RkM4OEY7DQogICAgICAgIH0NCg0KLnByZXR0eXByaW50IC5zdHIgeyBjb2xvcjogIzAwMDBCMDsgfSAgLyogc3RyaW5ncyAqLw0KLnByZXR0eXByaW50IC5saXQgeyBjb2xvcjogIzAwMDBCMDsgfSAgLyogbGl0ZXJhbHMgKi8NCg0KICAgIC5wcmV0dHlwcmludC5QRGVmYXVsdFZhbHVlIC5zdHIsDQogICAgLnByZXR0eXByaW50LlBEZWZhdWx0VmFsdWVQcmVmaXggLnN0ciwNCiAgICAucHJldHR5cHJpbnQuUFR5cGVQcmVmaXggLnN0ciwNCiAgICAucHJldHR5cHJpbnQuUERlZmF1bHRWYWx1ZSAubGl0LA0KICAgIC5wcmV0dHlwcmludC5QRGVmYXVsdFZhbHVlUHJlZml4IC5saXQsDQogICAgLnByZXR0eXByaW50LlBUeXBlUHJlZml4IC5saXQgew0KICAgICAgICBjb2xvcjogIzhGOEZDMDsNCiAgICAgICAgfQ0KDQoucHJldHR5cHJpbnQgLnR5cCB7IGNvbG9yOiAjMDAwMDAwOyB9ICAvKiB0eXBlcyAqLw0KLnByZXR0eXByaW50IC5wdW4geyBjb2xvcjogIzAwMDAwMDsgfSAgLyogcHVuY3R1YXRpb24gKi8NCi5wcmV0dHlwcmludCAucGxuIHsgY29sb3I6ICMwMDAwMDA7IH0gIC8qIHB1bmN0dWF0aW9uICovDQoNCiAgICAucHJldHR5cHJpbnQuUERlZmF1bHRWYWx1ZSAudHlwLA0KICAgIC5wcmV0dHlwcmludC5QRGVmYXVsdFZhbHVlUHJlZml4IC50eXAsDQogICAgLnByZXR0eXByaW50LlBUeXBlUHJlZml4IC50eXAsDQogICAgLnByZXR0eXByaW50LlBEZWZhdWx0VmFsdWUgLnB1biwNCiAgICAucHJldHR5cHJpbnQuUERlZmF1bHRWYWx1ZVByZWZpeCAucHVuLA0KICAgIC5wcmV0dHlwcmludC5QVHlwZVByZWZpeCAucHVuLA0KICAgIC5wcmV0dHlwcmludC5QRGVmYXVsdFZhbHVlIC5wbG4sDQogICAgLnByZXR0eXByaW50LlBEZWZhdWx0VmFsdWVQcmVmaXggLnBsbiwNCiAgICAucHJldHR5cHJpbnQuUFR5cGVQcmVmaXggLnBsbiB7DQogICAgICAgIGNvbG9yOiAjOEY4RjhGOw0KICAgICAgICB9DQoNCi5wcmV0dHlwcmludCAudGFnIHsgY29sb3I6ICMwMDg7IH0NCi5wcmV0dHlwcmludCAuYXRuIHsgY29sb3I6ICM2MDY7IH0NCi5wcmV0dHlwcmludCAuYXR2IHsgY29sb3I6ICMwODA7IH0NCi5wcmV0dHlwcmludCAuZGVjIHsgY29sb3I6ICM2MDY7IH0NCg0K