60806040525f600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055505f600760166101000a81548160ff02191690831515021790555069021e19e0c9bab240000060085568056bc75e2d6310000060095569065a4da25d3016c00000600a5569065a4da25d3016c00000600b557321808b3e9f8c9b5ec4939d7649c3f7e71f0f99d8600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600381526020015f815250600d5f820151815f01556020820151816001015550506040518060400160405280600381526020015f815250600f5f820151815f0155602082015181600101555050600d60010154600d5f01546200014d91906200079b565b601155600f60010154600f5f01546200016791906200079b565b60125534801562000176575f80fd5b506040518060400160405280600b81526020017f50524544494354494f4e580000000000000000000000000000000000000000008152506040518060400160405280600481526020017f50524458000000000000000000000000000000000000000000000000000000008152508160039081620001f4919062000a30565b50806004908162000206919062000a30565b505050620002296200021d620005e060201b60201c565b620005e760201b60201c565b62000268336200023e620006aa60201b60201c565b600a6200024c919062000c70565b620f42406200025c919062000cc0565b620006b260201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f1919062000d6f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000357573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200037d919062000d6f565b6040518363ffffffff1660e01b81526004016200039c92919062000db0565b6020604051808303815f875af1158015620003b9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003df919062000d6f565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160135f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505062000e07565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b80600281905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000759919062000dec565b60405180910390a35050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007a78262000765565b9150620007b48362000765565b9250828201905080821115620007cf57620007ce6200076e565b5b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200085157607f821691505b6020821081036200086757620008666200080c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200088e565b620008d786836200088e565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000918620009126200090c8462000765565b620008ef565b62000765565b9050919050565b5f819050919050565b6200093383620008f8565b6200094b62000942826200091f565b8484546200089a565b825550505050565b5f90565b6200096162000953565b6200096e81848462000928565b505050565b5b818110156200099557620009895f8262000957565b60018101905062000974565b5050565b601f821115620009e457620009ae816200086d565b620009b9846200087f565b81016020851015620009c9578190505b620009e1620009d8856200087f565b83018262000973565b50505b505050565b5f82821c905092915050565b5f62000a065f1984600802620009e9565b1980831691505092915050565b5f62000a208383620009f5565b9150826002028217905092915050565b62000a3b82620007d5565b67ffffffffffffffff81111562000a575762000a56620007df565b5b62000a63825462000839565b62000a7082828562000999565b5f60209050601f83116001811462000aa6575f841562000a91578287015190505b62000a9d858262000a13565b86555062000b0c565b601f19841662000ab6866200086d565b5f5b8281101562000adf5784890151825560018201915060208501945060208101905062000ab8565b8683101562000aff578489015162000afb601f891682620009f5565b8355505b6001600288020188555050505b505050505050565b5f8160011c9050919050565b5f808291508390505b600185111562000b715780860481111562000b495762000b486200076e565b5b600185161562000b595780820291505b808102905062000b698562000b14565b945062000b29565b94509492505050565b5f8262000b8b576001905062000c5d565b8162000b9a575f905062000c5d565b816001811462000bb3576002811462000bbe5762000bf4565b600191505062000c5d565b60ff84111562000bd35762000bd26200076e565b5b8360020a91508482111562000bed5762000bec6200076e565b5b5062000c5d565b5060208310610133831016604e8410600b841016171562000c2e5782820a90508381111562000c285762000c276200076e565b5b62000c5d565b62000c3d848484600162000b20565b9250905081840481111562000c575762000c566200076e565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000c7c8262000765565b915062000c898362000c64565b925062000cb87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b7a565b905092915050565b5f62000ccc8262000765565b915062000cd98362000765565b925082820262000ce98162000765565b9150828204841483151762000d035762000d026200076e565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d398262000d0e565b9050919050565b62000d4b8162000d2d565b811462000d56575f80fd5b50565b5f8151905062000d698162000d40565b92915050565b5f6020828403121562000d875762000d8662000d0a565b5b5f62000d968482850162000d59565b91505092915050565b62000daa8162000d2d565b82525050565b5f60408201905062000dc55f83018562000d9f565b62000dd4602083018462000d9f565b9392505050565b62000de68162000765565b82525050565b5f60208201905062000e015f83018462000ddb565b92915050565b6146c68062000e155f395ff3fe60806040526004361061021d575f3560e01c80638a8c523c11610122578063ad3026e4116100aa578063e0eb9cb31161006e578063e0eb9cb3146107a8578063ea2f0b37146107d2578063f2fde38b146107fa578063f887ea4014610822578063fc962edb1461084c57610224565b8063ad3026e4146106b6578063beffc7d4146106de578063c5d32bb214610706578063d256413e14610742578063dd62ed3e1461076c57610224565b8063a1e71b57116100f1578063a1e71b57146105d6578063a40f0ce7146105fe578063a457c2d714610614578063a8aa1b3114610650578063a9059cbb1461067a57610224565b80638a8c523c146105445780638cd4426d1461055a5780638da5cb5b1461058257806395d89b41146105ac57610224565b8063437823ec116101a5578063610e34b911610174578063610e34b91461047657806370a082311461049e578063715018a6146104da57806375f0a874146104f057806385141a771461051a57610224565b8063437823ec146103d45780634ada218b146103fc5780635ae34339146104265780635d098b381461044e57610224565b80631d5dace3116101ec5780631d5dace3146102e057806323b872dd1461030857806329b8cff314610344578063313ce5671461036e578063395093511461039857610224565b806306fdde0314610228578063095ea7b3146102525780631340538f1461028e57806318160ddd146102b657610224565b3661022457005b5f80fd5b348015610233575f80fd5b5061023c610876565b6040516102499190612ed9565b60405180910390f35b34801561025d575f80fd5b5061027860048036038101906102739190612f97565b610906565b6040516102859190612fef565b60405180910390f35b348015610299575f80fd5b506102b460048036038101906102af9190613032565b610923565b005b3480156102c1575f80fd5b506102ca6109bc565b6040516102d7919061306c565b60405180910390f35b3480156102eb575f80fd5b5061030660048036038101906103019190613085565b6109c5565b005b348015610313575f80fd5b5061032e600480360381019061032991906130c3565b610b18565b60405161033b9190612fef565b60405180910390f35b34801561034f575f80fd5b50610358610c13565b604051610365919061306c565b60405180910390f35b348015610379575f80fd5b50610382610c19565b60405161038f919061312e565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b99190612f97565b610c21565b6040516103cb9190612fef565b60405180910390f35b3480156103df575f80fd5b506103fa60048036038101906103f59190613147565b610cc8565b005b348015610407575f80fd5b50610410610d9c565b60405161041d9190612fef565b60405180910390f35b348015610431575f80fd5b5061044c60048036038101906104479190613172565b610daf565b005b348015610459575f80fd5b50610474600480360381019061046f9190613147565b610e83565b005b348015610481575f80fd5b5061049c60048036038101906104979190613085565b611073565b005b3480156104a9575f80fd5b506104c460048036038101906104bf9190613147565b61113f565b6040516104d1919061306c565b60405180910390f35b3480156104e5575f80fd5b506104ee611184565b005b3480156104fb575f80fd5b5061050461120b565b60405161051191906131bf565b60405180910390f35b348015610525575f80fd5b5061052e611230565b60405161053b91906131bf565b60405180910390f35b34801561054f575f80fd5b50610558611236565b005b348015610565575f80fd5b50610580600480360381019061057b9190612f97565b61131f565b005b34801561058d575f80fd5b50610596611490565b6040516105a391906131bf565b60405180910390f35b3480156105b7575f80fd5b506105c06114b8565b6040516105cd9190612ed9565b60405180910390f35b3480156105e1575f80fd5b506105fc60048036038101906105f79190613318565b611548565b005b348015610609575f80fd5b5061061261164f565b005b34801561061f575f80fd5b5061063a60048036038101906106359190612f97565b61171d565b6040516106479190612fef565b60405180910390f35b34801561065b575f80fd5b5061066461180c565b60405161067191906131bf565b60405180910390f35b348015610685575f80fd5b506106a0600480360381019061069b9190612f97565b611831565b6040516106ad9190612fef565b60405180910390f35b3480156106c1575f80fd5b506106dc60048036038101906106d79190613085565b611847565b005b3480156106e9575f80fd5b5061070460048036038101906106ff9190613085565b6119d4565b005b348015610711575f80fd5b5061072c60048036038101906107279190613147565b611aa0565b6040516107399190612fef565b60405180910390f35b34801561074d575f80fd5b50610756611abd565b604051610763919061306c565b60405180910390f35b348015610777575f80fd5b50610792600480360381019061078d9190613372565b611ac3565b60405161079f919061306c565b60405180910390f35b3480156107b3575f80fd5b506107bc611b45565b6040516107c9919061306c565b60405180910390f35b3480156107dd575f80fd5b506107f860048036038101906107f39190613147565b611b4b565b005b348015610805575f80fd5b50610820600480360381019061081b9190613147565b611c1e565b005b34801561082d575f80fd5b50610836611d14565b604051610843919061340b565b60405180910390f35b348015610857575f80fd5b50610860611d39565b60405161086d919061306c565b60405180910390f35b60606003805461088590613451565b80601f01602080910402602001604051908101604052809291908181526020018280546108b190613451565b80156108fc5780601f106108d3576101008083540402835291602001916108fc565b820191905f5260205f20905b8154815290600101906020018083116108df57829003601f168201915b5050505050905090565b5f610919610912611d3f565b8484611d46565b6001905092915050565b61092b611d3f565b73ffffffffffffffffffffffffffffffffffffffff16610949611490565b73ffffffffffffffffffffffffffffffffffffffff161461099f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610996906134cb565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b5f600254905090565b6109cd611d3f565b73ffffffffffffffffffffffffffffffffffffffff166109eb611490565b73ffffffffffffffffffffffffffffffffffffffff1614610a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a38906134cb565b60405180910390fd5b612710821115610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90613559565b60405180910390fd5b6064811015610aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac1906135e7565b60405180910390fd5b610ad2610c19565b600a610ade9190613761565b82610ae991906137ab565b600881905550610af7610c19565b600a610b039190613761565b81610b0e91906137ab565b6009819055505050565b5f610b24848484611f09565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b6b611d3f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be19061385c565b60405180910390fd5b610c0785610bf6611d3f565b8584610c02919061387a565b611d46565b60019150509392505050565b600b5481565b5f6012905090565b5f610cbe610c2d611d3f565b848460015f610c3a611d3f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610cb991906138ad565b611d46565b6001905092915050565b610cd0611d3f565b73ffffffffffffffffffffffffffffffffffffffff16610cee611490565b73ffffffffffffffffffffffffffffffffffffffff1614610d44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3b906134cb565b60405180910390fd5b600160135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600760169054906101000a900460ff1681565b610db7611d3f565b73ffffffffffffffffffffffffffffffffffffffff16610dd5611490565b73ffffffffffffffffffffffffffffffffffffffff1614610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e22906134cb565b60405180910390fd5b8060145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610e8b611d3f565b73ffffffffffffffffffffffffffffffffffffffff16610ea9611490565b73ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef6906134cb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6490613950565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd2906139b8565b60405180910390fd5b600160135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61107b611d3f565b73ffffffffffffffffffffffffffffffffffffffff16611099611490565b73ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e6906134cb565b60405180910390fd5b81600d5f018190555080600d600101819055507fa2b219a42aa557965901397e42601390282bb6828cabbd7675dca50ba6aa62ca82826040516111339291906139d6565b60405180910390a15050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61118c611d3f565b73ffffffffffffffffffffffffffffffffffffffff166111aa611490565b73ffffffffffffffffffffffffffffffffffffffff1614611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f7906134cb565b60405180910390fd5b6112095f612597565b565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b61123e611d3f565b73ffffffffffffffffffffffffffffffffffffffff1661125c611490565b73ffffffffffffffffffffffffffffffffffffffff16146112b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a9906134cb565b60405180910390fd5b600760169054906101000a900460ff1615611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f990613a47565b60405180910390fd5b6001600760166101000a81548160ff021916908315150217905550565b611327611d3f565b73ffffffffffffffffffffffffffffffffffffffff16611345611490565b73ffffffffffffffffffffffffffffffffffffffff161461139b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611392906134cb565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090613ad5565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61142d611490565b836040518363ffffffff1660e01b815260040161144b929190613af3565b6020604051808303815f875af1158015611467573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061148b9190613b2e565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546114c790613451565b80601f01602080910402602001604051908101604052809291908181526020018280546114f390613451565b801561153e5780601f106115155761010080835404028352916020019161153e565b820191905f5260205f20905b81548152906001019060200180831161152157829003601f168201915b5050505050905090565b611550611d3f565b73ffffffffffffffffffffffffffffffffffffffff1661156e611490565b73ffffffffffffffffffffffffffffffffffffffff16146115c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115bb906134cb565b60405180910390fd5b5f5b825181101561164a578160145f8584815181106115e6576115e5613b59565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506115c6565b505050565b611657611d3f565b73ffffffffffffffffffffffffffffffffffffffff16611675611490565b73ffffffffffffffffffffffffffffffffffffffff16146116cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c2906134cb565b60405180910390fd5b5f4790506116d7611490565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611719573d5f803e3d5ffd5b5050565b5f8060015f61172a611d3f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156117e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117db90613bf6565b60405180910390fd5b6118016117ef611d3f565b8585846117fc919061387a565b611d46565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61183d338484611f09565b6001905092915050565b61184f611d3f565b73ffffffffffffffffffffffffffffffffffffffff1661186d611490565b73ffffffffffffffffffffffffffffffffffffffff16146118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba906134cb565b60405180910390fd5b6118cb610c19565b600a6118d79190613761565b826118e291906137ab565b600b819055506118f0610c19565b600a6118fc9190613761565b8161190791906137ab565b600a819055506103e8821015611952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194990613c84565b60405180910390fd5b6103e8811015611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e90613d12565b60405180910390fd5b7f202f4712f0dae21d708451caa16ed4b41cb5c9974ab3d34d1f1dc4dfc5a222db82826040516119c89291906139d6565b60405180910390a15050565b6119dc611d3f565b73ffffffffffffffffffffffffffffffffffffffff166119fa611490565b73ffffffffffffffffffffffffffffffffffffffff1614611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a47906134cb565b60405180910390fd5b81600f5f018190555080600f600101819055507f7873124e0d91bc71776e2961704366640b879893d05157d7bfa606dd9e58227d8282604051611a949291906139d6565b60405180910390a15050565b6013602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b611b53611d3f565b73ffffffffffffffffffffffffffffffffffffffff16611b71611490565b73ffffffffffffffffffffffffffffffffffffffff1614611bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbe906134cb565b60405180910390fd5b5f60135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611c26611d3f565b73ffffffffffffffffffffffffffffffffffffffff16611c44611490565b73ffffffffffffffffffffffffffffffffffffffff1614611c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c91906134cb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cff90613da0565b60405180910390fd5b611d1181612597565b50565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab90613e2e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1990613ebc565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611efc919061306c565b60405180910390a3505050565b5f8111611f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4290613f4a565b60405180910390fd5b60145f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611fe9575060145f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201f90613fb2565b60405180910390fd5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120c6575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561211b57600760169054906101000a900460ff1661211a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121119061401a565b60405180910390fd5b5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121c4575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612217575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156122ba57600a54811115612261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225890614082565b60405180910390fd5b600b548161226e8461113f565b61227891906138ad565b11156122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b0906140ea565b60405180910390fd5b5b5f805f6122c5612e37565b600760149054906101000a900460ff1680612326575060135f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612377575060135f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612384575f91506124ac565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff160361241957600f5f0154600f600101546123ed91906138ad565b9350839250600f6040518060400160405290815f820154815260200160018201548152505090506124ab565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146124aa57600d5f0154600d6001015461248291906138ad565b9350839250600d6040518060400160405290815f820154815260200160018201548152505090505b5b5b606483866124ba91906137ab565b6124c49190614135565b9150600760159054906101000a900460ff16801561252f575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b1561253f5761253e848261265a565b5b61255587878488612550919061387a565b6127ce565b5f82111561258e575f84111561258d575f6064858761257491906137ab565b61257e9190614135565b905061258b8830836127ce565b505b5b50505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff166127ca576001600760146101000a81548160ff0219169083151502179055505f8203156127af575f61269b3061113f565b905060095481106127ad575f6002846126b491906137ab565b90505f818460200151846126c891906137ab565b6126d29190614135565b90505f4790506126e184612a36565b5f81476126ee919061387a565b90505f866020015185612701919061387a565b8261270c9190614135565b90505f87602001518261271f91906137ab565b90505f811115612734576127338582612c6c565b5b5f885f015160028461274691906137ab565b61275091906137ab565b90505f8111156127a5576127a481600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612d4790919063ffffffff16565b5b505050505050505b505b5f600760146101000a81548160ff0219169083151502179055505b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361283c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612833906141d5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a190614263565b60405180910390fd5b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561292d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612924906142f1565b60405180910390fd5b8181612939919061387a565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546129c491906138ad565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a28919061306c565b60405180910390a350505050565b5f600267ffffffffffffffff811115612a5257612a516131dc565b5b604051908082528060200260200182016040528015612a805781602001602082028036833780820191505090505b50905030815f81518110612a9757612a96613b59565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b3b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b5f9190614323565b81600181518110612b7357612b72613b59565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bd93060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d46565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612c3b95949392919061443e565b5f604051808303815f87803b158015612c52575f80fd5b505af1158015612c64573d5f803e3d5ffd5b505050505050565b612c983060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611d46565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8061dead426040518863ffffffff1660e01b8152600401612cff96959493929190614496565b60606040518083038185885af1158015612d1b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612d409190614509565b5050505050565b80471015612d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d81906145a3565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612daf906145ee565b5f6040518083038185875af1925050503d805f8114612de9576040519150601f19603f3d011682016040523d82523d5f602084013e612dee565b606091505b5050905080612e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2990614672565b60405180910390fd5b505050565b60405180604001604052805f81526020015f81525090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612e86578082015181840152602081019050612e6b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612eab82612e4f565b612eb58185612e59565b9350612ec5818560208601612e69565b612ece81612e91565b840191505092915050565b5f6020820190508181035f830152612ef18184612ea1565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f3382612f0a565b9050919050565b612f4381612f29565b8114612f4d575f80fd5b50565b5f81359050612f5e81612f3a565b92915050565b5f819050919050565b612f7681612f64565b8114612f80575f80fd5b50565b5f81359050612f9181612f6d565b92915050565b5f8060408385031215612fad57612fac612f02565b5b5f612fba85828601612f50565b9250506020612fcb85828601612f83565b9150509250929050565b5f8115159050919050565b612fe981612fd5565b82525050565b5f6020820190506130025f830184612fe0565b92915050565b61301181612fd5565b811461301b575f80fd5b50565b5f8135905061302c81613008565b92915050565b5f6020828403121561304757613046612f02565b5b5f6130548482850161301e565b91505092915050565b61306681612f64565b82525050565b5f60208201905061307f5f83018461305d565b92915050565b5f806040838503121561309b5761309a612f02565b5b5f6130a885828601612f83565b92505060206130b985828601612f83565b9150509250929050565b5f805f606084860312156130da576130d9612f02565b5b5f6130e786828701612f50565b93505060206130f886828701612f50565b925050604061310986828701612f83565b9150509250925092565b5f60ff82169050919050565b61312881613113565b82525050565b5f6020820190506131415f83018461311f565b92915050565b5f6020828403121561315c5761315b612f02565b5b5f61316984828501612f50565b91505092915050565b5f806040838503121561318857613187612f02565b5b5f61319585828601612f50565b92505060206131a68582860161301e565b9150509250929050565b6131b981612f29565b82525050565b5f6020820190506131d25f8301846131b0565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61321282612e91565b810181811067ffffffffffffffff82111715613231576132306131dc565b5b80604052505050565b5f613243612ef9565b905061324f8282613209565b919050565b5f67ffffffffffffffff82111561326e5761326d6131dc565b5b602082029050602081019050919050565b5f80fd5b5f61329561329084613254565b61323a565b905080838252602082019050602084028301858111156132b8576132b761327f565b5b835b818110156132e157806132cd8882612f50565b8452602084019350506020810190506132ba565b5050509392505050565b5f82601f8301126132ff576132fe6131d8565b5b813561330f848260208601613283565b91505092915050565b5f806040838503121561332e5761332d612f02565b5b5f83013567ffffffffffffffff81111561334b5761334a612f06565b5b613357858286016132eb565b92505060206133688582860161301e565b9150509250929050565b5f806040838503121561338857613387612f02565b5b5f61339585828601612f50565b92505060206133a685828601612f50565b9150509250929050565b5f819050919050565b5f6133d36133ce6133c984612f0a565b6133b0565b612f0a565b9050919050565b5f6133e4826133b9565b9050919050565b5f6133f5826133da565b9050919050565b613405816133eb565b82525050565b5f60208201905061341e5f8301846133fc565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061346857607f821691505b60208210810361347b5761347a613424565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6134b5602083612e59565b91506134c082613481565b602082019050919050565b5f6020820190508181035f8301526134e2816134a9565b9050919050565b7f6d757374206b656570206d6178205468726573686f6c64206174203125206f725f8201527f206c657373000000000000000000000000000000000000000000000000000000602082015250565b5f613543602583612e59565b915061354e826134e9565b604082019050919050565b5f6020820190508181035f83015261357081613537565b9050919050565b7f6d696e205468726573686f6c64206d75737420626520677265617465722074685f8201527f616e206f7220657175616c20746f20302e303125000000000000000000000000602082015250565b5f6135d1603483612e59565b91506135dc82613577565b604082019050919050565b5f6020820190508181035f8301526135fe816135c5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156136875780860481111561366357613662613605565b5b60018516156136725780820291505b808102905061368085613632565b9450613647565b94509492505050565b5f8261369f576001905061375a565b816136ac575f905061375a565b81600181146136c257600281146136cc576136fb565b600191505061375a565b60ff8411156136de576136dd613605565b5b8360020a9150848211156136f5576136f4613605565b5b5061375a565b5060208310610133831016604e8410600b84101617156137305782820a90508381111561372b5761372a613605565b5b61375a565b61373d848484600161363e565b9250905081840481111561375457613753613605565b5b81810290505b9392505050565b5f61376b82612f64565b915061377683613113565b92506137a37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613690565b905092915050565b5f6137b582612f64565b91506137c083612f64565b92508282026137ce81612f64565b915082820484148315176137e5576137e4613605565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613846602883612e59565b9150613851826137ec565b604082019050919050565b5f6020820190508181035f8301526138738161383a565b9050919050565b5f61388482612f64565b915061388f83612f64565b92508282039050818111156138a7576138a6613605565b5b92915050565b5f6138b782612f64565b91506138c283612f64565b92508282019050808211156138da576138d9613605565b5b92915050565b7f46656520416464726573732063616e6e6f74206265207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61393a602283612e59565b9150613945826138e0565b604082019050919050565b5f6020820190508181035f8301526139678161392e565b9050919050565b7f46656520416464726573732063616e6e6f7420626520434100000000000000005f82015250565b5f6139a2601883612e59565b91506139ad8261396e565b602082019050919050565b5f6020820190508181035f8301526139cf81613996565b9050919050565b5f6040820190506139e95f83018561305d565b6139f6602083018461305d565b9392505050565b7f43616e6e6f742072652d656e61626c652074726164696e6700000000000000005f82015250565b5f613a31601883612e59565b9150613a3c826139fd565b602082019050919050565b5f6020820190508181035f830152613a5e81613a25565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c5f8201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b5f613abf603683612e59565b9150613aca82613a65565b604082019050919050565b5f6020820190508181035f830152613aec81613ab3565b9050919050565b5f604082019050613b065f8301856131b0565b613b13602083018461305d565b9392505050565b5f81519050613b2881613008565b92915050565b5f60208284031215613b4357613b42612f02565b5b5f613b5084828501613b1a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613be0602583612e59565b9150613beb82613b86565b604082019050919050565b5f6020820190508181035f830152613c0d81613bd4565b9050919050565b7f43616e6e6f7420736574204d617857616c6c657420616d6f756e74206c6f77655f8201527f72207468656e20302e3125000000000000000000000000000000000000000000602082015250565b5f613c6e602b83612e59565b9150613c7982613c14565b604082019050919050565b5f6020820190508181035f830152613c9b81613c62565b9050919050565b7f43616e6e6f7420736574204d6178547820616d6f756e74206c6f7765722074685f8201527f656e20302e312500000000000000000000000000000000000000000000000000602082015250565b5f613cfc602783612e59565b9150613d0782613ca2565b604082019050919050565b5f6020820190508181035f830152613d2981613cf0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613d8a602683612e59565b9150613d9582613d30565b604082019050919050565b5f6020820190508181035f830152613db781613d7e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613e18602483612e59565b9150613e2382613dbe565b604082019050919050565b5f6020820190508181035f830152613e4581613e0c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ea6602283612e59565b9150613eb182613e4c565b604082019050919050565b5f6020820190508181035f830152613ed381613e9a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613f34602983612e59565b9150613f3f82613eda565b604082019050919050565b5f6020820190508181035f830152613f6181613f28565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e73000000000000005f82015250565b5f613f9c601983612e59565b9150613fa782613f68565b602082019050919050565b5f6020820190508181035f830152613fc981613f90565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f614004601383612e59565b915061400f82613fd0565b602082019050919050565b5f6020820190508181035f83015261403181613ff8565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61406c601983612e59565b915061407782614038565b602082019050919050565b5f6020820190508181035f83015261409981614060565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6140d4601a83612e59565b91506140df826140a0565b602082019050919050565b5f6020820190508181035f830152614101816140c8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61413f82612f64565b915061414a83612f64565b92508261415a57614159614108565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6141bf602583612e59565b91506141ca82614165565b604082019050919050565b5f6020820190508181035f8301526141ec816141b3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61424d602383612e59565b9150614258826141f3565b604082019050919050565b5f6020820190508181035f83015261427a81614241565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6142db602683612e59565b91506142e682614281565b604082019050919050565b5f6020820190508181035f830152614308816142cf565b9050919050565b5f8151905061431d81612f3a565b92915050565b5f6020828403121561433857614337612f02565b5b5f6143458482850161430f565b91505092915050565b5f819050919050565b5f61437161436c6143678461434e565b6133b0565b612f64565b9050919050565b61438181614357565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6143b981612f29565b82525050565b5f6143ca83836143b0565b60208301905092915050565b5f602082019050919050565b5f6143ec82614387565b6143f68185614391565b9350614401836143a1565b805f5b8381101561443157815161441888826143bf565b9750614423836143d6565b925050600181019050614404565b5085935050505092915050565b5f60a0820190506144515f83018861305d565b61445e6020830187614378565b818103604083015261447081866143e2565b905061447f60608301856131b0565b61448c608083018461305d565b9695505050505050565b5f60c0820190506144a95f8301896131b0565b6144b6602083018861305d565b6144c36040830187614378565b6144d06060830186614378565b6144dd60808301856131b0565b6144ea60a083018461305d565b979650505050505050565b5f8151905061450381612f6d565b92915050565b5f805f606084860312156145205761451f612f02565b5b5f61452d868287016144f5565b935050602061453e868287016144f5565b925050604061454f868287016144f5565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f61458d601d83612e59565b915061459882614559565b602082019050919050565b5f6020820190508181035f8301526145ba81614581565b9050919050565b5f81905092915050565b50565b5f6145d95f836145c1565b91506145e4826145cb565b5f82019050919050565b5f6145f8826145ce565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f61465c603a83612e59565b915061466782614602565b604082019050919050565b5f6020820190508181035f83015261468981614650565b905091905056fea26469706673582212202656b417c351a2ab85334c392bc249f04de45f87f6f795a66268d0994de8341d64736f6c63430008160033