/** * Code Designer, v: 1.18.1 * https://www.code-designer.eu * * Projekt: "arduino_nano" * Device: "nano" * Data utworzenia: 2021/7/7 * */eyJkZXZpY2UiOiJhcmR1aW5vX25hbm8iLCJjb250ZW50IjoiI2luY2x1ZGUgPEFyZHVpbm8uaD5cbiNpbmNsdWRlIFwiTWluaUthbWUuaFwiXG5cbi8vdW5jb21tZW50IG91dCBiZWxvdyBsaW5lIGlmIHlvdSB3YW50IHRvIHVzZSBIQ19TUjA0IHNlbnNvclxuLy8jZGVmaW5lIF9fSENfU1IwNF9fXG5cbiNpZmRlZiBfX0hDX1NSMDRfX1xuI2RlZmluZSBIQ19TUjA0X1RSSUdHRVJfUElOIDEwXG4jZGVmaW5lIEhDX1NSMDRfRUNIT19QSU4gMTFcbiNkZWZpbmUgTUlOX0RJU1RBTkNFIDEwXG4jZGVmaW5lIE1BWF9ESVNUQU5DRSBNSU5fRElTVEFOQ0UgKyAxMFxuI2VuZGlmXG5cbiNkZWZpbmUgQ0FMX1RSSUdHRVJfUElOIDEyXG4jZGVmaW5lIExFRF9QSU4gQTBcbiNkZWZpbmUgVElNRV9JTlRFUlZBTCA1MDAwXG5cbiNkZWZpbmUgRk9SV0FSRCAnZidcbiNkZWZpbmUgTEVGVCAnbCdcbiNkZWZpbmUgU1RBTkQgJ3MnXG4jZGVmaW5lIFJJR0hUICdyJ1xuI2RlZmluZSBCQUNLV0FSRCAnYidcbiNkZWZpbmUgR08gJ2cnXG4jZGVmaW5lIFJJR0hUX0ZST05UICdjJ1xuI2RlZmluZSBSSUdIVF9CQUNLICdlJ1xuI2RlZmluZSBMRUZUX0ZST05UICdkJ1xuI2RlZmluZSBMRUZUX0JBQ0sgJ2gnXG5cbk1pbmlLYW1lIHJvYm90O1xuXG52b2xhdGlsZSBib29sZWFuIGF1dG9fbW9kZSA9IHRydWU7XG5ib29sIHN0YXRlID0gdHJ1ZTtcbmNoYXIgY21kID0gU1RBTkQ7XG5ib29sZWFuIHJhbmRvbV93YWxrID0gdHJ1ZTtcblxudm9pZCBzZXR1cCgpIHtcbiAgU2VyaWFsLmJlZ2luKDExNTIwMCk7XG5cbiNpZmRlZiBfX0hDX1NSMDRfX1xuICBwaW5Nb2RlKEhDX1NSMDRfVFJJR0dFUl9QSU4sIE9VVFBVVCk7XG4gIHBpbk1vZGUoSENfU1IwNF9FQ0hPX1BJTiwgSU5QVVQpO1xuI2VuZGlmXG4gIHJhbmRvbVNlZWQoYW5hbG9nUmVhZChBNykpO1xuXG4gIC8vXG4gIHJvYm90LmluaXQoKTtcbiAgZGVsYXkoMjAwMCk7XG5cbiAgLy9iZWdpbjogdHJpZ2dlcmluZyBkZWxheSBmb3Igc2Vydm8gY2FsaWJyYXRpbmdcbiAgcGluTW9kZShDQUxfVFJJR0dFUl9QSU4sIE9VVFBVVCk7XG4gIGRpZ2l0YWxXcml0ZShDQUxfVFJJR0dFUl9QSU4sIDApO1xuICBwaW5Nb2RlKENBTF9UUklHR0VSX1BJTiwgSU5QVVQpO1xuICB3aGlsZSAoZGlnaXRhbFJlYWQoQ0FMX1RSSUdHRVJfUElOKSkge1xuICAgIGFuYWxvZ1dyaXRlKExFRF9QSU4sIDEyOCAqIHN0YXRlKTsgLy8gb24gY2FsaWJhcnRpbmcgaW5kaWNhdGlvbiBMRURcbiAgICBkZWxheSgxMDAwKTtcbiAgICBzdGF0ZSA9ICFzdGF0ZTtcbiAgfVxuICBhbmFsb2dXcml0ZShMRURfUElOLCAwKTsgLy8gb2ZmIGNhbGliYXJ0aW5nIGluZGljYXRpb24gTEVEXG4gIC8vZW5kOlxufVxuXG52b2lkIGxvb3AoKSB7XG4gIGlmIChhdXRvX21vZGUpIHtcbiAgICBpZiAocmFuZG9tX3dhbGspXG4gICAgICBnYWl0czIoMCk7XG4gICAgZWxzZVxuICAgICAgZ2FpdHMyKDEpO1xuICB9IGVsc2Uge1xuICAgIGdhaXRzKGNtZCk7XG4gIH1cbn1cblxudm9pZCBzZXJpYWxFdmVudCgpIHtcbiAgY2hhciB0bXAgPSAtMTtcbiAgYm9vbGVhbiB0YWtlbiA9IGZhbHNlO1xuXG4gIHdoaWxlIChTZXJpYWwuYXZhaWxhYmxlKCkpIHtcbiAgICBzdGF0ZSA9ICFzdGF0ZTtcbiAgICBhbmFsb2dXcml0ZShMRURfUElOLCAxMjggKiBzdGF0ZSk7IC8vZmxhc2hpbmcgTEVEIGluZGljYXRpbmcgY21kIHJlY2VpdmVkXG4gICAgdG1wID0gU2VyaWFsLnJlYWQgKCk7IC8vU2VyaWFsLnByaW50bG4oY21kKTtcbiAgICBub3RfZ2FpdHModG1wKTtcbiAgICB0YWtlbiA9IGdhaXRzKHRtcCk7XG4gICAgaWYgKHRha2VuKSBjbWQgPSB0bXA7XG4gIH1cbn1cblxuXG5ib29sZWFuICBnYWl0cyhjaGFyIGNtZCkge1xuICBib29sIHRha2VuID0gdHJ1ZTtcbiAgc3dpdGNoIChjbWQpIHtcbiAgICBjYXNlIEdPOlxuICAgICAgcm9ib3Qud2FsaygpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBGT1JXQVJEOlxuICAgICAgcm9ib3Qud2FsaygpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBCQUNLV0FSRDpcbiAgICAgIC8vcm9ib3QucnVuKDApO1xuICAgICAgcm9ib3Qud2FsaygwKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUklHSFQ6XG4gICAgICByb2JvdC50dXJuUigxLCA1NTApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBMRUZUOlxuICAgICAgcm9ib3QudHVybkwoMSwgNTUwKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUklHSFRfRlJPTlQ6XG4gICAgICByb2JvdC50dXJuUigxLCA1NTApO1xuICAgICAgcm9ib3Qud2FsaygpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBSSUdIVF9CQUNLOlxuICAgICAgcm9ib3QudHVyblIoMSwgNTUwKTtcbiAgICAgIHJvYm90LndhbGsoMCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIExFRlRfRlJPTlQ6XG4gICAgICByb2JvdC50dXJuTCgxLCA1NTApO1xuICAgICAgcm9ib3Qud2FsaygpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBMRUZUX0JBQ0s6XG4gICAgICByb2JvdC50dXJuTCgxLCA1NTApO1xuICAgICAgcm9ib3Qud2FsaygwKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBTkQ6XG4gICAgICByb2JvdC5ob21lKCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGFrZW4gPSBmYWxzZTtcbiAgfVxuICByZXR1cm4gdGFrZW47XG59XG5cbnZvaWQgbm90X2dhaXRzKGNoYXIgY21kKSB7XG4gIHN0YXRpYyBzaG9ydCByZWNlaXZlZE51bWJlciA9IDA7XG4gIHN0YXRpYyBib29sIG5lZ2F0aXZlID0gZmFsc2U7XG4gIHN0YXRpYyBieXRlIGNoYW5uZWwgPSAxO1xuXG4gIHN3aXRjaCAoY21kKSB7XG4gICAgY2FzZSAnTCc6XG4gICAgICByb2JvdC5sb2FkVHJpbSgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnUyc6XG4gICAgICByb2JvdC5zdG9yZVRyaW0oKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgICc8JzogIC8vIGZhbGwgdGhyb3VnaCB0byBzdGFydCBhIG5ldyBudW1iZXIgd2l0aCBwcmVmaXggeCx5IGNoYXJcbiAgICAgIHJlY2VpdmVkTnVtYmVyID0gMDtcbiAgICAgIGNoYW5uZWwgPSAwO1xuICAgICAgbmVnYXRpdmUgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgY2hhbm5lbCA9IDE7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd5JzpcbiAgICAgIGNoYW5uZWwgPSAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAneic6XG4gICAgICBjaGFubmVsID0gMztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ1onOlxuICAgICAgY2hhbm5lbCA9IDQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdhJzpcbiAgICAgIGNoYW5uZWwgPSA1O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnQSc6XG4gICAgICBjaGFubmVsID0gNjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzAnIC4uLiAnOSc6XG4gICAgICByZWNlaXZlZE51bWJlciAqPSAxMDtcbiAgICAgIHJlY2VpdmVkTnVtYmVyICs9IGNtZCAtICcwJztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy0nOlxuICAgICAgbmVnYXRpdmUgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnPic6IC8vIGVuZCBvZiBnZXR0aW5nIGEgbnVtYmVyIGluIGZvcm1hdCBvZiA8W3gseSx6LGFdbnVtYmVyPlxuICAgICAgaWYgKG5lZ2F0aXZlKSByZWNlaXZlZE51bWJlciA9IC1yZWNlaXZlZE51bWJlcjtcbiAgICAgIHN3aXRjaCAoY2hhbm5lbCkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHJlY2VpdmVkTnVtYmVyID49IDEyNykge1xuICAgICAgICAgICAgc3RhdGUgPSBhdXRvX21vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGFuYWxvZ1dyaXRlKExFRF9QSU4sIDApO1xuICAgICAgICAgICAgcm9ib3QuaG9tZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0YXRlID0gYXV0b19tb2RlID0gdHJ1ZTtcbiAgICAgICAgICAgIGFuYWxvZ1dyaXRlKExFRF9QSU4sIDEyOCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHJlY2VpdmVkTnVtYmVyID49IDEyNylcbiAgICAgICAgICAgIHJhbmRvbV93YWxrID0gZmFsc2U7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmFuZG9tX3dhbGsgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKGF1dG9fbW9kZSkgYnJlYWs7XG4gICAgICAgICAgcm9ib3Quc2V0VHJpbShGUk9OVF9SSUdIVF9ISVAsIHJlY2VpdmVkTnVtYmVyKTtcbiAgICAgICAgICByb2JvdC5ob21lKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBpZiAoYXV0b19tb2RlKSBicmVhaztcbiAgICAgICAgICByb2JvdC5zZXRUcmltKEZST05UX0xFRlRfSElQLCByZWNlaXZlZE51bWJlcik7XG4gICAgICAgICAgcm9ib3QuaG9tZSgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgaWYgKGF1dG9fbW9kZSkgYnJlYWs7XG4gICAgICAgICAgcm9ib3Quc2V0VHJpbShCQUNLX1JJR0hUX0hJUCwgcmVjZWl2ZWROdW1iZXIpO1xuICAgICAgICAgIHJvYm90LmhvbWUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIGlmIChhdXRvX21vZGUpIGJyZWFrO1xuICAgICAgICAgIHJvYm90LnNldFRyaW0oQkFDS19MRUZUX0hJUCwgcmVjZWl2ZWROdW1iZXIpO1xuICAgICAgICAgIHJvYm90LmhvbWUoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH0gIC8vIGVuZCBvZiBpbm5lciBzd2l0Y2hcbiAgICAgIGJyZWFrO1xuICB9IC8vIGVuZCBvZiBzd2l0Y2hcblxufVxuXG52b2lkIGdhaXRzMihpbnQgcGF0dGVybikge1xuICBjaGFyIG1vdmVtZW50c1tdID0ge0ZPUldBUkQsIExFRlQsIFNUQU5ELCBSSUdIVCwgQkFDS1dBUkQsIFJJR0hUX0ZST05ULCBSSUdIVF9CQUNLLCBMRUZUX0ZST05ULCBMRUZUX0JBQ0ssIEdPfTtcbiAgY2hhciBtb3ZlbWVudHMyW10gPSB7Rk9SV0FSRCwgTEVGVCwgRk9SV0FSRCwgIFJJR0hUfTtcbiAgc3RhdGljIHVuc2lnbmVkIGxvbmcgY3VyX3RpbWUgPSAwLCBwcmV2X3RpbWUgPSAwO1xuICBzdGF0aWMgY2hhciBjbWQgPSBGT1JXQVJELCBwcmV2X2NtZCA9IC0xO1xuICBzdGF0aWMgaW50IGMgPSAwO1xuXG4gIGN1cl90aW1lID0gbWlsbGlzKCk7XG4gIGlmIChjdXJfdGltZSAtIHByZXZfdGltZSA+PSBUSU1FX0lOVEVSVkFMKSB7XG4gICAgcHJldl90aW1lID0gY3VyX3RpbWU7XG4gICAgZG8ge1xuICAgICAgc3dpdGNoIChwYXR0ZXJuKSB7XG4gICAgICAgIGNhc2UgMDogYyA9IChpbnQpcmFuZG9tKDAsIHNpemVvZihtb3ZlbWVudHMpKTtcbiAgICAgICAgICBjbWQgPSBtb3ZlbWVudHNbY107XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTogIGMgPSBjICUgc2l6ZW9mKG1vdmVtZW50czIpO1xuICAgICAgICAgIGNtZCA9IG1vdmVtZW50czJbYysrXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBwYXR0ZXJuID0gMDtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChjbWQgPT0gcHJldl9jbWQpO1xuICAgIHByZXZfY21kID0gY21kOyAvL1NlcmlhbC5wcmludGxuKGNtZCk7XG4gIH1cbiNpZmRlZiBfX0hDX1NSMDRfX1xuICBjbWQgPSBkZXRlY3Rfb2JzdGFjbGUoY21kKTtcbiNlbmRpZlxuICBzd2l0Y2ggKGNtZCkge1xuICAgIGNhc2UgR086XG4gICAgICByb2JvdC5wdXNoVXAoMiwgNTAwMCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEZPUldBUkQ6XG4gICAgICByb2JvdC5ydW4oKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgQkFDS1dBUkQ6XG4gICAgICByb2JvdC5ydW4oMCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFJJR0hUOlxuICAgICAgcm9ib3QudHVyblIoMSwgNTUwKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTEVGVDpcbiAgICAgIHJvYm90LnR1cm5MKDEsIDU1MCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFJJR0hUX0ZST05UOlxuICAgICAgcm9ib3QuaGVsbG8oKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTEVGVF9GUk9OVDpcbiAgICAgIHJvYm90LmRhbmNlKDIsIDEwMDApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBSSUdIVF9CQUNLOlxuICAgICAgcm9ib3QuZnJvbnRCYWNrKDIsIDEwMDApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBMRUZUX0JBQ0s6XG4gICAgICByb2JvdC5tb29ud2Fsa0woNCwgMjAwMCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQU5EOlxuICAgICAgcm9ib3QudXBEb3duKDQsIDI1MCk7XG4gICAgICBicmVhaztcbiAgfVxufVxuXG5cbiNpZmRlZiBfX0hDX1NSMDRfX1xuY2hhciBkZXRlY3Rfb2JzdGFjbGUoY2hhciBjbWQpIHtcbiAgY2hhciBpID0gY21kO1xuICBsb25nIGNtID0gZGlzdGFuY2VfbWVhc3VyZSgpO1xuICBpZiAoY20gPCBNSU5fRElTVEFOQ0UpIHtcbiAgICBpID0gU1RBTkQ7XG4gIH0gZWxzZSBpZiAoY20gPj0gTUlOX0RJU1RBTkNFICYmIGNtIDw9IE1BWF9ESVNUQU5DRSkge1xuICAgIGkgPSBCQUNLV0FSRDtcbiAgfVxuICByZXR1cm4gaTtcbn1cblxubG9uZyBkaXN0YW5jZV9tZWFzdXJlKClcbntcbiAgLy8gZXN0YWJsaXNoIHZhcmlhYmxlcyBmb3IgZHVyYXRpb24gb2YgdGhlIHBpbmcsXG4gIC8vIGFuZCB0aGUgZGlzdGFuY2UgcmVzdWx0IGluIGluY2hlcyBhbmQgY2VudGltZXRlcnM6XG4gIGxvbmcgZHVyYXRpb24sIGNtO1xuXG4gIC8vIFRoZSBQSU5HKSkpIGlzIHRyaWdnZXJlZCBieSBhIEhJR0ggcHVsc2Ugb2YgMiBvciBtb3JlIG1pY3Jvc2Vjb25kcy5cbiAgLy8gR2l2ZSBhIHNob3J0IExPVyBwdWxzZSBiZWZvcmVoYW5kIHRvIGVuc3VyZSBhIGNsZWFuIEhJR0ggcHVsc2U6XG5cbiAgZGlnaXRhbFdyaXRlKEhDX1NSMDRfVFJJR0dFUl9QSU4sIExPVyk7XG4gIGRlbGF5TWljcm9zZWNvbmRzKDIpO1xuICBkaWdpdGFsV3JpdGUoSENfU1IwNF9UUklHR0VSX1BJTiwgSElHSCk7XG4gIGRlbGF5TWljcm9zZWNvbmRzKDUpO1xuICBkaWdpdGFsV3JpdGUoSENfU1IwNF9UUklHR0VSX1BJTiwgTE9XKTtcblxuICAvLyBUaGUgc2FtZSBwaW4gaXMgdXNlZCB0byByZWFkIHRoZSBzaWduYWwgZnJvbSB0aGUgUElORykpKTogYSBISUdIXG4gIC8vIHB1bHNlIHdob3NlIGR1cmF0aW9uIGlzIHRoZSB0aW1lIChpbiBtaWNyb3NlY29uZHMpIGZyb20gdGhlIHNlbmRpbmdcbiAgLy8gb2YgdGhlIHBpbmcgdG8gdGhlIHJlY2VwdGlvbiBvZiBpdHMgZWNobyBvZmYgb2YgYW4gb2JqZWN0LlxuICBkdXJhdGlvbiA9IHB1bHNlSW4oSENfU1IwNF9FQ0hPX1BJTiwgSElHSCk7XG5cbiAgLy8gVGhlIHNwZWVkIG9mIHNvdW5kIGlzIDM0MCBtL3Mgb3IgMjkgbWljcm9zZWNvbmRzIHBlciBjZW50aW1ldGVyLlxuICAvLyBUaGUgcGluZyB0cmF2ZWxzIG91dCBhbmQgYmFjaywgc28gdG8gZmluZCB0aGUgZGlzdGFuY2Ugb2YgdGhlXG4gIC8vIG9iamVjdCB3ZSB0YWtlIGhhbGYgb2YgdGhlIGRpc3RhbmNlIHRyYXZlbGxlZC5cbiAgY20gPSAgZHVyYXRpb24gLyAyOSAvIDI7XG4gIC8vU2VyaWFsLnByaW50KGNtKTtcbiAgLy9TZXJpYWwucHJpbnRsbihcImNtXCIpO1xuICAvLyBkZWxheSgxMDApO1xuICByZXR1cm4gY207XG59XG4jZW5kaWYifQ==