608060405260646006556001600960146101000a81548160ff02191690831515021790555034801561002f575f80fd5b5060405161394138038061394183398181016040528101906100519190610c0c565b336040518060400160405280600e81526020017f4d6973616b69204d6f6f6e7320330000000000000000000000000000000000008152506040518060400160405280600681526020017f4d4f4f4e5333000000000000000000000000000000000000000000000000000081525081600390816100cd9190610e71565b5080600490816100dd9190610e71565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610150575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016101479190610f4f565b60405180910390fd5b61015f8161024a60201b60201c565b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c590610fe8565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061022a336b033b2e3c9fd0803ce800000061030d60201b60201c565b5f600960146101000a81548160ff021916908315150217905550506112b7565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361037d575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016103749190610f4f565b60405180910390fd5b61038e5f838361039260201b60201c565b5050565b600960149054906101000a900460ff161580156103e857506103b861078960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161041f90611050565b60405180910390fd5b5f60646002601160646b033b2e3c9fd0803ce800000061044891906110c8565b61045291906110f8565b61045c91906110f8565b61046691906110c8565b905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d03618fe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104f6919061116e565b6106635760075443108015610558575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561059557620f42405a1015610570575f9050610594565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90505b5b6006546007546105a59190611199565b43108015610600575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156106625780610615846107b160201b60201c565b836106209190611199565b1115610661576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106589061123c565b60405180910390fd5b5b5b5f610673846107f660201b60201c565b90505f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee4964896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610704919061116e565b9050818015610711575080155b1561076f575f61271060fa8661072791906110f8565b61073191906110c8565b905061075887739601da246167b02232ee1f4e7bad10b8393526948361099560201b60201c565b61076987878761099560201b60201c565b50610781565b61078086868661099560201b60201c565b5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108545760019050610990565b733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108a45760019050610990565b73ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561097e575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b7932686040518163ffffffff1660e01b8152600401602060405180830381865afa158015610958573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097c919061116e565b155b1561098c5760019050610990565b5f90505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109e5578060025f8282546109d99190611199565b92505081905550610ab3565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610a6e578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610a6593929190611269565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610afa578060025f8282540392505081905550610b44565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ba1919061129e565b60405180910390a3505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bdb82610bb2565b9050919050565b610beb81610bd1565b8114610bf5575f80fd5b50565b5f81519050610c0681610be2565b92915050565b5f60208284031215610c2157610c20610bae565b5b5f610c2e84828501610bf8565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610cb257607f821691505b602082108103610cc557610cc4610c6e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610d277fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610cec565b610d318683610cec565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d75610d70610d6b84610d49565b610d52565b610d49565b9050919050565b5f819050919050565b610d8e83610d5b565b610da2610d9a82610d7c565b848454610cf8565b825550505050565b5f90565b610db6610daa565b610dc1818484610d85565b505050565b5b81811015610de457610dd95f82610dae565b600181019050610dc7565b5050565b601f821115610e2957610dfa81610ccb565b610e0384610cdd565b81016020851015610e12578190505b610e26610e1e85610cdd565b830182610dc6565b50505b505050565b5f82821c905092915050565b5f610e495f1984600802610e2e565b1980831691505092915050565b5f610e618383610e3a565b9150826002028217905092915050565b610e7a82610c37565b67ffffffffffffffff811115610e9357610e92610c41565b5b610e9d8254610c9b565b610ea8828285610de8565b5f60209050601f831160018114610ed9575f8415610ec7578287015190505b610ed18582610e56565b865550610f38565b601f198416610ee786610ccb565b5f5b82811015610f0e57848901518255600182019150602085019450602081019050610ee9565b86831015610f2b5784890151610f27601f891682610e3a565b8355505b6001600288020188555050505b505050505050565b610f4981610bd1565b82525050565b5f602082019050610f625f830184610f40565b92915050565b5f82825260208201905092915050565b7f5461784d616e6167657220616464726573732063616e6e6f74206265207a65725f8201527f6f00000000000000000000000000000000000000000000000000000000000000602082015250565b5f610fd2602183610f68565b9150610fdd82610f78565b604082019050919050565b5f6020820190508181035f830152610fff81610fc6565b9050919050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f61103a601a83610f68565b915061104582611006565b602082019050919050565b5f6020820190508181035f8301526110678161102e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6110d282610d49565b91506110dd83610d49565b9250826110ed576110ec61106e565b5b828204905092915050565b5f61110282610d49565b915061110d83610d49565b925082820261111b81610d49565b915082820484148315176111325761113161109b565b5b5092915050565b5f8115159050919050565b61114d81611139565b8114611157575f80fd5b50565b5f8151905061116881611144565b92915050565b5f6020828403121561118357611182610bae565b5b5f6111908482850161115a565b91505092915050565b5f6111a382610d49565b91506111ae83610d49565b92508282019050808211156111c6576111c561109b565b5b92915050565b7f546865204d41585f5045525f57414c4c4554206c696d6974206973207374696c5f8201527f6c20656e61626c656420616e642074686520747820657863656564732069742e602082015250565b5f611226604083610f68565b9150611231826111cc565b604082019050919050565b5f6020820190508181035f8301526112538161121a565b9050919050565b61126381610d49565b82525050565b5f60608201905061127c5f830186610f40565b611289602083018561125a565b611296604083018461125a565b949350505050565b5f6020820190506112b15f83018461125a565b92915050565b61267d806112c45f395ff3fe608060405234801561000f575f80fd5b5060043610610171575f3560e01c8063715018a6116100dc578063a9059cbb11610095578063dd62ed3e1161006f578063dd62ed3e1461041d578063e8dd7fc31461044d578063f2fde38b1461046b578063f73e5aab1461048757610171565b8063a9059cbb146103b1578063ad5c4648146103e1578063d8264920146103ff57610171565b8063715018a61461031357806388d695b21461031d5780638a8c523c1461034d5780638da5cb5b1461035757806395d89b411461037557806399d8fae31461039357610171565b806335f6791c1161012e57806335f6791c1461024d5780634ada218b1461026b5780634d237730146102895780634e716a7b146102a75780636ba631cf146102c557806370a08231146102e357610171565b806306fdde0314610175578063095ea7b3146101935780630c35461b146101c357806318160ddd146101e157806323b872dd146101ff578063313ce5671461022f575b5f80fd5b61017d6104a5565b60405161018a9190611bb1565b60405180910390f35b6101ad60048036038101906101a89190611c66565b610535565b6040516101ba9190611cbe565b60405180910390f35b6101cb610557565b6040516101d89190611ce6565b60405180910390f35b6101e96108f9565b6040516101f69190611d0e565b60405180910390f35b61021960048036038101906102149190611d27565b610902565b6040516102269190611cbe565b60405180910390f35b610237610930565b6040516102449190611d92565b60405180910390f35b610255610938565b6040516102629190611ce6565b60405180910390f35b610273610950565b6040516102809190611cbe565b60405180910390f35b610291610963565b60405161029e9190611e06565b60405180910390f35b6102af610988565b6040516102bc9190611d0e565b60405180910390f35b6102cd61098e565b6040516102da9190611ce6565b60405180910390f35b6102fd60048036038101906102f89190611e1f565b6109b3565b60405161030a9190611d0e565b60405180910390f35b61031b6109f8565b005b61033760048036038101906103329190611f00565b610a0b565b6040516103449190611cbe565b60405180910390f35b610355610be0565b005b61035f610caa565b60405161036c9190611ce6565b60405180910390f35b61037d610cd2565b60405161038a9190611bb1565b60405180910390f35b61039b610d62565b6040516103a89190611ce6565b60405180910390f35b6103cb60048036038101906103c69190611c66565b610d7a565b6040516103d89190611cbe565b60405180910390f35b6103e9610d9c565b6040516103f69190611ce6565b60405180910390f35b610407610db4565b6040516104149190611ce6565b60405180910390f35b61043760048036038101906104329190611f7e565b610dcc565b6040516104449190611d0e565b60405180910390f35b610455610e4e565b6040516104629190611ce6565b60405180910390f35b61048560048036038101906104809190611e1f565b610e66565b005b61048f610eea565b60405161049c9190611ce6565b60405180910390f35b6060600380546104b490611fe9565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090611fe9565b801561052b5780601f106105025761010080835404028352916020019161052b565b820191905f5260205f20905b81548152906001019060200180831161050e57829003601f168201915b5050505050905090565b5f8061053f610f02565b905061054c818585610f09565b600191505092915050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105d55760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506108f6565b5f8073fff9976782d46cc05630d1f6ebab18b2324d6b1473ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16106106395773fff9976782d46cc05630d1f6ebab18b2324d6b1430610650565b3073fff9976782d46cc05630d1f6ebab18b2324d6b145b9150915073f62c03e08ada871a0beb309762e260a7a6a880e673ffffffffffffffffffffffffffffffffffffffff1663e6a4390583836040518363ffffffff1660e01b81526004016106a3929190612019565b602060405180830381865afa1580156106be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e29190612054565b92505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461075e578260085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506108f6565b5f6040518060800160405280606462ffffff1662ffffff1681526020016101f462ffffff1662ffffff168152602001610bb862ffffff1662ffffff16815260200161271062ffffff1662ffffff1681525090505f5b60048110156108ee57730227628f3f023bb0b980b67d528571c95c6dac1c73ffffffffffffffffffffffffffffffffffffffff16631698ee8285858585600481106108015761080061207f565b5b60200201516040518463ffffffff1660e01b8152600401610824939291906120c9565b602060405180830381865afa15801561083f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108639190612054565b94505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146108e1578460085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050506108f6565b80806001019150506107b3565b505f93505050505b90565b5f600254905090565b5f8061090c610f02565b9050610919858285610f1b565b610924858585610fad565b60019150509392505050565b5f6012905090565b739601da246167b02232ee1f4e7bad10b83935269481565b600960149054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a0061109d565b610a095f611124565b565b5f610a1461109d565b828290508585905014610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a539061216e565b60405180910390fd5b5f805b86869050811015610b7e575f73ffffffffffffffffffffffffffffffffffffffff16878783818110610a9457610a9361207f565b5b9050602002016020810190610aa99190611e1f565b73ffffffffffffffffffffffffffffffffffffffff1603610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af6906121d6565b60405180910390fd5b610b4a33888884818110610b1657610b1561207f565b5b9050602002016020810190610b2b9190611e1f565b878785818110610b3e57610b3d61207f565b5b90506020020135610fad565b848482818110610b5d57610b5c61207f565b5b9050602002013582610b6f9190612221565b91508080600101915050610a5f565b503373ffffffffffffffffffffffffffffffffffffffff167fd76871a3b9b205c530f73884df11af482cc4ac28f71bdb2f15a98e79a3a7907687878787604051610bcb9493929190612388565b60405180910390a26001915050949350505050565b610be861109d565b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6e9061240b565b60405180910390fd5b600960149054906101000a900460ff1615600960146101000a81548160ff02191690831515021790555043600781905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ce190611fe9565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0d90611fe9565b8015610d585780601f10610d2f57610100808354040283529160200191610d58565b820191905f5260205f20905b815481529060010190602001808311610d3b57829003601f168201915b5050505050905090565b73f62c03e08ada871a0beb309762e260a7a6a880e681565b5f80610d84610f02565b9050610d91818585610fad565b600191505092915050565b73fff9976782d46cc05630d1f6ebab18b2324d6b1481565b733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad81565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b73ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b81565b610e6e61109d565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ede575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610ed59190611ce6565b60405180910390fd5b610ee781611124565b50565b730227628f3f023bb0b980b67d528571c95c6dac1c81565b5f33905090565b610f1683838360016111e7565b505050565b5f610f268484610dcc565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610fa75781811015610f98578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401610f8f93929190612429565b60405180910390fd5b610fa684848484035f6111e7565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361101d575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016110149190611ce6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361108d575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016110849190611ce6565b60405180910390fd5b6110988383836113b6565b505050565b6110a5610f02565b73ffffffffffffffffffffffffffffffffffffffff166110c3610caa565b73ffffffffffffffffffffffffffffffffffffffff1614611122576110e6610f02565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016111199190611ce6565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611257575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161124e9190611ce6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112c7575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016112be9190611ce6565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156113b0578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516113a79190611d0e565b60405180910390a35b50505050565b600960149054906101000a900460ff1615801561140657506113d6610caa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d906124a8565b60405180910390fd5b5f60646002601160646b033b2e3c9fd0803ce800000061146691906124f3565b6114709190612523565b61147a9190612523565b61148491906124f3565b905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d03618fe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114f0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611514919061258e565b61167b5760075443108015611576575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156115b357620f42405a101561158e575f90506115b2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90505b5b6006546007546115c39190612221565b4310801561161e575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561167a578061162d846109b3565b836116389190612221565b1115611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167090612629565b60405180910390fd5b5b5b5f61168584611789565b90505f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ee4964896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611716919061258e565b9050818015611723575080155b15611775575f61271060fa866117399190612523565b61174391906124f3565b905061176487739601da246167b02232ee1f4e7bad10b83935269483611928565b61176f878787611928565b50611781565b611780868686611928565b5b505050505050565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e75760019050611923565b733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118375760019050611923565b73ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611911575060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638b7932686040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061190f919061258e565b155b1561191f5760019050611923565b5f90505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611978578060025f82825461196c9190612221565b92505081905550611a46565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611a01578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016119f893929190612429565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a8d578060025f8282540392505081905550611ad7565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b349190611d0e565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611b8382611b41565b611b8d8185611b4b565b9350611b9d818560208601611b5b565b611ba681611b69565b840191505092915050565b5f6020820190508181035f830152611bc98184611b79565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611c0282611bd9565b9050919050565b611c1281611bf8565b8114611c1c575f80fd5b50565b5f81359050611c2d81611c09565b92915050565b5f819050919050565b611c4581611c33565b8114611c4f575f80fd5b50565b5f81359050611c6081611c3c565b92915050565b5f8060408385031215611c7c57611c7b611bd1565b5b5f611c8985828601611c1f565b9250506020611c9a85828601611c52565b9150509250929050565b5f8115159050919050565b611cb881611ca4565b82525050565b5f602082019050611cd15f830184611caf565b92915050565b611ce081611bf8565b82525050565b5f602082019050611cf95f830184611cd7565b92915050565b611d0881611c33565b82525050565b5f602082019050611d215f830184611cff565b92915050565b5f805f60608486031215611d3e57611d3d611bd1565b5b5f611d4b86828701611c1f565b9350506020611d5c86828701611c1f565b9250506040611d6d86828701611c52565b9150509250925092565b5f60ff82169050919050565b611d8c81611d77565b82525050565b5f602082019050611da55f830184611d83565b92915050565b5f819050919050565b5f611dce611dc9611dc484611bd9565b611dab565b611bd9565b9050919050565b5f611ddf82611db4565b9050919050565b5f611df082611dd5565b9050919050565b611e0081611de6565b82525050565b5f602082019050611e195f830184611df7565b92915050565b5f60208284031215611e3457611e33611bd1565b5b5f611e4184828501611c1f565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112611e6b57611e6a611e4a565b5b8235905067ffffffffffffffff811115611e8857611e87611e4e565b5b602083019150836020820283011115611ea457611ea3611e52565b5b9250929050565b5f8083601f840112611ec057611ebf611e4a565b5b8235905067ffffffffffffffff811115611edd57611edc611e4e565b5b602083019150836020820283011115611ef957611ef8611e52565b5b9250929050565b5f805f8060408587031215611f1857611f17611bd1565b5b5f85013567ffffffffffffffff811115611f3557611f34611bd5565b5b611f4187828801611e56565b9450945050602085013567ffffffffffffffff811115611f6457611f63611bd5565b5b611f7087828801611eab565b925092505092959194509250565b5f8060408385031215611f9457611f93611bd1565b5b5f611fa185828601611c1f565b9250506020611fb285828601611c1f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061200057607f821691505b60208210810361201357612012611fbc565b5b50919050565b5f60408201905061202c5f830185611cd7565b6120396020830184611cd7565b9392505050565b5f8151905061204e81611c09565b92915050565b5f6020828403121561206957612068611bd1565b5b5f61207684828501612040565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f62ffffff82169050919050565b6120c3816120ac565b82525050565b5f6060820190506120dc5f830186611cd7565b6120e96020830185611cd7565b6120f660408301846120ba565b949350505050565b7f50726f76696465206173206d75636820726563697069656e747320617320616d5f8201527f6f756e74732e0000000000000000000000000000000000000000000000000000602082015250565b5f612158602683611b4b565b9150612163826120fe565b604082019050919050565b5f6020820190508181035f8301526121858161214c565b9050919050565b7f496e76616c6964206164647265737320646574656374656400000000000000005f82015250565b5f6121c0601883611b4b565b91506121cb8261218c565b602082019050919050565b5f6020820190508181035f8301526121ed816121b4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61222b82611c33565b915061223683611c33565b925082820190508082111561224e5761224d6121f4565b5b92915050565b5f82825260208201905092915050565b5f819050919050565b61227681611bf8565b82525050565b5f612287838361226d565b60208301905092915050565b5f6122a16020840184611c1f565b905092915050565b5f602082019050919050565b5f6122c08385612254565b93506122cb82612264565b805f5b85811015612303576122e08284612293565b6122ea888261227c565b97506122f5836122a9565b9250506001810190506122ce565b5085925050509392505050565b5f82825260208201905092915050565b5f80fd5b82818337505050565b5f6123388385612310565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561236b5761236a612320565b5b60208302925061237c838584612324565b82840190509392505050565b5f6040820190508181035f8301526123a18186886122b5565b905081810360208301526123b681848661232d565b905095945050505050565b7f46696e64207468652066697273742070616972210000000000000000000000005f82015250565b5f6123f5601483611b4b565b9150612400826123c1565b602082019050919050565b5f6020820190508181035f830152612422816123e9565b9050919050565b5f60608201905061243c5f830186611cd7565b6124496020830185611cff565b6124566040830184611cff565b949350505050565b7f54726164696e67206973206e6f7420656e61626c6564207965740000000000005f82015250565b5f612492601a83611b4b565b915061249d8261245e565b602082019050919050565b5f6020820190508181035f8301526124bf81612486565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124fd82611c33565b915061250883611c33565b925082612518576125176124c6565b5b828204905092915050565b5f61252d82611c33565b915061253883611c33565b925082820261254681611c33565b9150828204841483151761255d5761255c6121f4565b5b5092915050565b61256d81611ca4565b8114612577575f80fd5b50565b5f8151905061258881612564565b92915050565b5f602082840312156125a3576125a2611bd1565b5b5f6125b08482850161257a565b91505092915050565b7f546865204d41585f5045525f57414c4c4554206c696d6974206973207374696c5f8201527f6c20656e61626c656420616e642074686520747820657863656564732069742e602082015250565b5f612613604083611b4b565b915061261e826125b9565b604082019050919050565b5f6020820190508181035f83015261264081612607565b905091905056fea26469706673582212205c76e4c565e8e41dcc8b27f5ca3fd17992dc3d08ca9ed86a8d3073c0b1b937a064736f6c634300081a0033000000000000000000000000dd5cea7cafc5596a2a2d03f5fcc7daff64956eb3