IyAkSWQkCgojIGxhbmd1YWdlIGVzCgojIHBhY2thZ2Ugb3JnLmFwYWNoZS5jYXRhbGluYS5yZWFsbQoKamFhc1JlYWxtLmFjY291bnRFeHBpcmVkPUVsIHVzdWFyaW8gezB9IE5PIGhhIHNpZG8gYXV0ZW50aWZpY2FkbyBwb3JxdWUgaGEgZXhwaXJhZG8gc3UgY3VlbnRhCmphYXNSZWFsbS5hdXRoZW50aWNhdGVkU3VjY2Vzcz1FbCB1c3VhcmlvIHswfSBoYSBzaWRvIGF1dGVudGlmaWNhZG8gY29uIOl4aXRvCmphYXNSZWFsbS5jcmVkZW50aWFsRXhwaXJlZD1FbCB1c3VhcmlvIHswfSBOTyBoYSBzaWRvIGF1dGVudGlmaWNhZG8gcG9ycXVlIGhhIGV4cGlyYWRvIHN1IGNyZWRlbmNpYWwKamFhc1JlYWxtLmZhaWxlZExvZ2luPUVsIHVzdWFyaW8gezB9IE5PIGhhIHNpZG8gYXV0ZW50aWZpY2FkbyBwb3JxdWUgaGEgZmFsbGFkbyBlbCBsb2dpbgpqYWFzUmVhbG0ubG9naW5FeGNlcHRpb249RXhjZXBjafNuIGRlIExvZ2luIGF1dGVudGljYW5kbyBub21icmUgZGUgdXN1YXJpbyB7MH0KamFhc1JlYWxtLnVuZXhwZWN0ZWRFcnJvcj1FcnJvciBpbmVzcGVyYWRvCmpkYmNSZWFsbS5hdXRoZW50aWNhdGVGYWlsdXJlPUVsIHVzdWFyaW8gezB9IE5PIGhhIHNpZG8gYXV0ZW50aWZpY2FkbyBjb3JyZWN0YW1lbnRlCmpkYmNSZWFsbS5hdXRoZW50aWNhdGVTdWNjZXNzPUVsIHVzdWFyaW8gezB9IGhhIHNpZG8gYXV0ZW50aWZpY2FkbyBjb3JyZWN0YW1lbnRlCmpkYmNSZWFsbS5jbG9zZT1FeGNlcGNp824gYWwgY2VycmFyIGxhIGNvbmV4afNuIGEgbGEgYmFzZSBkZSBkYXRvcwpqZGJjUmVhbG0uZXhjZXB0aW9uPUV4Y2VwY2nzbiBhbCByZWFsaXphciBsYSBhdXRlbnRpZmljYWNp824KamRiY1JlYWxtLm9wZW49RXhjZXBjafNuIGFicmllbmRvIGxhIGNvbmV4afNuIGEgbGEgYmFzZSBkZSBkYXRvcwpqbmRpUmVhbG0uYXV0aGVudGljYXRlRmFpbHVyZT1BdXRlbnRpZmljYWNp824gZmFsbGlkYSBwYXJhIGVsIHVzdWFyaW8gezB9CmpuZGlSZWFsbS5hdXRoZW50aWNhdGVTdWNjZXNzPUF1dGVudGlmaWNhY2nzbiBjb3JyZWN0YSBwYXJhIGVsIHVzdWFyaW8gezB9CmpuZGlSZWFsbS5jbG9zZT1FeGNlcGNp824gYWwgY2VycmFyIGxhIGNvbmV4afNuIGFsIHNlcnZpZG9yIGRlIGRpcmVjdG9yaW8Kam5kaVJlYWxtLmV4Y2VwdGlvbj1FeGNlcGNp824gYWwgcmVhbGl6YXIgbGEgYXV0ZW50aWZpY2FjafNuCmpuZGlSZWFsbS5vcGVuPUV4Y2VwY2nzbiBhbCBhYnJpciBsYSBjb25leGnzbiBhbCBzZXJ2aWRvciBkZSBkaXJlY3RvcmlvCm1lbW9yeVJlYWxtLmF1dGhlbnRpY2F0ZUZhaWx1cmU9QXV0ZW50aWZpY2FjafNuIGZhbGxpZGEgcGFyYSBlbCB1c3VhcmlvIHswfQptZW1vcnlSZWFsbS5hdXRoZW50aWNhdGVTdWNjZXNzPUF1dGVudGlmaWNhY2nzbiBjb3JyZWN0YSBwYXJhIGVsIHVzdWFyaW8gezB9Cm1lbW9yeVJlYWxtLmxvYWRFeGlzdD1FbCBmaWNoZXJvIGRlIHVzdWFyaW9zIHswfSBubyBoYSBwb2RpZG8gc2VyIGxl7WRvCm1lbW9yeVJlYWxtLmxvYWRQYXRoPUNhcmdhbmRvIGxvcyB1c3VhcmlvcyBkZXNkZSBlbCBmaWNoZXJvIHswfQptZW1vcnlSZWFsbS5yZWFkWG1sPUV4Y2VwY2nzbiBtaWVudHJhcyBzZSBsZe1hIGVsIGZpY2hlcm8gZGUgdXN1YXJpb3MKcmVhbG1CYXNlLmFsZ29yaXRobT1FbCBhbGdvcml0bW8gcmVzdW1lbiAoZGlnZXN0KSB7MH0gZXMgaW524WxpZG8KcmVhbG1CYXNlLmFscmVhZHlTdGFydGVkPUVzdGUgZG9taW5pbyB5YSBoYSBzaWRvIGluaWNpYWxpemFkbwpyZWFsbUJhc2UuZGlnZXN0PUVycm9yIHByb2Nlc2FuZG8gbGFzIGNyZWRlbmNpYWxlcyBkZWwgdXN1YXJpbwpyZWFsbUJhc2UuZm9yYmlkZGVuPUVsIGFjY2VzbyBhbCByZWN1cnNvIHBlZGlkbyBoYSBzaWRvIGRlbmVnYWRvCnJlYWxtQmFzZS5oYXNSb2xlRmFpbHVyZT1FbCB1c3VhcmlvIHswfSBOTyBkZXNlbXBl8WEgZWwgcGFwZWwgZGUgezF9CnJlYWxtQmFzZS5oYXNSb2xlU3VjY2Vzcz1FbCB1c3VhcmlvIHswfSBkZXNlbXBl8WEgZWwgcGFwZWwgZGUgezF9CnJlYWxtQmFzZS5ub3RBdXRoZW50aWNhdGVkPUVycm9yIGRlIENvbmZpZ3VyYWNp8246IE5vIHNlIHB1ZWRlbiByZWFsaXphciBmdW5jaW9uZXMgZGUgY29udHJvbCBkZSBhY2Nlc28gc2luIHVuIHByaW5jaXBhbCBhdXRlbnRpZmljYWRvCnJlYWxtQmFzZS5ub3RTdGFydGVkPUVzdGUgZG9taW5pbyBh+m4gbm8gaGEgc2lkbyBpbmljaWFsaXphZG8KcmVhbG1CYXNlLmF1dGhlbnRpY2F0ZUZhaWx1cmU9Tm9tYnJlIGRlIHVzdWFyaW8gezB9IE5PIGF1dGVudGljYWRvIGNvbiDpeGl0bwpyZWFsbUJhc2UuYXV0aGVudGljYXRlU3VjY2Vzcz1Ob21icmUgZGUgdXN1YXJpbyB7MH0gYXV0ZW50aWNhZG8gY29uIOl4aXRvCnVzZXJEYXRhYmFzZVJlYWxtLmF1dGhlbnRpY2F0ZUVycm9yPUVycm9yIGRlIGNvbmZpZ3VyYWNp824gZGUgTG9naW4gYXV0ZW50aWNhbmRvIG5vbWJyZSBkZSB1c3VhcmlvIHswfQp1c2VyRGF0YWJhc2VSZWFsbS5sb29rdXA9RXhjZXBjafNuIGJ1c2NhbmRvIGVuIEJhc2UgZGUgZGF0b3MgZGUgVXN1YXJpbyBtZWRpYW50ZSBsYSBjbGF2ZSB7MH0KdXNlckRhdGFiYXNlUmVhbG0ubm9EYXRhYmFzZT1ObyBzZSBoYSBoYWxsYWRvIGNvbXBvbmVudGUgZGUgQmFzZSBkZSBkYXRvcyBkZSBVc3VhcmlvIG1lZGlhbnRlIGxhIGNsYXZlIHswfQp1c2VyRGF0YWJhc2VSZWFsbS5ub0VuZ2luZT1ObyBzZSBoYSBoYWxsYWRvIGNvbXBvbmVudGUgZGUgTW90b3IgZW4gamVyYXJxde1hIGRlIGNvbnRlbmVkb3IKdXNlckRhdGFiYXNlUmVhbG0ubm9HbG9iYWw9Tm8gc2UgaGEgaGFsbGFkbyBjb250ZXh0byBkZSByZWN1cnNvcyBnbG9iYWxlcyBKTkRJCmRhdGFTb3VyY2VSZWFsbS5hdXRoZW50aWNhdGVGYWlsdXJlPU5vbWJyZSBkZSB1c3VhcmlvIHswfSBOTyBhdXRlbnRpY2FkbyBjb24g6XhpdG8KZGF0YVNvdXJjZVJlYWxtLmF1dGhlbnRpY2F0ZVN1Y2Nlc3M9Tm9tYnJlIGRlIHVzdWFyaW8gezB9IGF1dGVudGljYWRvIGNvbiDpeGl0bwpkYXRhU291cmNlUmVhbG0uY2xvc2U9RXhjZXBjafNuIGNlcnJhbmRvIGNvbmV4afNuIGEgYmFzZSBkZSBkYXRvcwpkYXRhU291cmNlUmVhbG0uZXhjZXB0aW9uPUV4Y2VwY2nzbiByZWFsaXphbmRvIGF1dGVudGljYWNp824KZGF0YVNvdXJjZVJlYWxtLm9wZW49RXhjZXBjafNuIGFicmllbmRvIGNvbmV4afNuIGEgYmFzZSBkZSBkYXRvcwo=