60806040526001600060146101000a81548160ff02191690831515021790555060008060156101000a81548160ff0219169083151502179055506000600155605a6002556102d060035560006004556004600555633b9aca006006556000600755633b9aca006008556102d06009556000600a556037600b60006101000a81548161ffff021916908361ffff1602179055506001600b60026101000a81548161ffff021916908361ffff1602179055506002600b60046101000a81548161ffff021916908361ffff160217905550600a600b60066101000a81548161ffff021916908361ffff1602179055506001600b60086101000a81548161ffff021916908361ffff16021790555060c8600b600a6101000a81548161ffff021916908361ffff1602179055506003600b600c6101000a81548161ffff021916908361ffff16021790555034801561015157600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061016d600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555043600181905550615aeb80620002106000396000f3006080604052600436106103b1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146103ce5780630873f4411461045e578063095ea7b31461048b5780630c2d4424146104f05780630d599ce31461051b5780630d88ca0d1461054e5780630e90511d1461057957806313c27230146105a457806314aa7b38146105d15780631630a99a1461060457806318160ddd1461061b5780631bc93625146106465780631f7ca3dc146106775780632014ad2e146106a257806320ede987146106cd57806323b872dd146106fe57806326dfad241461078357806326e27c75146107a5578063281df5ae146107d05780632e1d34f8146107ff578063313ce5671461082e578063381eadcb1461085f5780633e0b298b1461088c578063436a7637146108cd5780634e848e1c146108fa5780634f2157781461094757806351c7115b1461097557806354b51575146109a057806354f297cf146109d35780635661f20814610a00578063592c932814610a335780635b1a59da14610a605780635ba662e514610a8b5780635dc3733f14610acc5780635e614f2f14610af757806365b4da0014610b225780636a9928c214610b4f5780636aef4c8b14610b8057806370a0823114610bb157806371ac334e14610c0857806375e0258714610c375780637e31008114610c66578063807a8a2814610cb357806380a956b414610cde57806386341c4914610d1657806388edf6aa14610d435780638d9d573314610d725780638da5cb5b14610ddf5780638f07c2b414610e365780638f94269014610e7d57806395d89b4114610ecc57806397d46a0414610f5c5780639b3aba0114610f9d5780639bf3768814610ffe5780639c2d46ad1461105f578063a08b43fd14611090578063a0ef91df146110b2578063a1ad73e8146110e1578063a9059cbb14611146578063abb4e5bd146111ab578063ad0ea755146111d6578063afde9bd21461122d578063b47ed5fc14611265578063b60c968814611294578063b8f9712d146112c5578063bf5c98221461131c578063d30073c114611347578063d94f93f31461137a578063da7fca59146113a5578063dafab4f7146113d2578063dd62ed3e14611413578063e628acf01461148a578063e8dae5d8146114bb578063e9960fb8146114ee578063ed22a27d14611541578063ee35b0bf14611574578063f571cc641461159f578063fa08c9771461162e578063fbb693d01461165d578063fc71ffe014611690578063fff19b38146116e7575b600060149054906101000a900460ff1615156103cc57600080fd5b005b3480156103da57600080fd5b506103e361173f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610423578082015181840152602081019050610408565b50505050905090810190601f1680156104505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561046a57600080fd5b506104896004803603810190808035906020019092919050505061179f565b005b34801561049757600080fd5b506104d6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611804565b604051808215151515815260200191505060405180910390f35b3480156104fc57600080fd5b5061050561180f565b6040518082815260200191505060405180910390f35b34801561052757600080fd5b50610530611815565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561055a57600080fd5b50610563611829565b6040518082815260200191505060405180910390f35b34801561058557600080fd5b5061058e61182f565b6040518082815260200191505060405180910390f35b3480156105b057600080fd5b506105cf60048036038101908080359060200190929190505050611922565b005b3480156105dd57600080fd5b506105e66119e0565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561061057600080fd5b506106196119f4565b005b34801561062757600080fd5b50610630611c46565b6040518082815260200191505060405180910390f35b34801561065257600080fd5b50610675600480360381019080803561ffff169060200190929190505050611c50565b005b34801561068357600080fd5b5061068c611ccb565b6040518082815260200191505060405180910390f35b3480156106ae57600080fd5b506106b7611cd1565b6040518082815260200191505060405180910390f35b3480156106d957600080fd5b506106fc600480360381019080803561ffff169060200190929190505050611cd7565b005b34801561070a57600080fd5b50610769600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d52565b604051808215151515815260200191505060405180910390f35b61078b611d5e565b604051808215151515815260200191505060405180910390f35b3480156107b157600080fd5b506107ba611f22565b6040518082815260200191505060405180910390f35b3480156107dc57600080fd5b506107fd600480360381019080803515159060200190929190505050611f5a565b005b34801561080b57600080fd5b5061081461200d565b604051808215151515815260200191505060405180910390f35b34801561083a57600080fd5b50610843612020565b604051808260ff1660ff16815260200191505060405180910390f35b34801561086b57600080fd5b5061088a60048036038101908080359060200190929190505050612025565b005b34801561089857600080fd5b506108b7600480360381019080803590602001909291905050506120eb565b6040518082815260200191505060405180910390f35b3480156108d957600080fd5b506108f860048036038101908080359060200190929190505050612103565b005b34801561090657600080fd5b5061093160048036038101908080359060200190929190803515159060200190929190505050612168565b6040518082815260200191505060405180910390f35b610973600480360381019080803590602001908201803590602001919091929391929390505050612186565b005b34801561098157600080fd5b5061098a612215565b6040518082815260200191505060405180910390f35b3480156109ac57600080fd5b506109b5612333565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156109df57600080fd5b506109fe60048036038101908080359060200190929190505050612347565b005b348015610a0c57600080fd5b50610a156123ac565b604051808261ffff1661ffff16815260200191505060405180910390f35b348015610a3f57600080fd5b50610a5e60048036038101908080359060200190929190505050612416565b005b348015610a6c57600080fd5b50610a7561247b565b6040518082815260200191505060405180910390f35b348015610a9757600080fd5b50610ab660048036038101908080359060200190929190505050612481565b6040518082815260200191505060405180910390f35b348015610ad857600080fd5b50610ae1612582565b6040518082815260200191505060405180910390f35b348015610b0357600080fd5b50610b0c612606565b6040518082815260200191505060405180910390f35b348015610b2e57600080fd5b50610b4d6004803603810190808035906020019092919050505061260c565b005b348015610b5b57600080fd5b50610b7e600480360381019080803561ffff169060200190929190505050612671565b005b348015610b8c57600080fd5b50610baf600480360381019080803561ffff1690602001909291905050506126ec565b005b348015610bbd57600080fd5b50610bf2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612767565b6040518082815260200191505060405180910390f35b348015610c1457600080fd5b50610c1d61291d565b604051808215151515815260200191505060405180910390f35b348015610c4357600080fd5b50610c4c612930565b604051808215151515815260200191505060405180910390f35b348015610c7257600080fd5b50610c9d6004803603810190808035906020019092919080351515906020019092919050505061293c565b6040518082815260200191505060405180910390f35b348015610cbf57600080fd5b50610cc861295a565b6040518082815260200191505060405180910390f35b610cfc60048036038101908080359060200190929190505050612960565b604051808215151515815260200191505060405180910390f35b348015610d2257600080fd5b50610d4160048036038101908080359060200190929190505050612c02565b005b348015610d4f57600080fd5b50610d58612c67565b604051808215151515815260200191505060405180910390f35b348015610d7e57600080fd5b50610d9d60048036038101908080359060200190929190505050612cc2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610deb57600080fd5b50610df4612cf5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e4257600080fd5b50610e6160048036038101908080359060200190929190505050612d1a565b604051808260ff1660ff16815260200191505060405180910390f35b348015610e8957600080fd5b50610eb26004803603810190808035906020019092919080359060200190929190505050612dd3565b604051808215151515815260200191505060405180910390f35b348015610ed857600080fd5b50610ee1612e7d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f21578082015181840152602081019050610f06565b50505050905090810190601f168015610f4e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f6857600080fd5b50610f8760048036038101908080359060200190929190505050612eb6565b6040518082815260200191505060405180910390f35b348015610fa957600080fd5b50610fe8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612ece565b6040518082815260200191505060405180910390f35b34801561100a57600080fd5b50611049600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612fef565b6040518082815260200191505060405180910390f35b34801561106b57600080fd5b5061108e600480360381019080803561ffff169060200190929190505050613012565b005b61109861308d565b604051808215151515815260200191505060405180910390f35b3480156110be57600080fd5b506110c761323f565b604051808215151515815260200191505060405180910390f35b3480156110ed57600080fd5b5061112c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506133e5565b604051808215151515815260200191505060405180910390f35b34801561115257600080fd5b50611191600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613549565b604051808215151515815260200191505060405180910390f35b3480156111b757600080fd5b506111c0613554565b6040518082815260200191505060405180910390f35b3480156111e257600080fd5b50611217600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061355a565b6040518082815260200191505060405180910390f35b61124b600480360381019080803590602001909291905050506135a3565b604051808215151515815260200191505060405180910390f35b34801561127157600080fd5b506112926004803603810190808035151590602001909291905050506136ac565b005b3480156112a057600080fd5b506112c3600480360381019080803561ffff16906020019092919050505061375f565b005b3480156112d157600080fd5b50611306600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137da565b6040518082815260200191505060405180910390f35b34801561132857600080fd5b506113316137f2565b6040518082815260200191505060405180910390f35b34801561135357600080fd5b5061135c613844565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561138657600080fd5b5061138f613858565b6040518082815260200191505060405180910390f35b3480156113b157600080fd5b506113d06004803603810190808035906020019092919050505061385e565b005b3480156113de57600080fd5b506113fd600480360381019080803590602001909291905050506138d3565b6040518082815260200191505060405180910390f35b34801561141f57600080fd5b50611474600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506138f0565b6040518082815260200191505060405180910390f35b34801561149657600080fd5b506114b9600480360381019080803561ffff1690602001909291905050506138fb565b005b3480156114c757600080fd5b506114d0613976565b604051808261ffff1661ffff16815260200191505060405180910390f35b3480156114fa57600080fd5b5061152760048036038101908080359060200190820180359060200191909192939192939050505061398a565b604051808215151515815260200191505060405180910390f35b34801561154d57600080fd5b50611556613a56565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561158057600080fd5b50611589613a6a565b6040518082815260200191505060405180910390f35b3480156115ab57600080fd5b506115ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050613a70565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561163a57600080fd5b50611643613aaa565b604051808215151515815260200191505060405180910390f35b34801561166957600080fd5b50611672613b32565b604051808261ffff1661ffff16815260200191505060405180910390f35b34801561169c57600080fd5b506116d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613b46565b6040518082815260200191505060405180910390f35b611725600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050613b5e565b604051808215151515815260200191505060405180910390f35b606060405190810160405280602181526020017f43727970746f436c6f636b546f7765722e61727420436c6f636b546f6b656e2d81526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117fa57600080fd5b8060018190555050565b600080905092915050565b600a5481565b600b600c9054906101000a900461ffff1681565b60025481565b6000806014600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115156118a5576000915061191e565b6118ad613aaa565b156118bb576000915061191e565b6118c6600080612ece565b905060008111156118da576000915061191e565b60085460075411156118f05760075491506118f6565b60085491505b61190a600a83613c7f90919063ffffffff16565b9150600082141561191a57600191505b8191505b5090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561197f57600080fd5b43821115151561198e57600080fd5b819050600082141561199e574390505b80600a819055507fb8fb4463b1a2c030078be78a106391bc6b993aea1ab4a878862003fec1b3e9fa816040518082815260200191505060405180910390a15050565b600b60089054906101000a900461ffff1681565b6000806000806000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a5e57600080fd5b6000600a54111515611a6f57600080fd5b600a5443111515611a7f57600080fd5b5b6000611a8c6013613cbd565b1115611aa457611a9e60136001613d0a565b50611a80565b6003549950611ad0600b60029054906101000a900461ffff1661ffff168b613c7f90919063ffffffff16565b9950611ae78a600a54613d3790919063ffffffff16565b98506000975060009650600a544303955060009450611b0f8a43613d3790919063ffffffff16565b9350611b1f600d60006001613d58565b80935081945050505b600082141515611be357611b3b82613db4565b9050600a5481101515611bc95788811015611b60578594508680600101975050611b76565b611b738185613de390919063ffffffff16565b94505b611b9c856010600085815260200190815260200160002054613d3790919063ffffffff16565b6010600084815260200190815260200160002081905550611bc06013836000613e04565b87806001019850505b611bd6600d836001613d58565b8093508194505050611b28565b6000600a819055507fa4a3d465f9d652c62a3d6fc4db392d37212e9889278a24d8a2a9fd728282b0b7438989896040518085815260200184815260200183815260200182815260200194505050505060405180910390a150505050505050505050565b600061016d905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611cab57600080fd5b80600b600c6101000a81548161ffff021916908361ffff16021790555050565b60075481565b60095481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d3257600080fd5b80600b60086101000a81548161ffff021916908361ffff16021790555050565b60008090509392505050565b60008060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151515611dc557600080fd5b60001515600060159054906101000a900460ff161515141515611de757600080fd5b611def612215565b9550600086111515611e0057600080fd5b853410151515611e0f57600080fd5b611e196000613e17565b9450611e496000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633600088613f78565b9350831515611e5757600080fd5b856008819055506000600781905550611e6e614417565b925060015491505b81431115611e88578282019150611e76565b8160018190555085341115611eb757611eaa8634613de390919063ffffffff16565b9050611eb6338261443a565b5b3373ffffffffffffffffffffffffffffffffffffffff167f90fb9d5674118cca2506ca56a913e975415ef8db55ed191b114e6f12abe7da758688604051808381526020018281526020019250505060405180910390a2611f156148bf565b6001965050505050505090565b6000611f2c613aaa565b1515611f3c576008549050611f57565b611f44612215565b9050600854811115611f565760085490505b5b90565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611fb557600080fd5b80600060146101000a81548160ff0219169083151502179055507f7cc050c76675d6e91f702464826d78e8d87742c35e8e724957702210f728ee0281604051808215151515815260200191505060405180910390a150565b600060159054906101000a900460ff1681565b600081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208057600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120e7573d6000803e3d6000fd5b5050565b60106020528060005260406000206000915090505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561215e57600080fd5b8060098190555050565b60008061217760138585613d58565b80935081925050505092915050565b600060149054906101000a900460ff1615156121a157600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fa19c8a3b92766388aaebcb2d78cd77575f956910f1d1f339300fb39cd50f597883833460405180806020018381526020018281038252858582818152602001925080828437820191505094505050505060405180910390a25050565b6000806000806000806000612228613aaa565b1515612237576000965061232a565b600854600754111561224d576007549650612253565b60085496505b612267600a88613c7f90919063ffffffff16565b965061227e60015443613de390919063ffffffff16565b95506002548681151561228d57fe5b04945060f08511156122a357600654965061232a565b846103e802600254876103e8028115156122b957fe5b040393506103e88410156122d357836103e80393506122d8565b600093505b6001850160020a925082878115156122ec57fe5b0491506103e88483028115156122fe57fe5b0490506123148183613d3790919063ffffffff16565b96506006548710156123265760065496505b8696505b50505050505090565b600b600a9054906101000a900461ffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156123a257600080fd5b8060058190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561240957600080fd5b612411614bca565b905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561247157600080fd5b8060038190555050565b60085481565b60008090506000600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1611801561255257506001600c6000600e600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b801561256c575060011515612568600d84615241565b1515145b1561257d5761257a82613db4565b90505b919050565b60008060009150612594600080612ece565b905060008111156125ff578091505b6125ae600082612ece565b9050600081141580156125e65750600f600082815260200190815260200160002054600f600084815260200190815260200160002054115b156125ef578091505b6000811415156125fe576125a3565b5b8191505090565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561266757600080fd5b8060048190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156126cc57600080fd5b80600b600a6101000a81548161ffff021916908361ffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561274757600080fd5b80600b60026101000a81548161ffff021916908361ffff16021790555050565b6000806000809150600090506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612859576127d36000806152fc565b80925081935050506128528161ffff16600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d3790919063ffffffff16565b9250612916565b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156128aa5760009250612916565b6128b58460006152fc565b80925081935050506129138161ffff16600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613de390919063ffffffff16565b92505b5050919050565b600060149054906101000a900460ff1681565b600080600a5411905090565b60008061294b600d8585613d58565b80935081925050505092915050565b60065481565b6000806000806000806000806000801515600060159054906101000a900460ff16151514151561298f57600080fd5b6000975060008a14156129bb576129a4612582565b9750600088141515156129b657600080fd5b612a0e565b6129c6600d8b615241565b15156129d157600080fd5b6129dd8a6009546153fd565b15156129e857600080fd5b6000600f60008c815260200190815260200160002054111515612a0a57600080fd5b8997505b600e600089815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16965060008773ffffffffffffffffffffffffffffffffffffffff16111515612a6957600080fd5b6000600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111515612ab757600080fd5b600f6000898152602001908152602001600020549550612ad56137f2565b9450612aea8587613d3790919063ffffffff16565b9350833410151515612afb57600080fd5b612b056000613e17565b9250612b1387338a86613f78565b9150811515612b2157600080fd5b612b29613aaa565b1515612b4257600754861115612b4157856007819055505b5b612b4c878761443a565b83341115612b7457612b678434613de390919063ffffffff16565b9050612b73338261443a565b5b3373ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f3f3c5dd5de442666f977e6772cf9e215eca5528e6d2414e1391deeba2f6fabad8a868a8a6040518085815260200184815260200183815260200182815260200194505050505060405180910390a3600198505050505050505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c5d57600080fd5b8060068190555050565b60008060006064600b60009054906101000a900461ffff1661ffff1660035402811515612c9057fe5b0491506003546004544301811515612ca457fe5b06905081811115612cb85760019250612cbd565b600092505b505090565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612d765760009050612dce565b60001515612d85600d84615241565b15151415612d965760049050612dce565b612da18260006153fd565b15612daf5760019050612dce565b612dbb826009546153fd565b15612dc95760029050612dce565b600390505b919050565b60008060001515600060159054906101000a900460ff161515141515612df857600080fd5b612e02338461545f565b905083600f6000838152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f3af45b6a39cff3ea0d058bb619e630da387d56c60133bacff9d11a0361979f398286604051808381526020018281526020019250505060405180910390a2600191505092915050565b6040805190810160405280600781526020017f434c4f434b2d310000000000000000000000000000000000000000000000000081525081565b600f6020528060005260406000206000915090505481565b60008060008060009350612ee3600d866155e4565b809350819450829550505050821515612efb57600080fd5b5b600081141515612fe35760008673ffffffffffffffffffffffffffffffffffffffff161480612f8957508573ffffffffffffffffffffffffffffffffffffffff16600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15612fc757612f9a816009546153fd565b8015612fb957506000600f600083815260200190815260200160002054115b15612fc657809350612fe3565b5b612fd2600d826155e4565b809350819450829550505050612efc565b83935050505092915050565b6000806000905061300084846152fc565b80925081935050508191505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561306d57600080fd5b80600b60066101000a81548161ffff021916908361ffff16021790555050565b6000806000806000801515600060159054906101000a900460ff1615151415156130b657600080fd5b6130be61182f565b93506000841115156130cf57600080fd5b8334101515156130de57600080fd5b6000600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411151561314d57600080fd5b6131576000613e17565b92506131876000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633600086613f78565b915081151561319557600080fd5b61319d613aaa565b15156131b6576007548411156131b557836007819055505b5b833411156131de576131d18434613de390919063ffffffff16565b90506131dd338261443a565b5b3373ffffffffffffffffffffffffffffffffffffffff167f32c3eecf6540fc4636eb73239671f9b4903669192423f92facd91db3914c4aa08486604051808381526020018281526020019250505060405180910390a2600194505050505090565b60008060001515600060159054906101000a900460ff16151514151561326457600080fd5b601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115156132b557600080fd5b6132d660113373ffffffffffffffffffffffffffffffffffffffff16615241565b15156132e157600080fd5b61330260113373ffffffffffffffffffffffffffffffffffffffff16615676565b506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561338e573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167fa3ba2f2c229d01f74221c000456995f2802d90f5ff58ffddbe4a6089605f31b3826040518082815260200191505060405180910390a2600191505090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561344257600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561350657600080fd5b505af115801561351a573d6000803e3d6000fd5b505050506040513d602081101561353057600080fd5b8101908080519060200190929190505050905092915050565b600080905092915050565b60055481565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060008060008060001515600060159054906101000a900460ff1615151415156135ce57600080fd5b6135d66137f2565b94508434101515156135e757600080fd5b6135f1338861545f565b93506135fc84613e17565b925061360a33338986613f78565b915081151561361857600080fd5b84341115613640576136338534613de390919063ffffffff16565b905061363f338261443a565b5b3373ffffffffffffffffffffffffffffffffffffffff167f10d2272e28c1cb771129884113b64d48f0cf270e4c6cce78cbd03204d1307f8788858860405180848152602001838152602001828152602001935050505060405180910390a2600195505050505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561370757600080fd5b80600060156101000a81548160ff0219169083151502179055507f616525ce8194c4947e9e61873d9432102ea7a5cb8b784379826c31668b1f864681604051808215151515815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156137ba57600080fd5b80600b60006101000a81548161ffff021916908361ffff16021790555050565b60126020528060005260406000206000915090505481565b60006137fc611f22565b9050613825600b60069054906101000a900461ffff1661ffff1682613c7f90919063ffffffff16565b905061383c6103e88261576490919063ffffffff16565b905080905090565b600b60049054906101000a900461ffff1681565b60045481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156138b957600080fd5b600181101515156138c957600080fd5b8060028190555050565b6000600f6000838152602001908152602001600020549050919050565b600080905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561395657600080fd5b80600b60046101000a81548161ffff021916908361ffff16021790555050565b600b60009054906101000a900461ffff1681565b60008060001515613999612c67565b15151415156139a757600080fd5b6139d5336000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600080613f78565b90508015156139e357600080fd5b3373ffffffffffffffffffffffffffffffffffffffff167fee16f58b71c8d2f9ea3ede35a991ab2e13ceb5ac0d83e99513781ec1a80d18898585604051808060200182810382528484828181526020019250808284378201915050935050505060405180910390a2600191505092915050565b600b60069054906101000a900461ffff1681565b60035481565b6000806000613a9760118673ffffffffffffffffffffffffffffffffffffffff1686613d58565b8092508193505050809250505092915050565b6000600154431080613b1c57506000600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15613b2a5760009050613b2f565b600190505b90565b600b60029054906101000a900461ffff1681565b600c6020528060005260406000206000915090505481565b60008060008060008060001515600060159054906101000a900460ff161515141515613b8957600080fd5b613b916137f2565b9450843410151515613ba257600080fd5b613bac338861545f565b9350613bb784613e17565b9250613bc533898986613f78565b9150811515613bd357600080fd5b84341115613bfb57613bee8534613de390919063ffffffff16565b9050613bfa338261443a565b5b8773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f7d4010f81d881c5d34a94c4283cc4afaba3bb96b2e3e7a243465399da5be95ab89868960405180848152602001838152602001828152602001935050505060405180910390a360019550505050505092915050565b6000806000841415613c945760009150613cb6565b8284029050828482811515613ca557fe5b04141515613cb257600080fd5b8091505b5092915050565b6000806000613ccf8460006001613d58565b80925081935050505b600081141515613d0357613cee84826001613d58565b80925081935050508280600101935050613cd8565b5050919050565b6000806000613d1b85600086613d58565b8092508193505050613d2d8582615676565b9250505092915050565b6000808284019050838110151515613d4e57600080fd5b8091505092915050565b600080613d658585615241565b1515613d7a5760008080905091509150613dac565b600185600001600086815260200190815260200160002060008515151515815260200190815260200160002054915091505b935093915050565b6000613ddc601060008481526020019081526020016000205483613d3790919063ffffffff16565b9050919050565b600080838311151515613df557600080fd5b82840390508091505092915050565b613e11836000848461578e565b50505050565b6000806000806003549250613e49600b60029054906101000a900461ffff1661ffff1684613c7f90919063ffffffff16565b9250849150600085118015613e71575060006010600087815260200190815260200160002054115b15613e8257613e7f85613db4565b91505b43821015613ea757439350613ea08385613d3790919063ffffffff16565b9350613f0d565b819350613ebd8385613d3790919063ffffffff16565b9350829050613ee9600b60049054906101000a900461ffff1661ffff1682613c7f90919063ffffffff16565b9050613efe4382613d3790919063ffffffff16565b905080841115613f0c578093505b5b5b6000600e600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161115613f6d578380600101945050613f0e565b839350505050919050565b60008060008060008060149054906101000a900460ff161515613f9a57600080fd5b6001600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410151515613fe957600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614151561407d57614049898861545f565b9350600084141561405d576000945061440b565b614068600d85615676565b9250600083141561407c576000945061440b565b5b6140d06001600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613de390919063ffffffff16565b600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415156141f55785915060008214156141825761417f6000613e17565b91505b614191600d600084600161580f565b90506141a1600d8284600061578e565b5087600e600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6142486001600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d3790919063ffffffff16565b600c60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415156143fd578773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60016040518082815260200191505060405180910390a36000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161480156143e257506001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b80156143ef575043600154105b156143fc57436001819055505b5b614405614bca565b50600194505b50505050949350505050565b60006144356144246158c9565b600554613c7f90919063ffffffff16565b905090565b6000801515600060159054906101000a900460ff16151514151561445d57600080fd5b60008211156148ba576000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156145a1576144cf60118473ffffffffffffffffffffffffffffffffffffffff16615241565b1561459c57614579608060405190810160405280604881526020017f5f77697468647261776572416464726573732073686f756c64206e6f7420626581526020017f20696e20737461746550656e64696e674574685769746864726177616c41646481526020017f726573734c6973740000000000000000000000000000000000000000000000008152508473ffffffffffffffffffffffffffffffffffffffff166000806158e6565b61459a60118473ffffffffffffffffffffffffffffffffffffffff16615676565b505b6146f8565b600015156145c660118573ffffffffffffffffffffffffffffffffffffffff16615241565b151514156146f7576146b1608060405190810160405280605381526020017f656e61626c654574685769746864726177616c3a205f7769746864726177657281526020017f41646472657373206e6f7420696e20737461746550656e64696e67457468576981526020017f746864726177616c416464726573734c697374000000000000000000000000008152508473ffffffffffffffffffffffffffffffffffffffff16601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054436158e6565b6000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b6000601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156147da5761479282601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d3790919063ffffffff16565b601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061486b565b6147ff601160008573ffffffffffffffffffffffffffffffffffffffff16600161580f565b90506148256011828573ffffffffffffffffffffffffffffffffffffffff16600061578e565b5081601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8273ffffffffffffffffffffffffffffffffffffffff167ff7d803e6883b513a1d4ffe3f70cad691282b00146208a2b70c26d5ef276431ec836040518082815260200191505060405180910390a25b505050565b6000806000806000806000806000801515600060159054906101000a900460ff1615151415156148ee57600080fd5b6014600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156149605760009850614a71565b6064600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156149d25760649850614a70565b600b600a9054906101000a900461ffff1661ffff16600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015614a6a57600b600c9054906101000a900461ffff1661ffff169850614a6f565b600198505b5b5b600089141515614bbf576001614a868a6159a0565b1415614bbe57614a96600d613cbd565b9750600088141515614bbd576001614aad896159a0565b03965060009550614ac2600d60006001613d58565b80955081965050505b86861015614af557614ae0600d856001613d58565b80955081965050508580600101965050614acb565b600e600085815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250614b356000613e17565b9150614b656000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684600085613f78565b90508015614bbc578273ffffffffffffffffffffffffffffffffffffffff167fc1f1f37b80807c351ab8b3b915c6acf0d794c0e16a90fefaf76242b58d40230a836040518082815260200191505060405180910390a25b5b5b5b505050505050505050565b60008060008060008060008060159054906101000a900460ff168015614bf45750614bf3612c67565b5b15614c025760009650615238565b60009650614c2f600b60089054906101000a900461ffff1661ffff16600354613c7f90919063ffffffff16565b9150614c4660095483613d3790919063ffffffff16565b9150614c56600d60006001613d58565b80965081975050505b600a8761ffff16108015614c74575060008514155b8015614c8d575060001515614c8986846153fd565b1515145b1561523457849250600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169350614cd8600d866001613d58565b809650819750505060008473ffffffffffffffffffffffffffffffffffffffff1614158015614d5457506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156151af576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561510457614df46001600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613de390919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614e42600d84615676565b90506000811415614ecc57614ecb606060405190810160405280603c81526020017f7072756e654578706972794c697374416e644d6f6469667942616c616e63657381526020017f3a2072656d6f7665206e6f6465546f52656d6f7665206661696c6564000000008152508573ffffffffffffffffffffffffffffffffffffffff1685436158e6565b5b614f406001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613d3790919063ffffffff16565b600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148015615015575043600154105b1561502257436001819055505b86806001019750506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60016040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff167fb8e5b26c8170f4bb57c0f4c0eeded99c28e2ab7fd640eedb2b41f01d0fee2243846040518082815260200191505060405180910390a26151aa565b6151a9608060405190810160405280604781526020017f7072756e654578706972794c697374416e644d6f6469667942616c616e63657381526020017f3a206163636f756e74546f5072756e65206861732065787069727942616c616e81526020017f6365207a65726f000000000000000000000000000000000000000000000000008152508573ffffffffffffffffffffffffffffffffffffffff166000806158e6565b5b61522f565b61522e606060405190810160405280603e81526020017f7072756e654578706972794c697374416e644d6f6469667942616c616e63657381526020017f3a204163636f756e74546f5072756e65207a65726f206f72206f776e657200008152508573ffffffffffffffffffffffffffffffffffffffff166000806158e6565b5b614c5f565b8696505b50505050505090565b600080836000016000848152602001908152602001600020600080151515158152602001908152602001600020541480156152a7575060008360000160008481526020019081526020016000206000600115151515815260200190815260200160002054145b156152f15781836000016000808152602001908152602001600020600060011515151581526020019081526020016000205414156152e857600190506152f6565b600090506152f6565b600190505b92915050565b6000806000806000935060009250615317600d866001613d58565b80925081935050505b6000811415156153ee5760008673ffffffffffffffffffffffffffffffffffffffff1614806153ad57508573ffffffffffffffffffffffffffffffffffffffff16600e600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b156153d4576153be816009546153fd565b156153cb578093506153ee565b82806001019350505b6153e1600d826001613d58565b8092508193505050615320565b83839350935050509250929050565b60008061540984613db4565b90506000600a54118015615431575061542d83600a54613de390919063ffffffff16565b8110155b1561543f5760019150615458565b6154528343613de390919063ffffffff16565b81101591505b5092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156154bd57600080fd5b6001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015151561550c57600080fd5b600082141561553657615520836000612fef565b905060008111151561553157600080fd5b6155db565b8273ffffffffffffffffffffffffffffffffffffffff16600e600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156155a357600080fd5b6155af826009546153fd565b15156155ba57600080fd5b600115156155c9600d84615241565b15151415156155d757600080fd5b8190505b80905092915050565b60008060006155f38585615241565b151561560f57600080600081915080905092509250925061566f565b60018560000160008681526020019081526020016000206000801515151581526020019081526020016000205486600001600087815260200190815260200160002060006001151515158152602001908152602001600020549250925092505b9250925092565b60008082148061568d575061568b8383615241565b155b1561569b576000905061575e565b6156fd838460000160008581526020019081526020016000206000801515151581526020019081526020016000205485600001600086815260200190815260200160002060006001151515158152602001908152602001600020546001615a5a565b8260000160008381526020019081526020016000206000801515151581526020019081526020016000206000905582600001600083815260200190815260200160002060006001151515158152602001908152602001600020600090558190505b92915050565b60008060008311151561577657600080fd5b828481151561578157fe5b0490508091505092915050565b60008061579b8685615241565b1580156157ae57506157ad8686615241565b5b15615801578560000160008681526020019081526020016000206000841515151581526020019081526020016000205490506157ec86868686615a5a565b6157f886858386615a5a565b60019150615806565b600091505b50949350505050565b60008060008061581e88613cbd565b141561582d57600092506158bf565b600086148061584257506158418787615241565b5b151561584d57600080fd5b615858878786613d58565b80925081935050505b600081141580156158725750808514155b80156158845750831515818610151514155b156158bb57866000016000828152602001908152602001600020600085151515158152602001908152602001600020549050615861565b8092505b5050949350505050565b60006158e1601860035461576490919063ffffffff16565b905090565b7fecc54187a7996a4462fb4676e253e222a3bae16b788fab46e49745dc8daf4b16848484846040518080602001858152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561595d578082015181840152602081019050615942565b50505050905090810190601f16801561598a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a150505050565b6000808214156159b35760009050615a55565b600182424460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b602083101515615a1357805182526020820191506020810190506020830392506159ee565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060019004811515615a4d57fe5b060190508090505b919050565b8284600001600084815260200190815260200160002060008315151515158152602001908152602001600020819055508184600001600085815260200190815260200160002060008315151515815260200190815260200160002081905550505050505600a165627a7a7230582008bd09eb09bc0e298ddf992e8a59352b601af198e99e9155b4f359634cda739c0029