60806040526000600360146101000a81548160ff021916908315150217905550670de0b6b3a764000060065560006009556000600a60006101000a81548160ff021916908315150217905550641e173e9cd5600b556000600d60006101000a81548160ff0219169083151502179055503480156200007c57600080fd5b5033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555030600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060018190555062000157336040805190810160405280600581526020017f61646d696e000000000000000000000000000000000000000000000000000000815250620003bd640100000000026401000000009004565b620001a7336040805190810160405280600581526020017f7375706572000000000000000000000000000000000000000000000000000000815250620003bd640100000000026401000000009004565b6200028260646200026560416200024862000204633b9aca00620001e7600654600b5462000506640100000000026200392c179091906401000000009004565b620005426401000000000262003964179091906401000000009004565b6200022b60065460065462000506640100000000026200392c179091906401000000009004565b620005426401000000000262003964179091906401000000009004565b62000506640100000000026200392c179091906401000000009004565b620005426401000000000262003964179091906401000000009004565b600781905550620003b160646200039460416200037762000333633b9aca0062000316600b54620002f9640fb4322ce6620002dc60065464036f97bff462000506640100000000026200392c179091906401000000009004565b620005426401000000000262003964179091906401000000009004565b62000506640100000000026200392c179091906401000000009004565b620005426401000000000262003964179091906401000000009004565b6200035a60065460065462000506640100000000026200392c179091906401000000009004565b620005426401000000000262003964179091906401000000009004565b62000506640100000000026200392c179091906401000000009004565b620005426401000000000262003964179091906401000000009004565b600881905550620005b7565b6200044c826004836040518082805190602001908083835b602083101515620003fc5780518252602082019150602081019050602083039250620003d5565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020620005596401000000000262003c8f179091906401000000009004565b8173ffffffffffffffffffffffffffffffffffffffff167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360005b83811015620004c7578082015181840152602081019050620004aa565b50505050905090810190601f168015620004f55780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000808314156200051b57600090506200053c565b81830290508183828115156200052d57fe5b041415156200053857fe5b8090505b92915050565b600081838115156200055057fe5b04905092915050565b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b613d1980620005c76000396000f30060806040526004361061020f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806305d2035b1461021457806306fdde031461024357806307989d5a146102d3578063095ea7b31461032a5780630988ca8c1461038f5780631241c449146104185780631785f53c1461044357806318160ddd146104865780631e52ca35146104b1578063217fe6c61461054157806323b872dd146105e2578063254a46f414610667578063313ce56714610692578063382d4fc5146106c35780633842c5311461071a57806339e1e8591461075d57806340c10f191461078857806342966c68146107ed5780634beda18b1461081a5780634d474898146108455780636140ca781461087257806366188463146108a15780636a01f09c14610906578063704802751461093157806370a0823114610974578063715018a6146109cb5780637d64bcb4146109e25780637f99e11a14610a1157806380c9d1ba14610a40578063844c426414610a975780638da5cb5b14610ac257806394b918de14610b1957806395d89b4114610b46578063a9059cbb14610bd6578063b250ce2114610c3b578063ba93d98014610c66578063d391014b14610c95578063d73dd62314610d25578063d9dbd38214610d8a578063dcba984714610de1578063dd62ed3e14610e22578063f2fde38b14610e99578063fca69afa14610edc575b600080fd5b34801561022057600080fd5b50610229610f07565b604051808215151515815260200191505060405180910390f35b34801561024f57600080fd5b50610258610f1a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029857808201518184015260208101905061027d565b50505050905090810190601f1680156102c55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102df57600080fd5b50610314600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f53565b6040518082815260200191505060405180910390f35b34801561033657600080fd5b50610375600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f6b565b604051808215151515815260200191505060405180910390f35b34801561039b57600080fd5b50610416600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061105d565b005b34801561042457600080fd5b5061042d6110de565b6040518082815260200191505060405180910390f35b34801561044f57600080fd5b50610484600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e4565b005b34801561049257600080fd5b5061049b611165565b6040518082815260200191505060405180910390f35b3480156104bd57600080fd5b506104c661116f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105065780820151818401526020810190506104eb565b50505050905090810190601f1680156105335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561054d57600080fd5b506105c8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506111a8565b604051808215151515815260200191505060405180910390f35b3480156105ee57600080fd5b5061064d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061122f565b604051808215151515815260200191505060405180910390f35b34801561067357600080fd5b5061067c6115ea565b6040518082815260200191505060405180910390f35b34801561069e57600080fd5b506106a76115f0565b604051808260ff1660ff16815260200191505060405180910390f35b3480156106cf57600080fd5b506106d86115f5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561072657600080fd5b5061075b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061160d565b005b34801561076957600080fd5b506107726116cd565b6040518082815260200191505060405180910390f35b34801561079457600080fd5b506107d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116d3565b604051808215151515815260200191505060405180910390f35b3480156107f957600080fd5b50610818600480360381019080803590602001909291905050506118b9565b005b34801561082657600080fd5b5061082f6118c6565b6040518082815260200191505060405180910390f35b34801561085157600080fd5b50610870600480360381019080803590602001909291905050506118ce565b005b34801561087e57600080fd5b5061089f600480360381019080803515159060200190929190505050611b75565b005b3480156108ad57600080fd5b506108ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bd1565b604051808215151515815260200191505060405180910390f35b34801561091257600080fd5b5061091b611e63565b6040518082815260200191505060405180910390f35b34801561093d57600080fd5b50610972600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e69565b005b34801561098057600080fd5b506109b5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611eea565b6040518082815260200191505060405180910390f35b3480156109d757600080fd5b506109e0611f32565b005b3480156109ee57600080fd5b506109f7612037565b604051808215151515815260200191505060405180910390f35b348015610a1d57600080fd5b50610a266120ff565b604051808215151515815260200191505060405180910390f35b348015610a4c57600080fd5b50610a55612112565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610aa357600080fd5b50610aac61212a565b6040518082815260200191505060405180910390f35b348015610ace57600080fd5b50610ad7612130565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b2557600080fd5b50610b4460048036038101908080359060200190929190505050612156565b005b348015610b5257600080fd5b50610b5b612575565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b9b578082015181840152602081019050610b80565b50505050905090810190601f168015610bc85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610be257600080fd5b50610c21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125ae565b604051808215151515815260200191505060405180910390f35b348015610c4757600080fd5b50610c506127ce565b6040518082815260200191505060405180910390f35b348015610c7257600080fd5b50610c7b6127d4565b604051808215151515815260200191505060405180910390f35b348015610ca157600080fd5b50610caa6127e7565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cea578082015181840152602081019050610ccf565b50505050905090810190601f168015610d175780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d3157600080fd5b50610d70600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612820565b604051808215151515815260200191505060405180910390f35b348015610d9657600080fd5b50610d9f612a1c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ded57600080fd5b50610e20600480360381019080803590602001909291908035906020019092919080359060200190929190505050612a34565b005b348015610e2e57600080fd5b50610e83600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612c21565b6040518082815260200191505060405180910390f35b348015610ea557600080fd5b50610eda600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ca8565b005b348015610ee857600080fd5b50610ef1612d10565b6040518082815260200191505060405180910390f35b600360149054906101000a900460ff1681565b6040805190810160405280601081526020017f467574657265756d204d61726b6574730000000000000000000000000000000081525081565b600e6020528060005260406000206000915090505481565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6110da826004836040518082805190602001908083835b6020831015156110995780518252602082019150602081019050602083039250611074565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020612d2090919063ffffffff16565b5050565b60075481565b611123336040805190810160405280600581526020017f737570657200000000000000000000000000000000000000000000000000000081525061105d565b611162816040805190810160405280600581526020017f61646d696e000000000000000000000000000000000000000000000000000000815250612d39565b50565b6000600154905090565b6040805190810160405280600581526020017f737570657200000000000000000000000000000000000000000000000000000081525081565b6000611227836004846040518082805190602001908083835b6020831015156111e657805182526020820191506020810190506020830392506111c1565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020612e6d90919063ffffffff16565b905092915050565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561127e57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561130957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561134557600080fd5b611396826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ec690919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611429826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612edf90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506114fa82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ec690919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b60095481565b601281565b73daa6cd28e6aa9d656930ce4bb4fa93eec96ee79181565b61164c336040805190810160405280600581526020017f737570657200000000000000000000000000000000000000000000000000000081525061105d565b61168b816040805190810160405280600581526020017f7375706572000000000000000000000000000000000000000000000000000000815250612efb565b6116ca336040805190810160405280600581526020017f7375706572000000000000000000000000000000000000000000000000000000815250612d39565b50565b60085481565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561173157600080fd5b600360149054906101000a900460ff1615151561174d57600080fd5b61176282600154612edf90919063ffffffff16565b6001819055506117b9826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612edf90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885836040518082815260200191505060405180910390a28273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b6118c3338261302f565b50565b633b9aca0081565b6000600a60009054906101000a900460ff1615156118eb57600080fd5b6000821115156118fa57600080fd5b601260ff16600a0a620186a00260095410151561191657600080fd5b7342d8f8e19f73707397b6e9eb7dd022d3c0ae736c73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611a0157600080fd5b505af1158015611a15573d6000803e3d6000fd5b505050506040513d6020811015611a2b57600080fd5b81019080805190602001909291905050501515611a4757600080fd5b611a53600754836131e2565b90506000811115611b52577342d8f8e19f73707397b6e9eb7dd022d3c0ae736c73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611b1557600080fd5b505af1158015611b29573d6000803e3d6000fd5b505050506040513d6020811015611b3f57600080fd5b8101908080519060200190929190505050505b601260ff16600a0a620186a0026009541415611b7157611b70613570565b5b5050565b611bb4336040805190810160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525061105d565b80600a60006101000a81548160ff02191690831515021790555050565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083101515611ce3576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611d77565b611cf68382612ec690919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60055481565b611ea8336040805190810160405280600581526020017f737570657200000000000000000000000000000000000000000000000000000081525061105d565b611ee7816040805190810160405280600581526020017f61646d696e000000000000000000000000000000000000000000000000000000815250612efb565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f8e57600080fd5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209557600080fd5b600360149054906101000a900460ff161515156120b157600080fd5b6001600360146101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600a60009054906101000a900460ff1681565b7342d8f8e19f73707397b6e9eb7dd022d3c0ae736c81565b600c5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d60009054906101000a900460ff16801561217457506000600554115b151561217f57600080fd5b60055481111561218f5760055490505b806005600082825403925050819055506121a8816118b9565b6000612210600e6000738b7d07b6ffb9364e97b89cea8b84f94249be459f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361392c90919063ffffffff16565b111561238357738b7d07b6ffb9364e97b89cea8b84f94249be459f73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336122c16006546122b3600e6000738b7d07b6ffb9364e97b89cea8b84f94249be459f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548761392c90919063ffffffff16565b61396490919063ffffffff16565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561234657600080fd5b505af115801561235a573d6000803e3d6000fd5b505050506040513d602081101561237057600080fd5b8101908080519060200190929190505050505b60006123eb600e60007342d8f8e19f73707397b6e9eb7dd022d3c0ae736c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361392c90919063ffffffff16565b111561255e577342d8f8e19f73707397b6e9eb7dd022d3c0ae736c73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb3361249c60065461248e600e60007342d8f8e19f73707397b6e9eb7dd022d3c0ae736c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548761392c90919063ffffffff16565b61396490919063ffffffff16565b6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561252157600080fd5b505af1158015612535573d6000803e3d6000fd5b505050506040513d602081101561254b57600080fd5b8101908080519060200190929190505050505b600060055414156125725761257161397a565b5b50565b6040805190810160405280600481526020017f4655544d0000000000000000000000000000000000000000000000000000000081525081565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111515156125fd57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561263957600080fd5b61268a826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ec690919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061271d826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612edf90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b600b5481565b600d60009054906101000a900460ff1681565b6040805190810160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525081565b60006128b182600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612edf90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b738b7d07b6ffb9364e97b89cea8b84f94249be459f81565b612a73336040805190810160405280600581526020017f61646d696e00000000000000000000000000000000000000000000000000000081525061105d565b600082118015612a835750600081115b1515612a8e57600080fd5b612a9783613a2b565b7f522dcfbb1b51dca5cd361d4c01d2591e02b2acfaa7946b270726deefd32a31cb826040518080602001838152602001828103825260078152602001807f4254435f434d43000000000000000000000000000000000000000000000000008152506020019250505060405180910390a17f522dcfbb1b51dca5cd361d4c01d2591e02b2acfaa7946b270726deefd32a31cb816040518080602001838152602001828103825260078152602001807f4554485f434d43000000000000000000000000000000000000000000000000008152506020019250505060405180910390a1612c166064612c086041612bfa612bd5633b9aca00612bc7600b54612bb98b612bab6006548d61392c90919063ffffffff16565b61396490919063ffffffff16565b61392c90919063ffffffff16565b61396490919063ffffffff16565b612bec60065460065461392c90919063ffffffff16565b61396490919063ffffffff16565b61392c90919063ffffffff16565b61396490919063ffffffff16565b600881905550505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612d0457600080fd5b612d0d81613b35565b50565b601260ff16600a0a620186a00281565b612d2a8282612e6d565b1515612d3557600080fd5b5050565b612db6826004836040518082805190602001908083835b602083101515612d755780518252602082019150602081019050602083039250612d50565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020613c3190919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fd211483f91fc6eff862467f8de606587a30c8fc9981056f051b897a418df803a826040518080602001828103825283818151815260200191508051906020019080838360005b83811015612e2f578082015181840152602081019050612e14565b50505050905090810190601f168015612e5c5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000828211151515612ed457fe5b818303905092915050565b60008183019050828110151515612ef257fe5b80905092915050565b612f78826004836040518082805190602001908083835b602083101515612f375780518252602082019150602081019050602083039250612f12565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020613c8f90919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff167fbfec83d64eaa953f2708271a023ab9ee82057f8f3578d548c1a4ba0b5b700489826040518080602001828103825283818151815260200191508051906020019080838360005b83811015612ff1578082015181840152602081019050612fd6565b50505050905090810190601f16801561301e5780820380516001836020036101000a031916815260200191505b509250505060405180910390a25050565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561307c57600080fd5b6130cd816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ec690919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061312481600154612ec690919063ffffffff16565b6001819055508173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000806000806000806000881115156131f757fe5b600c544211801561320a57506000600954115b1561321f57613217613570565b869550613565565b613246600654613238898b61392c90919063ffffffff16565b61396490919063ffffffff16565b945060009350613273604161326560238861392c90919063ffffffff16565b61396490919063ffffffff16565b9250601260ff16600a0a620186a00260095484870101111561330557601260ff16600a0a620186a002600954848701010391506132cd60646132bf60418561392c90919063ffffffff16565b61396490919063ffffffff16565b9050808203830392508085039450613302886132f46006548461392c90919063ffffffff16565b61396490919063ffffffff16565b93505b82850160096000828254019250508190555060008311151561338f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4d696e696e67207061796d656e7420746f6f20736d616c6c2e0000000000000081525060200191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff166340c10f1933876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561343257600080fd5b505af1158015613446573d6000803e3d6000fd5b505050506040513d602081101561345c57600080fd5b8101908080519060200190929190505050503073ffffffffffffffffffffffffffffffffffffffff166340c10f1973daa6cd28e6aa9d656930ce4bb4fa93eec96ee791856040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561352557600080fd5b505af1158015613539573d6000803e3d6000fd5b505050506040513d602081101561354f57600080fd5b8101908080519060200190929190505050508395505b505050505092915050565b6001600d60006101000a81548160ff0219169083151502179055506000600a60006101000a81548160ff0219169083151502179055506135cf60646135c1602360095461392c90919063ffffffff16565b61396490919063ffffffff16565b60058190555061370d6005546136ff60646136f160236136e3600654738b7d07b6ffb9364e97b89cea8b84f94249be459f73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561369a57600080fd5b505af11580156136ae573d6000803e3d6000fd5b505050506040513d60208110156136c457600080fd5b810190808051906020019092919050505061392c90919063ffffffff16565b61392c90919063ffffffff16565b61396490919063ffffffff16565b61396490919063ffffffff16565b600e6000738b7d07b6ffb9364e97b89cea8b84f94249be459f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061389c60055461388e606461388060236138726006547342d8f8e19f73707397b6e9eb7dd022d3c0ae736c73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561382957600080fd5b505af115801561383d573d6000803e3d6000fd5b505050506040513d602081101561385357600080fd5b810190808051906020019092919050505061392c90919063ffffffff16565b61392c90919063ffffffff16565b61396490919063ffffffff16565b61396490919063ffffffff16565b600e60007342d8f8e19f73707397b6e9eb7dd022d3c0ae736c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f4ebcdc2b14eacac39cf3ffaa28fc33f98e82cb4ce5d3002187b611b4d7a8b398426040518082815260200191505060405180910390a1565b60008083141561393f576000905061395e565b818302905081838281151561395057fe5b0414151561395a57fe5b8090505b92915050565b6000818381151561397157fe5b04905092915050565b600d60009054906101000a900460ff16151561399557600080fd5b60006005541415156139a657600080fd5b60006009819055506000600d60006101000a81548160ff0219169083151502179055506001600a60006101000a81548160ff0219169083151502179055506283d6004201600c819055507f056f5c2c9466dd31b1e0d88d7286f67455da3ecdf43d48272c2ccff8111fc608600c546040518082815260200191505060405180910390a1565b600081111515613a3a57600080fd5b80600b819055507f522dcfbb1b51dca5cd361d4c01d2591e02b2acfaa7946b270726deefd32a31cb816040518080602001838152602001828103825260098152602001807f544f54414c5f434d4300000000000000000000000000000000000000000000008152506020019250505060405180910390a1613b2c6064613b1e6041613b10613aeb633b9aca00613add600654600b5461392c90919063ffffffff16565b61396490919063ffffffff16565b613b0260065460065461392c90919063ffffffff16565b61396490919063ffffffff16565b61392c90919063ffffffff16565b61396490919063ffffffff16565b60078190555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515613b7157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505600a165627a7a7230582062fa7e03d294088b5a0aa2142e38da42daf0cfc62b1eae68dcf3cd694a7d038d0029