0x66cfa05700000000000000000000000000000000000000000000000000000000000000005de58608693de4d46bb23d9b4657894fc7c45ceab0cd5b835b6e99076083f71300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000002436608060405234801561001057600080fd5b5061001961001e565b6100dd565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116146100db576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61234980620000ed6000396000f3fe6080604052600436106101c65760003560e01c80638da5cb5b116100f7578063c7f0da1311610095578063efdcd97411610064578063efdcd9741461068c578063f2fde38b146106ac578063f9ac3363146106cc578063fc1b7769146106ec57610236565b8063c7f0da1314610617578063ce19556a14610637578063d294f09314610657578063e0dbcde51461066c57610236565b8063b2d2b2a1116100d1578063b2d2b2a114610564578063b3f006741461059a578063b8598027146105ba578063bc22e4bc146105ea57610236565b80638da5cb5b146105055780639a8a059214610523578063b1d995dd1461055157610236565b80634f64ca191161016457806372ee3f691161013e57806372ee3f69146104395780637533d7881461046f57806380765130146104a5578063813d31c9146104e557610236565b80634f64ca19146103d757806362038505146103f7578063715018a61461042457610236565b8063207bae8a116101a0578063207bae8a1461030a57806320d2837d14610349578063262390361461036957806346a9c1e5146103b757610236565b8063048cf30d14610275578063074f8685146102975780631672a074146102ea57610236565b366102365760405162461bcd60e51b815260206004820152603560248201527f5a4b4272696467653a746865205a6b42726964676520636f6e747261637420646044820152746f6573206e6f74206163636570742061737365747360581b60648201526084015b60405180910390fd5b60405162461bcd60e51b81526020600482015260146024820152731692d09c9a5919d94e9d5b9cdd5c1c1bdc9d195960621b604482015260640161022d565b34801561028157600080fd5b50610295610290366004611b23565b61070c565b005b3480156102a357600080fd5b506102cd6102b2366004611b7e565b6068602052600090815260409020546001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b3480156102f657600080fd5b50610295610305366004611bac565b61080d565b34801561031657600080fd5b5061033b610325366004611be5565b61ffff166000908152606a602052604090205490565b6040519081526020016102e1565b34801561035557600080fd5b50610295610364366004611bac565b6108a7565b34801561037557600080fd5b5061039f610384366004611be5565b606e602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016102e1565b3480156103c357600080fd5b506102956103d2366004611c4d565b610913565b3480156103e357600080fd5b506102956103f2366004611cac565b610a49565b34801561040357600080fd5b5061033b610412366004611b7e565b606c6020526000908152604090205481565b34801561043057600080fd5b50610295610b69565b34801561044557600080fd5b5061039f610454366004611be5565b6067602052600090815260409020546001600160a01b031681565b34801561047b57600080fd5b5061039f61048a366004611be5565b6069602052600090815260409020546001600160a01b031681565b3480156104b157600080fd5b506104d56104c0366004611d15565b606b6020526000908152604090205460ff1681565b60405190151581526020016102e1565b3480156104f157600080fd5b50610295610500366004611bac565b610b7d565b34801561051157600080fd5b506033546001600160a01b031661039f565b34801561052f57600080fd5b5060655461053e9061ffff1681565b60405161ffff90911681526020016102e1565b6102cd61055f366004611dc7565b610c0f565b34801561057057600080fd5b5061039f61057f366004611be5565b6066602052600090815260409020546001600160a01b031681565b3480156105a657600080fd5b50606f5461039f906001600160a01b031681565b3480156105c657600080fd5b506104d56105d5366004611be5565b606d6020526000908152604090205460ff1681565b3480156105f657600080fd5b5061033b610605366004611be5565b606a6020526000908152604090205481565b34801561062357600080fd5b50610295610632366004611e6b565b610da2565b34801561064357600080fd5b50610295610652366004611ea5565b610e1d565b34801561066357600080fd5b50610295610ea7565b34801561067857600080fd5b50610295610687366004611bac565b610f61565b34801561069857600080fd5b506102956106a7366004611d15565b61114a565b3480156106b857600080fd5b506102956106c7366004611d15565b611224565b3480156106d857600080fd5b506102956106e7366004611bac565b61129d565b3480156106f857600080fd5b50610295610707366004611ed3565b61132f565b61ffff84166000908152606e60205260409020546001600160a01b0316806107825760405162461bcd60e51b815260206004820152602360248201527f5a4b4272696467653a5a4b56616c69646174696f6e4c6962206973206e6f74206044820152621cd95d60ea1b606482015260840161022d565b60405163e3c3335d60e01b81526000906001600160a01b0383169063e3c3335d906107b39087908790600401611f1a565b600060405180830381865afa1580156107d0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107f89190810190611fd1565b90506108058686836113f1565b505050505050565b61081561180f565b6001600160a01b03811661083b5760405162461bcd60e51b815260040161022d9061209c565b61ffff82166000818152606e602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251938452908301527f9ea5b9e8ce481c502bc2ae4b70d9d219fed464205abfcdbfb1f082fca528f5b091015b60405180910390a15050565b6108af61180f565b61ffff821660008181526069602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251938452908301527ffaf6f43fc2c7c31da89dab02a8c756e6f9cb07101aac8268ce100037170d9cc5910161089b565b336000908152606b602052604090205460ff166109425760405162461bcd60e51b815260040161022d906120cb565b82811461094e57600080fd5b60005b83811015610a425782828281811061096b5761096b612111565b90506020020135606a600087878581811061098857610988612111565b905060200201602081019061099d9190611be5565b61ffff1681526020810191909152604001600020557f47d9066e07019286c19790aa54f97c9830127e71edff41b453c7adeaa15d2fe88585838181106109e5576109e5612111565b90506020020160208101906109fa9190611be5565b848484818110610a0c57610a0c612111565b6040805161ffff90951685526020918202939093013590840152500160405180910390a180610a3a8161213d565b915050610951565b5050505050565b61ffff85166000908152606660205260409020546001600160a01b031680610abd5760405162461bcd60e51b815260206004820152602160248201527f5a4b4272696467653a56616c69646174696f6e4c6962206973206e6f742073656044820152601d60fa1b606482015260840161022d565b6000816001600160a01b031663e3c3335d868686604051602001610ae393929190612156565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610b0e91906121a5565b600060405180830381865afa158015610b2b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b539190810190611fd1565b9050610b608787836113f1565b50505050505050565b610b7161180f565b610b7b6000611869565b565b610b8561180f565b6001600160a01b038116610bab5760405162461bcd60e51b815260040161022d9061209c565b61ffff821660008181526067602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251938452908301527fe3e6f58279db3007bfc2c2ede323a50a39329bc9d06e14a32d2def2181ecd223910161089b565b60655460009061ffff90811690851603610c765760405162461bcd60e51b815260206004820152602260248201527f5a4b4272696467653a43616e6e6f742073656e6420746f2073616d652063686160448201526134b760f11b606482015260840161022d565b61ffff84166000908152606a6020526040902054341015610cd95760405162461bcd60e51b815260206004820152601960248201527f5a4b4272696467653a496e73756666696369656e742046656500000000000000604482015260640161022d565b61ffff84166000908152606d602052604090205460ff16610d3c5760405162461bcd60e51b815260206004820152601f60248201527f5a4b4272696467653a556e737570706f72746564206465737420636861696e00604482015260640161022d565b610d473385856118bb565b9050806001600160401b03168461ffff16336001600160a01b03167fb8abfd5c33667c7440a4fc1153ae39a24833dbe44f7eb19cbe5cd5f2583e49408686604051610d939291906121b8565b60405180910390a49392505050565b336000908152606b602052604090205460ff16610dd15760405162461bcd60e51b815260040161022d906120cb565b61ffff82166000818152606a6020908152604091829020849055815192835282018390527f47d9066e07019286c19790aa54f97c9830127e71edff41b453c7adeaa15d2fe8910161089b565b610e2561180f565b6001600160a01b038216610e4b5760405162461bcd60e51b815260040161022d9061209c565b6001600160a01b0382166000818152606b6020908152604091829020805460ff19168515159081179091558251938452908301527f882386da003a547e108f4013481dc50dd637ba9e2f89b0a884803db03eef247a910161089b565b606f546001600160a01b0316610eff5760405162461bcd60e51b815260206004820152601c60248201527f5a4b4272696467653a496e76616c696420666565526563656976657200000000604482015260640161022d565b606f544790610f17906001600160a01b031682611958565b606f54604080516001600160a01b039092168252602082018390527ff40b9ca28516abde647ef8ed0e7b155e16347eb4d8dd6eb29989ed2c0c3d27e891015b60405180910390a150565b600054610100900460ff1615808015610f815750600054600160ff909116105b80610f9b5750303b158015610f9b575060005460ff166001145b610ffe5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161022d565b6000805460ff191660011790558015611021576000805461ff0019166101001790555b8261ffff166000036110755760405162461bcd60e51b815260206004820152601860248201527f5a4b4272696467653a496e76616c696420636861696e49640000000000000000604482015260640161022d565b6001600160a01b0382166110cb5760405162461bcd60e51b815260206004820152601c60248201527f5a4b4272696467653a496e76616c696420666565526563656976657200000000604482015260640161022d565b6110d3611a71565b6065805461ffff191661ffff8516179055606f80546001600160a01b0319166001600160a01b0384161790558015611145576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61115261180f565b6001600160a01b0381166111785760405162461bcd60e51b815260040161022d9061209c565b606f546001600160a01b03908116908216036111d65760405162461bcd60e51b815260206004820152601e60248201527f5a4b4272696467653a4665655265636569766572206e6f206368616e67650000604482015260640161022d565b606f80546001600160a01b0319166001600160a01b0383169081179091556040519081527fffb40bfdfd246e95f543d08d9713c339f1d90fa9265e39b4f562f9011d7c919f90602001610f56565b61122c61180f565b6001600160a01b0381166112915760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022d565b61129a81611869565b50565b6112a561180f565b6001600160a01b0381166112cb5760405162461bcd60e51b815260040161022d9061209c565b61ffff821660008181526066602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251938452908301527f34a6641fedf4edfde140ae5056a341acc357c5a368b62afbf44ba0e7d504c61c910161089b565b61133761180f565b61ffff82166000908152606d602052604090205481151560ff90911615150361139a5760405162461bcd60e51b81526020600482015260156024820152745a4b4272696467653a496e76616c696420666c616760581b604482015260640161022d565b61ffff82166000818152606d6020908152604091829020805460ff19168515159081179091558251938452908301527f9121009a95ed555851f254f85df9ccb076991f737ecc459ee64c9cc3db7a81bd910161089b565b61ffff83166000908152606760205260409020546001600160a01b0316806114655760405162461bcd60e51b815260206004820152602160248201527f5a4b4272696467653a426c6f636b2055706461746572206973206e6f742073656044820152601d60fa1b606482015260840161022d565b60a0820151604051636e1ac47560e11b81526001600160a01b0383169163dc3588ea9161149f918791600401918252602082015260400190565b602060405180830381865afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e091906121dc565b61152c5760405162461bcd60e51b815260206004820181905260248201527f5a4b4272696467653a426c6f636b20486561646572206973206e6f7420736574604482015260640161022d565b61ffff841660009081526069602052604090205460808301516001600160a01b039081169116146115bb5760405162461bcd60e51b815260206004820152603360248201527f5a4b4272696467653a44657374696e6174696f6e20636861696e206973206e6f604482015272742061207472757374656420736f757263656560681b606482015260840161022d565b606554825161ffff9081169116146116205760405162461bcd60e51b815260206004820152602260248201527f5a4b4272696467653a496e76616c69642064657374696e6174696f6e2063686160448201526134b760f11b606482015260840161022d565b60008483606001518460400151610100866020015161163f919061220f565b6040805161ffff90951660208601526001600160a01b0393841690850152911660608301526001600160401b0316608082015260a00160408051601f1981840301815291815281516020928301206000818152606c845291822054928601519093506116ae9061010090612235565b6001600160401b03166001901b905080821660001461171a5760405162461bcd60e51b815260206004820152602260248201527f5a4b4272696467653a4d65737361676520616c72656164792065786563757465604482015261321760f11b606482015260840161022d565b6000838152606c602090815260409182902084841790558682015160608801519188015160c089015193516316f4ca9560e11b81526001600160a01b0390921693632de9952a93611772938d9391929060040161225b565b600060405180830381600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b5050505084602001516001600160401b03168761ffff1686606001516001600160a01b03167f4a008ac830958ba6fe8a6e667e2ab53a530eb6cdf93e55b27fc42d7a54cf25b788604001518960c001516040516117fe9291906121b8565b60405180910390a450505050505050565b6033546001600160a01b03163314610b7b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022d565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604080516001600160a01b03808616602083015261ffff8516928201929092529082166060820152600090819060800160408051601f1981840301815291815281516020928301206000818152606890935290822080546001600160401b03169450909250839161192b836122a2565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050509392505050565b804710156119a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161022d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146119f5576040519150601f19603f3d011682016040523d82523d6000602084013e6119fa565b606091505b50509050806111455760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161022d565b600054610100900460ff16611a985760405162461bcd60e51b815260040161022d906122c8565b610b7b600054610100900460ff16611ac25760405162461bcd60e51b815260040161022d906122c8565b610b7b33611869565b61ffff8116811461129a57600080fd5b60008083601f840112611aed57600080fd5b5081356001600160401b03811115611b0457600080fd5b602083019150836020828501011115611b1c57600080fd5b9250929050565b60008060008060608587031215611b3957600080fd5b8435611b4481611acb565b93506020850135925060408501356001600160401b03811115611b6657600080fd5b611b7287828801611adb565b95989497509550505050565b600060208284031215611b9057600080fd5b5035919050565b6001600160a01b038116811461129a57600080fd5b60008060408385031215611bbf57600080fd5b8235611bca81611acb565b91506020830135611bda81611b97565b809150509250929050565b600060208284031215611bf757600080fd5b8135611c0281611acb565b9392505050565b60008083601f840112611c1b57600080fd5b5081356001600160401b03811115611c3257600080fd5b6020830191508360208260051b8501011115611b1c57600080fd5b60008060008060408587031215611c6357600080fd5b84356001600160401b0380821115611c7a57600080fd5b611c8688838901611c09565b90965094506020870135915080821115611c9f57600080fd5b50611b7287828801611c09565b600080600080600060808688031215611cc457600080fd5b8535611ccf81611acb565b9450602086013593506040860135925060608601356001600160401b03811115611cf857600080fd5b611d0488828901611adb565b969995985093965092949392505050565b600060208284031215611d2757600080fd5b8135611c0281611b97565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715611d6a57611d6a611d32565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611d9857611d98611d32565b604052919050565b60006001600160401b03821115611db957611db9611d32565b50601f01601f191660200190565b600080600060608486031215611ddc57600080fd5b8335611de781611acb565b92506020840135611df781611b97565b915060408401356001600160401b03811115611e1257600080fd5b8401601f81018613611e2357600080fd5b8035611e36611e3182611da0565b611d70565b818152876020838501011115611e4b57600080fd5b816020840160208301376000602083830101528093505050509250925092565b60008060408385031215611e7e57600080fd5b8235611e8981611acb565b946020939093013593505050565b801515811461129a57600080fd5b60008060408385031215611eb857600080fd5b8235611ec381611b97565b91506020830135611bda81611e97565b60008060408385031215611ee657600080fd5b8235611ec381611acb565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000611f2e602083018486611ef1565b949350505050565b8051611f4181611acb565b919050565b80516001600160401b0381168114611f4157600080fd5b8051611f4181611b97565b60005b83811015611f83578181015183820152602001611f6b565b50506000910152565b600082601f830112611f9d57600080fd5b8151611fab611e3182611da0565b818152846020838601011115611fc057600080fd5b611f2e826020830160208701611f68565b600060208284031215611fe357600080fd5b81516001600160401b0380821115611ffa57600080fd5b9083019060e0828603121561200e57600080fd5b612016611d48565b61201f83611f36565b815261202d60208401611f46565b602082015261203e60408401611f5d565b604082015261204f60608401611f5d565b606082015261206060808401611f5d565b608082015260a083015160a082015260c08301518281111561208157600080fd5b61208d87828601611f8c565b60c08301525095945050505050565b6020808252601590820152745a4b4272696467653a5a65726f206164647265737360581b604082015260600190565b60208082526026908201527f5a4b4272696467653a63616c6c6572206973206e6f742074686520666565206d60408201526530b730b3b2b960d11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161214f5761214f612127565b5060010190565b838152604060208201526000612170604083018486611ef1565b95945050505050565b60008151808452612191816020860160208601611f68565b601f01601f19169290920160200192915050565b602081526000611c026020830184612179565b6001600160a01b0383168152604060208201819052600090611f2e90830184612179565b6000602082840312156121ee57600080fd5b8151611c0281611e97565b634e487b7160e01b600052601260045260246000fd5b60006001600160401b0380841680612229576122296121f9565b92169190910492915050565b60006001600160401b038084168061224f5761224f6121f9565b92169190910692915050565b61ffff851681526001600160a01b03841660208201526001600160401b038316604082015260806060820181905260009061229890830184612179565b9695505050505050565b60006001600160401b038083168181036122be576122be612127565b6001019392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fea2646970667358221220c645eacf7d35fd3f87339cb69fa7dc21ccf8541265209ca57f8768ddc3999b2364736f6c6343000813003300000000000000000000