60806040526803bd913e6c1df400005f196200001c919062000802565b5f196200002a919062000866565b6007555f6009555f600a555f600b555f600c55600b54600d55600c54600e55600d54600f55600e5460105573ddf86b38db5cb20bc42688aa42cf22288fc033d660125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507344d1d142219348c7ab6929b8dbc312b5f9e173a260135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507337ce3a20578094ade8aeaccd1879a605bdabe7ad60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601660146101000a81548160ff0219169083151502179055505f601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff021916908315150217905550606460026803bd913e6c1df40000620001b99190620008a0565b620001c59190620008ea565b601755606460026803bd913e6c1df40000620001e29190620008a0565b620001ee9190620008ea565b60185561271060056803bd913e6c1df400006200020c9190620008a0565b620002189190620008ea565b60195534801562000227575f80fd5b5060405162004a0738038062004a0783398181016040528101906200024d919062000954565b5f6200025e6200079e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060075460025f620003106200079e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004159190620009fa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200047b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004a19190620009fa565b6040518363ffffffff1660e01b8152600401620004c092919062000a3b565b6020604051808303815f875af1158015620004dd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005039190620009fa565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600a8190555081600c81905550600160055f62000565620007a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620007056200079e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6803bd913e6c1df400006040516200078d919062000a77565b60405180910390a350505062000a92565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200080e82620007cc565b91506200081b83620007cc565b9250826200082e576200082d620007d5565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200087282620007cc565b91506200087f83620007cc565b92508282039050818111156200089a576200089962000839565b5b92915050565b5f620008ac82620007cc565b9150620008b983620007cc565b9250828202620008c981620007cc565b91508282048414831517620008e357620008e262000839565b5b5092915050565b5f620008f682620007cc565b91506200090383620007cc565b925082620009165762000915620007d5565b5b828204905092915050565b5f80fd5b6200093081620007cc565b81146200093b575f80fd5b50565b5f815190506200094e8162000925565b92915050565b5f80604083850312156200096d576200096c62000921565b5b5f6200097c858286016200093e565b92505060206200098f858286016200093e565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009c48262000999565b9050919050565b620009d681620009b8565b8114620009e1575f80fd5b50565b5f81519050620009f481620009cb565b92915050565b5f6020828403121562000a125762000a1162000921565b5b5f62000a2184828501620009e4565b91505092915050565b62000a3581620009b8565b82525050565b5f60408201905062000a505f83018562000a2a565b62000a5f602083018462000a2a565b9392505050565b62000a7181620007cc565b82525050565b5f60208201905062000a8c5f83018462000a66565b92915050565b613f678062000aa05f395ff3fe6080604052600436106101d0575f3560e01c80637d1db4a5116100f6578063a2a957bb11610094578063dd62ed3e11610063578063dd62ed3e14610641578063e1d9888f1461067d578063ea1644d5146106a5578063f2fde38b146106cd576101d7565b8063a2a957bb1461059f578063a9059cbb146105c7578063c3c8cd8014610603578063c492f04614610619576101d7565b80638f70ccf7116100d05780638f70ccf7146104fb5780638f9a55c01461052357806395d89b411461054d57806398a5c31514610577576101d7565b80637d1db4a51461046b5780637f2feddc146104955780638da5cb5b146104d1576101d7565b8063313ce5671161016e57806370a082311161013d57806370a08231146103c9578063713318c114610405578063715018a61461042d57806374010ece14610443576101d7565b8063313ce5671461033757806349bd5a5e146103615780636d8aa8f81461038b5780636fc3eaec146103b3576101d7565b80631694505e116101aa5780631694505e1461027d57806318160ddd146102a757806323b872dd146102d15780632fd689e31461030d576101d7565b8063017e0192146101db57806306fdde0314610217578063095ea7b314610241576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc9190612db7565b6106f5565b60405161020e9190612dfc565b60405180910390f35b348015610222575f80fd5b5061022b610712565b6040516102389190612e9f565b60405180910390f35b34801561024c575f80fd5b5061026760048036038101906102629190612ef2565b61074f565b6040516102749190612dfc565b60405180910390f35b348015610288575f80fd5b5061029161076c565b60405161029e9190612f8b565b60405180910390f35b3480156102b2575f80fd5b506102bb610791565b6040516102c89190612fb3565b60405180910390f35b3480156102dc575f80fd5b506102f760048036038101906102f29190612fcc565b6107a1565b6040516103049190612dfc565b60405180910390f35b348015610318575f80fd5b50610321610875565b60405161032e9190612fb3565b60405180910390f35b348015610342575f80fd5b5061034b61087b565b6040516103589190613037565b60405180910390f35b34801561036c575f80fd5b50610375610883565b604051610382919061305f565b60405180910390f35b348015610396575f80fd5b506103b160048036038101906103ac91906130a2565b6108a8565b005b3480156103be575f80fd5b506103c7610958565b005b3480156103d4575f80fd5b506103ef60048036038101906103ea9190612db7565b610a69565b6040516103fc9190612fb3565b60405180910390f35b348015610410575f80fd5b5061042b6004803603810190610426919061320d565b610ab7565b005b348015610438575f80fd5b50610441610c25565b005b34801561044e575f80fd5b5061046960048036038101906104649190613254565b610d73565b005b348015610476575f80fd5b5061047f610e11565b60405161048c9190612fb3565b60405180910390f35b3480156104a0575f80fd5b506104bb60048036038101906104b69190612db7565b610e17565b6040516104c89190612fb3565b60405180910390f35b3480156104dc575f80fd5b506104e5610e2c565b6040516104f2919061305f565b60405180910390f35b348015610506575f80fd5b50610521600480360381019061051c91906130a2565b610e53565b005b34801561052e575f80fd5b50610537610f04565b6040516105449190612fb3565b60405180910390f35b348015610558575f80fd5b50610561610f0a565b60405161056e9190612e9f565b60405180910390f35b348015610582575f80fd5b5061059d60048036038101906105989190613254565b610f47565b005b3480156105aa575f80fd5b506105c560048036038101906105c0919061327f565b610fe5565b005b3480156105d2575f80fd5b506105ed60048036038101906105e89190612ef2565b61109b565b6040516105fa9190612dfc565b60405180910390f35b34801561060e575f80fd5b506106176110b8565b005b348015610624575f80fd5b5061063f600480360381019061063a919061333c565b6111d1565b005b34801561064c575f80fd5b5061066760048036038101906106629190613399565b611306565b6040516106749190612fb3565b60405180910390f35b348015610688575f80fd5b506106a3600480360381019061069e919061320d565b611388565b005b3480156106b0575f80fd5b506106cb60048036038101906106c69190613254565b6114f7565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190612db7565b611595565b005b6006602052805f5260405f205f915054906101000a900460ff1681565b60606040518060400160405280600d81526020017f4175746973746963205065706500000000000000000000000000000000000000815250905090565b5f61076261075b611752565b8484611759565b6001905092915050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6803bd913e6c1df40000905090565b5f6107ad84848461191c565b61086a846107b9611752565b61086585604051806060016040528060288152602001613f0a6028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61081c611752565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122bb9092919063ffffffff16565b611759565b600190509392505050565b60195481565b5f6009905090565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108b0611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461093c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093390613421565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610998611752565b73ffffffffffffffffffffffffffffffffffffffff1614806109f357506109bd610e2c565b73ffffffffffffffffffffffffffffffffffffffff166109db611752565b73ffffffffffffffffffffffffffffffffffffffff16145b80610a51575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a39611752565b73ffffffffffffffffffffffffffffffffffffffff16145b610a59575f80fd5b5f479050610a668161231d565b50565b5f610ab060025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612385565b9050919050565b610abf611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4290613421565b60405180910390fd5b610258815110610b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b87906134af565b60405180910390fd5b5f5b8151811015610c21575f828281518110610baf57610bae6134cd565b5b602002602001015190505f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550508080610c1990613527565b915050610b92565b5050565b610c2d611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb090613421565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d7b611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfe90613421565b60405180910390fd5b8060178190555050565b60175481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e5b611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ede90613421565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600681526020017f5441525441520000000000000000000000000000000000000000000000000000815250905090565b610f4f611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd290613421565b60405180910390fd5b8060198190555050565b610fed611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107090613421565b60405180910390fd5b8360098190555082600b8190555081600a8190555080600c8190555050505050565b5f6110ae6110a7611752565b848461191c565b6001905092915050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110f8611752565b73ffffffffffffffffffffffffffffffffffffffff161480611153575061111d610e2c565b73ffffffffffffffffffffffffffffffffffffffff1661113b611752565b73ffffffffffffffffffffffffffffffffffffffff16145b806111b1575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611199611752565b73ffffffffffffffffffffffffffffffffffffffff16145b6111b9575f80fd5b5f6111c330610a69565b90506111ce816123f1565b50565b6111d9611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c90613421565b60405180910390fd5b5f5b83839050811015611300578160055f868685818110611289576112886134cd565b5b905060200201602081019061129e9190612db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806112f890613527565b915050611267565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611390611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390613421565b60405180910390fd5b610258815110611461576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611458906134af565b60405180910390fd5b5f5b81518110156114f3575f8282815181106114805761147f6134cd565b5b60200260200101519050600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505080806114eb90613527565b915050611463565b5050565b6114ff611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613421565b60405180910390fd5b8060188190555050565b61159d611752565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613421565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168e906135de565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be9061366c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182c906136fa565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161190f9190612fb3565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361198a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198190613788565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ef90613816565b60405180910390fd5b5f8111611a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a31906138a4565b60405180910390fd5b611a42610e2c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ab05750611a80610e2c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611fc857601660149054906101000a900460ff16611b3f57611ad1610e2c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3590613932565b60405180910390fd5b5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611be9575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ce057601754811115611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a9061399a565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611cdf5760185481611c9484610a69565b611c9e91906139b8565b10611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd590613a5b565b60405180910390fd5b5b5b601660149054906101000a900460ff1615611e4c5760065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580611d97575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611dd45750611da5610e2c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611e0c575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4290613b0f565b60405180910390fd5b5b5f611e5630610a69565b90505f60195482101590506017548210611e705760175491505b808015611e8a5750601660159054906101000a900460ff16155b8015611ee3575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ef9575060168054906101000a900460ff165b8015611f4c575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f9f575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fc557611fad826123f1565b5f4790505f811115611fc357611fc24761231d565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612068575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612119575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612118575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15612126575f90506122a9565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156121cf575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121e757600954600d81905550600a54600e819055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612290575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122a857600b54600d81905550600c54600e819055505b5b6122b58484848461265c565b50505050565b5f838311158290612302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f99190612e9f565b60405180910390fd5b505f83856123109190613b2d565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612381573d5f803e3d5ffd5b5050565b5f6007548211156123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290613bd0565b60405180910390fd5b5f6123d4612689565b90506123e981846126b290919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612428576124276130d1565b5b6040519080825280602002602001820160405280156124565781602001602082028036833780820191505090505b50905030815f8151811061246d5761246c6134cd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612511573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125359190613c02565b81600181518110612549576125486134cd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125af3060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611759565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612611959493929190613d1d565b5f604051808303815f87803b158015612628575f80fd5b505af115801561263a573d5f803e3d5ffd5b50505050505f601660156101000a81548160ff02191690831515021790555050565b8061266a576126696126fb565b5b612675848484612734565b80612683576126826128f4565b5b50505050565b5f805f612694612908565b915091506126ab81836126b290919063ffffffff16565b9250505090565b5f6126f383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612967565b905092915050565b5f600d5414801561270d57505f600e54145b61273257600d54600f81905550600e546010819055505f600d819055505f600e819055505b565b5f805f805f80612743876129c8565b95509550955095509550955061279f8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a2890919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128308560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a7190919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061287a81612ace565b6128848483612b85565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128e19190612fb3565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b5f805f60075490505f6803bd913e6c1df40000905061293b6803bd913e6c1df400006007546126b290919063ffffffff16565b82101561295a576007546803bd913e6c1df40000935093505050612963565b81819350935050505b9091565b5f80831182906129ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a49190612e9f565b60405180910390fd5b505f83856129bb9190613da2565b9050809150509392505050565b5f805f805f805f805f6129e08a600d54600e54612bbf565b9250925092505f6129ef612689565b90505f805f612a008e878787612c51565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f612a6983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122bb565b905092915050565b5f808284612a7f91906139b8565b905083811015612ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612abb90613e1c565b60405180910390fd5b8091505092915050565b5f612ad7612689565b90505f612aed8284612cd590919063ffffffff16565b9050612b3f8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a7190919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612b9a82600754612a2890919063ffffffff16565b600781905550612bb581600854612a7190919063ffffffff16565b6008819055505050565b5f805f80612be96064612bdb888a612cd590919063ffffffff16565b6126b290919063ffffffff16565b90505f612c126064612c04888b612cd590919063ffffffff16565b6126b290919063ffffffff16565b90505f612c3a82612c2c858c612a2890919063ffffffff16565b612a2890919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612c688589612cd590919063ffffffff16565b90505f612c7e8689612cd590919063ffffffff16565b90505f612c948789612cd590919063ffffffff16565b90505f612cbc82612cae8587612a2890919063ffffffff16565b612a2890919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612ce5575f9050612d46565b5f8284612cf29190613e3a565b9050828482612d019190613da2565b14612d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3890613eeb565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d8682612d5d565b9050919050565b612d9681612d7c565b8114612da0575f80fd5b50565b5f81359050612db181612d8d565b92915050565b5f60208284031215612dcc57612dcb612d55565b5b5f612dd984828501612da3565b91505092915050565b5f8115159050919050565b612df681612de2565b82525050565b5f602082019050612e0f5f830184612ded565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e4c578082015181840152602081019050612e31565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612e7182612e15565b612e7b8185612e1f565b9350612e8b818560208601612e2f565b612e9481612e57565b840191505092915050565b5f6020820190508181035f830152612eb78184612e67565b905092915050565b5f819050919050565b612ed181612ebf565b8114612edb575f80fd5b50565b5f81359050612eec81612ec8565b92915050565b5f8060408385031215612f0857612f07612d55565b5b5f612f1585828601612da3565b9250506020612f2685828601612ede565b9150509250929050565b5f819050919050565b5f612f53612f4e612f4984612d5d565b612f30565b612d5d565b9050919050565b5f612f6482612f39565b9050919050565b5f612f7582612f5a565b9050919050565b612f8581612f6b565b82525050565b5f602082019050612f9e5f830184612f7c565b92915050565b612fad81612ebf565b82525050565b5f602082019050612fc65f830184612fa4565b92915050565b5f805f60608486031215612fe357612fe2612d55565b5b5f612ff086828701612da3565b935050602061300186828701612da3565b925050604061301286828701612ede565b9150509250925092565b5f60ff82169050919050565b6130318161301c565b82525050565b5f60208201905061304a5f830184613028565b92915050565b61305981612d7c565b82525050565b5f6020820190506130725f830184613050565b92915050565b61308181612de2565b811461308b575f80fd5b50565b5f8135905061309c81613078565b92915050565b5f602082840312156130b7576130b6612d55565b5b5f6130c48482850161308e565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61310782612e57565b810181811067ffffffffffffffff82111715613126576131256130d1565b5b80604052505050565b5f613138612d4c565b905061314482826130fe565b919050565b5f67ffffffffffffffff821115613163576131626130d1565b5b602082029050602081019050919050565b5f80fd5b5f61318a61318584613149565b61312f565b905080838252602082019050602084028301858111156131ad576131ac613174565b5b835b818110156131d657806131c28882612da3565b8452602084019350506020810190506131af565b5050509392505050565b5f82601f8301126131f4576131f36130cd565b5b8135613204848260208601613178565b91505092915050565b5f6020828403121561322257613221612d55565b5b5f82013567ffffffffffffffff81111561323f5761323e612d59565b5b61324b848285016131e0565b91505092915050565b5f6020828403121561326957613268612d55565b5b5f61327684828501612ede565b91505092915050565b5f805f806080858703121561329757613296612d55565b5b5f6132a487828801612ede565b94505060206132b587828801612ede565b93505060406132c687828801612ede565b92505060606132d787828801612ede565b91505092959194509250565b5f80fd5b5f8083601f8401126132fc576132fb6130cd565b5b8235905067ffffffffffffffff811115613319576133186132e3565b5b60208301915083602082028301111561333557613334613174565b5b9250929050565b5f805f6040848603121561335357613352612d55565b5b5f84013567ffffffffffffffff8111156133705761336f612d59565b5b61337c868287016132e7565b9350935050602061338f8682870161308e565b9150509250925092565b5f80604083850312156133af576133ae612d55565b5b5f6133bc85828601612da3565b92505060206133cd85828601612da3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61340b602083612e1f565b9150613416826133d7565b602082019050919050565b5f6020820190508181035f830152613438816133ff565b9050919050565b7f43616e206f6e6c79206d61726b203630302077616c6c657473207065722074785f8201527f6e2064756520746f20676173206c696d69747300000000000000000000000000602082015250565b5f613499603383612e1f565b91506134a48261343f565b604082019050919050565b5f6020820190508181035f8301526134c68161348d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61353182612ebf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613563576135626134fa565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135c8602683612e1f565b91506135d38261356e565b604082019050919050565b5f6020820190508181035f8301526135f5816135bc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613656602483612e1f565b9150613661826135fc565b604082019050919050565b5f6020820190508181035f8301526136838161364a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136e4602283612e1f565b91506136ef8261368a565b604082019050919050565b5f6020820190508181035f830152613711816136d8565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613772602583612e1f565b915061377d82613718565b604082019050919050565b5f6020820190508181035f83015261379f81613766565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613800602383612e1f565b915061380b826137a6565b604082019050919050565b5f6020820190508181035f83015261382d816137f4565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61388e602983612e1f565b915061389982613834565b604082019050919050565b5f6020820190508181035f8301526138bb81613882565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61391c603f83612e1f565b9150613927826138c2565b604082019050919050565b5f6020820190508181035f83015261394981613910565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613984601c83612e1f565b915061398f82613950565b602082019050919050565b5f6020820190508181035f8301526139b181613978565b9050919050565b5f6139c282612ebf565b91506139cd83612ebf565b92508282019050808211156139e5576139e46134fa565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613a45602383612e1f565b9150613a50826139eb565b604082019050919050565b5f6020820190508181035f830152613a7281613a39565b9050919050565b7f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f5f8201527f72206f75742065786365707420746f206f776e65722c206d61726b6574696e6760208201527f2c206f72206465616420616464726573732e0000000000000000000000000000604082015250565b5f613af9605283612e1f565b9150613b0482613a79565b606082019050919050565b5f6020820190508181035f830152613b2681613aed565b9050919050565b5f613b3782612ebf565b9150613b4283612ebf565b9250828203905081811115613b5a57613b596134fa565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613bba602a83612e1f565b9150613bc582613b60565b604082019050919050565b5f6020820190508181035f830152613be781613bae565b9050919050565b5f81519050613bfc81612d8d565b92915050565b5f60208284031215613c1757613c16612d55565b5b5f613c2484828501613bee565b91505092915050565b5f819050919050565b5f613c50613c4b613c4684613c2d565b612f30565b612ebf565b9050919050565b613c6081613c36565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c9881612d7c565b82525050565b5f613ca98383613c8f565b60208301905092915050565b5f602082019050919050565b5f613ccb82613c66565b613cd58185613c70565b9350613ce083613c80565b805f5b83811015613d10578151613cf78882613c9e565b9750613d0283613cb5565b925050600181019050613ce3565b5085935050505092915050565b5f60a082019050613d305f830188612fa4565b613d3d6020830187613c57565b8181036040830152613d4f8186613cc1565b9050613d5e6060830185613050565b613d6b6080830184612fa4565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613dac82612ebf565b9150613db783612ebf565b925082613dc757613dc6613d75565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613e06601b83612e1f565b9150613e1182613dd2565b602082019050919050565b5f6020820190508181035f830152613e3381613dfa565b9050919050565b5f613e4482612ebf565b9150613e4f83612ebf565b9250828202613e5d81612ebf565b91508282048414831517613e7457613e736134fa565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ed5602183612e1f565b9150613ee082613e7b565b604082019050919050565b5f6020820190508181035f830152613f0281613ec9565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204237855cfb420963d17a58206b6b44f1768e834c326f4d19bd88b4be5be5b2e264736f6c6343000815003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003