60806040526000600b556000600c556000601060006101000a81548160ff0219169083151502179055506001601060016101000a81548160ff0219169083151502179055506000601060026101000a81548160ff0219169083151502179055503480156200006c57600080fd5b50604051620042de380380620042de8339818101604052810190620000929190620011e2565b3385858160039081620000a69190620014e9565b508060049081620000b89190620014e9565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620001305760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620001279190620015e1565b60405180910390fd5b62000141816200058c60201b60201c565b507349d5e1ad8ee44750acfd9519110a6d72412ced8b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506103e8600384620004cf91906200162d565b620004db9190620016a7565b600f8190555060648184620004f191906200162d565b620004fd9190620016a7565b600d81905550606481846200051391906200162d565b6200051f9190620016a7565b600e81905550620005533360646050866200053b91906200162d565b620005479190620016a7565b6200065260201b60201c565b620005813060646014866200056991906200162d565b620005759190620016a7565b6200065260201b60201c565b5050505050620019d4565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006c75760006040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620006be9190620015e1565b60405180910390fd5b620006db60008383620006df60201b60201c565b5050565b601060029054906101000a900460ff16156200070e57620007088383836200095860201b60201c565b62000953565b6200071e62000b8860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620007a45750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156200080b576000620007bd8362000bb260201b60201c565b9050600e548282620007d09190620016df565b111562000809576040517f3261c79200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b600d5481118015620008675750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156200089f576040517f3261c79200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601060019054906101000a900460ff168015620009095750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8015620009275750600f54620009253062000bb260201b60201c565b115b156200093f576200093e8162000bfa60201b60201c565b5b620009528383836200095860201b60201c565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620009ae578060026000828254620009a19190620016df565b9250508190555062000a84565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000a3d578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040162000a34939291906200172b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000acf578060026000828254039250508190555062000b1c565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b7b919062001768565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6001601060026101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111562000c355762000c3462000fde565b5b60405190808252806020026020018201604052801562000c645781602001602082028036833780820191505090505b509050308160008151811062000c7f5762000c7e62001785565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000d27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d4d9190620017b4565b8160018151811062000d645762000d6362001785565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947600f54841062000def57600f5462000df1565b835b60008430426040518663ffffffff1660e01b815260040162000e18959493929190620018f7565b600060405180830381600087803b15801562000e3357600080fd5b505af115801562000e48573d6000803e3d6000fd5b5050505062000e9947600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000eb860201b90919060201c565b506000601060026101000a81548160ff02191690831515021790555050565b8047101562000f025747816040517fcf47918100000000000000000000000000000000000000000000000000000000815260040162000ef99291906200195b565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405162000f2a90620019bd565b60006040518083038185875af1925050503d806000811462000f69576040519150601f19603f3d011682016040523d82523d6000602084013e62000f6e565b606091505b505090508062000faa576040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620010188262000fcd565b810181811067ffffffffffffffff821117156200103a576200103962000fde565b5b80604052505050565b60006200104f62000faf565b90506200105d82826200100d565b919050565b600067ffffffffffffffff82111562001080576200107f62000fde565b5b6200108b8262000fcd565b9050602081019050919050565b60005b83811015620010b85780820151818401526020810190506200109b565b60008484015250505050565b6000620010db620010d58462001062565b62001043565b905082815260208101848484011115620010fa57620010f962000fc8565b5b6200110784828562001098565b509392505050565b600082601f83011262001127576200112662000fc3565b5b815162001139848260208601620010c4565b91505092915050565b6000819050919050565b620011578162001142565b81146200116357600080fd5b50565b60008151905062001177816200114c565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011aa826200117d565b9050919050565b620011bc816200119d565b8114620011c857600080fd5b50565b600081519050620011dc81620011b1565b92915050565b600080600080600060a0868803121562001201576200120062000fb9565b5b600086015167ffffffffffffffff81111562001222576200122162000fbe565b5b62001230888289016200110f565b955050602086015167ffffffffffffffff81111562001254576200125362000fbe565b5b62001262888289016200110f565b9450506040620012758882890162001166565b93505060606200128888828901620011cb565b92505060806200129b8882890162001166565b9150509295509295909350565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620012fb57607f821691505b602082108103620013115762001310620012b3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200137b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200133c565b6200138786836200133c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620013ca620013c4620013be8462001142565b6200139f565b62001142565b9050919050565b6000819050919050565b620013e683620013a9565b620013fe620013f582620013d1565b84845462001349565b825550505050565b600090565b6200141562001406565b62001422818484620013db565b505050565b5b818110156200144a576200143e6000826200140b565b60018101905062001428565b5050565b601f8211156200149957620014638162001317565b6200146e846200132c565b810160208510156200147e578190505b620014966200148d856200132c565b83018262001427565b50505b505050565b600082821c905092915050565b6000620014be600019846008026200149e565b1980831691505092915050565b6000620014d98383620014ab565b9150826002028217905092915050565b620014f482620012a8565b67ffffffffffffffff81111562001510576200150f62000fde565b5b6200151c8254620012e2565b620015298282856200144e565b600060209050601f8311600181146200156157600084156200154c578287015190505b620015588582620014cb565b865550620015c8565b601f198416620015718662001317565b60005b828110156200159b5784890151825560018201915060208501945060208101905062001574565b86831015620015bb5784890151620015b7601f891682620014ab565b8355505b6001600288020188555050505b505050505050565b620015db816200119d565b82525050565b6000602082019050620015f86000830184620015d0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200163a8262001142565b9150620016478362001142565b9250828202620016578162001142565b91508282048414831517620016715762001670620015fe565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620016b48262001142565b9150620016c18362001142565b925082620016d457620016d362001678565b5b828204905092915050565b6000620016ec8262001142565b9150620016f98362001142565b9250828201905080821115620017145762001713620015fe565b5b92915050565b620017258162001142565b82525050565b6000606082019050620017426000830186620015d0565b6200175160208301856200171a565b6200176060408301846200171a565b949350505050565b60006020820190506200177f60008301846200171a565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215620017cd57620017cc62000fb9565b5b6000620017dd84828501620011cb565b91505092915050565b6000819050919050565b6000620018116200180b6200180584620017e6565b6200139f565b62001142565b9050919050565b6200182381620017f0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b62001860816200119d565b82525050565b600062001874838362001855565b60208301905092915050565b6000602082019050919050565b60006200189a8262001829565b620018a6818562001834565b9350620018b38362001845565b8060005b83811015620018ea578151620018ce888262001866565b9750620018db8362001880565b925050600181019050620018b7565b5085935050505092915050565b600060a0820190506200190e60008301886200171a565b6200191d602083018762001818565b81810360408301526200193181866200188d565b9050620019426060830185620015d0565b6200195160808301846200171a565b9695505050505050565b60006040820190506200197260008301856200171a565b6200198160208301846200171a565b9392505050565b600081905092915050565b50565b6000620019a560008362001988565b9150620019b28262001993565b600082019050919050565b6000620019ca8262001996565b9150819050919050565b6128fa80620019e46000396000f3fe6080604052600436106102085760003560e01c8063715018a611610118578063c4590d3f116100a0578063dd62ed3e1161006f578063dd62ed3e14610754578063eb50e70e14610791578063f2fde38b146107ba578063f4293890146107e3578063f8b45b05146107fa5761020f565b8063c4590d3f146106ac578063c9567bf9146106d5578063d0e1032614610700578063d36d0497146107295761020f565b80638a218a7d116100e75780638a218a7d146105c55780638da5cb5b146105ee57806395d89b4114610619578063a0e47bf614610644578063a9059cbb1461066f5761020f565b8063715018a61461052f5780637437681e14610546578063751039fc1461057157806377b54bad146105885761020f565b80633090b6401161019b578063471131ac1161016a578063471131ac146104365780634f1455c9146104735780635c91331e1461049e5780636ddd1713146104c757806370a08231146104f25761020f565b80633090b6401461038c578063313ce567146103b757806332972e46146103e25780633ef613631461040d5761020f565b806318160ddd116101d757806318160ddd146102e45780631e34c5851461030f57806323b872dd14610338578063293230b8146103755761020f565b80630445b6671461021457806306fdde031461023f578063095ea7b31461026a57806312fb5550146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b50610229610825565b6040516102369190611ec1565b60405180910390f35b34801561024b57600080fd5b5061025461082b565b6040516102619190611f6c565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612022565b6108bd565b60405161029e919061207d565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190612098565b6108e0565b6040516102db919061207d565b60405180910390f35b3480156102f057600080fd5b506102f9610900565b6040516103069190611ec1565b60405180910390f35b34801561031b57600080fd5b50610336600480360381019061033191906120c5565b61090a565b005b34801561034457600080fd5b5061035f600480360381019061035a9190612105565b610924565b60405161036c919061207d565b60405180910390f35b34801561038157600080fd5b5061038a610953565b005b34801561039857600080fd5b506103a1610978565b6040516103ae9190612167565b60405180910390f35b3480156103c357600080fd5b506103cc61099e565b6040516103d9919061219e565b60405180910390f35b3480156103ee57600080fd5b506103f76109a7565b6040516104049190612167565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f919061224a565b6109cd565b005b34801561044257600080fd5b5061045d60048036038101906104589190612098565b610a7a565b60405161046a919061207d565b60405180910390f35b34801561047f57600080fd5b50610488610a9a565b6040516104959190611ec1565b60405180910390f35b3480156104aa57600080fd5b506104c560048036038101906104c091906122aa565b610aa0565b005b3480156104d357600080fd5b506104dc610af5565b6040516104e9919061207d565b60405180910390f35b3480156104fe57600080fd5b5061051960048036038101906105149190612098565b610b08565b6040516105269190611ec1565b60405180910390f35b34801561053b57600080fd5b50610544610b50565b005b34801561055257600080fd5b5061055b610b64565b6040516105689190611ec1565b60405180910390f35b34801561057d57600080fd5b50610586610b6a565b005b34801561059457600080fd5b506105af60048036038101906105aa9190612022565b610bc2565b6040516105bc919061207d565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e7919061224a565b610cf0565b005b3480156105fa57600080fd5b50610603610d9d565b6040516106109190612167565b60405180910390f35b34801561062557600080fd5b5061062e610dc7565b60405161063b9190611f6c565b60405180910390f35b34801561065057600080fd5b50610659610e59565b6040516106669190612336565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190612022565b610e7f565b6040516106a3919061207d565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce91906120c5565b610ea2565b005b3480156106e157600080fd5b506106ea610ebc565b6040516106f7919061207d565b60405180910390f35b34801561070c57600080fd5b5061072760048036038101906107229190612351565b610ecf565b005b34801561073557600080fd5b5061073e610fbc565b60405161074b9190611ec1565b60405180910390f35b34801561076057600080fd5b5061077b60048036038101906107769190612391565b610fc2565b6040516107889190611ec1565b60405180910390f35b34801561079d57600080fd5b506107b860048036038101906107b39190612098565b611049565b005b3480156107c657600080fd5b506107e160048036038101906107dc9190612098565b61110f565b005b3480156107ef57600080fd5b506107f8611195565b005b34801561080657600080fd5b5061080f6111e2565b60405161081c9190611ec1565b60405180910390f35b600f5481565b60606003805461083a90612400565b80601f016020809104026020016040519081016040528092919081815260200182805461086690612400565b80156108b35780601f10610888576101008083540402835291602001916108b3565b820191906000526020600020905b81548152906001019060200180831161089657829003601f168201915b5050505050905090565b6000806108c86111e8565b90506108d58185856111f0565b600191505092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600254905090565b610912611202565b81600c8190555080600b819055505050565b60008061092f6111e8565b905061093c858285611289565b61094785858561131d565b60019150509392505050565b61095b611202565b6001601060006101000a81548160ff021916908315150217905550565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109d5611202565b60005b83839050811015610a745781600960008686858181106109fb576109fa612431565b5b9050602002016020810190610a109190612098565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a6c9061248f565b9150506109d8565b50505050565b60096020528060005260406000206000915054906101000a900460ff1681565b600c5481565b610aa8611202565b606481610ab3610900565b610abd91906124d7565b610ac79190612548565b600d81905550606481610ad8610900565b610ae291906124d7565b610aec9190612548565b600e8190555050565b601060019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b58611202565b610b626000611411565b565b600d5481565b610b72611202565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600d819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600e81905550565b6000808203610c48578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c049190612167565b602060405180830381865afa158015610c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c45919061258e565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610ca59291906125bb565b6020604051808303816000875af1158015610cc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce891906125f9565b905092915050565b610cf8611202565b60005b83839050811015610d975781600a6000868685818110610d1e57610d1d612431565b5b9050602002016020810190610d339190612098565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d8f9061248f565b915050610cfb565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610dd690612400565b80601f0160208091040260200160405190810160405280929190818152602001828054610e0290612400565b8015610e4f5780601f10610e2457610100808354040283529160200191610e4f565b820191906000526020600020905b815481529060010190602001808311610e3257829003601f168201915b5050505050905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610e8a6111e8565b9050610e9781858561131d565b600191505092915050565b610eaa611202565b81600d8190555080600e819055505050565b601060009054906101000a900460ff1681565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610f605750610f30610d9d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610f97576040517f5c427cd900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81601060016101000a81548160ff02191690831515021790555080600f819055505050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611051611202565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611117611202565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111895760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016111809190612167565b60405180910390fd5b61119281611411565b50565b6111e047600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114d790919063ffffffff16565b565b600e5481565b600033905090565b6111fd83838360016115c6565b505050565b61120a6111e8565b73ffffffffffffffffffffffffffffffffffffffff16611228610d9d565b73ffffffffffffffffffffffffffffffffffffffff16146112875761124b6111e8565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161127e9190612167565b60405180910390fd5b565b60006112958484610fc2565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113175781811015611307578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016112fe93929190612626565b60405180910390fd5b611316848484840360006115c6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138f5760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016113869190612167565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114015760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016113f89190612167565b60405180910390fd5b61140c83838361179d565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8047101561151e5747816040517fcf47918100000000000000000000000000000000000000000000000000000000815260040161151592919061265d565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611544906126b7565b60006040518083038185875af1925050503d8060008114611581576040519150601f19603f3d011682016040523d82523d6000602084013e611586565b606091505b50509050806115c1576040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116385760006040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161162f9190612167565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116aa5760006040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116a19190612167565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015611797578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161178e9190611ec1565b60405180910390a35b50505050565b601060029054906101000a900460ff16156117c2576117bd8383836119da565b6119d5565b6117ca610d9d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561184f5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118aa57600061185f83610b08565b9050600e54828261187091906126cc565b11156118a8576040517f3261c79200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b600d54811180156119055750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561193c576040517f3261c79200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601060019054906101000a900460ff1680156119a55750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156119ba5750600f546119b830610b08565b115b156119c9576119c881611bff565b5b6119d48383836119da565b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a2c578060026000828254611a2091906126cc565b92505081905550611aff565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611ab8578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401611aaf93929190612626565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b485780600260008282540392505081905550611b95565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bf29190611ec1565b60405180910390a3505050565b6001601060026101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c3757611c36612700565b5b604051908082528060200260200182016040528015611c655781602001602082028036833780820191505090505b5090503081600081518110611c7d57611c7c612431565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d489190612744565b81600181518110611d5c57611d5b612431565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947600f548410611de557600f54611de7565b835b60008430426040518663ffffffff1660e01b8152600401611e0c95949392919061286a565b600060405180830381600087803b158015611e2657600080fd5b505af1158015611e3a573d6000803e3d6000fd5b50505050611e8947600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114d790919063ffffffff16565b506000601060026101000a81548160ff02191690831515021790555050565b6000819050919050565b611ebb81611ea8565b82525050565b6000602082019050611ed66000830184611eb2565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611f16578082015181840152602081019050611efb565b60008484015250505050565b6000601f19601f8301169050919050565b6000611f3e82611edc565b611f488185611ee7565b9350611f58818560208601611ef8565b611f6181611f22565b840191505092915050565b60006020820190508181036000830152611f868184611f33565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611fc382611f98565b9050919050565b611fd381611fb8565b8114611fde57600080fd5b50565b600081359050611ff081611fca565b92915050565b611fff81611ea8565b811461200a57600080fd5b50565b60008135905061201c81611ff6565b92915050565b6000806040838503121561203957612038611f8e565b5b600061204785828601611fe1565b92505060206120588582860161200d565b9150509250929050565b60008115159050919050565b61207781612062565b82525050565b6000602082019050612092600083018461206e565b92915050565b6000602082840312156120ae576120ad611f8e565b5b60006120bc84828501611fe1565b91505092915050565b600080604083850312156120dc576120db611f8e565b5b60006120ea8582860161200d565b92505060206120fb8582860161200d565b9150509250929050565b60008060006060848603121561211e5761211d611f8e565b5b600061212c86828701611fe1565b935050602061213d86828701611fe1565b925050604061214e8682870161200d565b9150509250925092565b61216181611fb8565b82525050565b600060208201905061217c6000830184612158565b92915050565b600060ff82169050919050565b61219881612182565b82525050565b60006020820190506121b3600083018461218f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126121de576121dd6121b9565b5b8235905067ffffffffffffffff8111156121fb576121fa6121be565b5b602083019150836020820283011115612217576122166121c3565b5b9250929050565b61222781612062565b811461223257600080fd5b50565b6000813590506122448161221e565b92915050565b60008060006040848603121561226357612262611f8e565b5b600084013567ffffffffffffffff81111561228157612280611f93565b5b61228d868287016121c8565b935093505060206122a086828701612235565b9150509250925092565b6000602082840312156122c0576122bf611f8e565b5b60006122ce8482850161200d565b91505092915050565b6000819050919050565b60006122fc6122f76122f284611f98565b6122d7565b611f98565b9050919050565b600061230e826122e1565b9050919050565b600061232082612303565b9050919050565b61233081612315565b82525050565b600060208201905061234b6000830184612327565b92915050565b6000806040838503121561236857612367611f8e565b5b600061237685828601612235565b92505060206123878582860161200d565b9150509250929050565b600080604083850312156123a8576123a7611f8e565b5b60006123b685828601611fe1565b92505060206123c785828601611fe1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061241857607f821691505b60208210810361242b5761242a6123d1565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061249a82611ea8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036124cc576124cb612460565b5b600182019050919050565b60006124e282611ea8565b91506124ed83611ea8565b92508282026124fb81611ea8565b9150828204841483151761251257612511612460565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061255382611ea8565b915061255e83611ea8565b92508261256e5761256d612519565b5b828204905092915050565b60008151905061258881611ff6565b92915050565b6000602082840312156125a4576125a3611f8e565b5b60006125b284828501612579565b91505092915050565b60006040820190506125d06000830185612158565b6125dd6020830184611eb2565b9392505050565b6000815190506125f38161221e565b92915050565b60006020828403121561260f5761260e611f8e565b5b600061261d848285016125e4565b91505092915050565b600060608201905061263b6000830186612158565b6126486020830185611eb2565b6126556040830184611eb2565b949350505050565b60006040820190506126726000830185611eb2565b61267f6020830184611eb2565b9392505050565b600081905092915050565b50565b60006126a1600083612686565b91506126ac82612691565b600082019050919050565b60006126c282612694565b9150819050919050565b60006126d782611ea8565b91506126e283611ea8565b92508282019050808211156126fa576126f9612460565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061273e81611fca565b92915050565b60006020828403121561275a57612759611f8e565b5b60006127688482850161272f565b91505092915050565b6000819050919050565b600061279661279161278c84612771565b6122d7565b611ea8565b9050919050565b6127a68161277b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6127e181611fb8565b82525050565b60006127f383836127d8565b60208301905092915050565b6000602082019050919050565b6000612817826127ac565b61282181856127b7565b935061282c836127c8565b8060005b8381101561285d57815161284488826127e7565b975061284f836127ff565b925050600181019050612830565b5085935050505092915050565b600060a08201905061287f6000830188611eb2565b61288c602083018761279d565b818103604083015261289e818661280c565b90506128ad6060830185612158565b6128ba6080830184611eb2565b969550505050505056fea264697066735822122008f7cdd3d3137facab8fcddcfdc336da74784869d2bc31bdec16a2d36eb9d41a64736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000422ca8b0a00a42500000000000000000000000000000094cc0aac535ccdb3c01d6787d6413c739ae12bc40000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000b446566695365706f6c696100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024453000000000000000000000000000000000000000000000000000000000000