Advertisement
therealinsight

BSC demopack2

Jul 15th, 2016
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 95.25 KB | None | 0 0
  1. local bundle = [[{
  2. [ "cobalt-ui/init.lua" ] = "Y3VpID0geyB9Cm9zLmxvYWRBUEkoICJjb2JhbHQtdWkvc3VyZmFjZSIgKQoKY3VpLnJvb3RzID0geyB9CmN1aS5zdHlsZXMgPSB7IH0KY3VpLmVsZW1lbnRzID0geyB9CmZvciBpLCB2IGluIHBhaXJzKCBmcy5saXN0KCAiY29iYWx0LXVpL2VsZW1lbnRzIiApICkgZG8KCWN1aS5lbGVtZW50c1t2OnN1YigxLCAjdi00KV0gPSBkb2ZpbGUoImNvYmFsdC11aS9lbGVtZW50cy8iIC4uIHYpCmVuZAoKZnVuY3Rpb24gY3VpLmxvYWRTdHlsZXMoIHBhdGggKQoJaWYgZnMuZXhpc3RzKCBwYXRoICkgdGhlbgoJCWxvY2FsIHQgPSBkb2ZpbGUocGF0aCkKCQl0YWJsZS5pbnNlcnQoIGN1aS5zdHlsZXMsIHQgKQoJCXJldHVybiB0CgllbHNlCgkJZXJyb3IoImZpbGUgIiAuLiBwYXRoIC4uICIgZG9lcyBub3QgZXhpc3QiKQoJZW5kCmVuZAoKZnVuY3Rpb24gY3VpLnVwZGF0ZSggZHQgKQoJZm9yIGksIHYgaW4gaXBhaXJzKCBjdWkucm9vdHMgKSBkbwoJCWlmIHYudXBkYXRlIHRoZW4KCQkJdjp1cGRhdGUoIGR0ICkKCQllbmQKCWVuZAplbmQKCmZ1bmN0aW9uIGN1aS5kcmF3KCkKCWZvciBpID0gI2N1aS5yb290cywgMSwgLTEgZG8KCQlpZiBjdWkucm9vdHNbaV0uZHJhdyB0aGVuIGN1aS5yb290c1tpXTpkcmF3KCkgZW5kCgllbmQKZW5kCgpmdW5jdGlvbiBjdWkubmV3KCBkYXRhICkKCXJldHVybiBjdWkuZWxlbWVudHNbInBhbmVsIl0ubmV3KCBkYXRhLCBuaWwsIHRydWUgKQplbmQKCmZ1bmN0aW9uIGN1aS5tb3VzZXByZXNzZWQoIHgsIHksIGJ1dHRvbiApCglmb3IgaSA9ICNjdWkucm9vdHMsIDEsIC0xIGRvCgkJaWYgY3VpLnJvb3RzW2ldLm1vdXNlcHJlc3NlZCB0aGVuCgkJCWlmIGN1aS5yb290c1tpXTptb3VzZXByZXNzZWQoIHgsIHksIGJ1dHRvbiApIHRoZW4gcmV0dXJuIGVuZAoJCWVuZAoJZW5kCmVuZAoKZnVuY3Rpb24gY3VpLm1vdXNlcmVsZWFzZWQoIHgsIHksIGJ1dHRvbiApCglmb3IgaSA9ICNjdWkucm9vdHMsIDEsIC0xIGRvCgkJaWYgY3VpLnJvb3RzW2ldLm1vdXNlcmVsZWFzZWQgdGhlbgoJCQlpZiBjdWkucm9vdHNbaV06bW91c2VyZWxlYXNlZCggeCwgeSwgYnV0dG9uICkgdGhlbiByZXR1cm4gZW5kCgkJZW5kCgllbmQKZW5kCgoKZnVuY3Rpb24gY3VpLmtleXByZXNzZWQoIGtleWNvZGUsIGtleSApCglmb3IgaSwgdiBpbiBpcGFpcnMoIGN1aS5yb290cyApIGRvCgkJaWYgdi5rZXlwcmVzc2VkIHRoZW4KCQkJdjprZXlwcmVzc2VkKCBrZXljb2RlLCBrZXkgKQoJCWVuZAoJZW5kCmVuZAoKZnVuY3Rpb24gY3VpLmtleXJlbGVhc2VkKCBrZXljb2RlLCBrZXkgKQoJZm9yIGksIHYgaW4gaXBhaXJzKCBjdWkucm9vdHMgKSBkbwoJCWlmIHYua2V5cmVsZWFzZWQgdGhlbgoJCQl2OmtleXJlbGVhc2VkKCBrZXljb2RlLCBrZXkgKQoJCWVuZAoJZW5kCmVuZAoKZnVuY3Rpb24gY3VpLnRleHRpbnB1dCggdCApCglmb3IgaSwgdiBpbiBpcGFpcnMoIGN1aS5yb290cyApIGRvCgkJaWYgdi50ZXh0aW5wdXQgdGhlbgoJCQlpZiB2OnRleHRpbnB1dCggdCApIHRoZW4gcmV0dXJuIGVuZAoJCWVuZAoJZW5kCmVuZAoKZnVuY3Rpb24gY3VpLm1vdXNlZHJhZyggeCwgeSApCglmb3IgaSwgdiBpbiBpcGFpcnMoIGN1aS5yb290cyApIGRvCgkJaWYgdi5tb3VzZWRyYWcgdGhlbgoJCQl2Om1vdXNlZHJhZyggeCwgeSApCgkJZW5kCgllbmQKZW5kCgoKCnJldHVybiBjdWk=",
  3. [ "cobalt-ui/elements/radio.lua" ] = "bG9jYWwgcmFkaW8gPSB7CgoJeCA9IDEsCgl5ID0gMSwKCWJhY2tDb2xvdXIgPSBjb2xvdXJzLmxpZ2h0R3JleSwKCWZvcmVDb2xvdXIgPSBjb2xvdXJzLmJsYWNrLAoJY2hhciA9ICJvIiwKCXNlbGVjdGVkID0gZmFsc2UsCglncm91cCA9ICJfTUFJTiIsCgl2aXNpYmxlID0gdHJ1ZSwKCXR5cGUgPSAicmFkaW8iLAoJbGFiZWwgPSAiQSBSYWRpbyIsCglhdXRveCA9ICIiLAoJYXV0b3kgPSAiIiwKCWF1dG9tbCA9ICIiLAoJYXV0b210ID0gIiIsCgl3cmFwID0gImxlZnQiLAoJbWFyZ2lubGVmdCA9IDAsCgltYXJnaW50b3AgPSAwLAoKfQpyYWRpby5fX2luZGV4ID0gcmFkaW8KCmZ1bmN0aW9uIHJhZGlvOmdldFBlcmNlbnRhZ2VzKCkKCWlmIHR5cGUoc2VsZi5tYXJnaW5sZWZ0KSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi5tYXJnaW5sZWZ0ID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYubWFyZ2lubGVmdCApCgkJc2VsZi5hdXRvbWwgPSAicGVyYzoiIC4uIHNlbGYubWFyZ2lubGVmdAoJZW5kCglpZiB0eXBlKHNlbGYubWFyZ2ludG9wKSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi5tYXJnaW50b3AgPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi5tYXJnaW50b3AgKQoJCXNlbGYuYXV0b210ID0gInBlcmM6IiAuLiBzZWxmLm1hcmdpbnRvcAoJZW5kCglpZiB0eXBlKHNlbGYueCkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYueCA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLnggKQoJCXNlbGYuYXV0b3ggPSAicGVyYzoiIC4uIHNlbGYueAoJZW5kCglpZiB0eXBlKHNlbGYueSkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYueSA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLnkgKQoJCXNlbGYuYXV0b3kgPSAicGVyYzoiIC4uIHNlbGYueQoJZW5kCmVuZAoKZnVuY3Rpb24gcmFkaW8ubmV3KCBkYXRhLCBwYXJlbnQgKQoJZGF0YSA9IGRhdGEgb3IgeyB9CglpZiBkYXRhLnN0eWxlIHRoZW4KCQlsb2NhbCB0ID0gZGF0YS5zdHlsZQoJCWZvciBrLCB2IGluIHBhaXJzKCB0ICkgZG8KCQkJaWYgbm90IGRhdGFba10gdGhlbgoJCQkJZGF0YVtrXSA9IHYKCQkJZW5kCgkJZW5kCgkJZGF0YS5zdHlsZSA9IG5pbAoJZW5kCglsb2NhbCBzZWxmID0gc2V0bWV0YXRhYmxlKGRhdGEscmFkaW8pCglpZiBub3Qgc2VsZi52YWwgdGhlbiBzZWxmLnZhbCA9IHNlbGYubGFiZWwgZW5kCglzZWxmLnBhcmVudCA9IHBhcmVudAoJc2VsZjpnZXRQZXJjZW50YWdlcygpCglzZWxmOnJlc2l6ZSgpCglzZWxmLnN0YXRlID0gZGF0YS5zdGF0ZSBvciBwYXJlbnQuc3RhdGUKCXRhYmxlLmluc2VydCggcGFyZW50LmNoaWxkcmVuLCBzZWxmICkKCXJldHVybiBzZWxmCmVuZAoKZnVuY3Rpb24gcmFkaW86Z2V0QWJzWCgpCglyZXR1cm4gc2VsZi54ICsgc2VsZi5wYXJlbnQ6Z2V0QWJzWCgpLTEgKyBzZWxmLm1hcmdpbmxlZnQKZW5kCgpmdW5jdGlvbiByYWRpbzpnZXRBYnNZKCkKCXJldHVybiBzZWxmLnkgKyBzZWxmLnBhcmVudDpnZXRBYnNZKCktMSArIHNlbGYubWFyZ2ludG9wCmVuZAoKZnVuY3Rpb24gcmFkaW86ZHJhdygpCglzZWxmLncgPSAjc2VsZi5sYWJlbCArIDIKCWlmIHNlbGYud3JhcCA9PSAiY2VudGVyIiB0aGVuCgkJc2VsZi54ID0gbWF0aC5jZWlsKCBzZWxmLnBhcmVudC53LzIgLSBzZWxmLncvMiApICsgc2VsZi5tYXJnaW5sZWZ0CgllbmQKCWlmIHNlbGYuc3RhdGUgPT0gY29iYWx0LnN0YXRlIG9yIHNlbGYuc3RhdGUgPT0gIl9BTEwiIGFuZCBzZWxmLnZpc2libGUgdGhlbgoJCWxvY2FsIGNoYXIgPSAiICIKCQlpZiBzZWxmLnNlbGVjdGVkIHRoZW4KCQkJY2hhciA9IHNlbGYuY2hhcgoJCWVuZAoJCXNlbGYucGFyZW50LnN1cmY6ZHJhd1BpeGVsKCBtYXRoLmNlaWwoc2VsZi54ICsgc2VsZi5tYXJnaW5sZWZ0KSwgbWF0aC5jZWlsKHNlbGYueSArIHNlbGYubWFyZ2ludG9wKSwgY2hhciwgc2VsZi5iYWNrQ29sb3VyLCBzZWxmLmZvcmVDb2xvdXIgKQoJCXNlbGYucGFyZW50LnN1cmY6ZHJhd1RleHQoIG1hdGguY2VpbChzZWxmLngrMiArIHNlbGYubWFyZ2lubGVmdCksIG1hdGguY2VpbChzZWxmLnkgKyBzZWxmLm1hcmdpbnRvcCksIHNlbGYubGFiZWwsIG5pbCwgc2VsZi5mb3JlQ29sb3VyICkKCWVuZAplbmQKCmZ1bmN0aW9uIHJhZGlvOnNldE1hcmdpbnMoIHQsIHIsIGIsIGwgKQoJaWYgdCB0aGVuCgkJc2VsZi5tYXJnaW50b3AgPSB0IG9yIHNlbGYubWFyZ2ludG9wCgkJaWYgdHlwZSh0KSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvbXQgPSAibm9uZSIKCQllbmQKCWVuZAoJaWYgciB0aGVuCgkJc2VsZi5tYXJnaW5yaWdodCA9IHIgb3Igc2VsZi5tYXJnaW5yaWdodAoJCWlmIHR5cGUocikgPT0gInN0cmluZyIgdGhlbgoJCQlzZWxmOmdldFBlcmNlbnRhZ2VzKCkKCQllbHNlCgkJCXNlbGYuYXV0b21yID0gIm5vbmUiCgkJZW5kCgllbmQKCWlmIGIgdGhlbgoJCXNlbGYubWFyZ2ludG9wID0gYiBvciBzZWxmLm1hcmdpbnRvcAoJCWlmIHR5cGUoYikgPT0gInN0cmluZyIgdGhlbgoJCQlzZWxmOmdldFBlcmNlbnRhZ2VzKCkKCQllbHNlCgkJCXNlbGYuYXV0b21iID0gIm5vbmUiCgkJZW5kCgllbmQKCWlmIGwgdGhlbgoJCXNlbGYubWFyZ2lubGVmdCA9IGwgb3Igc2VsZi5tYXJnaW5sZWZ0CgkJaWYgdHlwZShsKSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvbWwgPSAibm9uZSIKCQllbmQKCWVuZAoJc2VsZjpyZXNpemUoKQplbmQKCmZ1bmN0aW9uIHJhZGlvOnJlc2l6ZSgpCglpZiBzZWxmLmF1dG9tbDpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG9tbDptYXRjaCgicGVyYzooJWQrKSIpCgkJc2VsZi5tYXJnaW5sZWZ0ID0gbWF0aC5mbG9vciggc2VsZi5wYXJlbnQudyAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCglpZiBzZWxmLmF1dG9tdDpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG9tdDptYXRjaCgicGVyYzooJWQrKSIpCgkJc2VsZi5tYXJnaW50b3AgPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC5oICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgllbmQKCWlmIHNlbGYuYXV0b3ggYW5kIHNlbGYuYXV0b3g6c3ViKCAxLCA0ICkgPT0gInBlcmMiIHRoZW4KCQlsb2NhbCBwZXJjID0gc2VsZi5hdXRveDptYXRjaCgicGVyYzooJWQrKSIpCgkJc2VsZi54ID0gbWF0aC5mbG9vciggc2VsZi5wYXJlbnQudyAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCglpZiBzZWxmLmF1dG95IGFuZCBzZWxmLmF1dG95OnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b3k6bWF0Y2goInBlcmM6KCVkKykiKQoJCXNlbGYueSA9IG1hdGguZmxvb3IoIHNlbGYucGFyZW50LmggKiBjb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApICkKCWVuZAplbmQKCmZ1bmN0aW9uIHJhZGlvOm1vdXNlcHJlc3NlZCggeCwgeSwgYnV0dG9uICkKCWlmIHNlbGYuc3RhdGUgPT0gY29iYWx0LnN0YXRlIG9yIHNlbGYuc3RhdGUgPT0gIl9BTEwiIGFuZCBzZWxmLnZpc2libGUgdGhlbgoJCWlmIGJ1dHRvbiA9PSAxIGFuZCB4ID09IHNlbGY6Z2V0QWJzWCgpIGFuZCB5ID09IHNlbGY6Z2V0QWJzWSgpIHRoZW4KCgkJZW5kCgllbHNlCgkJc2VsZi5zZWxlY3RlZCA9IGZhbHNlCgllbmQKZW5kCgpmdW5jdGlvbiByYWRpbzptb3VzZXJlbGVhc2VkKCB4LCB5LCBidXR0b24gKQoJaWYgc2VsZi5zdGF0ZSA9PSBjb2JhbHQuc3RhdGUgb3Igc2VsZi5zdGF0ZSA9PSAiX0FMTCIgYW5kIHNlbGYudmlzaWJsZSB0aGVuCgkJaWYgYnV0dG9uID09IDEgYW5kIHggPT0gc2VsZjpnZXRBYnNYKCkgYW5kIHkgPT0gc2VsZjpnZXRBYnNZKCkgdGhlbgoJCQlzZWxmLnNlbGVjdGVkID0gdHJ1ZQoJCQlmb3IgaywgdiBpbiBwYWlycyggc2VsZi5wYXJlbnQuY2hpbGRyZW4gKSBkbwoJCQkJaWYgdi50eXBlIGFuZCB2LnR5cGUgPT0gInJhZGlvIiBhbmQgdiB+PSBzZWxmIHRoZW4KCQkJCQlpZiB2Lmdyb3VwID09IHNlbGYuZ3JvdXAgdGhlbgoJCQkJCQl2LnNlbGVjdGVkID0gZmFsc2UKCQkJCQllbmQKCQkJCWVuZAoJCQllbmQKCQllbmQKCWVsc2UKCQlzZWxmLnNlbGVjdGVkID0gZmFsc2UKCWVuZAplbmQKCnJldHVybiByYWRpbw==",
  4. [ "cobalt-ui/elements/checkbox.lua" ] = "bG9jYWwgY2hlY2tib3ggPSB7CgoJeCA9IDEsCgl5ID0gMSwKCWJhY2tDb2xvdXIgPSBjb2xvdXJzLmxpZ2h0R3JleSwKCWZvcmVDb2xvdXIgPSBjb2xvdXJzLmJsYWNrLAoJY2hhciA9ICJ4IiwKCXNlbGVjdGVkID0gZmFsc2UsCglncm91cCA9ICJfTUFJTiIsCgl2aXNpYmxlID0gdHJ1ZSwKCWxhYmVsID0gIkEgQ2hlY2tib3giLAoJdHlwZSA9ICJjaGVja2JveCIsCglhdXRvbWwgPSAiIiwKCWF1dG9tdCA9ICIiLAoJYXV0b3ggPSAiIiwKCWF1dG95ID0gIiIsCgl3cmFwID0gImxlZnQiLAoJbWFyZ2lubGVmdCA9IDAsCgltYXJnaW50b3AgPSAwLAoKfQpjaGVja2JveC5fX2luZGV4ID0gY2hlY2tib3gKCmZ1bmN0aW9uIGNoZWNrYm94OmdldFBlcmNlbnRhZ2VzKCkKCWlmIHR5cGUoc2VsZi5tYXJnaW5sZWZ0KSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi5tYXJnaW5sZWZ0ID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYubWFyZ2lubGVmdCApCgkJc2VsZi5hdXRvbWwgPSAicGVyYzoiIC4uIHNlbGYubWFyZ2lubGVmdAoJZW5kCglpZiB0eXBlKHNlbGYubWFyZ2ludG9wKSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi5tYXJnaW50b3AgPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi5tYXJnaW50b3AgKQoJCXNlbGYuYXV0b210ID0gInBlcmM6IiAuLiBzZWxmLm1hcmdpbnRvcAoJZW5kCglpZiB0eXBlKHNlbGYueCkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYueCA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLnggKQoJCXNlbGYuYXV0b3ggPSAicGVyYzoiIC4uIHNlbGYueAoJZW5kCglpZiB0eXBlKHNlbGYueSkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYueSA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLnkgKQoJCXNlbGYuYXV0b3kgPSAicGVyYzoiIC4uIHNlbGYueQoJZW5kCmVuZAoKZnVuY3Rpb24gY2hlY2tib3gubmV3KCBkYXRhLCBwYXJlbnQgKQoJZGF0YSA9IGRhdGEgb3IgeyB9CglpZiBkYXRhLnN0eWxlIHRoZW4KCQlsb2NhbCB0ID0gZGF0YS5zdHlsZQoJCWZvciBrLCB2IGluIHBhaXJzKCB0ICkgZG8KCQkJaWYgbm90IGRhdGFba10gdGhlbgoJCQkJZGF0YVtrXSA9IHYKCQkJZW5kCgkJZW5kCgkJZGF0YS5zdHlsZSA9IG5pbAoJZW5kCglsb2NhbCBzZWxmID0gc2V0bWV0YXRhYmxlKGRhdGEsY2hlY2tib3gpCglpZiBub3Qgc2VsZi52YWwgdGhlbiBzZWxmLnZhbCA9IHNlbGYubGFiZWwgZW5kCglzZWxmLncgPSAjc2VsZi5sYWJlbCArIDIKCXNlbGYucGFyZW50ID0gcGFyZW50CglzZWxmOmdldFBlcmNlbnRhZ2VzKCkKCXNlbGY6cmVzaXplKCkKCXNlbGYuc3RhdGUgPSBkYXRhLnN0YXRlIG9yIHBhcmVudC5zdGF0ZQoJdGFibGUuaW5zZXJ0KCBwYXJlbnQuY2hpbGRyZW4sIHNlbGYgKQoJcmV0dXJuIHNlbGYKZW5kCgpmdW5jdGlvbiBjaGVja2JveDpzZXRNYXJnaW5zKCB0LCByLCBiLCBsICkKCWlmIHQgdGhlbgoJCXNlbGYubWFyZ2ludG9wID0gdCBvciBzZWxmLm1hcmdpbnRvcAoJCWlmIHR5cGUodCkgPT0gInN0cmluZyIgdGhlbgoJCQlzZWxmOmdldFBlcmNlbnRhZ2VzKCkKCQllbHNlCgkJCXNlbGYuYXV0b210ID0gIm5vbmUiCgkJZW5kCgllbmQKCWlmIHIgdGhlbgoJCXNlbGYubWFyZ2lucmlnaHQgPSByIG9yIHNlbGYubWFyZ2lucmlnaHQKCQlpZiB0eXBlKHIpID09ICJzdHJpbmciIHRoZW4KCQkJc2VsZjpnZXRQZXJjZW50YWdlcygpCgkJZWxzZQoJCQlzZWxmLmF1dG9tciA9ICJub25lIgoJCWVuZAoJZW5kCglpZiBiIHRoZW4KCQlzZWxmLm1hcmdpbnRvcCA9IGIgb3Igc2VsZi5tYXJnaW50b3AKCQlpZiB0eXBlKGIpID09ICJzdHJpbmciIHRoZW4KCQkJc2VsZjpnZXRQZXJjZW50YWdlcygpCgkJZWxzZQoJCQlzZWxmLmF1dG9tYiA9ICJub25lIgoJCWVuZAoJZW5kCglpZiBsIHRoZW4KCQlzZWxmLm1hcmdpbmxlZnQgPSBsIG9yIHNlbGYubWFyZ2lubGVmdAoJCWlmIHR5cGUobCkgPT0gInN0cmluZyIgdGhlbgoJCQlzZWxmOmdldFBlcmNlbnRhZ2VzKCkKCQllbHNlCgkJCXNlbGYuYXV0b21sID0gIm5vbmUiCgkJZW5kCgllbmQKCXNlbGY6cmVzaXplKCkKZW5kCgpmdW5jdGlvbiBjaGVja2JveDpyZXNpemUoKQoJaWYgc2VsZi5hdXRvbWw6c3ViKCAxLCA0ICkgPT0gInBlcmMiIHRoZW4KCQlsb2NhbCBwZXJjID0gc2VsZi5hdXRvbWw6bWF0Y2goInBlcmM6KCVkKykiKQoJCXNlbGYubWFyZ2lubGVmdCA9IG1hdGguZmxvb3IoIHNlbGYucGFyZW50LncgKiBjb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApICkKCWVuZAoJaWYgc2VsZi5hdXRvbXQ6c3ViKCAxLCA0ICkgPT0gInBlcmMiIHRoZW4KCQlsb2NhbCBwZXJjID0gc2VsZi5hdXRvbXQ6bWF0Y2goInBlcmM6KCVkKykiKQoJCXNlbGYubWFyZ2ludG9wID0gbWF0aC5mbG9vciggc2VsZi5wYXJlbnQuaCAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCglpZiBzZWxmLmF1dG94IGFuZCBzZWxmLmF1dG94OnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b3g6bWF0Y2goInBlcmM6KCVkKykiKQoJCXNlbGYueCA9IG1hdGguZmxvb3IoIHNlbGYucGFyZW50LncgKiBjb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApICkKCWVuZAoJaWYgc2VsZi5hdXRveSBhbmQgc2VsZi5hdXRveTpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG95Om1hdGNoKCJwZXJjOiglZCspIikKCQlzZWxmLnkgPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC5oICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgllbmQKZW5kCgpmdW5jdGlvbiBjaGVja2JveDpnZXRBYnNYKCkKCXJldHVybiBzZWxmLnggKyBzZWxmLnBhcmVudDpnZXRBYnNYKCkgLSAxICsgc2VsZi5tYXJnaW5sZWZ0CmVuZAoKZnVuY3Rpb24gY2hlY2tib3g6Z2V0QWJzWSgpCglyZXR1cm4gc2VsZi55ICsgc2VsZi5wYXJlbnQ6Z2V0QWJzWSgpIC0gMSArIHNlbGYubWFyZ2ludG9wCmVuZAoKZnVuY3Rpb24gY2hlY2tib3g6ZHJhdygpCglzZWxmLncgPSAjc2VsZi5sYWJlbCArIDIKCWlmIHNlbGYud3JhcCA9PSAiY2VudGVyIiB0aGVuCgkJc2VsZi54ID0gbWF0aC5jZWlsKCBzZWxmLnBhcmVudC53LzIgLSBzZWxmLncvMiApICsgc2VsZi5tYXJnaW5sZWZ0CgllbmQKCWlmIHNlbGYuc3RhdGUgPT0gY29iYWx0LnN0YXRlIG9yIHNlbGYuc3RhdGUgPT0gIl9BTEwiIGFuZCBzZWxmLnZpc2libGUgdGhlbgoJCWxvY2FsIGNoYXIgPSAiICIKCQlpZiBzZWxmLnNlbGVjdGVkIHRoZW4KCQkJY2hhciA9IHNlbGYuY2hhcgoJCWVuZAoJCXNlbGYucGFyZW50LnN1cmY6ZHJhd1BpeGVsKCBtYXRoLmNlaWwoc2VsZi54ICsgc2VsZi5tYXJnaW5sZWZ0KSwgbWF0aC5jZWlsKHNlbGYueSArIHNlbGYubWFyZ2ludG9wKSwgY2hhciwgc2VsZi5iYWNrQ29sb3VyLCBzZWxmLmZvcmVDb2xvdXIgKQoJCXNlbGYucGFyZW50LnN1cmY6ZHJhd1RleHQoIG1hdGguY2VpbChzZWxmLngrMiArIHNlbGYubWFyZ2lubGVmdCksIG1hdGguY2VpbChzZWxmLnkrIHNlbGYubWFyZ2ludG9wKSwgc2VsZi5sYWJlbCwgbmlsLCBzZWxmLmZvcmVDb2xvdXIgKQoJZW5kCmVuZAoKZnVuY3Rpb24gY2hlY2tib3g6bW91c2VwcmVzc2VkKCB4LCB5LCBidXR0b24gKQoJaWYgc2VsZi5zdGF0ZSA9PSBjb2JhbHQuc3RhdGUgb3Igc2VsZi5zdGF0ZSA9PSAiX0FMTCIgYW5kIHNlbGYudmlzaWJsZSB0aGVuCgkJaWYgYnV0dG9uID09IDEgYW5kIHggPj0gc2VsZjpnZXRBYnNYKCkgYW5kIHggPD0gc2VsZjpnZXRBYnNYKCkgKyBzZWxmLncgYW5kIHkgPT0gc2VsZjpnZXRBYnNZKCkgdGhlbgoKCQllbmQKCWVsc2UKCQlzZWxmLnNlbGVjdGVkID0gZmFsc2UKCWVuZAplbmQKCmZ1bmN0aW9uIGNoZWNrYm94Om1vdXNlcmVsZWFzZWQoIHgsIHksIGJ1dHRvbiApCglpZiBzZWxmLnN0YXRlID09IGNvYmFsdC5zdGF0ZSBvciBzZWxmLnN0YXRlID09ICJfQUxMIiBhbmQgc2VsZi52aXNpYmxlIHRoZW4KCQlpZiBidXR0b24gPT0gMSBhbmQgeCA9PSBzZWxmOmdldEFic1goKSBhbmQgeSA9PSBzZWxmOmdldEFic1koKSB0aGVuCgkJCXNlbGYuc2VsZWN0ZWQgPSBub3Qgc2VsZi5zZWxlY3RlZAoJCWVuZAoJZWxzZQoJCXNlbGYuc2VsZWN0ZWQgPSBmYWxzZQoJZW5kCmVuZAoKcmV0dXJuIGNoZWNrYm94",
  5. [ "cobalt-ui/elements/text.lua" ] = "bG9jYWwgdGV4dCA9IHsKCXggPSAwLAoJeSA9IDEsCgl0ZXh0ID0gIlNvbWUgVGV4dCIsCgl1bmZvcm1hdHRlZCA9ICJTb21lIFRleHQiLAoJZm9yZUNvbG91ciA9IGNvbG91cnMuYmxhY2ssCgl0eXBlID0gInRleHQiLAoJYXV0b2ZpdCA9IHRydWUsCgltYXJnaW5sZWZ0ID0gMCwKCW1hcmdpbnJpZ2h0ID0gMCwKCW1hcmdpbnRvcCA9IDAsCgltYXJnaW5ib3R0b20gPSAwLAoJYXV0b21sID0gIiIsCglhdXRvbXIgPSAiIiwKCWF1dG9tdCA9ICIiLAoJYXV0b21iID0gIiIsCgl3cmFwID0gImxlZnQiLAoJYXV0b3cgPSAicGFyZW50IiwKCWF1dG9oID0gdHJ1ZSwKfQp0ZXh0Ll9faW5kZXggPSB0ZXh0Cgpsb2NhbCBmdW5jdGlvbiBzcGxpdEJ5U3BhY2UoIHRleHQgKQoJbG9jYWwgdCA9IHsgfQoJZm9yIGkgaW4gc3RyaW5nLmdtYXRjaCggdGV4dCwgIiVTKyIgKSBkbwoJCXRbI3QrMV0gPSBpCgllbmQKCXJldHVybiB0CmVuZAoKbG9jYWwgZnVuY3Rpb24gZm9ybWF0VGV4dCggdGV4dCwgdyApCglsb2NhbCB0ID0gc3BsaXRCeVNwYWNlKCB0ZXh0ICkKCWxvY2FsIGxpbmVzID0ge1sxXSA9ICIifQoJbG9jYWwgbGluZSA9IDEKCWZvciBpPTEsICN0IGRvCgkJaWYgI3Rvc3RyaW5nKGxpbmVzW2xpbmVdLi4iICIuLnRbaV0pID4gdyB0aGVuCgkJCWxpbmVzW2xpbmVdID0gbGluZXNbbGluZV0gLi4gIlxuIgoJCQlsaW5lID0gbGluZSArIDEKCQkJbGluZXNbbGluZV0gPSAiICIgLi4gdFtpXQoJCWVsc2UKCQkJbGluZXNbbGluZV0gPSBsaW5lc1tsaW5lXSAuLiAiICIgLi4gdFtpXQoJCWVuZAoJZW5kCglyZXR1cm4gbGluZXMKZW5kCgpmdW5jdGlvbiB0ZXh0OmdldFBlcmNlbnRhZ2VzKCkKCWlmIHR5cGUoc2VsZi53KSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi53ID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYudyApCgkJc2VsZi5hdXRvdyA9ICJwZXJjOiIgLi4gc2VsZi53CgllbHNlCgkJc2VsZi5hdXRvdyA9ICJub25lIgoJZW5kCglpZiB0eXBlKHNlbGYuaCkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYuaCA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLmggKQoJCXNlbGYuYXV0b2ggPSAicGVyYzoiIC4uIHNlbGYuaAoJZWxzZQoJCXNlbGYuYXV0b2ggPSAibm9uZSIKCWVuZAoKCWlmIHR5cGUoc2VsZi5tYXJnaW5sZWZ0KSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi5tYXJnaW5sZWZ0ID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYubWFyZ2lubGVmdCApCgkJc2VsZi5hdXRvbWwgPSAicGVyYzoiIC4uIHNlbGYubWFyZ2lubGVmdAoJZW5kCglpZiB0eXBlKHNlbGYubWFyZ2lucmlnaHQpID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLm1hcmdpbnJpZ2h0ID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYubWFyZ2lucmlnaHQgKQoJCXNlbGYuYXV0b21yID0gInBlcmM6IiAuLiBzZWxmLm1hcmdpbnJpZ2h0CgllbmQKCWlmIHR5cGUoc2VsZi5tYXJnaW50b3ApID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLm1hcmdpbnRvcCA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLm1hcmdpbnRvcCApCgkJc2VsZi5hdXRvbXQgPSAicGVyYzoiIC4uIHNlbGYubWFyZ2ludG9wCgllbmQKCWlmIHR5cGUoc2VsZi5tYXJnaW5ib3R0b20pID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLm1hcmdpbmJvdHRvbSA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLm1hcmdpbmJvdHRvbSApCgkJc2VsZi5hdXRvbWwgPSAicGVyYzoiIC4uIHNlbGYubWFyZ2luYm90dG9tCgllbmQKCWlmIHR5cGUoc2VsZi54KSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi54ID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYueCApCgkJc2VsZi5hdXRveCA9ICJwZXJjOiIgLi4gc2VsZi54CgllbmQKCWlmIHR5cGUoc2VsZi55KSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi55ID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYueSApCgkJc2VsZi5hdXRveSA9ICJwZXJjOiIgLi4gc2VsZi55CgllbmQKZW5kCgpmdW5jdGlvbiB0ZXh0Lm5ldyggZGF0YSwgcGFyZW50ICkKCWRhdGEgPSBkYXRhIG9yIHsgfQoJaWYgZGF0YS5zdHlsZSB0aGVuCgkJbG9jYWwgdCA9IGRhdGEuc3R5bGUKCQlmb3IgaywgdiBpbiBwYWlycyggdCApIGRvCgkJCWlmIG5vdCBkYXRhW2tdIHRoZW4KCQkJCWRhdGFba10gPSB2CgkJCWVuZAoJCWVuZAoJCWRhdGEuc3R5bGUgPSBuaWwKCWVuZAoJbG9jYWwgc2VsZiA9IHNldG1ldGF0YWJsZShkYXRhLHRleHQpCgoJc2VsZi5wYXJlbnQgPSBwYXJlbnQKCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJaWYgc2VsZi50ZXh0IHRoZW4gc2VsZi51bmZvcm1hdHRlZCA9IHNlbGYudGV4dDsgc2VsZi50ZXh0ID0gZm9ybWF0VGV4dCggc2VsZi51bmZvcm1hdHRlZCwgc2VsZi53IG9yIHNlbGYucGFyZW50LncgKSBlbmQKCXNlbGY6cmVzaXplKCkKCXNlbGYuYmFja0NvbG91ciA9IGRhdGEuYmFja0NvbG91ciBvciBwYXJlbnQuYmFja0NvbG91cgoJc2VsZi5zdGF0ZSA9IGRhdGEuc3RhdGUgb3IgcGFyZW50LnN0YXRlCgl0YWJsZS5pbnNlcnQoIHBhcmVudC5jaGlsZHJlbiwgc2VsZiApCglyZXR1cm4gc2VsZgplbmQKCmZ1bmN0aW9uIHRleHQ6c2V0TWFyZ2lucyggdCwgciwgYiwgbCApCglpZiB0IHRoZW4KCQlzZWxmLm1hcmdpbnRvcCA9IHQgb3Igc2VsZi5tYXJnaW50b3AKCQlpZiB0eXBlKHQpID09ICJzdHJpbmciIHRoZW4KCQkJc2VsZjpnZXRQZXJjZW50YWdlcygpCgkJZWxzZQoJCQlzZWxmLmF1dG9tdCA9ICJub25lIgoJCWVuZAoJZW5kCglpZiByIHRoZW4KCQlzZWxmLm1hcmdpbnJpZ2h0ID0gciBvciBzZWxmLm1hcmdpbnJpZ2h0CgkJaWYgdHlwZShyKSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvbXIgPSAibm9uZSIKCQllbmQKCWVuZAoJaWYgYiB0aGVuCgkJc2VsZi5tYXJnaW50b3AgPSBiIG9yIHNlbGYubWFyZ2ludG9wCgkJaWYgdHlwZShiKSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvbWIgPSAibm9uZSIKCQllbmQKCWVuZAoJaWYgbCB0aGVuCgkJc2VsZi5tYXJnaW5sZWZ0ID0gbCBvciBzZWxmLm1hcmdpbmxlZnQKCQlpZiB0eXBlKGwpID09ICJzdHJpbmciIHRoZW4KCQkJc2VsZjpnZXRQZXJjZW50YWdlcygpCgkJZWxzZQoJCQlzZWxmLmF1dG9tbCA9ICJub25lIgoJCWVuZAoJZW5kCglzZWxmOnJlc2l6ZSgpCmVuZAoKZnVuY3Rpb24gdGV4dDpyZXNpemUoKQoJaWYgc2VsZi5hdXRvdz09InBhcmVudCIgdGhlbgoJCXNlbGYudyA9IHNlbGYucGFyZW50LncKCWVsc2VpZiBzZWxmLmF1dG93OnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b3c6bWF0Y2goInBlcmM6KCVkKykiKQoJCXNlbGYudyA9IG1hdGguY2VpbCggc2VsZi5wYXJlbnQudyAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCglpZiBzZWxmLmF1dG9tbDpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG9tbDptYXRjaCgicGVyYzooJWQrKSIpCgkJc2VsZi5tYXJnaW5sZWZ0ID0gbWF0aC5mbG9vciggc2VsZi5wYXJlbnQudyAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCglpZiBzZWxmLmF1dG9tcjpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG9tcjptYXRjaCgicGVyYzooJWQrKSIpCgkJc2VsZi5tYXJnaW5yaWdodCA9IG1hdGguY2VpbCggc2VsZi5wYXJlbnQudyAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCglpZiBzZWxmLmF1dG9tdDpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG9tdDptYXRjaCgicGVyYzooJWQrKSIpCgkJc2VsZi5tYXJnaW50b3AgPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC5oICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgllbmQKCWlmIHNlbGYuYXV0b21iOnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b21iOm1hdGNoKCJwZXJjOiglZCspIikKCQlzZWxmLm1hcmdpbmJvdHRvbSA9IG1hdGguY2VpbCggc2VsZi5wYXJlbnQuaCAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCglpZiBzZWxmLmF1dG94IGFuZCBzZWxmLmF1dG94OnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b3g6bWF0Y2goInBlcmM6KCVkKykiKQoJCXNlbGYueCA9IG1hdGguY2VpbCggc2VsZi5wYXJlbnQudyAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCglpZiBzZWxmLmF1dG95IGFuZCBzZWxmLmF1dG95OnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b3k6bWF0Y2goInBlcmM6KCVkKykiKQoJCXNlbGYueSA9IG1hdGguY2VpbCggc2VsZi5wYXJlbnQuaCAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCglzZWxmLnRleHQgPSBmb3JtYXRUZXh0KCBzZWxmLnVuZm9ybWF0dGVkLCBzZWxmLncgb3Igc2VsZi5wYXJlbnQudyApCmVuZAoKZnVuY3Rpb24gdGV4dDpnZXRBYnNYKCkKCXJldHVybiBzZWxmLnggKyBzZWxmLnBhcmVudDpnZXRBYnNYKCktMQplbmQKCmZ1bmN0aW9uIHRleHQ6Z2V0QWJzWSgpCglyZXR1cm4gc2VsZi55ICsgc2VsZi5wYXJlbnQ6Z2V0QWJzWSgpLTEKZW5kCgpmdW5jdGlvbiB0ZXh0OmRyYXcoKQoJaWYgdHlwZShzZWxmLnRleHQpID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLnVuZm9ybWF0dGVkID0gc2VsZi50ZXh0CgkJc2VsZi50ZXh0ID0gZm9ybWF0VGV4dCggc2VsZi51bmZvcm1hdHRlZCwgc2VsZi53IG9yIHNlbGYucGFyZW50LncgKQoJZW5kCglpZiBzZWxmLnN0YXRlID09IGNvYmFsdC5zdGF0ZSBvciBzZWxmLnN0YXRlID09ICJfQUxMIiB0aGVuCgkJaWYgc2VsZi53cmFwID09ICJyaWdodCIgdGhlbgoJCQlmb3IgaSA9IDEsICNzZWxmLnRleHQgZG8KCQkJCXNlbGYucGFyZW50LnN1cmY6ZHJhd1RleHQoKCNzZWxmLnRleHRbaV0tc2VsZi54KzEpIC0gbWF0aC5mbG9vciggI3NlbGYudGV4dFtpXSApK21hdGguY2VpbCggc2VsZi5tYXJnaW5yaWdodCApLCBzZWxmLnkgKyAoaS0xKStzZWxmLm1hcmdpbnRvcCwgc2VsZi50ZXh0W2ldLCBzZWxmLmJhY2tDb2xvdXIsIHNlbGYuZm9yZUNvbG91ciApCgkJCWVuZAoJCWVsc2VpZiBzZWxmLndyYXAgPT0gImNlbnRlciIgdGhlbgoJCQlmb3IgaSA9IDEsICNzZWxmLnRleHQgZG8KCQkJCXNlbGYucGFyZW50LnN1cmY6ZHJhd1RleHQoIG1hdGguY2VpbCggc2VsZi5wYXJlbnQudy8yLSAjc2VsZi50ZXh0W2ldLzIgKSttYXRoLmNlaWwoIHNlbGYubWFyZ2lubGVmdCksIHNlbGYueSArIChpLTEpICsgc2VsZi5tYXJnaW50b3AsIHNlbGYudGV4dFtpXSwgc2VsZi5iYWNrQ29sb3VyLCBzZWxmLmZvcmVDb2xvdXIgKQoJCQllbmQKCQllbHNlCgkJCWZvciBpID0gMSwgI3NlbGYudGV4dCBkbwoJCQkJc2VsZi5wYXJlbnQuc3VyZjpkcmF3VGV4dCggc2VsZi54ICsgbWF0aC5jZWlsKHNlbGYubWFyZ2lubGVmdCksIHNlbGYueSArIChpLTEpICsgc2VsZi5tYXJnaW50b3AsIHNlbGYudGV4dFtpXSwgc2VsZi5iYWNrQ29sb3VyLCBzZWxmLmZvcmVDb2xvdXIgKQoJCQllbmQKCQllbmQKCWVuZAplbmQKCnJldHVybiB0ZXh0",
  6. [ "cobalt-ui/surface" ] = "LS0gU3VyZmFjZSBBUEkgdmVyc2lvbiAxLjYuMiBieSBDcmF6ZWRQcm9ncmFtbWVyCi0tIFlvdSBjYW4gZmluZCBpbmZvIGFuZCBkb2N1bWVudGF0aW9uIG9uIHRoZXNlIHBhZ2VzOgotLSBodHRwOi8vY3AubXNkZXYubmwvY29tcHV0ZXJjcmFmdC9zdXJmYWNlLWFwaS8gb3IgaHR0cDovL3d3dy5jb21wdXRlcmNyYWZ0LmluZm8vZm9ydW1zMi9pbmRleC5waHA/L3RvcGljLzIyMzk3LXN1cmZhY2UtYXBpLwotLSBZb3UgbWF5IHVzZSB0aGlzIGluIHlvdXIgQ29tcHV0ZXJDcmFmdCBwcm9ncmFtcyBhbmQgbW9kaWZ5IGl0IHdpdGhvdXQgYXNraW5nLgotLSBIb3dldmVyLCB5b3UgbWF5IG5vdCBwdWJsaXNoIHRoaXMgQVBJIHVuZGVyIHlvdXIgbmFtZSB3aXRob3V0IGFza2luZyBtZS4KLS0gSWYgeW91IGhhdmUgYW55IHN1Z2dlc3Rpb25zLCBidWcgcmVwb3J0cyBvciBxdWVzdGlvbnMgdGhlbiBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0bzoKLS0gY3JhemVkcHJvZ3JhbW1lckBnbWFpbC5jb20KdmVyc2lvbiA9ICIxLjYuMiIKCmxvY2FsIG1hdGhfZmxvb3IsIG1hdGhfY29zLCBtYXRoX3NpbiwgdGFibGVfY29uY2F0LCBfY29sb3JzID0gbWF0aC5mbG9vciwgbWF0aC5jb3MsIG1hdGguc2luLCB0YWJsZS5jb25jYXQsIHtbMV0gPSAiMCIsIFsyXSA9ICIxIiwgWzRdID0gIjIiLCBbOF0gPSAiMyIsIFsxNl0gPSAiNCIsIFszMl0gPSAiNSIsIFs2NF0gPSAiNiIsIFsxMjhdID0gIjciLCBbMjU2XSA9ICI4IiwgWzUxMl0gPSAiOSIsIFsxMDI0XSA9ICJhIiwgWzIwNDhdID0gImIiLCBbNDA5Nl0gPSAiYyIsIFs4MTkyXSA9ICJkIiwgWzE2Mzg0XSA9ICJlIiwgWzMyNzY4XSA9ICJmIn0KCmxvY2FsIGZ1bmN0aW9uIF9idWZmZXJMaW5lKGJ1ZmZlciwgd2lkdGgsIHgxLCB5MSwgeDIsIHkyKQoJbG9jYWwgZGVsdGFfeCA9IHgyIC0geDEKCWxvY2FsIGl4ID0gZGVsdGFfeCA+IDAgYW5kIDEgb3IgLTEKCWRlbHRhX3ggPSAyICogbWF0aC5hYnMoZGVsdGFfeCkKCWxvY2FsIGRlbHRhX3kgPSB5MiAtIHkxCglsb2NhbCBpeSA9IGRlbHRhX3kgPiAwIGFuZCAxIG9yIC0xCglkZWx0YV95ID0gMiAqIG1hdGguYWJzKGRlbHRhX3kpCglidWZmZXJbKHkxIC0gMSkgKiB3aWR0aCArIHgxXSA9IHRydWUKCWlmIGRlbHRhX3ggPj0gZGVsdGFfeSB0aGVuCgkJbG9jYWwgZXJyb3IgPSBkZWx0YV95IC0gZGVsdGFfeCAvIDIKCQl3aGlsZSB4MSB+PSB4MiBkbwoJCQlpZiAoZXJyb3IgPj0gMCkgYW5kICgoZXJyb3Igfj0gMCkgb3IgKGl4ID4gMCkpIHRoZW4KCQkJCWVycm9yID0gZXJyb3IgLSBkZWx0YV94CgkJCQl5MSA9IHkxICsgaXkKCQkJZW5kCgkJCWVycm9yID0gZXJyb3IgKyBkZWx0YV95CgkJCXgxID0geDEgKyBpeAoJCQlidWZmZXJbKHkxIC0gMSkgKiB3aWR0aCArIHgxXSA9IHRydWUKCQllbmQKCWVsc2UKCQlsb2NhbCBlcnJvciA9IGRlbHRhX3ggLSBkZWx0YV95IC8gMgoJCXdoaWxlIHkxIH49IHkyIGRvCgkJCWlmIChlcnJvciA+PSAwKSBhbmQgKChlcnJvciB+PSAwKSBvciAoaXkgPiAwKSkgdGhlbgoJCQkJZXJyb3IgPSBlcnJvciAtIGRlbHRhX3kKCQkJCXgxID0geDEgKyBpeAoJCQllbmQKCQkJZXJyb3IgPSBlcnJvciArIGRlbHRhX3gKCQkJeTEgPSB5MSArIGl5CgkJCWJ1ZmZlclsoeTEgLSAxKSAqIHdpZHRoICsgeDFdID0gdHJ1ZQoJCWVuZAoJZW5kCmVuZAoKbG9jYWwgX2Z1bmN0aW9ucyA9IHsKc2V0Qm91bmRzID0gZnVuY3Rpb24oc3VyZiwgeDEsIHkxLCB4MiwgeTIpCglpZiB4MSA+IHgyIHRoZW4KCQlsb2NhbCB0ZW1wID0geDEKCQl4MSwgeDIgPSB4MiwgdGVtcAoJZW5kCglpZiB5MSA+IHkyIHRoZW4KCQlsb2NhbCB0ZW1wID0geTEKCQl5MSwgeTIgPSB5MiwgdGVtcAoJZW5kCglpZiB4MiA8IDEgb3IgeDEgPiBzdXJmLndpZHRoIG9yIHkyIDwgMSBvciB5MSA+IHN1cmYuaGVpZ2h0IHRoZW4gcmV0dXJuIGVuZAoJaWYgeDEgPCAxIHRoZW4geDEgPSAxIGVuZAoJaWYgeDIgPiBzdXJmLndpZHRoIHRoZW4geDIgPSBzdXJmLndpZHRoIGVuZAoJaWYgeTEgPCAxIHRoZW4geTEgPSAxIGVuZAoJaWYgeTIgPiBzdXJmLmhlaWdodCB0aGVuIHkyID0gc3VyZi5oZWlnaHQgZW5kCglzdXJmLngxLCBzdXJmLnkxLCBzdXJmLngyLCBzdXJmLnkyID0geDEsIHkxLCB4MiwgeTIKZW5kLAoKZ2V0Qm91bmRzID0gZnVuY3Rpb24oc3VyZikKCXJldHVybiBzdXJmLngxLCBzdXJmLnkxLCBzdXJmLngyLCBzdXJmLnkyCmVuZCwKCmNvcHkgPSBmdW5jdGlvbihzdXJmKQoJbG9jYWwgc3VyZjIgPSBjcmVhdGUoc3VyZi53aWR0aCwgc3VyZi5oZWlnaHQpCglzdXJmMi54MSwgc3VyZjIueTEsIHN1cmYyLngyLCBzdXJmMi55Miwgc3VyZjIuYmxpbmssIHN1cmYyLmN1clgsIHN1cmYyLmN1clksIHN1cmYyLm92ZXJ3cml0ZSA9IHN1cmYueDEsIHN1cmYueTEsIHN1cmYueDIsIHN1cmYueTIsIHN1cmYuYmxpbmssIHN1cmYuY3VyWCwgc3VyZi5jdXJZLCBzdXJmLm92ZXJ3cml0ZQoJZm9yIGk9MSxzdXJmLndpZHRoICogc3VyZi5oZWlnaHQgKiAzIGRvCgkJc3VyZjIuYnVmZmVyW2ldID0gc3VyZi5idWZmZXJbaV0KCWVuZAoJcmV0dXJuIHN1cmYyCmVuZCwKCnNhdmUgPSBmdW5jdGlvbihzdXJmLCBwYXRoLCB0eXBlKQoJdHlwZSA9IHR5cGUgb3IgInNyZiIKCWxvY2FsIGYgPSBmcy5vcGVuKHBhdGgsICJ3IikKCWlmIHR5cGUgPT0gIm5mcCIgdGhlbgoJCWxvY2FsIGNvbG9yID0gbmlsCgkJZm9yIGo9MSxzdXJmLmhlaWdodCBkbwoJCQlpZiBqID4gMSB0aGVuIGYud3JpdGUoIlxuIikgZW5kCgkJCWZvciBpPTEsc3VyZi53aWR0aCBkbwoJCQkJY29sb3IgPSBzdXJmLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYud2lkdGggKyBpKSAqIDMgLSAxXQoJCQkJaWYgY29sb3IgdGhlbgoJCQkJCWYud3JpdGUoX2NvbG9yc1tjb2xvcl0pCgkJCQllbHNlCgkJCQkJZi53cml0ZSgiICIpCgkJCQllbmQKCQkJZW5kCgkJZW5kCgllbHNlaWYgdHlwZSA9PSAibmZ0IiB0aGVuCgkJbG9jYWwgYmFja2NvbG9yLCB0ZXh0Y29sb3IsIGNoYXIgPSBuaWwKCQlmb3Igaj0xLHN1cmYuaGVpZ2h0IGRvCgkJCWlmIGogPiAxIHRoZW4gZi53cml0ZSgiXG4iKSBlbmQKCQkJYmFja2NvbG9yLCB0ZXh0Y29sb3IgPSBuaWwKCQkJZm9yIGk9MSxzdXJmLndpZHRoIGRvCgkJCQlpZiBiYWNrY29sb3Igfj0gc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzIC0gMV0gdGhlbgoJCQkJCWYud3JpdGUoc3RyaW5nLmNoYXIoMzApKQoJCQkJCWJhY2tjb2xvciA9IHN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogMyAtIDFdCgkJCQkJaWYgYmFja2NvbG9yIHRoZW4KCQkJCQkJZi53cml0ZShfY29sb3JzW2JhY2tjb2xvcl0pCgkJCQkJZWxzZQoJCQkJCQlmLndyaXRlKCIgIikKCQkJCQllbmQKCQkJCWVuZAoJCQkJaWYgdGV4dGNvbG9yIH49IHN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogM10gdGhlbgoJCQkJCWYud3JpdGUoc3RyaW5nLmNoYXIoMzEpKQoJCQkJCXRleHRjb2xvciA9IHN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogM10KCQkJCQlpZiB0ZXh0Y29sb3IgdGhlbgoJCQkJCQlmLndyaXRlKF9jb2xvcnNbdGV4dGNvbG9yXSkKCQkJCQllbHNlCgkJCQkJCWYud3JpdGUoIiAiKQoJCQkJCWVuZAoJCQkJZW5kCgkJCQljaGFyID0gc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzIC0gMl0KCQkJCWlmIGNoYXIgdGhlbgoJCQkJCWYud3JpdGUoY2hhcikKCQkJCWVsc2UKCQkJCQlmLndyaXRlKCIgIikKCQkJCWVuZAoJCQllbmQKCQllbmQKCWVsc2VpZiB0eXBlID09ICJzcmYiIHRoZW4KCQlmLndyaXRlKHN1cmY6c2F2ZVN0cmluZygpKQoJZW5kCglmLmNsb3NlKCkKZW5kLAoKc2F2ZVN0cmluZyA9IGZ1bmN0aW9uKHN1cmYpCglsb2NhbCBzdHIgPSB7Il8iLi5zdHJpbmcuZm9ybWF0KCIlMDR4Iiwgc3VyZi53aWR0aCkuLnN0cmluZy5mb3JtYXQoIiUwNHgiLCBzdXJmLmhlaWdodCl9Cglmb3Igaj0xLHN1cmYuaGVpZ2h0IGRvCgkJZm9yIGk9MSxzdXJmLndpZHRoIGRvCgkJCWlmIHN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogMyAtIDJdIHRoZW4KCQkJCXN0clsjc3RyICsgMV0gPSBzdHJpbmcuZm9ybWF0KCIlMDJ4Iiwgc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzIC0gMl06Ynl0ZSgxKSkKCQkJZWxzZQoJCQkJc3RyWyNzdHIgKyAxXSA9ICJfXyIKCQkJZW5kCgkJCWlmIHN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogMyAtIDFdIHRoZW4KCQkJCXN0clsjc3RyICsgMV0gPSBfY29sb3JzW3N1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogMyAtIDFdXQoJCQllbHNlCgkJCQlzdHJbI3N0ciArIDFdID0gIl8iCgkJCWVuZAoJCQlpZiBzdXJmLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYud2lkdGggKyBpKSAqIDNdIHRoZW4KCQkJCXN0clsjc3RyICsgMV0gPSBfY29sb3JzW3N1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogM11dCgkJCWVsc2UKCQkJCXN0clsjc3RyICsgMV0gPSAiXyIKCQkJZW5kCgkJZW5kCgllbmQKCXJldHVybiB0YWJsZV9jb25jYXQoc3RyKQplbmQsCgpnZXRUZXJtID0gZnVuY3Rpb24oc3VyZikKCWxvY2FsIHRlcm0sIGJhY2tjb2xvciwgdGV4dGNvbG9yID0geyB9LCBjb2xvcnMuYmxhY2ssIGNvbG9ycy53aGl0ZQoJZnVuY3Rpb24gdGVybS53cml0ZShzdHIpCgkJc3VyZjpkcmF3VGV4dChzdXJmLmN1clgsIHN1cmYuY3VyWSwgdG9zdHJpbmcoc3RyKSwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCgkJc3VyZi5jdXJYID0gc3VyZi5jdXJYICsgI3Rvc3RyaW5nKHN0cikKCWVuZAoJZnVuY3Rpb24gdGVybS5ibGl0KHN0ciwgdGV4dCwgYmFjaykKCQlmb3IgaT0xLCNzdHIgZG8KCQkJaWYgc3VyZi5jdXJYID49IHN1cmYueDEgYW5kIHN1cmYuY3VyWSA+PSBzdXJmLnkxIGFuZCBzdXJmLmN1clggPD0gc3VyZi54MiBhbmQgc3VyZi5jdXJZIDw9IHN1cmYueTIgdGhlbgoJCQkJc3VyZi5idWZmZXJbKChzdXJmLmN1clkgLSAxKSAqIHN1cmYud2lkdGggKyBzdXJmLmN1clgpICogMyAtIDJdID0gc3RyOnN1YihpLCBpKQoJCQkJc3VyZi5idWZmZXJbKChzdXJmLmN1clkgLSAxKSAqIHN1cmYud2lkdGggKyBzdXJmLmN1clgpICogMyAtIDFdID0gMiBeIHRvbnVtYmVyKGJhY2s6c3ViKGksIGkpLCAxNikKCQkJCXN1cmYuYnVmZmVyWygoc3VyZi5jdXJZIC0gMSkgKiBzdXJmLndpZHRoICsgc3VyZi5jdXJYKSAqIDNdID0gMiBeIHRvbnVtYmVyKHRleHQ6c3ViKGksIGkpLCAxNikKCQkJZW5kCgkJCXN1cmYuY3VyWCA9IHN1cmYuY3VyWCArIDEKCQllbmQKCWVuZAoJZnVuY3Rpb24gdGVybS5jbGVhcigpCgkJc3VyZjpjbGVhcigiICIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJZW5kCglmdW5jdGlvbiB0ZXJtLmNsZWFyTGluZShuKQoJCXN1cmY6ZHJhd0hMaW5lKHN1cmYueDEsIHN1cmYueDIsIHN1cmYuY3VyWSwgIiAiLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCWVuZAoJZnVuY3Rpb24gdGVybS5nZXRDdXJzb3JQb3MoKQoJCXJldHVybiBzdXJmLmN1clgsIHN1cmYuY3VyWQoJZW5kCglmdW5jdGlvbiB0ZXJtLnNldEN1cnNvclBvcyh4LCB5KQoJCXN1cmYuY3VyWCwgc3VyZi5jdXJZID0gbWF0aF9mbG9vcih4KSwgbWF0aF9mbG9vcih5KQoJZW5kCglmdW5jdGlvbiB0ZXJtLnNldEN1cnNvckJsaW5rKGJsaW5rKQoJCXN1cmYuYmxpbmsgPSBibGluawoJZW5kCglmdW5jdGlvbiB0ZXJtLmlzQ29sb3IoKQoJCXJldHVybiB0cnVlCgllbmQKCXRlcm0uaXNDb2xvdXIgPSB0ZXJtLmlzQ29sb3IKCWZ1bmN0aW9uIHRlcm0uc2V0VGV4dENvbG9yKGNvbG9yKQoJCXRleHRjb2xvciA9IGNvbG9yCgllbmQKCXRlcm0uc2V0VGV4dENvbG91ciA9IHRlcm0uc2V0VGV4dENvbG9yCglmdW5jdGlvbiB0ZXJtLnNldEJhY2tncm91bmRDb2xvcihjb2xvcikKCQliYWNrY29sb3IgPSBjb2xvcgoJZW5kCgl0ZXJtLnNldEJhY2tncm91bmRDb2xvdXIgPSB0ZXJtLnNldEJhY2tncm91bmRDb2xvcgoJZnVuY3Rpb24gdGVybS5nZXRTaXplKCkKCQlyZXR1cm4gc3VyZi53aWR0aCwgc3VyZi5oZWlnaHQKCWVuZAoJZnVuY3Rpb24gdGVybS5zY3JvbGwobikKCQlzdXJmOnNoaWZ0KDAsIC1uKQoJZW5kCglmdW5jdGlvbiB0ZXJtLmdldFRleHRDb2xvcigpCgkJcmV0dXJuIHRleHRjb2xvcgoJZW5kCgl0ZXJtLmdldFRleHRDb2xvdXIgPSB0ZXJtLmdldFRleHRDb2xvcgoJZnVuY3Rpb24gdGVybS5nZXRCYWNrZ3JvdW5kQ29sb3IoKQoJCXJldHVybiBiYWNrY29sb3IKCWVuZAoJdGVybS5nZXRCYWNrZ3JvdW5kQ29sb3VyID0gdGVybS5nZXRCYWNrZ3JvdW5kQ29sb3IKCXJldHVybiB0ZXJtCmVuZCwKCnJlbmRlciA9IGZ1bmN0aW9uKHN1cmYsIGRpc3BsYXksIHgsIHksIHN4MSwgc3kxLCBzeDIsIHN5MikKCWRpc3BsYXksIHgsIHksIHN4MSwgc3kxLCBzeDIsIHN5MiA9IGRpc3BsYXkgb3IgdGVybSwgeCBvciAxLCB5IG9yIDEsIHN4MSBvciAxLCBzeTEgb3IgMSwgc3gyIG9yIHN1cmYud2lkdGgsIHN5MiBvciBzdXJmLmhlaWdodAoJaWYgc3gxID4gc3gyIHRoZW4KCQlsb2NhbCB0ZW1wID0gc3gxCgkJc3gxLCBzeDIgPSBzeDIsIHRlbXAKCWVuZAoJaWYgc3kxID4gc3kyIHRoZW4KCQlsb2NhbCB0ZW1wID0gc3kxCgkJc3kxLCBzeTIgPSBzeTIsIHRlbXAKCWVuZAoJaWYgc3gyIDwgMSBvciBzeDEgPiBzdXJmLndpZHRoIG9yIHN5MiA8IDEgb3Igc3kxID4gc3VyZi5oZWlnaHQgdGhlbiByZXR1cm4gZW5kCglpZiBzeDEgPCAxIHRoZW4gc3gxID0gMSBlbmQKCWlmIHN4MiA+IHN1cmYud2lkdGggdGhlbiBzeDIgPSBzdXJmLndpZHRoIGVuZAoJaWYgc3kxIDwgMSB0aGVuIHN5MSA9IDEgZW5kCglpZiBzeTIgPiBzdXJmLmhlaWdodCB0aGVuIHN5MiA9IHN1cmYuaGVpZ2h0IGVuZAoJbG9jYWwgY21kID0geyB9CglpZiBkaXNwbGF5LmJsaXQgdGhlbgoJCWxvY2FsIHN0ciwgYmFjaywgdGV4dCA9IHsgfSwgeyB9LCB7IH0KCQlmb3Igaj1zeTEsc3kyIGRvCgkJCWZvciBpPXN4MSxzeDIgZG8KCQkJCXN0cltpIC0gc3gxICsgMV0gPSBzdXJmLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYud2lkdGggKyBpKSAqIDMgLSAyXSBvciAiICIKCQkJCWJhY2tbaSAtIHN4MSArIDFdID0gX2NvbG9yc1tzdXJmLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYud2lkdGggKyBpKSAqIDMgLSAxXSBvciAzMjc2OF0KCQkJCXRleHRbaSAtIHN4MSArIDFdID0gX2NvbG9yc1tzdXJmLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYud2lkdGggKyBpKSAqIDNdIG9yIDFdCgkJCWVuZAoJCQljbWRbI2NtZCArIDFdID0geSArIGogLSBzeTEKCQkJY21kWyNjbWQgKyAxXSA9IHRhYmxlX2NvbmNhdChzdHIpCgkJCWNtZFsjY21kICsgMV0gPSB0YWJsZV9jb25jYXQodGV4dCkKCQkJY21kWyNjbWQgKyAxXSA9IHRhYmxlX2NvbmNhdChiYWNrKQoJCWVuZAoJCWZvciBpPTEsI2NtZCw0IGRvCgkJCWRpc3BsYXkuc2V0Q3Vyc29yUG9zKHgsIGNtZFtpXSkKCQkJZGlzcGxheS5ibGl0KGNtZFtpICsgMV0sIGNtZFtpICsgMl0sIGNtZFtpICsgM10pCgkJZW5kCgllbHNlCgkJbG9jYWwgc3RyLCBiYWNrY29sb3IsIHRleHRjb2xvciwgYmFja2MsIHRleHRjID0gIiIsIDAsIDAKCQlmb3Igaj1zeTEsc3kyIGRvCgkJCWNtZFsjY21kICsgMV0gPSAxCgkJCWNtZFsjY21kICsgMV0gPSB5ICsgaiAtIHN5MQoJCQlmb3IgaT1zeDEsc3gyIGRvCgkJCQliYWNrYywgdGV4dGMgPSAoc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzIC0gMV0gb3IgMzI3NjgpLCAoc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzXSBvciAxKQoJCQkJaWYgYmFja2Mgfj0gYmFja2NvbG9yIHRoZW4KCQkJCQliYWNrY29sb3IgPSBiYWNrYwoJCQkJCWlmIHN0ciB+PSAiIiB0aGVuCgkJCQkJCWNtZFsjY21kICsgMV0gPSA0CgkJCQkJCWNtZFsjY21kICsgMV0gPSBzdHIKCQkJCQkJc3RyID0gIiIKCQkJCQllbmQKCQkJCQljbWRbI2NtZCArIDFdID0gMgoJCQkJCWNtZFsjY21kICsgMV0gPSBiYWNrY29sb3IKCQkJCWVuZAoJCQkJaWYgdGV4dGMgfj0gdGV4dGNvbG9yIHRoZW4KCQkJCQl0ZXh0Y29sb3IgPSB0ZXh0YwoJCQkJCWlmIHN0ciB+PSAiIiB0aGVuCgkJCQkJCWNtZFsjY21kICsgMV0gPSA0CgkJCQkJCWNtZFsjY21kICsgMV0gPSBzdHIKCQkJCQkJc3RyID0gIiIKCQkJCQllbmQKCQkJCQljbWRbI2NtZCArIDFdID0gMwoJCQkJCWNtZFsjY21kICsgMV0gPSB0ZXh0Y29sb3IKCQkJCWVuZAoJCQkJc3RyID0gc3RyLi4oc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzIC0gMl0gb3IgIiAiKQoJCQllbmQKCQkJY21kWyNjbWQgKyAxXSA9IDQKCQkJY21kWyNjbWQgKyAxXSA9IHN0cgoJCQlzdHIgPSAiIgoJCWVuZAoJCWxvY2FsIGMsIGEgPSBuaWwKCQlmb3IgaT0xLCNjbWQsMiBkbwoJCQljLCBhID0gY21kW2ldLCBjbWRbaSArIDFdCgkJCWlmIGMgPT0gMSB0aGVuCgkJCQlkaXNwbGF5LnNldEN1cnNvclBvcyh4LCBhKQoJCQllbHNlaWYgYyA9PSAyIHRoZW4KCQkJCWRpc3BsYXkuc2V0QmFja2dyb3VuZENvbG9yKGEpCgkJCWVsc2VpZiBjID09IDMgdGhlbgoJCQkJZGlzcGxheS5zZXRUZXh0Q29sb3IoYSkKCQkJZWxzZQoJCQkJZGlzcGxheS53cml0ZShhKQoJCQllbmQKCQllbmQKCWVuZAoJaWYgc3VyZi5ibGluayBhbmQgc3VyZi5jdXJYID49IDEgYW5kIHN1cmYuY3VyWSA+PSAxIGFuZCBzdXJmLmN1clggPD0gc3VyZi53aWR0aCBhbmQgc3VyZi5jdXJZIDw9IHN1cmYuaGVpZ2h0IHRoZW4KCQlkaXNwbGF5LnNldEN1cnNvclBvcyh4ICsgc3VyZi5jdXJYIC0gc3gxLCB5ICsgc3VyZi5jdXJZIC0gc3kxKQoJCWRpc3BsYXkuc2V0Q3Vyc29yQmxpbmsodHJ1ZSkKCWVsc2VpZiBzdXJmLmJsaW5rID09IGZhbHNlIHRoZW4KCQlkaXNwbGF5LnNldEN1cnNvckJsaW5rKGZhbHNlKQoJCXN1cmYuYmxpbmsgPSBuaWwKCWVuZAoJcmV0dXJuICNjbWQgLyAyCmVuZCwKCmNsZWFyID0gZnVuY3Rpb24oc3VyZiwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglsb2NhbCBvdmVyd3JpdGUgPSBzdXJmLm92ZXJ3cml0ZQoJc3VyZi5vdmVyd3JpdGUgPSB0cnVlCglzdXJmOmZpbGxSZWN0KHN1cmYueDEsIHN1cmYueTEsIHN1cmYueDIsIHN1cmYueTIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZi5vdmVyd3JpdGUgPSBvdmVyd3JpdGUKZW5kLAoKZHJhd1BpeGVsID0gZnVuY3Rpb24oc3VyZiwgeCwgeSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglpZiB4IDwgc3VyZi54MSBvciB5IDwgc3VyZi55MSBvciB4ID4gc3VyZi54MiBvciB5ID4gc3VyZi55MiB0aGVuIHJldHVybiBlbmQKCWlmIGNoYXIgb3Igc3VyZi5vdmVyd3JpdGUgdGhlbgoJCXN1cmYuYnVmZmVyWygoeSAtIDEpICogc3VyZi53aWR0aCArIHgpICogMyAtIDJdID0gY2hhcgoJZW5kCglpZiBiYWNrY29sb3Igb3Igc3VyZi5vdmVyd3JpdGUgdGhlbgoJCXN1cmYuYnVmZmVyWygoeSAtIDEpICogc3VyZi53aWR0aCArIHgpICogMyAtIDFdID0gYmFja2NvbG9yCgllbmQKCWlmIHRleHRjb2xvciBvciBzdXJmLm92ZXJ3cml0ZSB0aGVuCgkJc3VyZi5idWZmZXJbKCh5IC0gMSkgKiBzdXJmLndpZHRoICsgeCkgKiAzXSA9IHRleHRjb2xvcgoJZW5kCmVuZCwKCmdldFBpeGVsID0gZnVuY3Rpb24oc3VyZiwgeCwgeSkKCWlmIHggPCAxIG9yIHkgPCAxIG9yIHggPiBzdXJmLndpZHRoIG9yIHkgPiBzdXJmLmhlaWdodCB0aGVuIHJldHVybiBlbmQKCXJldHVybiBzdXJmLmJ1ZmZlclsoKHkgLSAxKSAqIHN1cmYud2lkdGggKyB4KSAqIDMgLSAyXSwgc3VyZi5idWZmZXJbKCh5IC0gMSkgKiBzdXJmLndpZHRoICsgeCkgKiAzIC0gMV0sIHN1cmYuYnVmZmVyWygoeSAtIDEpICogc3VyZi53aWR0aCArIHgpICogM10KZW5kLAoKZHJhd1RleHQgPSBmdW5jdGlvbihzdXJmLCB4LCB5LCB0ZXh0LCBiYWNrY29sb3IsIHRleHRjb2xvcikKCWxvY2FsIHB4ID0geAoJZm9yIGk9MSwjdGV4dCBkbwoJCWlmIHRleHQ6c3ViKGksIGkpIH49ICJcbiIgdGhlbgoJCQlpZiB4ID49IHN1cmYueDEgYW5kIHkgPj0gc3VyZi55MSBhbmQgeCA8PSBzdXJmLngyIGFuZCB5IDw9IHN1cmYueTIgdGhlbgoJCQkJc3VyZi5idWZmZXJbKCh5IC0gMSkgKiBzdXJmLndpZHRoICsgeCkgKiAzIC0gMl0gPSB0ZXh0OnN1YihpLCBpKQoJCQkJaWYgYmFja2NvbG9yIG9yIHN1cmYub3ZlcndyaXRlIHRoZW4KCQkJCQlzdXJmLmJ1ZmZlclsoKHkgLSAxKSAqIHN1cmYud2lkdGggKyB4KSAqIDMgLSAxXSA9IGJhY2tjb2xvcgoJCQkJZW5kCgkJCQlpZiB0ZXh0Y29sb3Igb3Igc3VyZi5vdmVyd3JpdGUgdGhlbgoJCQkJCXN1cmYuYnVmZmVyWygoeSAtIDEpICogc3VyZi53aWR0aCArIHgpICogM10gPSB0ZXh0Y29sb3IKCQkJCWVuZAoJCQllbmQKCQllbHNlCgkJCXggPSBweCAtIDEKCQkJeSA9IHkgKyAxCgkJZW5kCgkJeCA9IHggKyAxCgllbmQKZW5kLAoKZHJhd0xpbmUgPSBmdW5jdGlvbihzdXJmLCB4MSwgeTEsIHgyLCB5MiwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglsb2NhbCBkZWx0YV94ID0geDIgLSB4MQoJbG9jYWwgaXggPSBkZWx0YV94ID4gMCBhbmQgMSBvciAtMQoJZGVsdGFfeCA9IDIgKiBtYXRoLmFicyhkZWx0YV94KQoJbG9jYWwgZGVsdGFfeSA9IHkyIC0geTEKCWxvY2FsIGl5ID0gZGVsdGFfeSA+IDAgYW5kIDEgb3IgLTEKCWRlbHRhX3kgPSAyICogbWF0aC5hYnMoZGVsdGFfeSkKCXN1cmY6ZHJhd1BpeGVsKHgxLCB5MSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglpZiBkZWx0YV94ID49IGRlbHRhX3kgdGhlbgoJCWxvY2FsIGVycm9yID0gZGVsdGFfeSAtIGRlbHRhX3ggLyAyCgkJd2hpbGUgeDEgfj0geDIgZG8KCQkJaWYgKGVycm9yID49IDApIGFuZCAoKGVycm9yIH49IDApIG9yIChpeCA+IDApKSB0aGVuCgkJCQllcnJvciA9IGVycm9yIC0gZGVsdGFfeAoJCQkJeTEgPSB5MSArIGl5CgkJCWVuZAoJCQllcnJvciA9IGVycm9yICsgZGVsdGFfeQoJCQl4MSA9IHgxICsgaXgKCQkJc3VyZjpkcmF3UGl4ZWwoeDEsIHkxLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCQllbmQKCWVsc2UKCQlsb2NhbCBlcnJvciA9IGRlbHRhX3ggLSBkZWx0YV95IC8gMgoJCXdoaWxlIHkxIH49IHkyIGRvCgkJCWlmIChlcnJvciA+PSAwKSBhbmQgKChlcnJvciB+PSAwKSBvciAoaXkgPiAwKSkgdGhlbgoJCQkJZXJyb3IgPSBlcnJvciAtIGRlbHRhX3kKCQkJCXgxID0geDEgKyBpeAoJCQllbmQKCQkJZXJyb3IgPSBlcnJvciArIGRlbHRhX3gKCQkJeTEgPSB5MSArIGl5CgkJCXN1cmY6ZHJhd1BpeGVsKHgxLCB5MSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCgkJZW5kCgllbmQKZW5kLAoKZHJhd0xpbmVzID0gZnVuY3Rpb24oc3VyZiwgcG9pbnRzLCBtb2RlLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCW1vZGUgPSBtb2RlIG9yIDEKCWlmIG1vZGUgPT0gMSB0aGVuCgkJZm9yIGk9MSwjcG9pbnRzLDQgZG8KCQkJc3VyZjpkcmF3TGluZShwb2ludHNbaV0sIHBvaW50c1tpKzFdLCBwb2ludHNbaSsyXSwgcG9pbnRzW2krM10sIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJCWVuZAoJZWxzZWlmIG1vZGUgPT0gMiB0aGVuCgkJbG9jYWwgbGFzdHgsIGxhc3R5ID0gcG9pbnRzWzFdLCBwb2ludHNbMl0KCQlmb3IgaT0zLCNwb2ludHMsMiBkbwoJCQlsb2NhbCBjdXJ4LCBjdXJ5ID0gcG9pbnRzW2ldLCBwb2ludHNbaSsxXQoJCQlzdXJmOmRyYXdMaW5lKGxhc3R4LCBsYXN0eSwgY3VyeCwgY3VyeSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCgkJCWxhc3R4ID0gY3VyeAoJCQlsYXN0eSA9IGN1cnkKCQllbmQKCWVsc2VpZiBtb2RlID09IDMgdGhlbgoJCWxvY2FsIG1pZHgsIG1pZHkgPSBwb2ludHNbMV0sIHBvaW50c1syXQoJCWZvciBpPTMsI3BvaW50cywyIGRvCgkJCXN1cmY6ZHJhd0xpbmUobWlkeCwgbWlkeSwgcG9pbnRzW2ldLCBwb2ludHNbaSsxXSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCgkJZW5kCgllbmQKZW5kLAoKZHJhd0hMaW5lID0gZnVuY3Rpb24oc3VyZiwgeDEsIHgyLCB5LCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCWlmIHgxID4geDIgdGhlbgoJCWxvY2FsIHRlbXAgPSB4MQoJCXgxLCB4MiA9IHgyLCB0ZW1wCgllbmQKCWlmIHkgPCBzdXJmLnkxIG9yIHkgPiBzdXJmLnkyIG9yIHgyIDwgc3VyZi54MSBvciB4MSA+IHN1cmYueDIgdGhlbiByZXR1cm4gZW5kCglpZiB4MSA8IHN1cmYueDEgdGhlbiB4MSA9IHN1cmYueDEgZW5kCglpZiB4MiA+IHN1cmYueDIgdGhlbiB4MiA9IHN1cmYueDIgZW5kCglpZiBjaGFyIG9yIHN1cmYub3ZlcndyaXRlIHRoZW4KCQlmb3IgeD14MSx4MiBkbwoJCQlzdXJmLmJ1ZmZlclsoKHkgLSAxKSAqIHN1cmYud2lkdGggKyB4KSAqIDMgLSAyXSA9IGNoYXIKCQllbmQKCWVuZAoJaWYgYmFja2NvbG9yIG9yIHN1cmYub3ZlcndyaXRlIHRoZW4KCQlmb3IgeD14MSx4MiBkbwoJCQlzdXJmLmJ1ZmZlclsoKHkgLSAxKSAqIHN1cmYud2lkdGggKyB4KSAqIDMgLSAxXSA9IGJhY2tjb2xvcgoJCWVuZAoJZW5kCglpZiB0ZXh0Y29sb3Igb3Igc3VyZi5vdmVyd3JpdGUgdGhlbgoJCWZvciB4PXgxLHgyIGRvCgkJCXN1cmYuYnVmZmVyWygoeSAtIDEpICogc3VyZi53aWR0aCArIHgpICogM10gPSB0ZXh0Y29sb3IKCQllbmQKCWVuZAplbmQsCgpkcmF3VkxpbmUgPSBmdW5jdGlvbihzdXJmLCB5MSwgeTIsIHgsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJaWYgeTEgPiB5MiB0aGVuCgkJbG9jYWwgdGVtcCA9IHkxCgkJeTEsIHkyID0geTIsIHRlbXAKCWVuZAoJaWYgeCA8IHN1cmYueDEgb3IgeCA+IHN1cmYueDIgb3IgeTIgPCBzdXJmLnkxIG9yIHkxID4gc3VyZi55MiB0aGVuIHJldHVybiBlbmQKCWlmIHkxIDwgc3VyZi55MSB0aGVuIHkxID0gc3VyZi55MSBlbmQKCWlmIHkyID4gc3VyZi55MiB0aGVuIHkyID0gc3VyZi55MiBlbmQKCWlmIGNoYXIgb3Igc3VyZi5vdmVyd3JpdGUgdGhlbgoJCWZvciB5PXkxLHkyIGRvCgkJCXN1cmYuYnVmZmVyWygoeSAtIDEpICogc3VyZi53aWR0aCArIHgpICogMyAtIDJdID0gY2hhcgoJCWVuZAoJZW5kCglpZiBiYWNrY29sb3Igb3Igc3VyZi5vdmVyd3JpdGUgdGhlbgoJCWZvciB5PXkxLHkyIGRvCgkJCXN1cmYuYnVmZmVyWygoeSAtIDEpICogc3VyZi53aWR0aCArIHgpICogMyAtIDFdID0gYmFja2NvbG9yCgkJZW5kCgllbmQKCWlmIHRleHRjb2xvciBvciBzdXJmLm92ZXJ3cml0ZSB0aGVuCgkJZm9yIHk9eTEseTIgZG8KCQkJc3VyZi5idWZmZXJbKCh5IC0gMSkgKiBzdXJmLndpZHRoICsgeCkgKiAzXSA9IHRleHRjb2xvcgoJCWVuZAoJZW5kCmVuZCwKCmRyYXdSZWN0ID0gZnVuY3Rpb24oc3VyZiwgeDEsIHkxLCB4MiwgeTIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpkcmF3SExpbmUoeDEsIHgyLCB5MSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglzdXJmOmRyYXdITGluZSh4MSwgeDIsIHkyLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCXN1cmY6ZHJhd1ZMaW5lKHkxLCB5MiwgeDEsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpkcmF3VkxpbmUoeTEsIHkyLCB4MiwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCmVuZCwKCmRyYXdSb3VuZFJlY3QgPSBmdW5jdGlvbihzdXJmLCB4MSwgeTEsIHgyLCB5MiwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglzdXJmOmRyYXdITGluZSh4MSArIDEsIHgyIC0gMSwgeTEsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpkcmF3SExpbmUoeDEgKyAxLCB4MiAtIDEsIHkyLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCXN1cmY6ZHJhd1ZMaW5lKHkxICsgMSwgeTIgLSAxLCB4MSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglzdXJmOmRyYXdWTGluZSh5MSArIDEsIHkyIC0gMSwgeDIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQplbmQsCgpkcmF3Um91bmRlZFJlY3QgPSBmdW5jdGlvbihzdXJmLCB4MSwgeTEsIHgyLCB5MiwgcmFkaXVzLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCXN1cmY6ZHJhd0hMaW5lKHgxICsgcmFkaXVzLCB4MiAtIHJhZGl1cywgeTEsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpkcmF3SExpbmUoeDEgKyByYWRpdXMsIHgyIC0gcmFkaXVzLCB5MiwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglzdXJmOmRyYXdWTGluZSh5MSArIHJhZGl1cywgeTIgLSByYWRpdXMsIHgxLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCXN1cmY6ZHJhd1ZMaW5lKHkxICsgcmFkaXVzLCB5MiAtIHJhZGl1cywgeDIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpkcmF3QXJjKHgxLCB5MSwgeDEgKyByYWRpdXMgKiAyICsgMiwgeTEgKyByYWRpdXMgKiAyICsgMiwgLW1hdGgucGksIC1tYXRoLnBpIC8gMiwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglzdXJmOmRyYXdBcmMoeDIsIHkxLCB4MiAtIHJhZGl1cyAqIDIgLSAyLCB5MSArIHJhZGl1cyAqIDIgKyAyLCAwLCAtbWF0aC5waSAvIDIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpkcmF3QXJjKHgxLCB5MiwgeDEgKyByYWRpdXMgKiAyICsgMiwgeTIgLSByYWRpdXMgKiAyIC0gMiwgbWF0aC5waSwgbWF0aC5waSAvIDIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpkcmF3QXJjKHgyLCB5MiwgeDIgLSByYWRpdXMgKiAyIC0gMiwgeTIgLSByYWRpdXMgKiAyIC0gMiwgMCwgbWF0aC5waSAvIDIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQplbmQsCgpmaWxsUmVjdCA9IGZ1bmN0aW9uKHN1cmYsIHgxLCB5MSwgeDIsIHkyLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCWlmIHgxID4geDIgdGhlbgoJCWxvY2FsIHRlbXAgPSB4MQoJCXgxLCB4MiA9IHgyLCB0ZW1wCgllbmQKCWlmIHkxID4geTIgdGhlbgoJCWxvY2FsIHRlbXAgPSB5MQoJCXkxLCB5MiA9IHkyLCB0ZW1wCgllbmQKCWlmIHgyIDwgc3VyZi54MSBvciB4MSA+IHN1cmYueDIgb3IgeTIgPCBzdXJmLnkxIG9yIHkxID4gc3VyZi55MiB0aGVuIHJldHVybiBlbmQKCWlmIHgxIDwgc3VyZi54MSB0aGVuIHgxID0gc3VyZi54MSBlbmQKCWlmIHgyID4gc3VyZi54MiB0aGVuIHgyID0gc3VyZi54MiBlbmQKCWlmIHkxIDwgc3VyZi55MSB0aGVuIHkxID0gc3VyZi55MSBlbmQKCWlmIHkyID4gc3VyZi55MiB0aGVuIHkyID0gc3VyZi55MiBlbmQKCWlmIGNoYXIgb3Igc3VyZi5vdmVyd3JpdGUgdGhlbgoJCWZvciB5PXkxLHkyIGRvCgkJCWZvciB4PXgxLHgyIGRvCgkJCQlzdXJmLmJ1ZmZlclsoKHkgLSAxKSAqIHN1cmYud2lkdGggKyB4KSAqIDMgLSAyXSA9IGNoYXIKCQkJZW5kCgkJZW5kCgllbmQKCWlmIGJhY2tjb2xvciBvciBzdXJmLm92ZXJ3cml0ZSB0aGVuCgkJZm9yIHk9eTEseTIgZG8KCQkJZm9yIHg9eDEseDIgZG8KCQkJCXN1cmYuYnVmZmVyWygoeSAtIDEpICogc3VyZi53aWR0aCArIHgpICogMyAtIDFdID0gYmFja2NvbG9yCgkJCWVuZAoJCWVuZAoJZW5kCglpZiB0ZXh0Y29sb3Igb3Igc3VyZi5vdmVyd3JpdGUgdGhlbgoJCWZvciB5PXkxLHkyIGRvCgkJCWZvciB4PXgxLHgyIGRvCgkJCQlzdXJmLmJ1ZmZlclsoKHkgLSAxKSAqIHN1cmYud2lkdGggKyB4KSAqIDNdID0gdGV4dGNvbG9yCgkJCWVuZAoJCWVuZAoJZW5kCmVuZCwKCmZpbGxSb3VuZFJlY3QgPSBmdW5jdGlvbihzdXJmLCB4MSwgeTEsIHgyLCB5MiwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglzdXJmOmRyYXdITGluZSh4MSArIDEsIHgyIC0gMSwgeTEsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpkcmF3SExpbmUoeDEgKyAxLCB4MiAtIDEsIHkyLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCXN1cmY6ZHJhd1ZMaW5lKHkxICsgMSwgeTIgLSAxLCB4MSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglzdXJmOmRyYXdWTGluZSh5MSArIDEsIHkyIC0gMSwgeDIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpmaWxsUmVjdCh4MSArIDEsIHkxICsgMSwgeDIgLSAxLCB5MiAtIDEsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQplbmQsCgpmaWxsUm91bmRlZFJlY3QgPSBmdW5jdGlvbihzdXJmLCB4MSwgeTEsIHgyLCB5MiwgcmFkaXVzLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCXN1cmY6ZmlsbFJlY3QoeDEgKyByYWRpdXMsIHkxLCB4MiAtIHJhZGl1cywgeTIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpmaWxsUmVjdCh4MSwgeTEgKyByYWRpdXMsIHgxICsgcmFkaXVzLCB5MiAtIHJhZGl1cywgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglzdXJmOmZpbGxSZWN0KHgyIC0gcmFkaXVzLCB5MSArIHJhZGl1cywgeDIsIHkyIC0gcmFkaXVzLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCXN1cmY6ZmlsbFBpZSh4MSwgeTEsIHgxICsgcmFkaXVzICogMiArIDIsIHkxICsgcmFkaXVzICogMiArIDIsIC1tYXRoLnBpLCAtbWF0aC5waSAvIDIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpmaWxsUGllKHgyLCB5MSwgeDIgLSByYWRpdXMgKiAyIC0gMiwgeTEgKyByYWRpdXMgKiAyICsgMiwgMCwgLW1hdGgucGkgLyAyLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCXN1cmY6ZmlsbFBpZSh4MSwgeTIsIHgxICsgcmFkaXVzICogMiArIDIsIHkyIC0gcmFkaXVzICogMiAtIDIsIG1hdGgucGksIG1hdGgucGkgLyAyLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCXN1cmY6ZmlsbFBpZSh4MiwgeTIsIHgyIC0gcmFkaXVzICogMiAtIDIsIHkyIC0gcmFkaXVzICogMiAtIDIsIDAsIG1hdGgucGkgLyAyLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKZW5kLAoKZHJhd1RyaWFuZ2xlID0gZnVuY3Rpb24oc3VyZiwgeDEsIHkxLCB4MiwgeTIsIHgzLCB5MywgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglzdXJmOmRyYXdMaW5lKHgxLCB5MSwgeDIsIHkyLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCXN1cmY6ZHJhd0xpbmUoeDIsIHkyLCB4MywgeTMsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJc3VyZjpkcmF3TGluZSh4MywgeTMsIHgxLCB5MSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCmVuZCwKCmZpbGxUcmlhbmdsZSA9IGZ1bmN0aW9uKHN1cmYsIHgxLCB5MSwgeDIsIHkyLCB4MywgeTMsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJbG9jYWwgbWluWCwgbWluWSwgbWF4WCwgbWF4WSA9IHgxLCB5MSwgeDEsIHkxCglpZiB4MiA8IG1pblggdGhlbiBtaW5YID0geDIgZW5kCglpZiB4MyA8IG1pblggdGhlbiBtaW5YID0geDMgZW5kCglpZiB5MiA8IG1pblkgdGhlbiBtaW5ZID0geTIgZW5kCglpZiB5MyA8IG1pblkgdGhlbiBtaW5ZID0geTMgZW5kCglpZiB4MiA+IG1heFggdGhlbiBtYXhYID0geDIgZW5kCglpZiB4MyA+IG1heFggdGhlbiBtYXhYID0geDMgZW5kCglpZiB5MiA+IG1heFkgdGhlbiBtYXhZID0geTIgZW5kCglpZiB5MyA+IG1heFkgdGhlbiBtYXhZID0geTMgZW5kCglsb2NhbCB3aWR0aCwgaGVpZ2h0LCBidWZmZXIsIG1pbiwgbWF4ID0gbWF4WCAtIG1pblggKyAxLCBtYXhZIC0gbWluWSArIDEsIHsgfSwgMCwgMAoJX2J1ZmZlckxpbmUoYnVmZmVyLCB3aWR0aCwgeDEgLSBtaW5YICsgMSwgeTEgLSBtaW5ZICsgMSwgeDIgLSBtaW5YICsgMSwgeTIgLSBtaW5ZICsgMSkKCV9idWZmZXJMaW5lKGJ1ZmZlciwgd2lkdGgsIHgyIC0gbWluWCArIDEsIHkyIC0gbWluWSArIDEsIHgzIC0gbWluWCArIDEsIHkzIC0gbWluWSArIDEpCglfYnVmZmVyTGluZShidWZmZXIsIHdpZHRoLCB4MyAtIG1pblggKyAxLCB5MyAtIG1pblkgKyAxLCB4MSAtIG1pblggKyAxLCB5MSAtIG1pblkgKyAxKQoJZm9yIGo9MSxoZWlnaHQgZG8KCQltaW4sIG1heCA9IG5pbAoJCWZvciBpPTEsd2lkdGggZG8KCQkJaWYgYnVmZmVyWyhqIC0gMSkgKiB3aWR0aCArIGldIHRoZW4KCQkJCWlmIG5vdCBtaW4gdGhlbiBtaW4gPSBpIGVuZAoJCQkJbWF4ID0gaQoJCQllbmQKCQllbmQKCQlzdXJmOmRyYXdITGluZShtaW4gKyBtaW5YIC0gMSwgbWF4ICsgbWluWCAtIDEsIGogKyBtaW5ZIC0gMSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCgllbmQKZW5kLAoKZHJhd1RyaWFuZ2xlcyA9IGZ1bmN0aW9uKHN1cmYsIHBvaW50cywgbW9kZSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCgltb2RlID0gbW9kZSBvciAxCglpZiBtb2RlID09IDEgdGhlbgoJCWZvciBpPTEsI3BvaW50cyw2IGRvCgkJCXN1cmY6ZHJhd1RyaWFuZ2xlKHBvaW50c1tpXSwgcG9pbnRzW2krMV0sIHBvaW50c1tpKzJdLCBwb2ludHNbaSszXSwgcG9pbnRzW2krNF0sIHBvaW50c1tpKzVdLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCQllbmQKCWVsc2VpZiBtb2RlID09IDIgdGhlbgoJCWxvY2FsIGxhc3R4LCBsYXN0eSwgcHJldngsIHByZXZ5LCBjdXJ4LCBjdXJ5ID0gcG9pbnRzWzFdLCBwb2ludHNbMl0sIHBvaW50c1szXSwgcG9pbnRzWzRdCgkJZm9yIGk9NSwjcG9pbnRzLDIgZG8KCQkJY3VyeCwgY3VyeSA9IHBvaW50c1tpXSwgcG9pbnRzW2krMV0KCQkJc3VyZjpkcmF3VHJpYW5nbGUobGFzdHgsIGxhc3R5LCBwcmV2eCwgcHJldnksIGN1cngsIGN1cnksIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJCQlsYXN0eCwgbGFzdHksIHByZXZ4LCBwcmV2eSA9IHByZXZ4LCBwcmV2eSwgY3VyeCwgY3VyeQoJCWVuZAoJZWxzZWlmIG1vZGUgPT0gMyB0aGVuCgkJbG9jYWwgbWlkeCwgbWlkeSwgbGFzdHgsIGxhc3R5LCBjdXJ4LCBjdXJ5ID0gcG9pbnRzWzFdLCBwb2ludHNbMl0sIHBvaW50c1szXSwgcG9pbnRzWzRdCgkJZm9yIGk9NSwjcG9pbnRzLDIgZG8KCQkJY3VyeCwgY3VyeSA9IHBvaW50c1tpXSwgcG9pbnRzW2krMV0KCQkJc3VyZjpkcmF3VHJpYW5nbGUobWlkeCwgbWlkeSwgbGFzdHgsIGxhc3R5LCBjdXJ4LCBjdXJ5LCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCQkJbGFzdHgsIGxhc3R5ID0gY3VyeCwgY3VyeQoJCWVuZAoJZW5kCmVuZCwKCmZpbGxUcmlhbmdsZXMgPSBmdW5jdGlvbihzdXJmLCBwb2ludHMsIG1vZGUsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJbW9kZSA9IG1vZGUgb3IgMQoJaWYgbW9kZSA9PSAxIHRoZW4KCQlmb3IgaT0xLCNwb2ludHMsNiBkbwoJCQlzdXJmOmZpbGxUcmlhbmdsZShwb2ludHNbaV0sIHBvaW50c1tpKzFdLCBwb2ludHNbaSsyXSwgcG9pbnRzW2krM10sIHBvaW50c1tpKzRdLCBwb2ludHNbaSs1XSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCgkJZW5kCgllbHNlaWYgbW9kZSA9PSAyIHRoZW4KCQlsb2NhbCBsYXN0eCwgbGFzdHksIHByZXZ4LCBwcmV2eSwgY3VyeCwgY3VyeSA9IHBvaW50c1sxXSwgcG9pbnRzWzJdLCBwb2ludHNbM10sIHBvaW50c1s0XQoJCWZvciBpPTUsI3BvaW50cywyIGRvCgkJCWN1cngsIGN1cnkgPSBwb2ludHNbaV0sIHBvaW50c1tpKzFdCgkJCXN1cmY6ZmlsbFRyaWFuZ2xlKGxhc3R4LCBsYXN0eSwgcHJldngsIHByZXZ5LCBjdXJ4LCBjdXJ5LCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCQkJbGFzdHgsIGxhc3R5LCBwcmV2eCwgcHJldnkgPSBwcmV2eCwgcHJldnksIGN1cngsIGN1cnkKCQllbmQKCWVsc2VpZiBtb2RlID09IDMgdGhlbgoJCWxvY2FsIG1pZHgsIG1pZHksIGxhc3R4LCBsYXN0eSwgY3VyeCwgY3VyeSA9IHBvaW50c1sxXSwgcG9pbnRzWzJdLCBwb2ludHNbM10sIHBvaW50c1s0XQoJCWZvciBpPTUsI3BvaW50cywyIGRvCgkJCWN1cngsIGN1cnkgPSBwb2ludHNbaV0sIHBvaW50c1tpKzFdCgkJCXN1cmY6ZmlsbFRyaWFuZ2xlKG1pZHgsIG1pZHksIGxhc3R4LCBsYXN0eSwgY3VyeCwgY3VyeSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCgkJCWxhc3R4LCBsYXN0eSA9IGN1cngsIGN1cnkKCQllbmQKCWVuZAplbmQsCgpkcmF3RWxsaXBzZSA9IGZ1bmN0aW9uKHN1cmYsIHgxLCB5MSwgeDIsIHkyLCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCWlmIHgxID4geDIgdGhlbgoJCWxvY2FsIHRlbXAgPSB4MQoJCXgxLCB4MiA9IHgyLCB0ZW1wCgllbmQKCWlmIHkxID4geTIgdGhlbgoJCWxvY2FsIHRlbXAgPSB5MQoJCXkxLCB5MiA9IHkyLCB0ZW1wCgllbmQKCWxvY2FsIHN0ZXAsIG1pZFgsIG1pZFksIHdpZHRoLCBoZWlnaHQsIGxhc3RYLCBsYXN0WSA9IChtYXRoLnBpICogMikgLyAxNiwgKHgxICsgeDIpIC8gMiwgKHkxICsgeTIpIC8gMiwgKHgyIC0geDEpIC8gMiwgKHkyIC0geTEpIC8gMiwgMSwgMQoJZm9yIGk9MSwxNyBkbwoJCWxvY2FsIHgsIHkgPSBtYXRoX2Zsb29yKChtaWRYICsgbWF0aF9jb3Moc3RlcCAqIGkpICogd2lkdGgpICsgMC41KSwgbWF0aF9mbG9vcigobWlkWSArIG1hdGhfc2luKHN0ZXAgKiBpKSAqIGhlaWdodCkgKyAwLjUpCgkJaWYgaSA+IDEgdGhlbgoJCQlzdXJmOmRyYXdMaW5lKGxhc3RYLCBsYXN0WSwgeCwgeSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCgkJZW5kCgkJbGFzdFgsIGxhc3RZID0geCwgeQoJZW5kCmVuZCwKCmZpbGxFbGxpcHNlID0gZnVuY3Rpb24oc3VyZiwgeDEsIHkxLCB4MiwgeTIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJaWYgeDEgPiB4MiB0aGVuCgkJbG9jYWwgdGVtcCA9IHgxCgkJeDEsIHgyID0geDIsIHRlbXAKCWVuZAoJaWYgeTEgPiB5MiB0aGVuCgkJbG9jYWwgdGVtcCA9IHkxCgkJeTEsIHkyID0geTIsIHRlbXAKCWVuZAoJbG9jYWwgcmVzb2x1dGlvbiwgc3RlcCwgbWlkWCwgbWlkWSwgd2lkdGgsIGhlaWdodCwgbGFzdFgsIGxhc3RZLCBid2lkdGgsIGJoZWlnaHQsIGJ1ZmZlciA9IDE2LCAobWF0aC5waSAqIDIpIC8gMTYsICh4MSArIHgyKSAvIDIsICh5MSArIHkyKSAvIDIsICh4MiAtIHgxKSAvIDIsICh5MiAtIHkxKSAvIDIsIDEsIDEsIHgyIC0geDEgKyAxLCB5MiAtIHkxICsgMSwgeyB9Cglmb3IgaT0xLHJlc29sdXRpb24rMSBkbwoJCWxvY2FsIHgsIHkgPSBtYXRoX2Zsb29yKChtaWRYICsgbWF0aF9jb3Moc3RlcCAqIGkpICogd2lkdGgpICsgMC41KSwgbWF0aF9mbG9vcigobWlkWSArIG1hdGhfc2luKHN0ZXAgKiBpKSAqIGhlaWdodCkgKyAwLjUpCgkJaWYgaSA+IDEgdGhlbgoJCQlfYnVmZmVyTGluZShidWZmZXIsIGJ3aWR0aCwgbGFzdFggLSB4MSArIDEsIGxhc3RZIC0geTEgKyAxLCB4IC0geDEgKyAxLCB5IC0geTEgKyAxKQoJCWVuZAoJCWxhc3RYLCBsYXN0WSA9IHgsIHkKCWVuZAoJZm9yIGo9MSxiaGVpZ2h0IGRvCgkJbWluLCBtYXggPSBuaWwKCQlmb3IgaT0xLGJ3aWR0aCBkbwoJCQlpZiBidWZmZXJbKGogLSAxKSAqIGJ3aWR0aCArIGldIHRoZW4KCQkJCWlmIG5vdCBtaW4gdGhlbiBtaW4gPSBpIGVuZAoJCQkJbWF4ID0gaQoJCQllbmQKCQllbmQKCQlzdXJmOmRyYXdITGluZShtaW4gKyB4MSAtIDEsIG1heCArIHgxIC0gMSwgaiArIHkxIC0gMSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCgllbmQKZW5kLAoKZHJhd0FyYyA9IGZ1bmN0aW9uKHN1cmYsIHgxLCB5MSwgeDIsIHkyLCBhMSwgYTIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJaWYgeDEgPiB4MiB0aGVuCgkJbG9jYWwgdGVtcCA9IHgxCgkJeDEsIHgyID0geDIsIHRlbXAKCWVuZAoJaWYgeTEgPiB5MiB0aGVuCgkJbG9jYWwgdGVtcCA9IHkxCgkJeTEsIHkyID0geTIsIHRlbXAKCWVuZAoJaWYgYTEgPiBhMiB0aGVuCgkJbG9jYWwgdGVtcCA9IGExCgkJYTEsIGEyID0gYTIsIHRlbXAKCWVuZAoJbG9jYWwgc3RlcCwgbWlkWCwgbWlkWSwgd2lkdGgsIGhlaWdodCwgbGFzdFgsIGxhc3RZID0gKGEyIC0gYTEpIC8gMTYsICh4MSArIHgyKSAvIDIsICh5MSArIHkyKSAvIDIsICh4MiAtIHgxKSAvIDIsICh5MiAtIHkxKSAvIDIsIDEsIDEKCWZvciBpPTEsMTcgZG8KCQlsb2NhbCB4LCB5ID0gbWF0aF9mbG9vcigobWlkWCArIG1hdGhfY29zKHN0ZXAgKiAoaSAtIDEpICsgYTEpICogd2lkdGgpICsgMC41KSwgbWF0aF9mbG9vcigobWlkWSAtIG1hdGhfc2luKHN0ZXAgKiAoaSAtIDEpICsgYTEpICogaGVpZ2h0KSArIDAuNSkKCQlpZiBpID4gMSB0aGVuCgkJCXN1cmY6ZHJhd0xpbmUobGFzdFgsIGxhc3RZLCB4LCB5LCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCQllbmQKCQlsYXN0WCwgbGFzdFkgPSB4LCB5CgllbmQKZW5kLAoKZHJhd1BpZSA9IGZ1bmN0aW9uKHN1cmYsIHgxLCB5MSwgeDIsIHkyLCBhMSwgYTIsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJaWYgeDEgPiB4MiB0aGVuCgkJbG9jYWwgdGVtcCA9IHgxCgkJeDEsIHgyID0geDIsIHRlbXAKCWVuZAoJaWYgeTEgPiB5MiB0aGVuCgkJbG9jYWwgdGVtcCA9IHkxCgkJeTEsIHkyID0geTIsIHRlbXAKCWVuZAoJaWYgYTEgPiBhMiB0aGVuCgkJbG9jYWwgdGVtcCA9IGExCgkJYTEsIGEyID0gYTIsIHRlbXAKCWVuZAoJbG9jYWwgc3RlcCwgbWlkWCwgbWlkWSwgd2lkdGgsIGhlaWdodCwgbGFzdFgsIGxhc3RZID0gKGEyIC0gYTEpIC8gMTYsICh4MSArIHgyKSAvIDIsICh5MSArIHkyKSAvIDIsICh4MiAtIHgxKSAvIDIsICh5MiAtIHkxKSAvIDIsIDEsIDEKCWZvciBpPTEsMTcgZG8KCQlsb2NhbCB4LCB5ID0gbWF0aF9mbG9vcigobWlkWCArIG1hdGhfY29zKHN0ZXAgKiAoaSAtIDEpICsgYTEpICogd2lkdGgpICsgMC41KSwgbWF0aF9mbG9vcigobWlkWSAtIG1hdGhfc2luKHN0ZXAgKiAoaSAtIDEpICsgYTEpICogaGVpZ2h0KSArIDAuNSkKCQlpZiBpID4gMSB0aGVuCgkJCXN1cmY6ZHJhd0xpbmUobGFzdFgsIGxhc3RZLCB4LCB5LCBjaGFyLCBiYWNrY29sb3IsIHRleHRjb2xvcikKCQllbmQKCQlsYXN0WCwgbGFzdFkgPSB4LCB5CgllbmQKCXN1cmY6ZHJhd0xpbmUobWF0aF9mbG9vcihtaWRYICsgMC41KSwgbWF0aF9mbG9vcihtaWRZICsgMC41KSwgbWF0aF9mbG9vcigobWlkWCArIG1hdGhfY29zKGExKSAqIHdpZHRoKSArIDAuNSksIG1hdGhfZmxvb3IoKG1pZFkgLSBtYXRoX3NpbihhMSkgKiBoZWlnaHQpICsgMC41KSwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglzdXJmOmRyYXdMaW5lKG1hdGhfZmxvb3IobWlkWCArIDAuNSksIG1hdGhfZmxvb3IobWlkWSArIDAuNSksIG1hdGhfZmxvb3IoKG1pZFggKyBtYXRoX2NvcyhhMikgKiB3aWR0aCkgKyAwLjUpLCBtYXRoX2Zsb29yKChtaWRZIC0gbWF0aF9zaW4oYTIpICogaGVpZ2h0KSArIDAuNSksIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQplbmQsCgpmaWxsUGllID0gZnVuY3Rpb24oc3VyZiwgeDEsIHkxLCB4MiwgeTIsIGExLCBhMiwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglpZiB4MSA+IHgyIHRoZW4KCQlsb2NhbCB0ZW1wID0geDEKCQl4MSwgeDIgPSB4MiwgdGVtcAoJZW5kCglpZiB5MSA+IHkyIHRoZW4KCQlsb2NhbCB0ZW1wID0geTEKCQl5MSwgeTIgPSB5MiwgdGVtcAoJZW5kCglpZiBhMSA+IGEyIHRoZW4KCQlsb2NhbCB0ZW1wID0gYTEKCQlhMSwgYTIgPSBhMiwgdGVtcAoJZW5kCglsb2NhbCBzdGVwLCBtaWRYLCBtaWRZLCB3aWR0aCwgaGVpZ2h0LCBsYXN0WCwgbGFzdFksIGJ3aWR0aCwgYmhlaWdodCwgYnVmZmVyID0gKGEyIC0gYTEpIC8gMTYsICh4MSArIHgyKSAvIDIsICh5MSArIHkyKSAvIDIsICh4MiAtIHgxKSAvIDIsICh5MiAtIHkxKSAvIDIsIDEsIDEsIHgyIC0geDEgKyAxLCB5MiAtIHkxICsgMSwgeyB9Cglmb3IgaT0xLDE3IGRvCgkJbG9jYWwgeCwgeSA9IG1hdGhfZmxvb3IoKG1pZFggKyBtYXRoX2NvcyhzdGVwICogKGkgLSAxKSArIGExKSAqIHdpZHRoKSArIDAuNSksIG1hdGhfZmxvb3IoKG1pZFkgLSBtYXRoX3NpbihzdGVwICogKGkgLSAxKSArIGExKSAqIGhlaWdodCkgKyAwLjUpCgkJaWYgaSA+IDEgdGhlbgoJCQlfYnVmZmVyTGluZShidWZmZXIsIGJ3aWR0aCwgbGFzdFggLSB4MSArIDEsIGxhc3RZIC0geTEgKyAxLCB4IC0geDEgKyAxLCB5IC0geTEgKyAxKQoJCWVuZAoJCWxhc3RYLCBsYXN0WSA9IHgsIHkKCWVuZAoJX2J1ZmZlckxpbmUoYnVmZmVyLCBid2lkdGgsIG1hdGhfZmxvb3IobWlkWCArIDAuNSkgLSB4MSArIDEsIG1hdGhfZmxvb3IobWlkWSArIDAuNSkgLSB5MSArIDEsIG1hdGhfZmxvb3IoKG1pZFggKyBtYXRoX2NvcyhhMSkgKiB3aWR0aCkgKyAwLjUpIC0geDEgKyAxLCBtYXRoX2Zsb29yKChtaWRZIC0gbWF0aF9zaW4oYTEpICogaGVpZ2h0KSArIDAuNSkgLSB5MSArIDEpCglfYnVmZmVyTGluZShidWZmZXIsIGJ3aWR0aCwgbWF0aF9mbG9vcihtaWRYICsgMC41KSAtIHgxICsgMSwgbWF0aF9mbG9vcihtaWRZICsgMC41KSAtIHkxICsgMSwgbWF0aF9mbG9vcigobWlkWCArIG1hdGhfY29zKGEyKSAqIHdpZHRoKSArIDAuNSkgLSB4MSArIDEsIG1hdGhfZmxvb3IoKG1pZFkgLSBtYXRoX3NpbihhMikgKiBoZWlnaHQpICsgMC41KSAtIHkxICsgMSkKCWZvciBqPTEsYmhlaWdodCBkbwoJCW1pbiwgbWF4ID0gbmlsCgkJZm9yIGk9MSxid2lkdGggZG8KCQkJaWYgYnVmZmVyWyhqIC0gMSkgKiBid2lkdGggKyBpXSB0aGVuCgkJCQlpZiBub3QgbWluIHRoZW4gbWluID0gaSBlbmQKCQkJCW1heCA9IGkKCQkJZW5kCgkJZW5kCgkJaWYgbWluIHRoZW4KCQkJc3VyZjpkcmF3SExpbmUobWluICsgeDEgLSAxLCBtYXggKyB4MSAtIDEsIGogKyB5MSAtIDEsIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJCWVuZAoJZW5kCmVuZCwKCmZsb29kRmlsbCA9IGZ1bmN0aW9uKHN1cmYsIHgsIHksIGNoYXIsIGJhY2tjb2xvciwgdGV4dGNvbG9yKQoJaWYgeCA8IHN1cmYueDEgb3IgeSA8IHN1cmYueTEgb3IgeCA+IHN1cmYueDIgb3IgeSA+IHN1cmYueTIgdGhlbiByZXR1cm4gZW5kCglsb2NhbCBzdGFjaywgdGNoYXIsIHRiYWNrY29sb3IsIHR0ZXh0Y29sb3IgPSB7IHgsIHkgfSwgc3VyZi5idWZmZXJbKCh5IC0gMSkgKiBzdXJmLndpZHRoICsgeCkgKiAzIC0gMl0sIHN1cmYuYnVmZmVyWygoeSAtIDEpICogc3VyZi53aWR0aCArIHgpICogMyAtIDFdLCBzdXJmLmJ1ZmZlclsoKHkgLSAxKSAqIHN1cmYud2lkdGggKyB4KSAqIDNdCglpZiAodGNoYXIgPT0gY2hhcikgYW5kICh0YmFja2NvbG9yID09IGJhY2tjb2xvcikgYW5kICh0dGV4dGNvbG9yID09IHRleHRjb2xvcikgdGhlbiByZXR1cm4gZW5kCgl3aGlsZSAjc3RhY2sgPiAwIGRvCgkJbG9jYWwgY3gsIGN5ID0gc3RhY2tbI3N0YWNrIC0gMV0sIHN0YWNrWyNzdGFja10KCQlzdGFja1sjc3RhY2tdID0gbmlsCgkJc3RhY2tbI3N0YWNrXSA9IG5pbAoJCWlmIGN4ID49IHN1cmYueDEgYW5kIGN5ID49IHN1cmYueTEgYW5kIGN4IDw9IHN1cmYueDIgYW5kIGN5IDw9IHN1cmYueTIgdGhlbgoJCQlsb2NhbCBjY2hhciwgY2JhY2tjb2xvciwgY3RleHRjb2xvciA9IHN1cmYuYnVmZmVyWygoY3kgLSAxKSAqIHN1cmYud2lkdGggKyBjeCkgKiAzIC0gMl0sIHN1cmYuYnVmZmVyWygoY3kgLSAxKSAqIHN1cmYud2lkdGggKyBjeCkgKiAzIC0gMV0sIHN1cmYuYnVmZmVyWygoY3kgLSAxKSAqIHN1cmYud2lkdGggKyBjeCkgKiAzXQoJCQlpZiAodGNoYXIgPT0gY2NoYXIpIGFuZCAodGJhY2tjb2xvciA9PSBjYmFja2NvbG9yKSBhbmQgKHR0ZXh0Y29sb3IgPT0gY3RleHRjb2xvcikgdGhlbgoJCQkJaWYgY2hhciBvciBzdXJmLm92ZXJ3cml0ZSB0aGVuCgkJCQkJc3VyZi5idWZmZXJbKChjeSAtIDEpICogc3VyZi53aWR0aCArIGN4KSAqIDMgLSAyXSA9IGNoYXIKCQkJCWVuZAoJCQkJaWYgYmFja2NvbG9yIG9yIHN1cmYub3ZlcndyaXRlIHRoZW4KCQkJCQlzdXJmLmJ1ZmZlclsoKGN5IC0gMSkgKiBzdXJmLndpZHRoICsgY3gpICogMyAtIDFdID0gYmFja2NvbG9yCgkJCQllbmQKCQkJCWlmIHRleHRjb2xvciBvciBzdXJmLm92ZXJ3cml0ZSB0aGVuCgkJCQkJc3VyZi5idWZmZXJbKChjeSAtIDEpICogc3VyZi53aWR0aCArIGN4KSAqIDNdID0gdGV4dGNvbG9yCgkJCQllbmQKCQkJCXN0YWNrWyNzdGFjayArIDFdID0gY3ggLSAxCgkJCQlzdGFja1sjc3RhY2sgKyAxXSA9IGN5CgkJCQlzdGFja1sjc3RhY2sgKyAxXSA9IGN4ICsgMQoJCQkJc3RhY2tbI3N0YWNrICsgMV0gPSBjeQoJCQkJc3RhY2tbI3N0YWNrICsgMV0gPSBjeAoJCQkJc3RhY2tbI3N0YWNrICsgMV0gPSBjeSAtIDEKCQkJCXN0YWNrWyNzdGFjayArIDFdID0gY3gKCQkJCXN0YWNrWyNzdGFjayArIDFdID0gY3kgKyAxCgkJCWVuZAoJCWVuZAoJZW5kCmVuZCwKCmRyYXdTdXJmYWNlID0gZnVuY3Rpb24oc3VyZiwgeCwgeSwgc3VyZjIpCglmb3Igaj0xLHN1cmYyLmhlaWdodCBkbwoJCWZvciBpPTEsc3VyZjIud2lkdGggZG8KCQkJc3VyZjpkcmF3UGl4ZWwoaSArIHggLSAxLCBqICsgeSAtIDEsIHN1cmYyLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYyLndpZHRoICsgaSkgKiAzIC0gMl0sIHN1cmYyLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYyLndpZHRoICsgaSkgKiAzIC0gMV0sIHN1cmYyLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYyLndpZHRoICsgaSkgKiAzXSkKCQllbmQKCWVuZAplbmQsCgpkcmF3U3VyZmFjZVBhcnQgPSBmdW5jdGlvbihzdXJmLCB4LCB5LCBzeDEsIHN5MSwgc3gyLCBzeTIsIHN1cmYyKQoJaWYgc3gxID4gc3gyIHRoZW4KCQlsb2NhbCB0ZW1wID0gc3gxCgkJc3gxLCBzeDIgPSBzeDIsIHRlbXAKCWVuZAoJaWYgc3kxID4gc3kyIHRoZW4KCQlsb2NhbCB0ZW1wID0gc3kxCgkJc3kxLCBzeTIgPSBzeTIsIHRlbXAKCWVuZAoJaWYgc3gyIDwgMSBvciBzeDEgPiBzdXJmMi53aWR0aCBvciBzeTIgPCAxIG9yIHN5MSA+IHN1cmYyLmhlaWdodCB0aGVuIHJldHVybiBlbmQKCWlmIHN4MSA8IDEgdGhlbiBzeDEgPSAxIGVuZAoJaWYgc3gyID4gc3VyZjIud2lkdGggdGhlbiBzeDIgPSBzdXJmMi53aWR0aCBlbmQKCWlmIHN5MSA8IDEgdGhlbiBzeTEgPSAxIGVuZAoJaWYgc3kyID4gc3VyZjIuaGVpZ2h0IHRoZW4gc3kyID0gc3VyZjIuaGVpZ2h0IGVuZAoJZm9yIGo9c3kxLHN5MiBkbwoJCWZvciBpPXN4MSxzeDIgZG8KCQkJc3VyZjpkcmF3UGl4ZWwoeCArIGkgLSBzeDEsIHkgKyBqIC0gc3kxLCBzdXJmMi5idWZmZXJbKChqIC0gMSkgKiBzdXJmMi53aWR0aCArIGkpICogMyAtIDJdLCBzdXJmMi5idWZmZXJbKChqIC0gMSkgKiBzdXJmMi53aWR0aCArIGkpICogMyAtIDFdLCBzdXJmMi5idWZmZXJbKChqIC0gMSkgKiBzdXJmMi53aWR0aCArIGkpICogM10pCgkJZW5kCgllbmQKZW5kLAoKZHJhd1N1cmZhY2VTY2FsZWQgPSBmdW5jdGlvbihzdXJmLCB4MSwgeTEsIHgyLCB5Miwgc3VyZjIpCglsb2NhbCB4LCB3aWR0aCwgeGludiwgeSwgaGVpZ2h0LCB5aW52ID0gMCwgMCwgZmFsc2UsIDAsIDAsIGZhbHNlCglpZiB4MSA8PSB4MiB0aGVuCgkJeCA9IHgxCgkJd2lkdGggPSB4MiAtIHgxICsgMQoJZWxzZQoJCXggPSB4MgoJCXdpZHRoID0geDEgLSB4MiArIDEKCQl4aW52ID0gdHJ1ZQoJZW5kCglpZiB5MSA8PSB5MiB0aGVuCgkJeSA9IHkxCgkJaGVpZ2h0ID0geTIgLSB5MSArIDEKCWVsc2UKCQl5ID0geTIKCQloZWlnaHQgPSB5MSAtIHkyICsgMQoJCXlpbnYgPSB0cnVlCgllbmQKCWxvY2FsIHhzY2FsZSwgeXNjYWxlLCBweCwgcHkgPSB3aWR0aCAvIHN1cmYyLndpZHRoLCBoZWlnaHQgLyBzdXJmMi5oZWlnaHQKCWZvciBqPTEsaGVpZ2h0IGRvCgkJZm9yIGk9MSx3aWR0aCBkbwoJCQlpZiB4aW52IHRoZW4KCQkJCXB4ID0gbWF0aF9mbG9vcigod2lkdGggLSBpICsgMC41KSAvIHhzY2FsZSkgKyAxCgkJCWVsc2UKCQkJCXB4ID0gbWF0aF9mbG9vcigoaSAtIDAuNSkgLyB4c2NhbGUpICsgMQoJCQllbmQKCQkJaWYgeWludiB0aGVuCgkJCQlweSA9IG1hdGhfZmxvb3IoKGhlaWdodCAtIGogKyAwLjUpIC8geXNjYWxlKSArIDEKCQkJZWxzZQoJCQkJcHkgPSBtYXRoX2Zsb29yKChqIC0gMC41KSAvIHlzY2FsZSkgKyAxCgkJCWVuZAoJCQlzdXJmOmRyYXdQaXhlbCh4ICsgaSAtIDEsIHkgKyBqIC0gMSwgc3VyZjIuYnVmZmVyWygocHkgLSAxKSAqIHN1cmYyLndpZHRoICsgcHgpICogMyAtIDJdLCBzdXJmMi5idWZmZXJbKChweSAtIDEpICogc3VyZjIud2lkdGggKyBweCkgKiAzIC0gMV0sIHN1cmYyLmJ1ZmZlclsoKHB5IC0gMSkgKiBzdXJmMi53aWR0aCArIHB4KSAqIDNdKQoJCWVuZAoJZW5kCmVuZCwKCmRyYXdTdXJmYWNlUm90YXRlZCA9IGZ1bmN0aW9uKHN1cmYsIHgsIHksIG94LCBveSwgYW5nbGUsIHN1cmYyKQoJbG9jYWwgY29zLCBzaW4sIHJhbmdlID0gbWF0aF9jb3MoYW5nbGUpLCBtYXRoX3NpbihhbmdsZSksIG1hdGhfZmxvb3IobWF0aC5zcXJ0KHN1cmYyLndpZHRoICogc3VyZjIud2lkdGggKyBzdXJmMi5oZWlnaHQgKiBzdXJmMi5oZWlnaHQpKQoJeCwgeSA9IHggLSBtYXRoX2Zsb29yKGNvcyAqIChveCAtIDEpICsgc2luICogKG95IC0gMSkgKyAwLjUpLCB5IC0gbWF0aF9mbG9vcihjb3MgKiAob3kgLSAxKSAtIHNpbiAqIChveCAtIDEpICsgMC41KQoJZm9yIGo9LXJhbmdlLHJhbmdlIGRvCgkJZm9yIGk9LXJhbmdlLHJhbmdlIGRvCgkJCWxvY2FsIHN4LCBzeSA9IG1hdGhfZmxvb3IoaSAqIGNvcyAtIGogKiBzaW4pLCBtYXRoX2Zsb29yKGkgKiBzaW4gKyBqICogY29zKQoJCQlpZiBzeCA+PSAwIGFuZCBzeCA8IHN1cmYyLndpZHRoIGFuZCBzeSA+PSAwIGFuZCBzeSA8IHN1cmYyLmhlaWdodCB0aGVuCgkJCQlzdXJmOmRyYXdQaXhlbCh4ICsgaSwgeSArIGosIHN1cmYyLmJ1ZmZlclsoc3kgKiBzdXJmMi53aWR0aCArIHN4KSAqIDMgKyAxXSwgc3VyZjIuYnVmZmVyWyhzeSAqIHN1cmYyLndpZHRoICsgc3gpICogMyArIDJdLCBzdXJmMi5idWZmZXJbKHN5ICogc3VyZjIud2lkdGggKyBzeCkgKiAzICsgM10pCgkJCWVuZAoJCWVuZAoJZW5kCmVuZCwKCnNoYWRlciA9IGZ1bmN0aW9uKHN1cmYsIGYsIHgxLCB5MSwgeDIsIHkyKQoJeDEsIHkxLCB4MiwgeTIgPSB4MSBvciBzdXJmLngxLCB5MSBvciBzdXJmLnkxLCB4MiBvciBzdXJmLngyLCB5MiBvciBzdXJmLnkyCglpZiB4MSA+IHgyIHRoZW4KCQlsb2NhbCB0ZW1wID0geDEKCQl4MSwgeDIgPSB4MiwgdGVtcAoJZW5kCglpZiB5MSA+IHkyIHRoZW4KCQlsb2NhbCB0ZW1wID0geTEKCQl5MSwgeTIgPSB5MiwgdGVtcAoJZW5kCglpZiB4MiA8IHN1cmYueDEgb3IgeDEgPiBzdXJmLngyIG9yIHkyIDwgc3VyZi55MSBvciB5MSA+IHN1cmYueTIgdGhlbiByZXR1cm4gZW5kCglpZiB4MSA8IHN1cmYueDEgdGhlbiB4MSA9IHN1cmYueDEgZW5kCglpZiB4MiA+IHN1cmYueDIgdGhlbiB4MiA9IHN1cmYueDIgZW5kCglpZiB5MSA8IHN1cmYueTEgdGhlbiB5MSA9IHN1cmYueTEgZW5kCglpZiB5MiA+IHN1cmYueTIgdGhlbiB5MiA9IHN1cmYueTIgZW5kCglsb2NhbCB3aWR0aCwgYnVmZmVyID0geDIgLSB4MSArIDEsIHsgfQoJZm9yIGo9eTEseTIgZG8KCQlmb3IgaT14MSx4MiBkbwoJCQlidWZmZXJbKChqIC0geTEpICogd2lkdGggKyBpIC0geDEpICogMyArIDFdLCBidWZmZXJbKChqIC0geTEpICogd2lkdGggKyBpIC0geDEpICogMyArIDJdLCBidWZmZXJbKChqIC0geTEpICogd2lkdGggKyBpIC0geDEpICogMyArIDNdID0gZihzdXJmLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYud2lkdGggKyBpKSAqIDMgLSAyXSwgc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzIC0gMV0sIHN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogM10sIGksIGopCgkJZW5kCgllbmQKCWZvciBqPXkxLHkyIGRvCgkJZm9yIGk9eDEseDIgZG8KCQkJc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzIC0gMl0sIHN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogMyAtIDFdLCBzdXJmLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYud2lkdGggKyBpKSAqIDNdID0gYnVmZmVyWygoaiAtIHkxKSAqIHdpZHRoICsgaSAtIHgxKSAqIDMgKyAxXSwgYnVmZmVyWygoaiAtIHkxKSAqIHdpZHRoICsgaSAtIHgxKSAqIDMgKyAyXSwgYnVmZmVyWygoaiAtIHkxKSAqIHdpZHRoICsgaSAtIHgxKSAqIDMgKyAzXQoJCWVuZAoJZW5kCmVuZCwKCnNoaWZ0ID0gZnVuY3Rpb24oc3VyZiwgeCwgeSwgeDEsIHkxLCB4MiwgeTIpCgl4MSwgeTEsIHgyLCB5MiA9IHgxIG9yIHN1cmYueDEsIHkxIG9yIHN1cmYueTEsIHgyIG9yIHN1cmYueDIsIHkyIG9yIHN1cmYueTIKCWlmIHgxID4geDIgdGhlbgoJCWxvY2FsIHRlbXAgPSB4MQoJCXgxLCB4MiA9IHgyLCB0ZW1wCgllbmQKCWlmIHkxID4geTIgdGhlbgoJCWxvY2FsIHRlbXAgPSB5MQoJCXkxLCB5MiA9IHkyLCB0ZW1wCgllbmQKCWlmIHgyIDwgc3VyZi54MSBvciB4MSA+IHN1cmYueDIgb3IgeTIgPCBzdXJmLnkxIG9yIHkxID4gc3VyZi55MiB0aGVuIHJldHVybiBlbmQKCWlmIHgxIDwgc3VyZi54MSB0aGVuIHgxID0gc3VyZi54MSBlbmQKCWlmIHgyID4gc3VyZi54MiB0aGVuIHgyID0gc3VyZi54MiBlbmQKCWlmIHkxIDwgc3VyZi55MSB0aGVuIHkxID0gc3VyZi55MSBlbmQKCWlmIHkyID4gc3VyZi55MiB0aGVuIHkyID0gc3VyZi55MiBlbmQKCWxvY2FsIHdpZHRoLCBidWZmZXIgPSB4MiAtIHgxICsgMSwgeyB9Cglmb3Igaj15MSx5MiBkbwoJCWZvciBpPXgxLHgyIGRvCgkJCWlmIGkgLSB4ID49IDEgYW5kIGogLSB5ID49IDEgYW5kIGkgLSB4IDw9IHN1cmYud2lkdGggYW5kIGogLSB5IDw9IHN1cmYuaGVpZ2h0IHRoZW4KCQkJCWJ1ZmZlclsoKGogLSB5MSkgKiB3aWR0aCArIGkgLSB4MSkgKiAzICsgMV0sIGJ1ZmZlclsoKGogLSB5MSkgKiB3aWR0aCArIGkgLSB4MSkgKiAzICsgMl0sIGJ1ZmZlclsoKGogLSB5MSkgKiB3aWR0aCArIGkgLSB4MSkgKiAzICsgM10gPSBzdXJmLmJ1ZmZlclsoKGogLSB5IC0gMSkgKiBzdXJmLndpZHRoICsgaSAtIHgpICogMyAtIDJdLCBzdXJmLmJ1ZmZlclsoKGogLSB5IC0gMSkgKiBzdXJmLndpZHRoICsgaSAtIHgpICogMyAtIDFdLCBzdXJmLmJ1ZmZlclsoKGogLSB5IC0gMSkgKiBzdXJmLndpZHRoICsgaSAtIHgpICogM10KCQkJZW5kCgkJZW5kCgllbmQKCWZvciBqPXkxLHkyIGRvCgkJZm9yIGk9eDEseDIgZG8KCQkJc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzIC0gMl0sIHN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogMyAtIDFdLCBzdXJmLmJ1ZmZlclsoKGogLSAxKSAqIHN1cmYud2lkdGggKyBpKSAqIDNdID0gYnVmZmVyWygoaiAtIHkxKSAqIHdpZHRoICsgaSAtIHgxKSAqIDMgKyAxXSwgYnVmZmVyWygoaiAtIHkxKSAqIHdpZHRoICsgaSAtIHgxKSAqIDMgKyAyXSwgYnVmZmVyWygoaiAtIHkxKSAqIHdpZHRoICsgaSAtIHgxKSAqIDMgKyAzXQoJCWVuZAoJZW5kCmVuZAp9CgpmdW5jdGlvbiBjcmVhdGUod2lkdGgsIGhlaWdodCwgY2hhciwgYmFja2NvbG9yLCB0ZXh0Y29sb3IpCglsb2NhbCBzdXJmID0geyB9Cglmb3Igayx2IGluIHBhaXJzKF9mdW5jdGlvbnMpIGRvCgkJc3VyZltrXSA9IHYKCWVuZAoJc3VyZi53aWR0aCwgc3VyZi5oZWlnaHQsIHN1cmYueDEsIHN1cmYueTEsIHN1cmYueDIsIHN1cmYueTIsIHN1cmYuY3VyWCwgc3VyZi5jdXJZLCBzdXJmLm92ZXJ3cml0ZSwgc3VyZi5idWZmZXIgPSB3aWR0aCwgaGVpZ2h0LCAxLCAxLCB3aWR0aCwgaGVpZ2h0LCAxLCAxLCBmYWxzZSwgeyB9CglpZiBjaGFyIHRoZW4KCQlmb3IgaT0xLHdpZHRoICogaGVpZ2h0IGRvCgkJCXN1cmYuYnVmZmVyW2kgKiAzIC0gMl0gPSBjaGFyCgkJZW5kCgllbmQKCWlmIGJhY2tjb2xvciB0aGVuCgkJZm9yIGk9MSx3aWR0aCAqIGhlaWdodCBkbwoJCQlzdXJmLmJ1ZmZlcltpICogMyAtIDFdID0gYmFja2NvbG9yCgkJZW5kCgllbmQKCWlmIHRleHRjb2xvciB0aGVuCgkJZm9yIGk9MSx3aWR0aCAqIGhlaWdodCBkbwoJCQlzdXJmLmJ1ZmZlcltpICogM10gPSB0ZXh0Y29sb3IKCQllbmQKCWVuZAoJcmV0dXJuIHN1cmYKZW5kCgpmdW5jdGlvbiBsb2FkKHBhdGgpCglsb2NhbCBsaW5lcywgZiA9IHsgfSwgZnMub3BlbihwYXRoLCAiciIpCglmb3IgbGluZSBpbiBmLnJlYWRMaW5lIGRvCgkJbGluZXNbI2xpbmVzICsgMV0gPSBsaW5lCgllbmQKCWYuY2xvc2UoKQoJbG9jYWwgaGVpZ2h0ID0gI2xpbmVzCglpZiBsaW5lc1sxXTpieXRlKDEpID09IDMwIHRoZW4KCQlsb2NhbCB3aWR0aCwgaSA9IDAsIDEKCQl3aGlsZSBpIDw9ICNsaW5lc1sxXSBkbwoJCQlsb2NhbCBjaGFyID0gbGluZXNbMV06Ynl0ZShpKQoJCQlpZiBjaGFyID09IDMwIG9yIGNoYXIgPT0gMzEgdGhlbgoJCQkJaSA9IGkgKyAxCgkJCWVsc2UKCQkJCXdpZHRoID0gd2lkdGggKyAxCgkJCWVuZAoJCQlpID0gaSArIDEKCQllbmQKCQlsb2NhbCBzdXJmLCBiYWNrY29sb3IsIHRleHRjb2xvciwgaSwgcHgsIGNoYXIsIGNvbG9yID0gY3JlYXRlKHdpZHRoLCBoZWlnaHQpCgkJZm9yIGo9MSxoZWlnaHQgZG8KCQkJaSA9IDEKCQkJcHggPSAxCgkJCXdoaWxlIGkgPD0gI2xpbmVzW2pdIGRvCgkJCQljaGFyID0gbGluZXNbal06Ynl0ZShpKQoJCQkJaWYgY2hhciA9PSAzMCB0aGVuCgkJCQkJaSA9IGkgKyAxCgkJCQkJY2hhciA9IGxpbmVzW2pdOmJ5dGUoaSkKCQkJCQljb2xvciA9IHRvbnVtYmVyKGxpbmVzW2pdOnN1YihpLCBpKSwgMTYpCgkJCQkJaWYgY29sb3IgdGhlbgoJCQkJCQliYWNrY29sb3IgPSAyXmNvbG9yCgkJCQkJZWxzZQoJCQkJCQliYWNrY29sb3IgPSBuaWwKCQkJCQllbmQKCQkJCWVsc2VpZiBjaGFyID09IDMxIHRoZW4KCQkJCQlpID0gaSArIDEKCQkJCQljaGFyID0gbGluZXNbal06Ynl0ZShpKQoJCQkJCWNvbG9yID0gdG9udW1iZXIobGluZXNbal06c3ViKGksIGkpLCAxNikKCQkJCQlpZiBjb2xvciB0aGVuCgkJCQkJCXRleHRjb2xvciA9IDJeY29sb3IKCQkJCQllbHNlCgkJCQkJCXRleHRjb2xvciA9IG5pbAoJCQkJCWVuZAoJCQkJZWxzZQoJCQkJCXN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIHB4KSAqIDMgLSAyXSA9IGxpbmVzW2pdOnN1YihpLCBpKQoJCQkJCXN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIHB4KSAqIDMgLSAxXSA9IGJhY2tjb2xvcgoJCQkJCXN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIHB4KSAqIDNdID0gdGV4dGNvbG9yCgkJCQkJcHggPSBweCArIDEKCQkJCWVuZAoJCQkJaSA9IGkgKyAxCgkJCWVuZAoJCWVuZAoJCXJldHVybiBzdXJmCgllbHNlaWYgbGluZXNbMV06Ynl0ZSgxKSA9PSA5NSB0aGVuCgkJcmV0dXJuIGxvYWRTdHJpbmcobGluZXNbMV0pCgllbHNlCgkJbG9jYWwgd2lkdGggPSAwCgkJZm9yIGk9MSwjbGluZXMgZG8KCQkJaWYgI2xpbmVzW2ldID4gd2lkdGggdGhlbgoJCQkJd2lkdGggPSAjbGluZXNbaV0KCQkJZW5kCgkJZW5kCgkJbG9jYWwgc3VyZiwgY29sb3IgPSBjcmVhdGUod2lkdGgsIGhlaWdodCkKCQlmb3Igaj0xLGhlaWdodCBkbwoJCQlmb3IgaT0xLHdpZHRoIGRvCgkJCQljb2xvciA9IHRvbnVtYmVyKGxpbmVzW2pdOnN1YihpLCBpKSwgMTYpCgkJCQlpZiBjb2xvciB0aGVuCgkJCQkJc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzIC0gMV0gPSAyIF4gY29sb3IKCQkJCWVuZAoJCQllbmQKCQllbmQKCQlyZXR1cm4gc3VyZgoJZW5kCmVuZAoKZnVuY3Rpb24gbG9hZFN0cmluZyhzdHIpCglsb2NhbCB3aWR0aCwgaGVpZ2h0LCBuID0gdG9udW1iZXIoc3RyOnN1YigyLCA1KSwgMTYpLCB0b251bWJlcihzdHI6c3ViKDYsIDkpLCAxNiksIDEwCglsb2NhbCBzdXJmID0gY3JlYXRlKHdpZHRoLCBoZWlnaHQpCglmb3Igaj0xLGhlaWdodCBkbwoJCWZvciBpPTEsd2lkdGggZG8KCQkJaWYgc3RyOmJ5dGUobikgfj0gOTUgdGhlbgoJCQkJc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzIC0gMl0gPSBzdHJpbmcuY2hhcih0b251bWJlcihzdHI6c3ViKG4sIG4gKyAxKSwgMTYpKQoJCQllbmQKCQkJaWYgc3RyOmJ5dGUobiArIDIpIH49IDk1IHRoZW4KCQkJCXN1cmYuYnVmZmVyWygoaiAtIDEpICogc3VyZi53aWR0aCArIGkpICogMyAtIDFdID0gMiBeIHRvbnVtYmVyKHN0cjpzdWIobiArIDIsIG4gKyAyKSwgMTYpCgkJCWVuZAoJCQlpZiBzdHI6Ynl0ZShuICsgMykgfj0gOTUgdGhlbgoJCQkJc3VyZi5idWZmZXJbKChqIC0gMSkgKiBzdXJmLndpZHRoICsgaSkgKiAzXSA9IDIgXiB0b251bWJlcihzdHI6c3ViKG4gKyAzLCBuICsgMyksIDE2KQoJCQllbmQKCQkJbiA9IG4gKyA0CgkJZW5kCgllbmQKCXJldHVybiBzdXJmCmVuZA==",
  7. [ "cobalt-ui/elements/button.lua" ] = "bG9jYWwgYnV0dG9uID0gewoJeCA9IDEsCgl5ID0gMSwKCXcgPSAxMSwKCWggPSAyLAoJdGV4dCA9ICJBIGJ1dHRvbiIsCgliYWNrQ29sb3VyID0gY29sb3Vycy5jeWFuLAoJZm9yZUNvbG91ciA9IGNvbG91cnMud2hpdGUsCglzZWxlY3RlZCA9IGZhbHNlLAoJdmlzaWJsZSA9IHRydWUsCgl0eXBlID0gImJ1dHRvbiIsCgltYXJnaW5sZWZ0ID0gMCwKCW1hcmdpbnJpZ2h0ID0gMCwKCW1hcmdpbnRvcCA9IDAsCgltYXJnaW5ib3R0b20gPSAwLAoJYXV0b21sID0gIiIsCglhdXRvbXIgPSAiIiwKCWF1dG9tdCA9ICIiLAoJYXV0b21iID0gIiIsCglhdXRvdyA9ICJwZXJjOjUwIiwKCXdyYXAgPSAibGVmdCIsCglhdXRvaCA9IHRydWUsCn0KYnV0dG9uLl9faW5kZXggPSBidXR0b24KCmZ1bmN0aW9uIGJ1dHRvbjpnZXRQZXJjZW50YWdlcygpCglpZiB0eXBlKHNlbGYudykgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYudyA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLncgKQoJCXNlbGYuYXV0b3cgPSAicGVyYzoiIC4uIHNlbGYudwoJZWxzZQoJCXNlbGYuYXV0b3cgPSAibm9uZSIKCWVuZAoJaWYgdHlwZShzZWxmLmgpID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLmggPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi5oICkKCQlzZWxmLmF1dG9oID0gInBlcmM6IiAuLiBzZWxmLmgKCWVsc2UKCQlzZWxmLmF1dG9oID0gIm5vbmUiCgllbmQKCglpZiB0eXBlKHNlbGYubWFyZ2lubGVmdCkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYubWFyZ2lubGVmdCA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLm1hcmdpbmxlZnQgKQoJCXNlbGYuYXV0b21sID0gInBlcmM6IiAuLiBzZWxmLm1hcmdpbmxlZnQKCWVuZAoJaWYgdHlwZShzZWxmLm1hcmdpbnJpZ2h0KSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi5tYXJnaW5yaWdodCA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLm1hcmdpbnJpZ2h0ICkKCQlzZWxmLmF1dG9tciA9ICJwZXJjOiIgLi4gc2VsZi5tYXJnaW5yaWdodAoJZW5kCglpZiB0eXBlKHNlbGYubWFyZ2ludG9wKSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi5tYXJnaW50b3AgPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi5tYXJnaW50b3AgKQoJCXNlbGYuYXV0b210ID0gInBlcmM6IiAuLiBzZWxmLm1hcmdpbnRvcAoJZW5kCglpZiB0eXBlKHNlbGYubWFyZ2luYm90dG9tKSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi5tYXJnaW5ib3R0b20gPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi5tYXJnaW5ib3R0b20gKQoJCXNlbGYuYXV0b21sID0gInBlcmM6IiAuLiBzZWxmLm1hcmdpbmJvdHRvbQoJZW5kCglpZiB0eXBlKHNlbGYueCkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYueCA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLnggKQoJCXNlbGYuYXV0b3ggPSAicGVyYzoiIC4uIHNlbGYueAoJZW5kCglpZiB0eXBlKHNlbGYueSkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYueSA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLnkgKQoJCXNlbGYuYXV0b3kgPSAicGVyYzoiIC4uIHNlbGYueQoJZW5kCmVuZAoKZnVuY3Rpb24gYnV0dG9uLm5ldyggZGF0YSwgcGFyZW50ICkKCWRhdGEgPSBkYXRhIG9yIHsgfQoJaWYgZGF0YS5zdHlsZSB0aGVuCgkJbG9jYWwgdCA9IGRhdGEuc3R5bGUKCQlmb3IgaywgdiBpbiBwYWlycyggdCApIGRvCgkJCWlmIG5vdCBkYXRhW2tdIHRoZW4KCQkJCWRhdGFba10gPSB2CgkJCWVuZAoJCWVuZAoJCWRhdGEuc3R5bGUgPSBuaWwKCWVuZAoJbG9jYWwgc2VsZiA9IHNldG1ldGF0YWJsZShkYXRhLGJ1dHRvbikKCXNlbGYucGFyZW50ID0gcGFyZW50CglzZWxmOmdldFBlcmNlbnRhZ2VzKCkKCXNlbGY6cmVzaXplKCkKCXNlbGYuc3RhdGUgPSBkYXRhLnN0YXRlIG9yIHBhcmVudC5zdGF0ZQoJdGFibGUuaW5zZXJ0KCBwYXJlbnQuY2hpbGRyZW4sIHNlbGYgKQoJcmV0dXJuIHNlbGYKZW5kCgpmdW5jdGlvbiBidXR0b246c2V0TWFyZ2lucyggdCwgciwgYiwgbCApCglpZiB0IHRoZW4KCQlzZWxmLm1hcmdpbnRvcCA9IHQgb3Igc2VsZi5tYXJnaW50b3AKCQlpZiB0eXBlKHQpID09ICJzdHJpbmciIHRoZW4KCQkJc2VsZjpnZXRQZXJjZW50YWdlcygpCgkJZWxzZQoJCQlzZWxmLmF1dG9tdCA9ICJub25lIgoJCWVuZAoJZW5kCglpZiByIHRoZW4KCQlzZWxmLm1hcmdpbnJpZ2h0ID0gciBvciBzZWxmLm1hcmdpbnJpZ2h0CgkJaWYgdHlwZShyKSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvbXIgPSAibm9uZSIKCQllbmQKCWVuZAoJaWYgYiB0aGVuCgkJc2VsZi5tYXJnaW50b3AgPSBiIG9yIHNlbGYubWFyZ2ludG9wCgkJaWYgdHlwZShiKSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvbWIgPSAibm9uZSIKCQllbmQKCWVuZAoJaWYgbCB0aGVuCgkJc2VsZi5tYXJnaW5sZWZ0ID0gbCBvciBzZWxmLm1hcmdpbmxlZnQKCQlpZiB0eXBlKGwpID09ICJzdHJpbmciIHRoZW4KCQkJc2VsZjpnZXRQZXJjZW50YWdlcygpCgkJZWxzZQoJCQlzZWxmLmF1dG9tbCA9ICJub25lIgoJCWVuZAoJZW5kCglzZWxmOnJlc2l6ZSgpCmVuZAoKZnVuY3Rpb24gYnV0dG9uOnJlc2l6ZSggdywgaCApCglpZiB3IHRoZW4KCQlzZWxmLncgPSB3IG9yIHNlbGYudwoJCWlmIHR5cGUoIHNlbGYudyApID09ICJzdHJpbmciIHRoZW4KCQkJc2VsZjpnZXRQZXJjZW50YWdlcygpCgkJZWxzZQoJCQlzZWxmLmF1dG93ID0gIm5vbmUiCgkJZW5kCgllbmQKCWlmIGggdGhlbgoJCXNlbGYuaCA9IGggb3Igc2VsZi5oCgkJaWYgdHlwZSggc2VsZi5oICkgPT0gInN0cmluZyIgdGhlbgoJCQlzZWxmOmdldFBlcmNlbnRhZ2VzKCkKCQllbHNlCgkJCXNlbGYuYXV0b2ggPSAibm9uZSIKCQllbmQKCWVuZAoJaWYgc2VsZi5hdXRvdzpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG93Om1hdGNoKCJwZXJjOiglZCspIikKCQljb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApCgkJc2VsZi53ID0gbWF0aC5jZWlsKCBzZWxmLnBhcmVudC53ICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgllbmQKCWlmIHNlbGYuYXV0b21sOnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b21sOm1hdGNoKCJwZXJjOiglZCspIikKCQlzZWxmLm1hcmdpbmxlZnQgPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC53ICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgllbmQKCWlmIHNlbGYuYXV0b21yOnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b21yOm1hdGNoKCJwZXJjOiglZCspIikKCQlzZWxmLm1hcmdpbnJpZ2h0ID0gbWF0aC5mbG9vciggc2VsZi5wYXJlbnQudyAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCglpZiBzZWxmLmF1dG9tdDpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG9tdDptYXRjaCgicGVyYzooJWQrKSIpCgkJc2VsZi5tYXJnaW50b3AgPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC5oICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgllbmQKCWlmIHNlbGYuYXV0b21iOnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b21iOm1hdGNoKCJwZXJjOiglZCspIikKCQlzZWxmLm1hcmdpbmJvdHRvbSA9IG1hdGguZmxvb3IoIHNlbGYucGFyZW50LmggKiBjb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApICkKCWVuZAoJaWYgc2VsZi5hdXRveCBhbmQgc2VsZi5hdXRveDpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG94Om1hdGNoKCJwZXJjOiglZCspIikKCQlzZWxmLnggPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC53ICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgllbmQKCWlmIHNlbGYuYXV0b3kgYW5kIHNlbGYuYXV0b3k6c3ViKCAxLCA0ICkgPT0gInBlcmMiIHRoZW4KCQlsb2NhbCBwZXJjID0gc2VsZi5hdXRveTptYXRjaCgicGVyYzooJWQrKSIpCgkJc2VsZi55ID0gbWF0aC5mbG9vciggc2VsZi5wYXJlbnQuaCAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCmVuZAoKZnVuY3Rpb24gYnV0dG9uOmdldEFic1goKQoJcmV0dXJuIG1hdGguZmxvb3Ioc2VsZi54ICsgc2VsZi5wYXJlbnQ6Z2V0QWJzWCgpICsgc2VsZi5tYXJnaW5sZWZ0KS0xCmVuZAoKZnVuY3Rpb24gYnV0dG9uOmdldEFic1koKQoJcmV0dXJuIG1hdGguZmxvb3Ioc2VsZi55ICsgc2VsZi5wYXJlbnQ6Z2V0QWJzWSgpICsgc2VsZi5tYXJnaW50b3ApLTEKZW5kCgpmdW5jdGlvbiBidXR0b246ZHJhdygpCglpZiBzZWxmLnN0YXRlID09IGNvYmFsdC5zdGF0ZSBvciBzZWxmLnN0YXRlID09ICJfQUxMIiBhbmQgc2VsZi52aXNpYmxlIHRoZW4KCQlsb2NhbCBjb2xvdXIgPSBzZWxmLmJhY2tDb2xvdXIKCQlpZiBzZWxmLndyYXAgPT0gImNlbnRlciIgdGhlbgoJCQlzZWxmLnggPSBtYXRoLmNlaWwoIChzZWxmLnBhcmVudC53LzIpLXNlbGYudy8yICsgc2VsZi5tYXJnaW5sZWZ0ICkKCQllbmQKCQlpZiBzZWxmLnNlbGVjdGVkIHRoZW4KCQkJY29sb3VyID0gY29iYWx0LmcubGlnaHRlbiggc2VsZi5iYWNrQ29sb3VyICkKCQllbmQKCQlpZiBzZWxmLmggPT0gMSB0aGVuCgkJCXNlbGYucGFyZW50LnN1cmY6ZHJhd0xpbmUoIHNlbGYueCArIHNlbGYubWFyZ2lubGVmdCwgc2VsZi55KzEgKyBzZWxmLm1hcmdpbnRvcCwgc2VsZi54ICsgc2VsZi53K3NlbGYubWFyZ2lubGVmdCwgc2VsZi55KzEsICIgIiwgY29sb3VyLCBzZWxmLmZvcmVDb2xvdXIgKQoJCWVsc2UKCQkJc2VsZi5wYXJlbnQuc3VyZjpmaWxsUmVjdCggc2VsZi54ICsgc2VsZi5tYXJnaW5sZWZ0LCBzZWxmLnkgKyBzZWxmLm1hcmdpbnRvcCwgc2VsZi54ICsgc2VsZi53K3NlbGYubWFyZ2lubGVmdCwgc2VsZi55ICsgc2VsZi5oLCAiICIsIGNvbG91ciwgc2VsZi5mb3JlQ29sb3VyICkKCQllbmQKCQlzZWxmLnBhcmVudC5zdXJmOmRyYXdUZXh0KCBzZWxmLngrbWF0aC5jZWlsKChzZWxmLncvMiktI3NlbGYudGV4dC8yICsgIHNlbGYubWFyZ2lubGVmdCksIG1hdGguY2VpbChzZWxmLnkrc2VsZi5oLzIpKyBzZWxmLm1hcmdpbnRvcCwgc2VsZi50ZXh0LCBjb2xvdXIsIHNlbGYuZm9yZUNvbG91ciApCgllbmQKZW5kCgpmdW5jdGlvbiBidXR0b246bW91c2VwcmVzc2VkKCB4LCB5LCBidXR0b24gKQoJaWYgc2VsZi5zdGF0ZSA9PSBjb2JhbHQuc3RhdGUgb3Igc2VsZi5zdGF0ZSA9PSAiX0FMTCIgYW5kIHNlbGYudmlzaWJsZSB0aGVuCgkJaWYgYnV0dG9uID09IDEgdGhlbgoJCQlpZiB4ID49IHNlbGY6Z2V0QWJzWCgpIGFuZCB4IDw9IHNlbGY6Z2V0QWJzWCgpICsgc2VsZi53IGFuZCB5ID49IHNlbGY6Z2V0QWJzWSgpIGFuZCB5IDw9IHNlbGY6Z2V0QWJzWSgpICsgc2VsZi5oIHRoZW4KCQkJCXNlbGYuc2VsZWN0ZWQgPSB0cnVlCgkJCWVuZAoJCWVuZAoJZW5kCmVuZAoKZnVuY3Rpb24gYnV0dG9uOm1vdXNlcmVsZWFzZWQoIHgsIHksIGJ1dHRvbiApCglpZiBzZWxmLnN0YXRlID09IGNvYmFsdC5zdGF0ZSBvciBzZWxmLnN0YXRlID09ICJfQUxMIiBhbmQgc2VsZi52aXNpYmxlIHRoZW4KCQlpZiBidXR0b24gPT0gMSBhbmQgeCA+PSBzZWxmOmdldEFic1goKSBhbmQgeCA8PSBzZWxmOmdldEFic1goKSArIHNlbGYudyBhbmQgeSA+PSBzZWxmOmdldEFic1koKSBhbmQgeSA8PSBzZWxmOmdldEFic1koKSArIHNlbGYuaCB0aGVuCgkJCWlmIHNlbGYuc2VsZWN0ZWQgdGhlbgoJCQkJaWYgc2VsZi5vbmNsaWNrIHRoZW4KCQkJCQlzZWxmLm9uY2xpY2soKQoJCQkJZW5kCgkJCQlzZWxmLnNlbGVjdGVkID0gZmFsc2UKCQkJZW5kCgkJZWxzZQoJCQlzZWxmLnNlbGVjdGVkID0gZmFsc2UKCQllbmQKCWVuZAplbmQKCnJldHVybiBidXR0b24=",
  8. [ "cobalt-ui/elements/input.lua" ] = "bG9jYWwgaW5wdXQgPSB7Cgl4ID0gMSwKCXkgPSAxLAoJdyA9IDI1LAoJYmFja1Bhc3NpdmVDb2xvdXIgPSBjb2xvdXJzLndoaXRlLAoJYmFja0FjdGl2ZUNvbG91ciA9IGNvbG91cnMud2hpdGUsCglmb3JlUGFzc2l2ZUNvbG91ciA9IGNvbG91cnMubGlnaHRHcmV5LAoJZm9yZUFjdGl2ZUNvbG91ciA9IGNvbG91cnMuYmxhY2ssCglwbGFjZWhvbGRlckNvbG91ciA9IGNvbG91cnMubGlnaHRHcmV5LAoJcGxhY2Vob2xkZXIgPSAiIiwKCXRleHQgPSAiIiwKCW1hc2sgPSAiIiwKCWFjdGl2ZSA9IGZhbHNlLAoJdGltZXIgPSAwLAoJZmxhc2ggPSBmYWxzZSwKCXR5cGUgPSAiaW5wdXQiLAoJYXV0b3ggPSAiIiwKCWF1dG95ID0gIiIsCglhdXRvbWwgPSAiIiwKCWF1dG9tdCA9ICIiLAoJYXV0b3cgPSAiIiwKCW1hcmdpbmxlZnQgPSAwLAoJbWFyZ2ludG9wID0gMCwKCW1heGxlbmd0aCA9IC0xLAoJcG9zID0gMSwKCXNjcm9sbCA9IDAsCglkcmF3eCA9IDAsCn0KaW5wdXQuX19pbmRleCA9IGlucHV0CgpmdW5jdGlvbiBpbnB1dDpnZXRQZXJjZW50YWdlcygpCglpZiB0eXBlKHNlbGYudykgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYudyA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLncgKQoJCXNlbGYuYXV0b3cgPSAicGVyYzoiIC4uIHNlbGYudwoJZW5kCglpZiB0eXBlKHNlbGYubWFyZ2lubGVmdCkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYubWFyZ2lubGVmdCA9IGNvYmFsdC5nZXRQZXJjZW50YWdlKCBzZWxmLm1hcmdpbmxlZnQgKQoJCXNlbGYuYXV0b21sID0gInBlcmM6IiAuLiBzZWxmLm1hcmdpbmxlZnQKCWVuZAoJaWYgdHlwZShzZWxmLm1hcmdpbnRvcCkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYubWFyZ2ludG9wID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYubWFyZ2ludG9wICkKCQlzZWxmLmF1dG9tdCA9ICJwZXJjOiIgLi4gc2VsZi5tYXJnaW50b3AKCWVuZAoJaWYgdHlwZShzZWxmLngpID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLnggPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi54ICkKCQlzZWxmLmF1dG94ID0gInBlcmM6IiAuLiBzZWxmLngKCWVuZAoJaWYgdHlwZShzZWxmLnkpID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLnkgPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi55ICkKCQlzZWxmLmF1dG95ID0gInBlcmM6IiAuLiBzZWxmLnkKCWVuZAplbmQKCmZ1bmN0aW9uIGlucHV0Lm5ldyggZGF0YSwgcGFyZW50ICkKCWRhdGEgPSBkYXRhIG9yIHsgfQoJaWYgZGF0YS5zdHlsZSB0aGVuCgkJbG9jYWwgdCA9IGRhdGEuc3R5bGUKCQlmb3IgaywgdiBpbiBwYWlycyggdCApIGRvCgkJCWlmIG5vdCBkYXRhW2tdIHRoZW4KCQkJCWRhdGFba10gPSB2CgkJCWVuZAoJCWVuZAoJCWRhdGEuc3R5bGUgPSBuaWwKCWVuZAoJbG9jYWwgc2VsZiA9IHNldG1ldGF0YWJsZShkYXRhLGlucHV0KQoJc2VsZi5wYXJlbnQgPSBwYXJlbnQKCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJc2VsZjpyZXNpemUoKQoJc2VsZi5zdGF0ZSA9IGRhdGEuc3RhdGUgb3IgcGFyZW50LnN0YXRlCgl0YWJsZS5pbnNlcnQoIHBhcmVudC5jaGlsZHJlbiwgc2VsZiApCglyZXR1cm4gc2VsZgplbmQKCmZ1bmN0aW9uIGlucHV0OnJlc2l6ZSgpCglpZiBzZWxmLmF1dG93OnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b3c6bWF0Y2goInBlcmM6KCVkKykiKQoJCWNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkKCQlzZWxmLncgPSBtYXRoLmNlaWwoIHNlbGYucGFyZW50LncgKiBjb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApICkKCWVuZAoJaWYgc2VsZi5hdXRvbWw6c3ViKCAxLCA0ICkgPT0gInBlcmMiIHRoZW4KCQlsb2NhbCBwZXJjID0gc2VsZi5hdXRvbWw6bWF0Y2goInBlcmM6KCVkKykiKQoJCXNlbGYubWFyZ2lubGVmdCA9IG1hdGguZmxvb3IoIHNlbGYucGFyZW50LncgKiBjb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApICkKCWVuZAoJaWYgc2VsZi5hdXRvbXQ6c3ViKCAxLCA0ICkgPT0gInBlcmMiIHRoZW4KCQlsb2NhbCBwZXJjID0gc2VsZi5hdXRvbXQ6bWF0Y2goInBlcmM6KCVkKykiKQoJCXNlbGYubWFyZ2ludG9wID0gbWF0aC5jZWlsKCBzZWxmLnBhcmVudC5oICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApLTEKCWVuZAoJaWYgc2VsZi5hdXRveCBhbmQgc2VsZi5hdXRveDpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG94Om1hdGNoKCJwZXJjOiglZCspIikKCQlzZWxmLnggPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC53ICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgllbmQKCWlmIHNlbGYuYXV0b3kgYW5kIHNlbGYuYXV0b3k6c3ViKCAxLCA0ICkgPT0gInBlcmMiIHRoZW4KCQlsb2NhbCBwZXJjID0gc2VsZi5hdXRveTptYXRjaCgicGVyYzooJWQrKSIpCgkJc2VsZi55ID0gbWF0aC5mbG9vciggc2VsZi5wYXJlbnQuaCAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJZW5kCmVuZAoKZnVuY3Rpb24gaW5wdXQ6c2V0TWFyZ2lucyggdCwgciwgYiwgbCApCglpZiB0IHRoZW4KCQlzZWxmLm1hcmdpbnRvcCA9IHQgb3Igc2VsZi5tYXJnaW50b3AKCQlpZiB0eXBlKHQpID09ICJzdHJpbmciIHRoZW4KCQkJc2VsZjpnZXRQZXJjZW50YWdlcygpCgkJZWxzZQoJCQlzZWxmLmF1dG9tdCA9ICJub25lIgoJCWVuZAoJZW5kCglpZiByIHRoZW4KCQlzZWxmLm1hcmdpbnJpZ2h0ID0gciBvciBzZWxmLm1hcmdpbnJpZ2h0CgkJaWYgdHlwZShyKSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvbXIgPSAibm9uZSIKCQllbmQKCWVuZAoJaWYgYiB0aGVuCgkJc2VsZi5tYXJnaW50b3AgPSBiIG9yIHNlbGYubWFyZ2ludG9wCgkJaWYgdHlwZShiKSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvbWIgPSAibm9uZSIKCQllbmQKCWVuZAoJaWYgbCB0aGVuCgkJc2VsZi5tYXJnaW5sZWZ0ID0gbCBvciBzZWxmLm1hcmdpbmxlZnQKCQlpZiB0eXBlKGwpID09ICJzdHJpbmciIHRoZW4KCQkJc2VsZjpnZXRQZXJjZW50YWdlcygpCgkJZWxzZQoJCQlzZWxmLmF1dG9tbCA9ICJub25lIgoJCWVuZAoJZW5kCglzZWxmOnJlc2l6ZSgpCmVuZAoKZnVuY3Rpb24gaW5wdXQ6Z2V0QWJzWCgpCglyZXR1cm4gc2VsZi54ICsgc2VsZi5wYXJlbnQ6Z2V0QWJzWCgpLTEgKyBzZWxmLm1hcmdpbmxlZnQKZW5kCgpmdW5jdGlvbiBpbnB1dDpnZXRBYnNZKCkKCXJldHVybiBzZWxmLnkgKyBtYXRoLmZsb29yKHNlbGYucGFyZW50OmdldEFic1koKSktMSArIHNlbGYubWFyZ2ludG9wCmVuZAoKZnVuY3Rpb24gaW5wdXQ6dXBkYXRlKCBkdCApCglpZiBzZWxmLmFjdGl2ZSB0aGVuCgkJc2VsZi50aW1lciA9IHNlbGYudGltZXIgKyAwLjEKCQlpZiBzZWxmLnRpbWVyID4gMC41IHRoZW4KCQkJc2VsZi50aW1lciA9IDAKCQkJc2VsZi5mbGFzaCA9IG5vdCBzZWxmLmZsYXNoCgkJZW5kCgllbHNlCgkJc2VsZi5mbGFzaCA9IGZhbHNlCgllbmQKZW5kCgpmdW5jdGlvbiBpbnB1dDpkcmF3KCkKCgoJaWYgc2VsZi5zdGF0ZSA9PSBjb2JhbHQuc3RhdGUgb3Igc2VsZi5zdGF0ZSA9PSAiX0FMTCIgdGhlbgoJCWxvY2FsIGJjID0gc2VsZi5iYWNrUGFzc2l2ZUNvbG91cgoJCWxvY2FsIGZjID0gc2VsZi5mb3JlUGFzc2l2ZUNvbG91cgoJCWlmIHNlbGYuYWN0aXZlIHRoZW4KCQkJYmMgPSBzZWxmLmJhY2tBY3RpdmVDb2xvdXIKCQkJZmMgPSBzZWxmLmZvcmVBY3RpdmVDb2xvdXIKCQllbmQKCQlzZWxmLnBhcmVudC5zdXJmOmRyYXdMaW5lKCBtYXRoLmZsb29yKHNlbGYueCArIHNlbGYubWFyZ2lubGVmdCksIG1hdGguZmxvb3Ioc2VsZi55ICsgc2VsZi5tYXJnaW50b3ApLCBtYXRoLmZsb29yKHNlbGYueCArIHNlbGYubWFyZ2lubGVmdCkgKyBzZWxmLncsIG1hdGguZmxvb3Ioc2VsZi55ICsgc2VsZi5tYXJnaW50b3ApLCAiICIsIGJjLCBmYyApCgkJbG9jYWwgdCA9IHNlbGYudGV4dAoJCWlmICNzZWxmLnRleHQgPiBzZWxmLnctMSB0aGVuCgkJCXQgPSBzZWxmLnRleHQ6c3ViKCAjc2VsZi50ZXh0LXNlbGYudysxLCAjc2VsZi50ZXh0ICkKCQllbmQKCQlpZiAjc2VsZi50ZXh0ID4gMCB0aGVuCgkJCWlmIHNlbGYubWFzayB+PSAiIiAgdGhlbgoJCQkJbG9jYWwgbXNrc3RyID0gIiIKCQkJCWZvciBpID0gMSwgI3NlbGYudGV4dCBkbwoJCQkJCW1za3N0ciA9IG1za3N0ciAuLiBzZWxmLm1hc2sKCQkJCWVuZAoJCQkJc2VsZi5wYXJlbnQuc3VyZjpkcmF3VGV4dCggbWF0aC5mbG9vcihzZWxmLngrIHNlbGYubWFyZ2lubGVmdCksIG1hdGguZmxvb3Ioc2VsZi55KyBzZWxmLm1hcmdpbnRvcCksIG1za3N0ciwgYmMsIGZjICkKCQkJZWxzZQoJCQkJc2VsZi5wYXJlbnQuc3VyZjpkcmF3VGV4dCggbWF0aC5mbG9vcihzZWxmLngrIHNlbGYubWFyZ2lubGVmdCksIG1hdGguZmxvb3Ioc2VsZi55KyBzZWxmLm1hcmdpbnRvcCksIHQsIGJjLCBmYyApCgkJCWVuZAoJCWVsc2UKCQkJaWYgbm90IHNlbGYuYWN0aXZlIHRoZW4KCQkJCXNlbGYucGFyZW50LnN1cmY6ZHJhd1RleHQoIG1hdGguZmxvb3Ioc2VsZi54KyBzZWxmLm1hcmdpbmxlZnQpLCBtYXRoLmZsb29yKHNlbGYueSsgc2VsZi5tYXJnaW50b3ApLCBzZWxmLnBsYWNlaG9sZGVyLCBiYywgc2VsZi5wbGFjaG9sZGVyQ29sb3VyICkKCQkJZW5kCgkJZW5kCgkJaWYgc2VsZi5mbGFzaCBhbmQgc2VsZi5hY3RpdmUgdGhlbgoJCQlzZWxmLnBhcmVudC5zdXJmOmRyYXdUZXh0KCBtYXRoLmZsb29yKHNlbGYueCsjdCtzZWxmLm1hcmdpbmxlZnQpLCBtYXRoLmZsb29yKHNlbGYueStzZWxmLm1hcmdpbnRvcCksICJfIiwgYmMsIGZjICkKCQllbmQKCWVuZAplbmQKCmZ1bmN0aW9uIGlucHV0Om1vdXNlcHJlc3NlZCggeCwgeSwgYnV0dG9uICkKCWlmIGJ1dHRvbiA9PSAxIGFuZCB4ID49IHNlbGY6Z2V0QWJzWCgpIGFuZCB4IDw9IHNlbGY6Z2V0QWJzWCgpICsgc2VsZi53IGFuZCB5ID09IHNlbGY6Z2V0QWJzWSgpIHRoZW4KCQlzZWxmLmFjdGl2ZSA9IHRydWUKCWVuZAplbmQKCgpmdW5jdGlvbiBpbnB1dDptb3VzZXJlbGVhc2VkKCB4LCB5LCBidXR0b24gKQoJaWYgYnV0dG9uID09IDEgYW5kIHggPj0gc2VsZjpnZXRBYnNYKCkgYW5kIHggPD0gc2VsZjpnZXRBYnNYKCkgKyBzZWxmLncgYW5kIHkgPT0gc2VsZjpnZXRBYnNZKCkgdGhlbgoJCS0tCgllbHNlCgkJc2VsZi5hY3RpdmUgPSBmYWxzZQoJZW5kCmVuZAoKZnVuY3Rpb24gaW5wdXQ6a2V5cHJlc3NlZCgga2V5Y29kZSwga2V5ICkKCWlmIHNlbGYuYWN0aXZlIHRoZW4KCQlpZiBzZWxmLnN0YXRlID09IGNvYmFsdC5zdGF0ZSBvciBzZWxmLnN0YXRlID09ICJfQUxMIiB0aGVuCgkJCXNlbGYudGltZXIgPSAwCgkJCXNlbGYuZmxhc2ggPSB0cnVlCgkJCWlmIGtleWNvZGUgPT0gMTQgdGhlbgoJCQkJc2VsZi50ZXh0ID0gc2VsZi50ZXh0OnN1YigxLCAjc2VsZi50ZXh0LTEgKQoJCQllbHNlaWYga2V5Y29kZSA9PSAyMTEgdGhlbgoKCQkJZWxzZWlmIGtleWNvZGUgPT0gMjggdGhlbgoJCQkJc2VsZi5hY3RpdmUgPSBmYWxzZQoJCQkJaWYgc2VsZi5vbmNvbXBsZXRlIHRoZW4gc2VsZjpvbmNvbXBsZXRlKCkgZW5kCgkJCWVuZAoJCWVuZAoJZW5kCmVuZAoKZnVuY3Rpb24gaW5wdXQ6dGV4dGlucHV0KCB0ICkKCWlmIHNlbGYuc3RhdGUgPT0gY29iYWx0LnN0YXRlIG9yIHNlbGYuc3RhdGUgPT0gIl9BTEwiIHRoZW4KCQlpZiBzZWxmLmFjdGl2ZSBhbmQgKCNzZWxmLnRleHQgPCBzZWxmLm1heGxlbmd0aCBvciBzZWxmLm1heGxlbmd0aCA8IDApIHRoZW4KCQkJc2VsZi50ZXh0ID0gc2VsZi50ZXh0IC4uIHQKCQllbmQKCWVuZAplbmQKCnJldHVybiBpbnB1dA==",
  9. [ "cobalt-ui/elements/panel.lua" ] = "bG9jYWwgcGFuZWwgPSB7Cgl4ID0gMSwKCXkgPSAxLAoJdyA9IDEwLAoJaCA9IDUsCgliYWNrQ29sb3VyID0gY29sb3Vycy53aGl0ZSwKCWZvcmVDb2xvdXIgPSBjb2xvdXJzLmJsYWNrLAoKCXN0YXRlID0gIl9BTEwiLAoJaXNyb290ID0gZmFsc2UsCglzb3J0Q2hpbGRyZW4gPSB0cnVlLAoJdHlwZSA9ICJwYW5lbCIsCglhbHdheXNmb2N1cyA9IGZhbHNlLAoJc2Nyb2xseCA9IDAsCglzY3JvbGx5ID0gMCwKCWF1dG9zaXplID0gdHJ1ZSwKCW1hcmdpbmxlZnQgPSAwLAoJbWFyZ2lucmlnaHQgPSAwLAoJbWFyZ2ludG9wID0gMCwKCW1hcmdpbmJvdHRvbSA9IDAsCglhdXRvdyA9ICJub25lIiwKCWF1dG9oID0gIm5vbmUiLAoJYXV0b21sID0gZmFsc2UsCglhdXRvbXIgPSBmYWxzZSwKCWF1dG9tdCA9IGZhbHNlLAoJYXV0b21iID0gZmFsc2UsCgl3cmFwID0gImxlZnQiLAp9CnBhbmVsLl9faW5kZXggPSBwYW5lbAoKZnVuY3Rpb24gcGFuZWw6Z2V0UGVyY2VudGFnZXMoKQoJaWYgdHlwZShzZWxmLncpID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLncgPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi53ICkKCQlzZWxmLmF1dG93ID0gInBlcmM6IiAuLiBzZWxmLncKCWVsc2UKCQlzZWxmLmF1dG93ID0gIm5vbmUiCgllbmQKCWlmIHR5cGUoc2VsZi5oKSA9PSAic3RyaW5nIiB0aGVuCgkJc2VsZi5oID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYuaCApCgkJc2VsZi5hdXRvaCA9ICJwZXJjOiIgLi4gc2VsZi5oCgllbHNlCgkJc2VsZi5hdXRvaCA9ICJub25lIgoJZW5kCgoJaWYgdHlwZShzZWxmLm1hcmdpbmxlZnQpID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLm1hcmdpbmxlZnQgPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi5tYXJnaW5sZWZ0ICkKCQlzZWxmLmF1dG9tbCA9ICJwZXJjOiIgLi4gc2VsZi5tYXJnaW5sZWZ0CgllbmQKCWlmIHR5cGUoc2VsZi5tYXJnaW5yaWdodCkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYubWFyZ2lucmlnaHQgPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi5tYXJnaW5yaWdodCApCgkJc2VsZi5hdXRvbXIgPSAicGVyYzoiIC4uIHNlbGYubWFyZ2lucmlnaHQKCWVuZAoJaWYgdHlwZShzZWxmLm1hcmdpbnRvcCkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYubWFyZ2ludG9wID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYubWFyZ2ludG9wICkKCQlzZWxmLmF1dG9tdCA9ICJwZXJjOiIgLi4gc2VsZi5tYXJnaW50b3AKCWVuZAoJaWYgdHlwZShzZWxmLm1hcmdpbmJvdHRvbSkgPT0gInN0cmluZyIgdGhlbgoJCXNlbGYubWFyZ2luYm90dG9tID0gY29iYWx0LmdldFBlcmNlbnRhZ2UoIHNlbGYubWFyZ2luYm90dG9tICkKCQlzZWxmLmF1dG9tbCA9ICJwZXJjOiIgLi4gc2VsZi5tYXJnaW5ib3R0b20KCWVuZAoJaWYgdHlwZShzZWxmLngpID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLnggPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi54ICkKCQlzZWxmLmF1dG94ID0gInBlcmM6IiAuLiBzZWxmLngKCWVuZAoJaWYgdHlwZShzZWxmLnkpID09ICJzdHJpbmciIHRoZW4KCQlzZWxmLnkgPSBjb2JhbHQuZ2V0UGVyY2VudGFnZSggc2VsZi55ICkKCQlzZWxmLmF1dG95ID0gInBlcmM6IiAuLiBzZWxmLnkKCWVuZAplbmQKCgpmdW5jdGlvbiBwYW5lbC5uZXcoIGRhdGEsIHBhcmVudCwgaXNyb290ICkKCWxvY2FsIHNlbGYKCWlmIGRhdGEuc3R5bGUgdGhlbgoJCWxvY2FsIHQgPSBkYXRhLnN0eWxlCgkJZm9yIGssIHYgaW4gcGFpcnMoIHQgKSBkbwoJCQlpZiBub3QgZGF0YVtrXSB0aGVuCgkJCQlkYXRhW2tdID0gdgoJCQllbmQKCQllbmQKCQlkYXRhLnN0eWxlID0gbmlsCgllbmQKCXNlbGYgPSBzZXRtZXRhdGFibGUoZGF0YSxwYW5lbCkKCWlmIG5vdCBzZWxmLmlzcm9vdCB0aGVuIHNlbGYucGFyZW50ID0gcGFyZW50IGVuZAoJc2VsZi5jaGlsZHJlbiA9IHsgfQoKCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoKCXNlbGYuYncgPSBzZWxmLncKCXNlbGYuYmggPSBzZWxmLmgKCgoKCWlmIGlzcm9vdCB0aGVuCgkJdGFibGUuaW5zZXJ0KCBjdWkucm9vdHMsIHNlbGYgKQoJCXNlbGYuaXNyb290ID0gdHJ1ZQoJZWxzZQoJCWlmIG5vdCBwYXJlbnQgdGhlbgoJCQllcnJvciggIkV4cGVjdGVkIHBhcmVudCBvYmplY3QiKQoJCWVuZAoJCXRhYmxlLmluc2VydCggcGFyZW50LmNoaWxkcmVuLCBzZWxmICkKCWVuZAoKCXNlbGY6cmVzaXplKCkKCXJldHVybiBzZWxmCmVuZAoKZnVuY3Rpb24gcGFuZWw6cmVzaXplKCB3LCBoICkKCWlmIHcgdGhlbgoJCXNlbGYudyA9IHcgb3Igc2VsZi53CgkJaWYgdHlwZSggc2VsZi53ICkgPT0gInN0cmluZyIgdGhlbgoJCQlzZWxmOmdldFBlcmNlbnRhZ2VzKCkKCQllbHNlCgkJCXNlbGYuYXV0b3cgPSAibm9uZSIKCQllbmQKCWVuZAoJaWYgaCB0aGVuCgkJc2VsZi5oID0gaCBvciBzZWxmLmgKCQlpZiB0eXBlKCBzZWxmLmggKSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvaCA9ICJub25lIgoJCWVuZAoJZW5kCglpZiBzZWxmLmF1dG93OnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b3c6bWF0Y2goInBlcmM6KCVkKykiKQoJCWlmIHNlbGYucGFyZW50IHRoZW4KCQkJc2VsZi53ID0gbWF0aC5jZWlsKCBzZWxmLnBhcmVudC53ICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgkJZWxzZQoJCQlzZWxmLncgPSBtYXRoLmZsb29yKChjb2JhbHQud2luZG93LmdldFdpZHRoKCkpICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgkJZW5kCgllbmQKCWlmIHNlbGYuYXV0b2g6c3ViKCAxLCA0ICkgPT0gInBlcmMiIHRoZW4KCQlsb2NhbCBwZXJjID0gc2VsZi5hdXRvaDptYXRjaCgicGVyYzooJWQrKSIpCgkJaWYgc2VsZi5wYXJlbnQgdGhlbgoJCQlzZWxmLmggPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC5oICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgkJZWxzZQoJCQlzZWxmLmggPSBtYXRoLmZsb29yKChjb2JhbHQud2luZG93LmdldEhlaWdodCgpLTEpICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgkJZW5kCgllbmQKCWlmIHNlbGYuYXV0b21sIGFuZCBzZWxmLmF1dG9tbDpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG9tbDptYXRjaCgicGVyYzooJWQrKSIpCgkJaWYgc2VsZi5wYXJlbnQgdGhlbgoJCQlzZWxmLm1hcmdpbmxlZnQgPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC53ICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgkJZWxzZQoJCQlzZWxmLm1hcmdpbmxlZnQgPSBtYXRoLmZsb29yKCBjb2JhbHQud2luZG93LmdldFdpZHRoKCkgKiBjb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApICkKCQllbmQKCWVuZAoJaWYgc2VsZi5hdXRvbXIgYW5kIHNlbGYuYXV0b21yOnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b21yOm1hdGNoKCJwZXJjOiglZCspIikKCQlpZiBzZWxmLnBhcmVudCB0aGVuCgkJCXNlbGYubWFyZ2lucmlnaHQgPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC53ICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgkJZWxzZQoJCQlzZWxmLm1hcmdpbnJpZ2h0ID0gbWF0aC5mbG9vciggY29iYWx0LndpbmRvdy5nZXRXaWR0aCgpICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgkJZW5kCgllbmQKCWlmIHNlbGYuYXV0b210IGFuZCBzZWxmLmF1dG9tdDpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG9tdDptYXRjaCgicGVyYzooJWQrKSIpCgkJaWYgc2VsZi5wYXJlbnQgdGhlbgoJCQlzZWxmLm1hcmdpbnRvcCA9IG1hdGguZmxvb3IoIHNlbGYucGFyZW50LmggKiBjb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApICkKCQllbHNlCgkJCXNlbGYubWFyZ2ludG9wID0gbWF0aC5mbG9vciggY29iYWx0LndpbmRvdy5nZXRIZWlnaHQoKSAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJCWVuZAoJZW5kCglpZiBzZWxmLmF1dG9tYiBhbmQgc2VsZi5hdXRvbWI6c3ViKCAxLCA0ICkgPT0gInBlcmMiIHRoZW4KCQlsb2NhbCBwZXJjID0gc2VsZi5hdXRvbWI6bWF0Y2goInBlcmM6KCVkKykiKQoJCWlmIHNlbGYucGFyZW50IHRoZW4KCQkJc2VsZi5tYXJnaW5ib3R0b20gPSBtYXRoLmZsb29yKCBzZWxmLnBhcmVudC5oICogY29iYWx0LnNldFBlcmNlbnRhZ2UoIHBlcmMgKSApCgkJZWxzZQoJCQlzZWxmLm1hcmdpbmJvdHRvbSA9IG1hdGguZmxvb3IoIGNvYmFsdC53aW5kb3cuZ2V0SGVpZ2h0KCkgKiBjb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApICkKCQllbmQKCWVuZAoJaWYgc2VsZi5hdXRveCBhbmQgc2VsZi5hdXRveCBhbmQgc2VsZi5hdXRveDpzdWIoIDEsIDQgKSA9PSAicGVyYyIgdGhlbgoJCWxvY2FsIHBlcmMgPSBzZWxmLmF1dG94Om1hdGNoKCJwZXJjOiglZCspIikKCQlpZiBzZWxmLnBhcmVudCB0aGVuCgkJCXNlbGYueCA9IG1hdGguZmxvb3IoIHNlbGYucGFyZW50LncgKiBjb2JhbHQuc2V0UGVyY2VudGFnZSggcGVyYyApICkKCQllbHNlCgkJCXNlbGYueCA9IG1hdGguZmxvb3IoIGNvYmFsdC53aW5kb3cuZ2V0V2lkdGgoKSAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJCWVuZAoJZW5kCglpZiBzZWxmLmF1dG95IGFuZCBzZWxmLmF1dG95IGFuZCBzZWxmLmF1dG95OnN1YiggMSwgNCApID09ICJwZXJjIiB0aGVuCgkJbG9jYWwgcGVyYyA9IHNlbGYuYXV0b3k6bWF0Y2goInBlcmM6KCVkKykiKQoJCWlmIHNlbGYucGFyZW50IHRoZW4KCQkJc2VsZi55ID0gbWF0aC5mbG9vciggc2VsZi5wYXJlbnQuaCAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJCWVsc2UKCQkJc2VsZi55ID0gbWF0aC5mbG9vciggY29iYWx0LndpbmRvdy5nZXRIZWlnaHQoKSAqIGNvYmFsdC5zZXRQZXJjZW50YWdlKCBwZXJjICkgKQoJCWVuZAoJZW5kCglpZiBzZWxmLmNoaWxkcmVuIHRoZW4KCQlmb3IgaSwgdiBpbiBwYWlycyggc2VsZi5jaGlsZHJlbiApIGRvCgkJCXY6cmVzaXplKCkKCQllbmQKCWVuZAoJc2VsZi5zdXJmID0gbmlsCglzZWxmLnN1cmYgPSBzdXJmYWNlLmNyZWF0ZSggc2VsZi53LCBzZWxmLmgsICIgIiwgc2VsZi5iYWNrQ29sb3VyLCBzZWxmLmZvcmVDb2xvdXIgKQplbmQKCmZ1bmN0aW9uIHBhbmVsOnNldE1hcmdpbnMoIHQsIHIsIGIsIGwgKQoJaWYgdCB0aGVuCgkJc2VsZi5tYXJnaW50b3AgPSB0IG9yIHNlbGYubWFyZ2ludG9wCgkJaWYgdHlwZSh0KSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvbXQgPSAibm9uZSIKCQllbmQKCWVuZAoJaWYgciB0aGVuCgkJc2VsZi5tYXJnaW5yaWdodCA9IHIgb3Igc2VsZi5tYXJnaW5yaWdodAoJCWlmIHR5cGUocikgPT0gInN0cmluZyIgdGhlbgoJCQlzZWxmOmdldFBlcmNlbnRhZ2VzKCkKCQllbHNlCgkJCXNlbGYuYXV0b21yID0gIm5vbmUiCgkJZW5kCgllbmQKCWlmIGIgdGhlbgoJCXNlbGYubWFyZ2ludG9wID0gYiBvciBzZWxmLm1hcmdpbnRvcAoJCWlmIHR5cGUoYikgPT0gInN0cmluZyIgdGhlbgoJCQlzZWxmOmdldFBlcmNlbnRhZ2VzKCkKCQllbHNlCgkJCXNlbGYuYXV0b21iID0gIm5vbmUiCgkJZW5kCgllbmQKCWlmIGwgdGhlbgoJCXNlbGYubWFyZ2lubGVmdCA9IGwgb3Igc2VsZi5tYXJnaW5sZWZ0CgkJaWYgdHlwZShsKSA9PSAic3RyaW5nIiB0aGVuCgkJCXNlbGY6Z2V0UGVyY2VudGFnZXMoKQoJCWVsc2UKCQkJc2VsZi5hdXRvbWwgPSAibm9uZSIKCQllbmQKCWVuZAoJc2VsZjpyZXNpemUoKQplbmQKCmZ1bmN0aW9uIHBhbmVsOmdldEFic1goKQoJaWYgbm90IHNlbGYuaXNyb290IHRoZW4KCQlyZXR1cm4gc2VsZi54ICsgc2VsZi5wYXJlbnQ6Z2V0QWJzWCgpLTEgKyBzZWxmLm1hcmdpbmxlZnQKCWVuZAoJcmV0dXJuIHNlbGYueCArIHNlbGYubWFyZ2lubGVmdAplbmQKCmZ1bmN0aW9uIHBhbmVsOmdldEFic1koKQoJaWYgbm90IHNlbGYuaXNyb290IHRoZW4KCQlyZXR1cm4gc2VsZi55ICsgbWF0aC5mbG9vcihzZWxmLnBhcmVudDpnZXRBYnNZKCkpLTEgKyBzZWxmLm1hcmdpbnRvcAoJZW5kCglyZXR1cm4gc2VsZi55ICsgc2VsZi5tYXJnaW50b3AKZW5kCgpmdW5jdGlvbiBwYW5lbDpnZXRBYnNXKCkKCXJldHVybiBzZWxmOmdldEFic1goKSArIHNlbGYudwplbmQKCmZ1bmN0aW9uIHBhbmVsOmdldEFic0goKQoJcmV0dXJuIHNlbGY6Z2V0QWJzWSgpICsgc2VsZi5oCmVuZAoKZnVuY3Rpb24gcGFuZWw6c2V0QmFja2dyb3VuZENvbG91ciggY29sb3VyICkKCXNlbGYuYmFja0NvbG91ciA9IGNvbG91ciBvciBzZWxmLmJhY2tDb2xvdXIKZW5kCgpmdW5jdGlvbiBwYW5lbDphZGQoIHR5cGUsIGRhdGEgKQoJcmV0dXJuIGN1aS5lbGVtZW50c1t0eXBlXS5uZXcoIGRhdGEsIHNlbGYsIGZhbHNlICkKZW5kCgpmdW5jdGlvbiBwYW5lbDpnZXRDaGVja1Jlc3VsdHMoIGdyb3VwICkKCWxvY2FsIHJlc3VsdHMgPSB7IH0KCWdyb3VwID0gZ3JvdXAgb3IgIl9BTEwiCglmb3IgaywgdiBpbiBwYWlycyggc2VsZi5jaGlsZHJlbiApIGRvCgkJaWYgdi50eXBlIGFuZCB2LnR5cGUgPT0gImNoZWNrYm94IiB0aGVuCgkJCWlmIHYuZ3JvdXAgPT0gZ3JvdXAgb3IgZ3JvdXAgPT0gIl9BTEwiIHRoZW4KCQkJCWlmIHYuc2VsZWN0ZWQgdGhlbgoJCQkJCXJlc3VsdHNbI3Jlc3VsdHMrMV0gPSB2LnZhbAoJCQkJZW5kCgkJCWVuZAoJCWVuZAoJZW5kCglyZXR1cm4gcmVzdWx0cwplbmQKCmZ1bmN0aW9uIHBhbmVsOmdldFJhZGlvUmVzdWx0cyggZ3JvdXAgKQoJbG9jYWwgcmVzdWx0cyA9IHsgfQoJZ3JvdXAgPSBncm91cCBvciAiX0FMTCIKCWZvciBrLCB2IGluIHBhaXJzKCBzZWxmLmNoaWxkcmVuICkgZG8KCQlpZiB2LnR5cGUgYW5kIHYudHlwZSA9PSAicmFkaW8iIHRoZW4KCQkJaWYgdi5ncm91cCA9PSBncm91cCBvciBncm91cCA9PSAiX0FMTCIgdGhlbgoJCQkJaWYgdi5zZWxlY3RlZCB0aGVuCgkJCQkJcmVzdWx0c1sjcmVzdWx0cysxXSA9IHYudmFsCgkJCQllbmQKCQkJZW5kCgkJZW5kCgllbmQKCXJldHVybiByZXN1bHRzCmVuZAoKCgpmdW5jdGlvbiBwYW5lbDpicmluZ1RvRnJvbnQoKQoKCWlmIHNlbGYucGFyZW50IGFuZCBzZWxmLnBhcmVudC5zb3J0Q2hpbGRyZW4gdGhlbgoJCWZvciBrLCB2IGluIHBhaXJzKCBzZWxmLnBhcmVudC5jaGlsZHJlbiApIGRvCgkJCWlmIHYgPT0gc2VsZiB0aGVuCgkJCQl0YWJsZS5yZW1vdmUoIHNlbGYucGFyZW50LmNoaWxkcmVuLCBrICkKCQkJCXRhYmxlLmluc2VydCggc2VsZi5wYXJlbnQuY2hpbGRyZW4sIDEsIHYgKQoJCQllbmQKCQllbmQKCWVsc2UKCQlmb3IgaywgdiBpbiBwYWlycyggY3VpLnJvb3RzICkgZG8KCQkJaWYgdiA9PSBzZWxmIHRoZW4KCQkJCXRhYmxlLnJlbW92ZSggY3VpLnJvb3RzLCBrICkKCQkJCXRhYmxlLmluc2VydCggY3VpLnJvb3RzLCAxLCB2ICkKCQkJZW5kCgkJZW5kCgllbmQKCmVuZApmdW5jdGlvbiBwYW5lbDpzZW5kVG9CYWNrKCkKCglpZiBzZWxmLnBhcmVudCBhbmQgc2VsZi5wYXJlbnQuc29ydENoaWxkcmVuIHRoZW4KCQlmb3IgaywgdiBpbiBwYWlycyggc2VsZi5wYXJlbnQuY2hpbGRyZW4gKSBkbwoJCQlpZiB2ID09IHNlbGYgdGhlbgoJCQkJdGFibGUucmVtb3ZlKCBzZWxmLnBhcmVudC5jaGlsZHJlbiwgayApCgkJCQl0YWJsZS5pbnNlcnQoIHNlbGYucGFyZW50LmNoaWxkcmVuLCAjc2VsZi5wYXJlbnQuY2hpbGRyZW4sIHYgKQoJCQllbmQKCQllbmQKCWVsc2UKCQlmb3IgaywgdiBpbiBwYWlycyggY3VpLnJvb3RzICkgZG8KCQkJaWYgdiA9PSBzZWxmIHRoZW4KCQkJCXRhYmxlLnJlbW92ZSggY3VpLnJvb3RzLCBrICkKCQkJCXRhYmxlLmluc2VydCggY3VpLnJvb3RzLCAjY3VpLnJvb3RzLCB2ICkKCQkJZW5kCgkJZW5kCgllbmQKCmVuZAoKZnVuY3Rpb24gcGFuZWw6dXBkYXRlKCBkdCApCglpZiBzZWxmLncgfj0gc2VsZi5idyB0aGVuCgkJc2VsZi5idyA9IHNlbGYudwoJCXNlbGY6cmVzaXplKCkKCWVuZAoJaWYgc2VsZi5oIH49IHNlbGYuYmggdGhlbgoJCXNlbGYuYmggPSBzZWxmLmgKCQlzZWxmOnJlc2l6ZSgpCgllbmQKCWZvciBpLCB2IGluIHBhaXJzKCBzZWxmLmNoaWxkcmVuICkgZG8KCQlpZiB2LnVwZGF0ZSB0aGVuIHY6dXBkYXRlKCkgZW5kCgllbmQKCmVuZAoKZnVuY3Rpb24gcGFuZWw6ZHJhdyggKQoJaWYgc2VsZi53cmFwID09ICJjZW50ZXIiIHRoZW4KCQlzZWxmLnggPSAoIHNlbGYucGFyZW50LncvMiAtIHNlbGYudy8yICkgKyBzZWxmLm1hcmdpbmxlZnQKCWVuZAoJaWYgc2VsZi5zdGF0ZSA9PSBjb2JhbHQuc3RhdGUgb3Igc2VsZi5zdGF0ZSA9PSAiX0FMTCIgdGhlbgoJCXNlbGYuc3VyZjpjbGVhcigiICIsIHNlbGYuYmFja0NvbG91ciwgc2VsZi5mb3JlQ29sb3VyKQoJCWZvciBpLCB2IGluIHBhaXJzKCBzZWxmLmNoaWxkcmVuICkgZG8KCQkJaWYgdi5kcmF3IHRoZW4gdjpkcmF3KCkgZW5kCgkJZW5kCgkJaWYgc2VsZi5pc3Jvb3QgdGhlbgoJCQlzZWxmLnN1cmY6cmVuZGVyKHRlcm0sIHNlbGYueCtzZWxmLm1hcmdpbmxlZnQsIHNlbGYueStzZWxmLm1hcmdpbnRvcCwgc2VsZi5zY3JvbGx4LCBzZWxmLnNjcm9sbHksIHNlbGYuc2Nyb2xseCArIHNlbGYudywgc2VsZi5zY3JvbGx5K3NlbGYuaCkKCQllbHNlCgkJCXNlbGYucGFyZW50LnN1cmY6ZHJhd1N1cmZhY2Uoc2VsZi54K3NlbGYubWFyZ2lubGVmdCwgc2VsZi55K3NlbGYubWFyZ2ludG9wLCBzZWxmLnN1cmYpCgkJZW5kCgllbmQKZW5kCgpmdW5jdGlvbiBwYW5lbDptb3VzZXByZXNzZWQoIHgsIHksIGJ1dHRvbiApCglpZiBzZWxmLmFsd2F5c2ZvY3VzIHRoZW4KCQlzZWxmOmJyaW5nVG9Gcm9udCgpCgllbmQKCglpZiBzZWxmLnN0YXRlID09IGNvYmFsdC5zdGF0ZSBvciBzZWxmLnN0YXRlID09ICJfQUxMIiB0aGVuCgkJaWYgeCA+PSBzZWxmOmdldEFic1goKSBhbmQgeCA8PSBzZWxmOmdldEFic1goKSArIHNlbGYudyBhbmQgeSA+PSBzZWxmOmdldEFic1koKSBhbmQgeSA8PSBzZWxmOmdldEFic1koKSArIHNlbGYuaCB0aGVuCgkJCXNlbGY6YnJpbmdUb0Zyb250KCkKCQkJZm9yIGksIHYgaW4gcGFpcnMoIHNlbGYuY2hpbGRyZW4gKSBkbwoJCQkJaWYgdi5tb3VzZXByZXNzZWQgdGhlbiB2Om1vdXNlcHJlc3NlZCggeCwgeSwgYnV0dG9uICkgZW5kCgkJCWVuZAoKCQkJcmV0dXJuIHRydWUKCQllbmQKCWVuZAplbmQKCgoKZnVuY3Rpb24gcGFuZWw6bW91c2VyZWxlYXNlZCggeCwgeSwgYnV0dG9uICkKCglpZiB4ID49IHNlbGY6Z2V0QWJzWCgpIGFuZCB4IDw9IHNlbGY6Z2V0QWJzWCgpICsgc2VsZi53IGFuZCB5ID49IHNlbGY6Z2V0QWJzWSgpIGFuZCB5IDw9IHNlbGY6Z2V0QWJzWSgpICsgc2VsZi5oIHRoZW4KCQlpZiBzZWxmLnN0YXRlID09IGNvYmFsdC5zdGF0ZSBvciBzZWxmLnN0YXRlID09ICJfQUxMIiB0aGVuCgkJCWZvciBpLCB2IGluIHBhaXJzKCBzZWxmLmNoaWxkcmVuICkgZG8KCQkJCWlmIHYubW91c2VyZWxlYXNlZCB0aGVuIHY6bW91c2VyZWxlYXNlZCggeCwgeSwgYnV0dG9uICkgZW5kCgkJCWVuZAoJCQlyZXR1cm4gdHJ1ZQoJCWVuZAoJZW5kCmVuZAoKZnVuY3Rpb24gcGFuZWw6dGV4dGlucHV0KCB0ICkKCglpZiBzZWxmLnN0YXRlID09IGNvYmFsdC5zdGF0ZSBvciBzZWxmLnN0YXRlID09ICJfQUxMIiB0aGVuCgkJLS0KCgkJZm9yIGssIHYgaW4gcGFpcnMoIHNlbGYuY2hpbGRyZW4gKSBkbwoJCQlpZiB2LnRleHRpbnB1dCB0aGVuIHY6dGV4dGlucHV0KCB0ICkgZW5kCgkJZW5kCgllbmQKCmVuZAoKZnVuY3Rpb24gcGFuZWw6a2V5cHJlc3NlZCgga2V5Y29kZSwga2V5ICkKCWlmIHNlbGYuc3RhdGUgPT0gY29iYWx0LnN0YXRlIG9yIHNlbGYuc3RhdGUgPT0gIl9BTEwiIHRoZW4KCQlmb3IgaywgdiBpbiBwYWlycyggc2VsZi5jaGlsZHJlbiApIGRvCgkJCWlmIHYua2V5cHJlc3NlZCB0aGVuIHY6a2V5cHJlc3NlZCgga2V5Y29kZSwga2V5ICkgZW5kCgkJZW5kCgoJZW5kCmVuZAoKZnVuY3Rpb24gcGFuZWw6bW91c2VkcmFnKCB4LCB5ICkKCWZvciBrLCB2IGluIHBhaXJzKCBzZWxmLmNoaWxkcmVuICkgZG8KCQlpZiB2Lm1vdXNlZHJhZyB0aGVuIHY6bW91c2VkcmFnKCB4LCB5ICkgZW5kCgllbmQKZW5kCgpmdW5jdGlvbiBwYW5lbDprZXlyZWxlYXNlZCgga2V5Y29kZSwga2V5ICkKCWlmIHNlbGYuc3RhdGUgPT0gY29iYWx0LnN0YXRlIG9yIHNlbGYuc3RhdGUgPT0gIl9BTEwiIHRoZW4KCgkJZm9yIGssIHYgaW4gcGFpcnMoIHNlbGYuY2hpbGRyZW4gKSBkbwoJCQlpZiB2LmtleXJlbGVhc2VkIHRoZW4gdjprZXlyZWxlYXNlZCgga2V5Y29kZSwga2V5ICkgZW5kCgkJZW5kCgoJZW5kCmVuZAoKcmV0dXJuIHBhbmVs",
  10. }
  11. ]] --End of bundle
  12.  
  13.  
  14. --Bundel Extraction Script version 1.0
  15.  
  16. -- BASE64 Encoding
  17.  
  18. -- Lua 5.1+ base64 v3.0 (c) 2009 by Alex Kloss <alexthkloss@web.de>
  19. -- licensed under the terms of the LGPL2
  20.  
  21. -- character table string
  22. local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  23.  
  24. -- decoding
  25. function dec(data)
  26. data = string.gsub(data, '[^'..b..'=]', '')
  27. return (data:gsub('.', function(x)
  28. if (x == '=') then return '' end
  29. local r,f='',(b:find(x)-1)
  30. for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
  31. return r;
  32. end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
  33. if (#x ~= 8) then return '' end
  34. local c=0
  35. for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
  36. return string.char(c)
  37. end))
  38. end
  39.  
  40. -- ACTUAL PROGRAM STARTS NOW
  41.  
  42. print("Bundel by Admicos.")
  43. print("\nExtracting bundle here.")
  44.  
  45. for name, file in pairs(textutils.unserialize(bundle)) do
  46. print("[#] Extracting " .. name)
  47.  
  48. local handle = fs.open(shell.dir() .. "/" .. name, "w")
  49. handle.write(dec(file))
  50. handle.close()
  51. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement