0x60806040523480156200001157600080fd5b5060405162005e9238038062005e92833981016040819052620000349162000063565b600180546001600160a01b039092166001600160a01b0319928316179055600080549091163317905562000095565b6000602082840312156200007657600080fd5b81516001600160a01b03811681146200008e57600080fd5b9392505050565b615ded80620000a56000396000f3fe60806040526004361061021a5760003560e01c8063805b382411610123578063d4b2464e116100ab578063ed29bffd1161006f578063ed29bffd14610747578063edbf96921461075c578063edc922a91461079a578063f8a1ee5f146107bc578063fcb82e69146107dc57600080fd5b8063d4b2464e1461069a578063dd7bf0c0146106ba578063de53b2e5146106e7578063e28a2a9414610707578063e6ae74c21461072757600080fd5b8063b9dd0ddd116100f2578063b9dd0ddd146105f5578063c46087ab14610615578063c6df398614610635578063c85325891461031e578063d246ecbc1461067a57600080fd5b8063805b382414610563578063893d20e8146105835780639d76ea58146105b5578063a716baf7146105d557600080fd5b80634f48c37f116101a65780635e9ce120116101755780635e9ce1201461048c578063628b1a3c1461049f57806367f7079c146104dd57806378bea80b146104f25780637e7366a61461051257600080fd5b80634f48c37f146103fa57806350f532521461041a578063536742881461043a578063582e8c7a1461046c57600080fd5b80632843b78a116101ed5780632843b78a146102da5780632855d0d51461031e5780633519877e1461034b5780633cffa233146103ac57806347ebbd84146103da57600080fd5b806302f8542e1461021f5780630bbb8c93146102415780630f7eb764146102765780631b2eb61e14610296575b600080fd5b34801561022b57600080fd5b5061023f61023a366004614a4b565b6107fc565b005b34801561024d57600080fd5b5061026161025c366004614b8e565b610a51565b60405190151581526020015b60405180910390f35b34801561028257600080fd5b50610261610291366004614cad565b610ac1565b3480156102a257600080fd5b506102b66102b1366004614cf6565b610b72565b60408051825163ffffffff908116825260209384015116928101929092520161026d565b3480156102e657600080fd5b506103106102f5366004614d2d565b6001600160a01b031660009081526006602052604090205490565b60405190815260200161026d565b34801561032a57600080fd5b5061033e610339366004614d2d565b610cde565b60405161026d9190614d4a565b34801561035757600080fd5b5061036b610366366004614d94565b610d76565b60408051928352815163ffffffff9081166020808601919091528301511683820152810151151560608084019190915201511515608082015260a00161026d565b3480156103b857600080fd5b506103cc6103c7366004614dd5565b610ec1565b60405161026d929190614e52565b3480156103e657600080fd5b5061023f6103f5366004614e7d565b611069565b34801561040657600080fd5b50610261610415366004614fb8565b6119a2565b34801561042657600080fd5b5061023f61043536600461508e565b611ae9565b34801561044657600080fd5b5061045a61045536600461511e565b611c37565b60405161026d9695949392919061519d565b34801561047857600080fd5b50610261610487366004614b8e565b611d79565b61023f61049a36600461540a565b611dd2565b3480156104ab57600080fd5b506102616104ba366004614d2d565b6001600160a01b031660009081526004602052604090205463ffffffff16151590565b3480156104e957600080fd5b506102616123bf565b3480156104fe57600080fd5b5061023f61050d366004614a4b565b612429565b34801561051e57600080fd5b5061054e61052d366004614d2d565b6001600160a01b031660009081526003602052604090205463ffffffff1690565b60405163ffffffff909116815260200161026d565b34801561056f57600080fd5b5061026161057e3660046154db565b61255f565b34801561058f57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026d565b3480156105c157600080fd5b5060015461059d906001600160a01b031681565b3480156105e157600080fd5b506102616105f0366004614d94565b61281a565b34801561060157600080fd5b5061026161061036600461559d565b61299d565b34801561062157600080fd5b50610261610630366004614d2d565b612a01565b34801561064157600080fd5b50610655610650366004614dd5565b612a30565b6040805163ffffffff9094168452602084019290925260030b9082015260600161026d565b34801561068657600080fd5b5061033e61069536600461559d565b612ae4565b3480156106a657600080fd5b506102616106b53660046155c9565b612b89565b3480156106c657600080fd5b506106da6106d53660046156a0565b612d76565b60405161026d91906156f8565b3480156106f357600080fd5b5061023f610702366004615706565b612e98565b34801561071357600080fd5b5061031061072236600461571f565b612edf565b34801561073357600080fd5b5061026161074236600461576e565b612f4c565b34801561075357600080fd5b50610261613196565b34801561076857600080fd5b50610261610777366004614d2d565b6001600160a01b031660009081526003602052604090205463ffffffff16151590565b3480156107a657600080fd5b506107af6131da565b60405161026d91906157cf565b3480156107c857600080fd5b506102616107d736600461559d565b61323c565b3480156107e857600080fd5b5060005461059d906001600160a01b031681565b3360009081526004602052604090205463ffffffff1661081b57600080fd5b3360009081526004602090815260408083208684526003019091529020805461084357600080fd5b8263ffffffff1660000361085f5761085c836001615826565b92505b6000816000018054806020026020016040519081016040528092919081815260200182805480156108db57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161089e5790505b50505050509050600081600183516108f39190615843565b8151811061090357610903615856565b60200260200101519050438163ffffffff16111561095d5763ffffffff808216600090815260018501602052604090208054868316600160201b0267ffffffffffffffff1990911692881692909217919091179055610a49565b63ffffffff8082166000818152600186016020526040812054600160201b9004909216919061098d90839061586c565b90504381116109db57816109a763ffffffff851643615843565b6109b19190615895565b6109bc90600161586c565b90506109c882826158a9565b6109d89063ffffffff851661586c565b90505b60008181526001868101602090815260408320805463ffffffff8c811667ffffffffffffffff1990921691909117600160201b8c831602179091558854928301895588845292206008820401805460046007909316929092026101000a808402199092169290931602179055505b505050505050565b3360009081526004602052604081205463ffffffff16610a7057600080fd5b84336001600160a01b03167fcdaff867abac2aaa830f0e81523d81ac4f5a32dbb867445a8be99d0e039e9d61868686604051610aae93929190615910565b60405180910390a3506001949350505050565b33600090815260046020526040812054600160201b900460ff16610ae457600080fd5b336000908152600460205260408120905b8351811015610b66576000848281518110610b1257610b12615856565b60200260200101519050610b2683826133ae565b15610b535760008181526002840160205260409020805469ff0000000000000000001916600160481b1790555b5080610b5e81615949565b915050610af5565b5060019150505b919050565b604080518082018252600080825260208083018290526001600160a01b0387168252600481528382208683526003019052918220909163ffffffff84169003610c9b57600081600001805480602002602001604051908101604052809291908181526020018280548015610c3157602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610bf45790505b505050505090508060018251610c479190615843565b81518110610c5757610c57615856565b60200260200101519350438463ffffffff161115610c99578060028251610c7e9190615843565b81518110610c8e57610c8e615856565b602002602001015193505b505b63ffffffff8084166000908152600190920160209081526040928390208351808501909452548083168452600160201b90049091169082015290505b9392505050565b6001600160a01b038116600090815260056020908152604091829020805483518184028101840190945280845260609392830182828015610d6a57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610d2d5790505b50505050509050919050565b60408051608081018252600080825260208201819052918101829052606081018290526001600160a01b03851660009081526004602052604090208054600160201b900460ff16610dc657600080fd5b6001600160a01b038516610e395760008481526002909101602090815260408083208151608081018352905463ffffffff8082168352600160201b8204169382019390935260ff600160401b84048116151592820192909252600160481b90920416151560608201529092509050610eb9565b6001600160a01b0385166000908152600482016020908152604080832087845282528083205460029094018252918290208251608081018452905463ffffffff8082168352600160201b8204169282019290925260ff600160401b83048116151593820193909352600160481b9091049091161515606082015290925090505b935093915050565b6040805160c08101825260008082526020808301829052828401829052606083018290526080830182905260a083018290526001600160a01b0386168252600581528382208054855181840281018401909652808652929485939092830182828015610f7857602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610f3b5790505b505050505090508363ffffffff16600003610fee578060018251610f9c9190615843565b81518110610fac57610fac615856565b60200260200101519350438463ffffffff161115610fee578060028251610fd39190615843565b81518110610fe357610fe3615856565b602002602001015193505b5050506001600160a01b0391909116600090815260046020818152604080842063ffffffff86811686526001918201845294829020825160c08101845281548088168252600160201b900490961693860193909352820154908401526002810154606084015260038101546080840152015460a08201529091565b33600090815260046020526040902054600160201b900460ff1661108c57600080fd5b42826040015163ffffffff1611156110d75760405162461bcd60e51b81526020600482015260096024820152684168656164206e6f7760b81b60448201526064015b60405180910390fd5b33600090815260046020526040808220905190919060058301906110fc908790615962565b9081526020016040518091039020846000015163ffffffff168154811061112557611125615856565b906000526020600020906008020190508360c001518460e001516040516020016111509291906159b1565b6040516020818303038152906040528051906020012081600501541461117557600080fd5b60208085015163ffffffff16600090815260078301909152604090206005815460ff1660078111156111a9576111a9615187565b036111b657505050505050565b6002815460ff1660078111156111ce576111ce615187565b146112045760405162461bcd60e51b8152602060048201526006602482015265484552455f3160d01b60448201526064016110ce565b60008560a0015163ffffffff1611801561124f57508460e00151856020015163ffffffff168151811061123957611239615856565b60200260200101518560a0015163ffffffff1611155b6112845760405162461bcd60e51b81526020600482015260066024820152652422a922af9960d11b60448201526064016110ce565b8154606086015163ffffffff918216911611156112cc5760405162461bcd60e51b8152602060048201526006602482015265484552455f3360d01b60448201526064016110ce565b8154608086015163ffffffff600160201b90920482169116111561131b5760405162461bcd60e51b81526020600482015260066024820152651211549157cd60d21b60448201526064016110ce565b815463ffffffff600160401b90910481166000908152600180860160209081526040808420815160c0808201845282548089168352600160201b9004881682860152948201549281019290925260028101546060830152600381015460808301526004015460a082015291890151908901518151929484938493929091169081106113a8576113a8615856565b6020026020010151905060008960e001518a6020015163ffffffff16815181106113d4576113d4615856565b6020026020010151905089610100015160ff16600014806113fd575089610100015160ff166003145b156114dc576001870154156114625761142d8a6060015163ffffffff168660a0015161341e90919063ffffffff16565b935083876001015411156114525783876001015461144b9190615843565b925061145a565b866001015493505b600060018801555b865463ffffffff16158015906114875750865460608b015163ffffffff908116911614155b156114dc5760608a015187546114ce916114c7916114ae9163ffffffff9182169161349616565b63ffffffff16876060015161341e90919063ffffffff16565b84906134c5565b875463ffffffff1916885592505b89610100015160ff16600214806114fb575089610100015160ff166003145b156115d8578654600160201b900463ffffffff16158015906115335750865460808b015163ffffffff908116600160201b9092041614155b156115d85760808a01518754611561916114c7916114ae9163ffffffff600160201b90920482169161349616565b60018801549093501561158857600187015461157e9084906134c5565b6000600189015592505b865463ffffffff16158015906115a6575060608a015163ffffffff16155b156115d857865460608601516115ca916114c7919063ffffffff9081169061341e16565b875463ffffffff1916885592505b61165361164c61161b6116028d608001518e6060015163ffffffff1661351890919063ffffffff16565b63ffffffff16886060015161341e90919063ffffffff16565b61164661163b8e60a0015163ffffffff168761341e90919063ffffffff16565b60408a01519061341e565b906134c5565b85906134c5565b935061166c8760060154856134c590919063ffffffff16565b93506116a66114c761169b6116948d60a0015163ffffffff168561354090919063ffffffff16565b859061341e565b60408801519061341e565b60028801549093506116b885856134c5565b11156117065760405162461bcd60e51b815260206004820152601b60248201527f6761696e2e61646428726566756e6429203e207265636569766564000000000060448201526064016110ce565b60408051608081018252600060208201818152828401828152606084019283528a54610100900463ffffffff9081168552948f015185169091528851600390810b9092529085900b9052906117629060068b0190839061359516565b60000361184557865460ff191660031787556002880154600689015490945061178c9085906134c5565b5060006002890181905560068901556001546003890154604051633950935160e01b81526001600160a01b039182166004820152602481018790529116906339509351906044016020604051808303816000875af11580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181691906159c6565b506003880154611837908d908d908d906001600160a01b0316600089613874565b505050505050505050505050565b6004875460ff16600781111561185d5761185d615187565b0361187257865460ff1916600317875561187e565b865460ff191660051787555b600060068901558315611908576001546003890154604051633950935160e01b81526001600160a01b039182166004820152602481018790529116906339509351906044016020604051808303816000875af11580156118e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190691906159c6565b505b600154604051633950935160e01b8152336004820152602481018790526001600160a01b03909116906339509351906044016020604051808303816000875af1158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d91906159c6565b506003880154611837908d908d908d906001600160a01b03168989613874565b505050565b60008163ffffffff16428111156119b857600080fd5b3360009081526004602052604080822090516005909101906119db908990615962565b90815260200160405180910390208663ffffffff1681548110611a0057611a00615856565b6000918252602080832063ffffffff8916845260076008909302019190910190526040902090506001815460ff166007811115611a3f57611a3f615187565b1115611a7d5760405162461bcd60e51b815260206004820152600d60248201526c139bdd081c195c9b5a5d1d1959609a1b60448201526064016110ce565b805464ffffffffff191660ff1961010063ffffffff87160216176002908117825560405133917f1ed0dfeede93aca193505d2c4448bfa80fc53727e2e524f2596ae333d7f4977c91611ad4918b918b918b916159e8565b60405180910390a25060019695505050505050565b33600090815260046020526040902054600160201b900460ff16611b0c57600080fd5b336000908152600460209081526040918290209151611b2f918591859101615a23565b604051602081830303815290604052805190602001208160050186604051611b579190615962565b90815260200160405180910390208563ffffffff1681548110611b7c57611b7c615856565b90600052602060002090600802016004015414611b9857600080fd5b60005b8351811015610a49576000826002016000868481518110611bbe57611bbe615856565b6020026020010151815260200190815260200160002090508060000160099054906101000a900460ff168015611c135750600060ff16848381518110611c0657611c06615856565b602002602001015160ff16145b15611c2457805460ff60401b191681555b5080611c2f81615949565b915050611b9b565b6040805180820190915260008082526020820152600080600080600080600460008c6001600160a01b03166001600160a01b031681526020019081526020016000206005018a604051611c8a9190615962565b90815260200160405180910390208963ffffffff1681548110611caf57611caf615856565b600091825260208083208b84526007600890930201828101909152604092839020600282015460038301548354600185015487518089019098528454959850939692956001600160a01b039092169463ffffffff8083169594600160201b90930416928891839160ff90911690811115611d2b57611d2b615187565b6007811115611d3c57611d3c615187565b8152905463ffffffff6101009091048116602090920191909152909d50949b509299509083169750955016925050505b9499939850945094509450565b33600081815260036020526040808220805463ffffffff19164363ffffffff1617905551909186917fc98f6c9d476630f8e465540b0a790aa56ef97c26f7d59649b8e56da66e17630290610aae90889088908890615910565b82516001600160a01b031660009081526004602052604090208054600160201b900460ff168015611e04575060008251115b8015611e1557508360800151518351145b8015611e22575081518351145b8015611e2f575084518351145b8015611e4057508360400151518351145b8015611e5157508360600151518351145b8015611e7f575060048460400151600081518110611e7157611e71615856565b602002602001015160ff1611155b8015611e9457508360c00151518460a0015151145b8015611eb457503360009081526003602052604090205463ffffffff1615155b8015611ec257506040865111155b8015611ed5575033600052600660205260015b8015611ef2575083516001600160a01b0316600052600660205260015b611efb57600080fd5b60408401515115611fa65760015b846040015151811015611fa45784604001518181518110611f2c57611f2c615856565b602002602001015160ff168560400151600081518110611f4e57611f4e615856565b602002602001015160ff161480611f895750600260ff1685604001518281518110611f7b57611f7b615856565b602002602001015160ff1611155b611f9257600080fd5b80611f9c81615949565b915050611f09565b505b83516001600160a01b031660009081526005602090815260408083208054825181850281018501909352808352919290919083018282801561203357602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411611ff65790505b505050505090506000816001835161204b9190615843565b8151811061205b5761205b615856565b602002602001015163ffffffff169050438111156120a35781600283516120829190615843565b8151811061209257612092615856565b602002602001015163ffffffff1690505b80866020015163ffffffff16146120b957600080fd5b6000818152600180850160209081526040808420815160c081018352815463ffffffff8082168352600160201b90910416938101939093529283015490820152600282015460608201526003820154608082015260049091015460a0820152906121216149cf565b61212f868a898d8c886138e3565b8e60008151811061214257612142615856565b602002602001018660006003811061215c5761215c615856565b602002018760016020020188600260200201939093529290915291905263ffffffff909116905260a08a015160c08b01519193506121a69161219f918691613ec4565b83906134c5565b91508189610100015110156121ba57600080fd5b6001546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015612211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223591906159c6565b506000866005018c60405161224a9190615962565b9081526040516020918190038201902080546001808201835560009283529290912060089091020191508290602002015160018201558a518b9060009061229357612293615856565b6020908102919091010151815460e08c015163ffffffff888116600160401b0263ffffffff60401b19928216600160201b0267ffffffffffffffff19909416919094161791909117161781556122f182600060200201518490613540565b60028201556003810180546001600160a01b0319163317905560608a0151604051612320918a91602001615a23565b60408051601f19818403018152908290528051602091820120600484015560a08c015160c08d0151612356939192909101615ab2565b60408051601f1981840301815291905280516020909101206005820155816002602002015160068201556040516001906005890190612396908f90615962565b908152604051908190036020019020546123b09190615843565b94506118378c868a8d87613feb565b3360009081526004602052604081205463ffffffff166123de57600080fd5b33600090815260046020526040902054600160201b900460ff161561240257600080fd5b50336000908152600460205260409020805464ff000000001916600160201b179055600190565b3360009081526004602052604090205463ffffffff1661244857600080fd5b3360009081526004602090815260408083208684526003019091529020805415801561248a575061247c6006610e10615ac7565b61ffff1663ffffffff831610155b61249357600080fd5b8263ffffffff166000036124af576124ac836001615826565b92505b436000818152600180840160209081526040808420805463ffffffff898116600160201b0267ffffffffffffffff19909216818c16179190911790915586549384018755868552919093206008830401805494821660079093166004026101000a9283029290910219909316179091555133907f63b34caa4654531c1ea1645263f2d28e8233fe72f5a0925d41f702edf5d92b8c906125519087815260200190565b60405180910390a250505050565b6001600160a01b03861660009081526004602052604080822090516125da9089908790879087906005870190612596908e90615962565b90815260200160405180910390208b63ffffffff16815481106125bb576125bb615856565b906000526020600020906008020161407890949392919063ffffffff16565b50600081600501886040516125ef9190615962565b90815260200160405180910390208763ffffffff168154811061261457612614615856565b6000918252602080832063ffffffff8a16845260076008909302019182019052604082208454919350919060ff600160201b90910416158061266c57506001825460ff16600781111561266957612669615187565b11155b806126e357506002825460ff16600781111561268a5761268a615187565b1480156126e35750858863ffffffff16815181106126aa576126aa615856565b6020026020010151603c6126be91906158a9565b6126ca90610e1061586c565b82546126e190610100900463ffffffff1642615843565b115b1561279757815460ff1916600317825560068301546002840154612706916134c5565b60006002850181905560068501556001546003850154604051633950935160e01b81526001600160a01b0391821660048201526024810184905292935016906339509351906044016020604051808303816000875af115801561276d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279191906159c6565b506127c0565b6002825460ff1660078111156127af576127af615187565b0361021a57815460ff191660041782555b8a6001600160a01b03167f84ee10d060221dce9423d13e552ceee10a21bf41bd5bedcc60dc203039cc61d28b8b8b856040516127ff9493929190615ae8565b60405180910390a260019450505050505b9695505050505050565b6001600160a01b03808416600090815260046020818152604080842094871684529184018152818320858452905281208054828255919291801580159061287957506000858152600284016020526040902054600160481b900460ff16155b61288257600080fd5b60008581526002840160205260409020805443906128b39063ffffffff80821691600160201b900481169061351816565b63ffffffff16106128c357600080fd5b805469ffffffffffffffffffff19168155600154604051633950935160e01b81526001600160a01b03898116600483015260248201859052909116906339509351906044016020604051808303816000875af1158015612927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294b91906159c6565b50866001600160a01b03167facafa53d73da949760af59b77d3adf645986bfeca66849b98b0e8a4d1e21150a8360405161298791815260200190565b60405180910390a2506001979650505050505050565b600080546001600160a01b031633146129b557600080fd5b6001600160a01b0383166000908152600660205260409020548390156129da57600080fd5b6001600160a01b0384166000908152600660205260409020839055600191505b5092915050565b6001600160a01b0381166000908152600660205260408120548103612a2857506000919050565b506001919050565b6001600160a01b038216600090815260046020819052604080832090516338e073f560e21b8152839283927388b0f4018e162be82052f1c75b9a9fe1829a8a849263e381cfd492612a96926006019189910191825263ffffffff16602082015260400190565b606060405180830381865af4158015612ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad79190615b1b565b9250925092509250925092565b6001600160a01b0382166000908152600460209081526040808320848452600301825291829020805483518184028101840190945280845260609392830182828015612b7b57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411612b3e5790505b505050505090505b92915050565b3360009081526004602052604081205463ffffffff1615612ba957600080fd5b33600090815260046020526040902063ffffffff851615801590612bed5750600084600081518110612bdd57612bdd615856565b602002602001015163ffffffff16115b8015612c195750600084600281518110612c0957612c09615856565b602002602001015163ffffffff16115b8015612c2e57508054600160201b900460ff16155b8015612c505750612c426006610e10615ac7565b61ffff1663ffffffff841610155b612c5957600080fd5b612c668143878787614165565b503360009081526005602090815260408220805460018101825590835291206008820401805463ffffffff43811660046007909516949094026101000a93840293021916919091179055612ce381805463ffffffff431664ffffffffff1990911617600160201b178155600601805463ffffffff19166001179055565b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b031916339081179091556040518a91907fcdaff867abac2aaa830f0e81523d81ac4f5a32dbb867445a8be99d0e039e9d6190612d5f908c908c908c90615910565b60405180910390a350600198975050505050505050565b612dbb6040518060c00160405280600063ffffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0384166000908152600460205260408082209051600590910190612de7908690615962565b90815260200160405180910390208381548110612e0657612e06615856565b600091825260208083206001600160a01b03891684526004808352604080862060089095029092015463ffffffff600160401b909104811686526001948501845294829020825160c08101845281548088168252600160201b90049096169386019390935292820154908401526002810154606084015260038101546080840152015460a08201529150509392505050565b3360009081526004602052604090205463ffffffff16612eb757600080fd5b33600090815260046020908152604080832084845260030190915281209061199d82826149ed565b3360009081526004602052604081205463ffffffff16612efe57600080fd5b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002060050182604051612f349190615962565b90815260405190819003602001902054905092915050565b3360009081526004602052604081205463ffffffff16612f6b57600080fd5b60008463ffffffff16118015612fa15750600082600081518110612f9157612f91615856565b602002602001015163ffffffff16115b8015612fc35750612fb56006610e10615ac7565b61ffff1663ffffffff841610155b612fcc57600080fd5b33600090815260046020908152604080832060058352818420805483518186028101860190945280845291949390919083018282801561305757602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161301a5790505b505050505090506000816001835161306f9190615843565b8151811061307f5761307f615856565b60200260200101519050438163ffffffff1611156130b0576130aa838263ffffffff1689888a614165565b50613189565b63ffffffff8082166000818152600186016020526040812054600160201b900490921691906130e090839061586c565b905043811161312e57816130fa63ffffffff851643615843565b6131049190615895565b61310f90600161586c565b905061311b82826158a9565b61312b9063ffffffff851661586c565b90505b61313b85828b8a8c614165565b503360009081526005602090815260408220805460018101825590835291206008820401805460079092166004026101000a63ffffffff818102199093169390921691909102919091179055505b5060019695505050505050565b33600090815260046020526040812054600160201b900460ff166131b957600080fd5b50336000908152600460205260409020805464ff0000000019169055600190565b6060600280548060200260200160405190810160405280929190818152602001828054801561323257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613214575b5050505050905090565b33600090815260046020526040812054600160201b900460ff1661325f57600080fd5b3360009081526004602081815260408084206001600160a01b038816855292830182528084208685528252808420600284019092529092208054919291600160481b900460ff1680156132d65750805443906132ce9063ffffffff80821691600160201b900481169061351816565b63ffffffff16105b6132df57600080fd5b815460008355600154604051633950935160e01b8152336004820152602481018390526001600160a01b03909116906339509351906044016020604051808303816000875af1158015613336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335a91906159c6565b50815469ffffffffffffffffffff1916825560405181815233907facafa53d73da949760af59b77d3adf645986bfeca66849b98b0e8a4d1e21150a9060200160405180910390a25060019695505050505050565b60008181526002830160205260408120805443906133df9063ffffffff80821691600160201b900481169061351816565b63ffffffff1610156133f5576000915050612b83565b613400600143615b5a565b815463ffffffff191663ffffffff9190911617905550600192915050565b60008260000361343057506000612b83565b600061343c83856158a9565b9050826134498583615895565b14610cd75760405162461bcd60e51b815260206004820152601760248201527f6d756c7469706c69636174696f6e206f766572666c6f7700000000000000000060448201526064016110ce565b60008263ffffffff168263ffffffff1611156134b157600080fd5b60006134bd8385615b5a565b949350505050565b6000806134d2838561586c565b905083811015610cd75760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b60448201526064016110ce565b6000806135258385615826565b90508363ffffffff168163ffffffff161015610cd757600080fd5b6000828211156135895760405162461bcd60e51b81526020600482015260146024820152737375627472616374696f6e206f766572666c6f7760601b60448201526064016110ce565b60006134bd8385615843565b815463ffffffff600160201b909104811660008181526001850160209081526040822054908501519193849283928392839283928392600160401b909104811691161161361e578694508493506135ee8a86868c614293565b949c50929a5090975063ffffffff909116945092509050600088900361361e576000975050505050505050612b83565b895463ffffffff1660018911613709576136438b898c602001518d6040015185614591565b61364e60018261586c565b905089604001519250886000036136945787965061366d600182615843565b8b5463ffffffff60201b1916600160201b63ffffffff92909216918202178c559550613709565b600086815260018c8101602052604090912054600160201b900463ffffffff1697506136c09082615843565b60008781526001808e016020526040909120805463ffffffff93909316600160201b0263ffffffff60201b19909316929092179091556137009082615843565b63ffffffff1695505b600189111561373357600086815260018c016020526040902054600160201b900463ffffffff1696505b8694506137448b868884878f6145f8565b15613786578860020361377557600088815260018c0160205260409020805463ffffffff191663ffffffff84161790555b600198505050505050505050612b83565b6001891161382e578a60010160006001836137a19190615843565b63ffffffff9081168252602082019290925260400160002080546bffffffffffffffffffffffff191690558b54600160201b90041686036137fd578a5463ffffffff60201b1916600160201b63ffffffff891602178b55613863565b600086815260018c0160205260409020805463ffffffff60201b1916600160201b63ffffffff8a1602179055613863565b8860030361386357600086815260018c0160205260409020805463ffffffff60201b1916600160201b63ffffffff8716021790555b600098505050505050505050612b83565b336001600160a01b03167f3247a6bce758540366529653a56f96ff1bfab0511d52c848598d4ececd7edbd687876000015188602001518960a001518888888c8e606001518f608001516040516138d39a99989796959493929190615b77565b60405180910390a2505050505050565b600080808080805b8951811015613e595760008a828151811061390857613908615856565b6020026020010151905060008d6002016000838152602001908152602001600020905060008e6004016000336001600160a01b03166001600160a01b03168152602001908152602001600020600084815260200190815260200160002090508060000154945060008511801561399e5750815443906139969063ffffffff600160201b820481169116615826565b63ffffffff16105b15613a7b57600081558d51600154604051633950935160e01b81526001600160a01b03808416600483015260248201899052909116906339509351906044016020604051808303816000875af11580156139fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2091906159c6565b50825469ffffffffffffffffffff191683558e600001516001600160a01b03167facafa53d73da949760af59b77d3adf645986bfeca66849b98b0e8a4d1e21150a87604051613a7191815260200190565b60405180910390a2505b6000851180613ad3575081544390613aa29063ffffffff600160201b820481169116615826565b63ffffffff1610158015613abf57508154600160401b900460ff16155b8015613ad357508154600160481b900460ff165b613e435760008f6003016000858152602001908152602001600020905060026004811115613b0357613b03615187565b60ff168f604001518681518110613b1c57613b1c615856565b602002602001015160ff1614158015613b355750805415155b15613b3f57600080fd5b613b668f604001518681518110613b5857613b58615856565b602002602001015182614829565b63ffffffff16955085600003613df45782544390613b939063ffffffff600160201b820481169116615826565b63ffffffff161015613d2e5760008c8681518110613bb357613bb3615856565b602002602001015163ffffffff161115613ce757825463ffffffff19164363ffffffff16178355613c1c613bea6006610e10615ac7565b61ffff168d8781518110613c0057613c00615856565b602002602001015163ffffffff1661498890919063ffffffff16565b835463ffffffff91909116600160201b0263ffffffff60201b199091161783558b51613c8b90613c72908e9088908110613c5857613c58615856565b60200260200101518f8881518110613c0057613c00615856565b63ffffffff168c6080015161341e90919063ffffffff16565b6001600160f81b03811683559550613ca388876134c5565b9750600160ff168f606001518681518110613cc057613cc0615856565b602002602001015160ff1603613ce257825460ff60401b1916600160401b1783555b613d6a565b613d27613d208e8781518110613cff57613cff615856565b602002602001015163ffffffff168d60a0015161341e90919063ffffffff16565b88906134c5565b9650613d6a565b8154158015613d4a57508254600160401b900460ff1615156001145b15613d6a57613d67613d208e8781518110613cff57613cff615856565b96505b613d9c8d8681518110613d7f57613d7f615856565b60200260200101518a63ffffffff1661351890919063ffffffff16565b8f518354604080513381526020810189905290810191909152919a506001600160a01b0316907f4aa890e1a81112cc06a1091e0cdf62cbf89a31f51a411d0d13dbc40f9a61ef1f9060600160405180910390a2613e41565b613dfe8a876134c5565b8f51604051868152919b506001600160a01b0316907f258852d33ffd0dba761363df607e9bd50bf6f684b1f6a1e0dd6ff1222f9642d59060200160405180910390a25b505b5050508080613e5190615949565b9150506138eb565b506000859050613ea2613e9b613e828d60e001518863ffffffff1661351890919063ffffffff16565b63ffffffff16896060015161341e90919063ffffffff16565b87906134c5565b9550613eb28361164688876134c5565b95509050965096509650965096915050565b60008060005b8451811015613fe2576000613f30613f25868481518110613eed57613eed615856565b602002602001015161ffff16888581518110613f0b57613f0b615856565b602002602001015161ffff1661341e90919063ffffffff16565b60408901519061341e565b9050613f62858381518110613f4757613f47615856565b602002602001015161ffff16846134c590919063ffffffff16565b9250866000015163ffffffff16868381518110613f8157613f81615856565b602002602001015161ffff1611158015613f9b5750600081115b8015613fb95750613fb0600662015180615bea565b62ffffff168311155b613fc257600080fd5b613fcc84826134c5565b9350508080613fda90615949565b915050613eca565b50509392505050565b336001600160a01b031682600001516001600160a01b03167f28f3685dde3f06cc54dc36be3520020db5ee8bc4fb5e0bf71fd320bc59646545878786604001518888606001518960a001518a60c001518a8b8d610100015161404d9190615843565b8d61012001516040516140699a99989796959493929190615c64565b60405180910390a35050505050565b6000828260405160200161408d9291906159b1565b604051602081830303815290604052805190602001208660050154146140b257600080fd5b63ffffffff84166000908152600787016020526040902060038701546001600160a01b03163314806140ec5750336001600160a01b038716145b801561410e57506005815460ff16600781111561410b5761410b615187565b14155b801561413057506003815460ff16600781111561412d5761412d615187565b14155b801561415257506004815460ff16600781111561414f5761414f615187565b14155b61415b57600080fd5b5095945050505050565b60006040518060c001604052808563ffffffff1681526020018363ffffffff1681526020018460008151811061419d5761419d615856565b602002602001015163ffffffff168152602001846001815181106141c3576141c3615856565b602002602001015163ffffffff168152602001846002815181106141e9576141e9615856565b602002602001015163ffffffff1681526020018460038151811061420f5761420f615856565b60209081029190910181015163ffffffff90811690925260008881526001808b01835260409182902085518154948701518616600160201b0267ffffffffffffffff1990951695169490941792909217835583015182820155606083015160028301556080830151600383015560a090920151600490910155905095945050505050565b600083815260018581016020526040822054909190819081908190819063ffffffff600160401b8204811691600160201b81049091169060030b835b8363ffffffff168b6020015163ffffffff16106144bb5760408b01516142f59088615d31565b96508a606001518760030b1315614320575060009850889650869550859450849350611d6c92505050565b8363ffffffff168b6020015163ffffffff16036144aa5760408b01516143469083615d31565b90506143528288615d31565b96508a606001518760030b138061436f57508a606001518160030b135b1561438e575060009850889650869550859450849350611d6c92505050565b8060030b6000146143a257600299506144aa565b600399508d60010160008e815260200190815260200160002060000160049054906101000a900463ffffffff1695508d60010160008463ffffffff1681526020019081526020016000208e60010160008e81526020019081526020016000206000820160009054906101000a900460030b8160000160006101000a81548163ffffffff021916908360030b63ffffffff1602179055506000820160049054906101000a900463ffffffff168160000160046101000a81548163ffffffff021916908363ffffffff1602179055506000820160089054906101000a900463ffffffff168160000160086101000a81548163ffffffff021916908363ffffffff1602179055509050505b8b98508c97509350611d6c92505050565b6144c58288615d31565b96508a606001518760030b13156144f0575060009850889650869550859450849350611d6c92505050565b8b9c508263ffffffff169b508d60010160008d815260200190815260200160002060000160089054906101000a900463ffffffff1693508d60010160008d815260200190815260200160002060000160049054906101000a900463ffffffff1692508d60010160008d815260200190815260200160002060000160009054906101000a900460030b915060016142cf57505050509499939850945094509450565b63ffffffff908116600090815260019095016020526040909420805491851663ffffffff19938616600160401b0263ffffffff60401b1996909516600160201b02959095166bffffffffffffffff0000000019909216919091179290921716919091179055565b600085815260018701602052604081205463ffffffff600160401b8204811691600381900b91600160201b909104165b845163ffffffff1683116147c657845163ffffffff1683900361472c57600085604001516000196146599190615d58565b6146639084615d31565b90508060030b6000036146d157600089815260018c016020526040808220805463ffffffff60201b1916600160201b63ffffffff87811691909102919091179091558c8352912080546bffffffffffffffffffffffff191690558b5463ffffffff1916908916178b5561471f565b85606001518160030b13156146ed576000945050505050612810565b60008a815260018c0160205260409020805463ffffffff80841663ffffffff19928316179092558c54918a169116178b555b6001945050505050612810565b600088815260018b016020526040908190205486519187015161476b928d92600160201b900463ffffffff169161476590600019615d58565b8b614591565b600088815260018b81016020526040909120805463ffffffff60201b1916600160201b63ffffffff8b16021790556147a4908890615826565b8a5463ffffffff191663ffffffff91909116178a555060019250612810915050565b6147d08287615d31565b955084606001518660030b13156147ed5760009350505050612810565b63ffffffff908116600081815260018c01602052604090205490999850600160401b810482169350600381900b9250600160201b900416614628565b600060ff8316600214801561483e5750815415155b1561497f576000826000018054806020026020016040519081016040528092919081815260200182805480156148bf57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116148825790505b50505050509050600081600183516148d79190615843565b815181106148e7576148e7615856565b60200260200101519050438163ffffffff16111561492957816002835161490e9190615843565b8151811061491e5761491e615856565b602002602001015190505b63ffffffff8082166000908152600180870160205260409091205490911690811115614973575063ffffffff9081166000908152600185016020526040902054169150612b839050565b60009350505050612b83565b50600092915050565b60008263ffffffff166000036149a057506000612b83565b60006149ac8385615d78565b905063ffffffff83166149bf8583615da0565b63ffffffff1614610cd757600080fd5b60405180606001604052806003906020820280368337509192915050565b508054600082556007016008900490600052602060002090810190614a129190614a15565b50565b5b80821115614a2a5760008155600101614a16565b5090565b63ffffffff81168114614a1257600080fd5b8035610b6d81614a2e565b600080600060608486031215614a6057600080fd5b833592506020840135614a7281614a2e565b91506040840135614a8281614a2e565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614ac657614ac6614a8d565b60405290565b60405161014081016001600160401b0381118282101715614ac657614ac6614a8d565b604051601f8201601f191681016001600160401b0381118282101715614b1757614b17614a8d565b604052919050565b600082601f830112614b3057600080fd5b81356001600160401b03811115614b4957614b49614a8d565b614b5c601f8201601f1916602001614aef565b818152846020838601011115614b7157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215614ba457600080fd5b8435935060208501356001600160401b0380821115614bc257600080fd5b614bce88838901614b1f565b94506040870135915080821115614be457600080fd5b614bf088838901614b1f565b93506060870135915080821115614c0657600080fd5b50614c1387828801614b1f565b91505092959194509250565b60006001600160401b03821115614c3857614c38614a8d565b5060051b60200190565b600082601f830112614c5357600080fd5b81356020614c68614c6383614c1f565b614aef565b82815260059290921b84018101918181019086841115614c8757600080fd5b8286015b84811015614ca25780358352918301918301614c8b565b509695505050505050565b600060208284031215614cbf57600080fd5b81356001600160401b03811115614cd557600080fd5b6134bd84828501614c42565b6001600160a01b0381168114614a1257600080fd5b600080600060608486031215614d0b57600080fd5b8335614d1681614ce1565b9250602084013591506040840135614a8281614a2e565b600060208284031215614d3f57600080fd5b8135610cd781614ce1565b6020808252825182820181905260009190848201906040850190845b81811015614d8857835163ffffffff1683529284019291840191600101614d66565b50909695505050505050565b600080600060608486031215614da957600080fd5b8335614db481614ce1565b92506020840135614dc481614ce1565b929592945050506040919091013590565b60008060408385031215614de857600080fd5b8235614df381614ce1565b91506020830135614e0381614a2e565b809150509250929050565b63ffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b63ffffffff8316815260e08101610cd76020830184614e0e565b803560ff81168114610b6d57600080fd5b600080600060608486031215614e9257600080fd5b83356001600160401b0380821115614ea957600080fd5b614eb587838801614b1f565b94506020860135915080821115614ecb57600080fd5b908501906101208288031215614ee057600080fd5b614ee8614aa3565b614ef183614a40565b8152614eff60208401614a40565b6020820152614f1060408401614a40565b6040820152614f2160608401614a40565b6060820152614f3260808401614a40565b6080820152614f4360a08401614a40565b60a082015260c083013582811115614f5a57600080fd5b614f6689828601614c42565b60c08301525060e083013582811115614f7e57600080fd5b614f8a89828601614c42565b60e0830152506101009150614fa0828401614e6c565b82820152809450505050604084013590509250925092565b60008060008060808587031215614fce57600080fd5b84356001600160401b03811115614fe457600080fd5b614ff087828801614b1f565b945050602085013561500181614a2e565b9250604085013561501181614a2e565b9150606085013561502181614a2e565b939692955090935050565b600082601f83011261503d57600080fd5b8135602061504d614c6383614c1f565b82815260059290921b8401810191818101908684111561506c57600080fd5b8286015b84811015614ca25761508181614e6c565b8352918301918301615070565b600080600080608085870312156150a457600080fd5b84356001600160401b03808211156150bb57600080fd5b6150c788838901614b1f565b9550602087013591506150d982614a2e565b909350604086013590808211156150ef57600080fd5b6150fb88838901614c42565b9350606087013591508082111561511157600080fd5b50614c138782880161502c565b6000806000806080858703121561513457600080fd5b843561513f81614ce1565b935060208501356001600160401b0381111561515a57600080fd5b61516687828801614b1f565b935050604085013561517781614a2e565b9396929550929360600135925050565b634e487b7160e01b600052602160045260246000fd5b865160e0820190600881106151c257634e487b7160e01b600052602160045260246000fd5b825260209788015163ffffffff169782019790975260408101959095526001600160a01b03939093166060850152608084019190915260a083015260c09091015290565b600082601f83011261521757600080fd5b81356020615227614c6383614c1f565b82815260059290921b8401810191818101908684111561524657600080fd5b8286015b84811015614ca257803561525d81614a2e565b835291830191830161524a565b8035610b6d81614ce1565b600082601f83011261528657600080fd5b81356020615296614c6383614c1f565b82815260059290921b840181019181810190868411156152b557600080fd5b8286015b84811015614ca257803561ffff811681146152d45760008081fd5b83529183019183016152b9565b600061014082840312156152f457600080fd5b6152fc614acc565b90506153078261526a565b815261531560208301614a40565b602082015260408201356001600160401b038082111561533457600080fd5b6153408583860161502c565b6040840152606084013591508082111561535957600080fd5b6153658583860161502c565b6060840152608084013591508082111561537e57600080fd5b61538a85838601615206565b608084015260a08401359150808211156153a357600080fd5b6153af85838601615275565b60a084015260c08401359150808211156153c857600080fd5b506153d584828501615275565b60c0830152506153e760e08301614a40565b60e082015261010080830135818301525061012080830135818301525092915050565b600080600080600060a0868803121561542257600080fd5b85356001600160401b038082111561543957600080fd5b61544589838a01614b1f565b9650602088013591508082111561545b57600080fd5b61546789838a01615206565b9550604088013591508082111561547d57600080fd5b61548989838a016152e1565b9450606088013591508082111561549f57600080fd5b6154ab89838a01615206565b935060808801359150808211156154c157600080fd5b506154ce88828901614c42565b9150509295509295909350565b60008060008060008060c087890312156154f457600080fd5b86356154ff81614ce1565b955060208701356001600160401b038082111561551b57600080fd5b6155278a838b01614b1f565b96506040890135915061553982614a2e565b90945060608801359061554b82614a2e565b9093506080880135908082111561556157600080fd5b61556d8a838b01614c42565b935060a089013591508082111561558357600080fd5b5061559089828a01614c42565b9150509295509295509295565b600080604083850312156155b057600080fd5b82356155bb81614ce1565b946020939093013593505050565b600080600080600080600060e0888a0312156155e457600080fd5b8735965060208801356001600160401b038082111561560257600080fd5b61560e8b838c01614b1f565b975060408a013591508082111561562457600080fd5b6156308b838c01614b1f565b965060608a013591508082111561564657600080fd5b6156528b838c01614b1f565b955061566060808b01614a40565b945060a08a013591508082111561567657600080fd5b506156838a828b01615206565b92505061569260c08901614a40565b905092959891949750929550565b6000806000606084860312156156b557600080fd5b83356156c081614ce1565b925060208401356001600160401b038111156156db57600080fd5b6156e786828701614b1f565b925050604084013590509250925092565b60c08101612b838284614e0e565b60006020828403121561571857600080fd5b5035919050565b6000806040838503121561573257600080fd5b823561573d81614ce1565b915060208301356001600160401b0381111561575857600080fd5b61576485828601614b1f565b9150509250929050565b60008060006060848603121561578357600080fd5b833561578e81614a2e565b9250602084013561579e81614a2e565b915060408401356001600160401b038111156157b957600080fd5b6157c586828701615206565b9150509250925092565b6020808252825182820181905260009190848201906040850190845b81811015614d885783516001600160a01b0316835292840192918401916001016157eb565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190808211156129fa576129fa615810565b81810381811115612b8357612b83615810565b634e487b7160e01b600052603260045260246000fd5b80820180821115612b8357612b83615810565b634e487b7160e01b600052601260045260246000fd5b6000826158a4576158a461587f565b500490565b8082028115828204841417612b8357612b83615810565b60005b838110156158db5781810151838201526020016158c3565b50506000910152565b600081518084526158fc8160208601602086016158c0565b601f01601f19169290920160200192915050565b60608152600061592360608301866158e4565b828103602084015261593581866158e4565b9050828103604084015261281081856158e4565b60006001820161595b5761595b615810565b5060010190565b600082516159748184602087016158c0565b9190910192915050565b60008151602080840160005b838110156159a65781518752958201959082019060010161598a565b509495945050505050565b60006134bd6159c0838661597e565b8461597e565b6000602082840312156159d857600080fd5b81518015158114610cd757600080fd5b6080815260006159fb60808301876158e4565b63ffffffff958616602084015293909416604082015260ff9190911660609091015292915050565b825160009082906020808701845b83811015615a4d57815185529382019390820190600101615a31565b5050855181870193925060005b81811015615a7957845160ff1684529382019392820192600101615a5a565b5091979650505050505050565b60008151602080840160005b838110156159a657815161ffff1687529582019590820190600101615a92565b60006134bd615ac18386615a86565b84615a86565b600061ffff80841680615adc57615adc61587f565b92169190910492915050565b608081526000615afb60808301876158e4565b63ffffffff95861660208401529390941660408201526060015292915050565b600080600060608486031215615b3057600080fd5b8351615b3b81614a2e565b809350506020840151915060408401518060030b8114614a8257600080fd5b63ffffffff8281168282160390808211156129fa576129fa615810565b6000610140808352615b8b8184018e6158e4565b63ffffffff9c8d1660208501529a8c166040840152505096891660608801526001600160a01b0395909516608087015260a086019390935260c085019190915260e0840152841661010083015290921661012090920191909152919050565b600062ffffff80841680615adc57615adc61587f565b600081518084526020808501945080840160005b838110156159a657815160ff1687529582019590820190600101615c14565b8051808352602092830192600091908084018383156159a657815161ffff1687529582019590820190600101615a92565b6000610140808352615c788184018e6158e4565b9050602063ffffffff8d16818501528382036040850152615c99828d615c00565b84810360608601528b51808252828d0193509082019060005b81811015615cce57845183529383019391830191600101615cb2565b50508481036080860152615ce2818c615c00565b9250505082810360a0840152615cf88189615c33565b905082810360c0840152615d0c8188615c33565b60e0840196909652505061010081019290925261012090910152979650505050505050565b600381810b9083900b01637fffffff8113637fffffff1982121715612b8357612b83615810565b60008260030b8260030b028060030b91508082146129fa576129fa615810565b63ffffffff818116838216028082169190828114615d9857615d98615810565b505092915050565b600063ffffffff80841680615adc57615adc61587f56fea2646970667358221220ec1e977582e7b7902df0b47cbada059230ff2af261c266203005b955f89da5b964736f6c63430008140033000000000000000000000000621827d7f3783e0e155861da928b369f7a46a2d4
0x60806040526004361061021a5760003560e01c8063805b382411610123578063d4b2464e116100ab578063ed29bffd1161006f578063ed29bffd14610747578063edbf96921461075c578063edc922a91461079a578063f8a1ee5f146107bc578063fcb82e69146107dc57600080fd5b8063d4b2464e1461069a578063dd7bf0c0146106ba578063de53b2e5146106e7578063e28a2a9414610707578063e6ae74c21461072757600080fd5b8063b9dd0ddd116100f2578063b9dd0ddd146105f5578063c46087ab14610615578063c6df398614610635578063c85325891461031e578063d246ecbc1461067a57600080fd5b8063805b382414610563578063893d20e8146105835780639d76ea58146105b5578063a716baf7146105d557600080fd5b80634f48c37f116101a65780635e9ce120116101755780635e9ce1201461048c578063628b1a3c1461049f57806367f7079c146104dd57806378bea80b146104f25780637e7366a61461051257600080fd5b80634f48c37f146103fa57806350f532521461041a578063536742881461043a578063582e8c7a1461046c57600080fd5b80632843b78a116101ed5780632843b78a146102da5780632855d0d51461031e5780633519877e1461034b5780633cffa233146103ac57806347ebbd84146103da57600080fd5b806302f8542e1461021f5780630bbb8c93146102415780630f7eb764146102765780631b2eb61e14610296575b600080fd5b34801561022b57600080fd5b5061023f61023a366004614a4b565b6107fc565b005b34801561024d57600080fd5b5061026161025c366004614b8e565b610a51565b60405190151581526020015b60405180910390f35b34801561028257600080fd5b50610261610291366004614cad565b610ac1565b3480156102a257600080fd5b506102b66102b1366004614cf6565b610b72565b60408051825163ffffffff908116825260209384015116928101929092520161026d565b3480156102e657600080fd5b506103106102f5366004614d2d565b6001600160a01b031660009081526006602052604090205490565b60405190815260200161026d565b34801561032a57600080fd5b5061033e610339366004614d2d565b610cde565b60405161026d9190614d4a565b34801561035757600080fd5b5061036b610366366004614d94565b610d76565b60408051928352815163ffffffff9081166020808601919091528301511683820152810151151560608084019190915201511515608082015260a00161026d565b3480156103b857600080fd5b506103cc6103c7366004614dd5565b610ec1565b60405161026d929190614e52565b3480156103e657600080fd5b5061023f6103f5366004614e7d565b611069565b34801561040657600080fd5b50610261610415366004614fb8565b6119a2565b34801561042657600080fd5b5061023f61043536600461508e565b611ae9565b34801561044657600080fd5b5061045a61045536600461511e565b611c37565b60405161026d9695949392919061519d565b34801561047857600080fd5b50610261610487366004614b8e565b611d79565b61023f61049a36600461540a565b611dd2565b3480156104ab57600080fd5b506102616104ba366004614d2d565b6001600160a01b031660009081526004602052604090205463ffffffff16151590565b3480156104e957600080fd5b506102616123bf565b3480156104fe57600080fd5b5061023f61050d366004614a4b565b612429565b34801561051e57600080fd5b5061054e61052d366004614d2d565b6001600160a01b031660009081526003602052604090205463ffffffff1690565b60405163ffffffff909116815260200161026d565b34801561056f57600080fd5b5061026161057e3660046154db565b61255f565b34801561058f57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161026d565b3480156105c157600080fd5b5060015461059d906001600160a01b031681565b3480156105e157600080fd5b506102616105f0366004614d94565b61281a565b34801561060157600080fd5b5061026161061036600461559d565b61299d565b34801561062157600080fd5b50610261610630366004614d2d565b612a01565b34801561064157600080fd5b50610655610650366004614dd5565b612a30565b6040805163ffffffff9094168452602084019290925260030b9082015260600161026d565b34801561068657600080fd5b5061033e61069536600461559d565b612ae4565b3480156106a657600080fd5b506102616106b53660046155c9565b612b89565b3480156106c657600080fd5b506106da6106d53660046156a0565b612d76565b60405161026d91906156f8565b3480156106f357600080fd5b5061023f610702366004615706565b612e98565b34801561071357600080fd5b5061031061072236600461571f565b612edf565b34801561073357600080fd5b5061026161074236600461576e565b612f4c565b34801561075357600080fd5b50610261613196565b34801561076857600080fd5b50610261610777366004614d2d565b6001600160a01b031660009081526003602052604090205463ffffffff16151590565b3480156107a657600080fd5b506107af6131da565b60405161026d91906157cf565b3480156107c857600080fd5b506102616107d736600461559d565b61323c565b3480156107e857600080fd5b5060005461059d906001600160a01b031681565b3360009081526004602052604090205463ffffffff1661081b57600080fd5b3360009081526004602090815260408083208684526003019091529020805461084357600080fd5b8263ffffffff1660000361085f5761085c836001615826565b92505b6000816000018054806020026020016040519081016040528092919081815260200182805480156108db57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161089e5790505b50505050509050600081600183516108f39190615843565b8151811061090357610903615856565b60200260200101519050438163ffffffff16111561095d5763ffffffff808216600090815260018501602052604090208054868316600160201b0267ffffffffffffffff1990911692881692909217919091179055610a49565b63ffffffff8082166000818152600186016020526040812054600160201b9004909216919061098d90839061586c565b90504381116109db57816109a763ffffffff851643615843565b6109b19190615895565b6109bc90600161586c565b90506109c882826158a9565b6109d89063ffffffff851661586c565b90505b60008181526001868101602090815260408320805463ffffffff8c811667ffffffffffffffff1990921691909117600160201b8c831602179091558854928301895588845292206008820401805460046007909316929092026101000a808402199092169290931602179055505b505050505050565b3360009081526004602052604081205463ffffffff16610a7057600080fd5b84336001600160a01b03167fcdaff867abac2aaa830f0e81523d81ac4f5a32dbb867445a8be99d0e039e9d61868686604051610aae93929190615910565b60405180910390a3506001949350505050565b33600090815260046020526040812054600160201b900460ff16610ae457600080fd5b336000908152600460205260408120905b8351811015610b66576000848281518110610b1257610b12615856565b60200260200101519050610b2683826133ae565b15610b535760008181526002840160205260409020805469ff0000000000000000001916600160481b1790555b5080610b5e81615949565b915050610af5565b5060019150505b919050565b604080518082018252600080825260208083018290526001600160a01b0387168252600481528382208683526003019052918220909163ffffffff84169003610c9b57600081600001805480602002602001604051908101604052809291908181526020018280548015610c3157602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610bf45790505b505050505090508060018251610c479190615843565b81518110610c5757610c57615856565b60200260200101519350438463ffffffff161115610c99578060028251610c7e9190615843565b81518110610c8e57610c8e615856565b602002602001015193505b505b63ffffffff8084166000908152600190920160209081526040928390208351808501909452548083168452600160201b90049091169082015290505b9392505050565b6001600160a01b038116600090815260056020908152604091829020805483518184028101840190945280845260609392830182828015610d6a57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610d2d5790505b50505050509050919050565b60408051608081018252600080825260208201819052918101829052606081018290526001600160a01b03851660009081526004602052604090208054600160201b900460ff16610dc657600080fd5b6001600160a01b038516610e395760008481526002909101602090815260408083208151608081018352905463ffffffff8082168352600160201b8204169382019390935260ff600160401b84048116151592820192909252600160481b90920416151560608201529092509050610eb9565b6001600160a01b0385166000908152600482016020908152604080832087845282528083205460029094018252918290208251608081018452905463ffffffff8082168352600160201b8204169282019290925260ff600160401b83048116151593820193909352600160481b9091049091161515606082015290925090505b935093915050565b6040805160c08101825260008082526020808301829052828401829052606083018290526080830182905260a083018290526001600160a01b0386168252600581528382208054855181840281018401909652808652929485939092830182828015610f7857602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610f3b5790505b505050505090508363ffffffff16600003610fee578060018251610f9c9190615843565b81518110610fac57610fac615856565b60200260200101519350438463ffffffff161115610fee578060028251610fd39190615843565b81518110610fe357610fe3615856565b602002602001015193505b5050506001600160a01b0391909116600090815260046020818152604080842063ffffffff86811686526001918201845294829020825160c08101845281548088168252600160201b900490961693860193909352820154908401526002810154606084015260038101546080840152015460a08201529091565b33600090815260046020526040902054600160201b900460ff1661108c57600080fd5b42826040015163ffffffff1611156110d75760405162461bcd60e51b81526020600482015260096024820152684168656164206e6f7760b81b60448201526064015b60405180910390fd5b33600090815260046020526040808220905190919060058301906110fc908790615962565b9081526020016040518091039020846000015163ffffffff168154811061112557611125615856565b906000526020600020906008020190508360c001518460e001516040516020016111509291906159b1565b6040516020818303038152906040528051906020012081600501541461117557600080fd5b60208085015163ffffffff16600090815260078301909152604090206005815460ff1660078111156111a9576111a9615187565b036111b657505050505050565b6002815460ff1660078111156111ce576111ce615187565b146112045760405162461bcd60e51b8152602060048201526006602482015265484552455f3160d01b60448201526064016110ce565b60008560a0015163ffffffff1611801561124f57508460e00151856020015163ffffffff168151811061123957611239615856565b60200260200101518560a0015163ffffffff1611155b6112845760405162461bcd60e51b81526020600482015260066024820152652422a922af9960d11b60448201526064016110ce565b8154606086015163ffffffff918216911611156112cc5760405162461bcd60e51b8152602060048201526006602482015265484552455f3360d01b60448201526064016110ce565b8154608086015163ffffffff600160201b90920482169116111561131b5760405162461bcd60e51b81526020600482015260066024820152651211549157cd60d21b60448201526064016110ce565b815463ffffffff600160401b90910481166000908152600180860160209081526040808420815160c0808201845282548089168352600160201b9004881682860152948201549281019290925260028101546060830152600381015460808301526004015460a082015291890151908901518151929484938493929091169081106113a8576113a8615856565b6020026020010151905060008960e001518a6020015163ffffffff16815181106113d4576113d4615856565b6020026020010151905089610100015160ff16600014806113fd575089610100015160ff166003145b156114dc576001870154156114625761142d8a6060015163ffffffff168660a0015161341e90919063ffffffff16565b935083876001015411156114525783876001015461144b9190615843565b925061145a565b866001015493505b600060018801555b865463ffffffff16158015906114875750865460608b015163ffffffff908116911614155b156114dc5760608a015187546114ce916114c7916114ae9163ffffffff9182169161349616565b63ffffffff16876060015161341e90919063ffffffff16565b84906134c5565b875463ffffffff1916885592505b89610100015160ff16600214806114fb575089610100015160ff166003145b156115d8578654600160201b900463ffffffff16158015906115335750865460808b015163ffffffff908116600160201b9092041614155b156115d85760808a01518754611561916114c7916114ae9163ffffffff600160201b90920482169161349616565b60018801549093501561158857600187015461157e9084906134c5565b6000600189015592505b865463ffffffff16158015906115a6575060608a015163ffffffff16155b156115d857865460608601516115ca916114c7919063ffffffff9081169061341e16565b875463ffffffff1916885592505b61165361164c61161b6116028d608001518e6060015163ffffffff1661351890919063ffffffff16565b63ffffffff16886060015161341e90919063ffffffff16565b61164661163b8e60a0015163ffffffff168761341e90919063ffffffff16565b60408a01519061341e565b906134c5565b85906134c5565b935061166c8760060154856134c590919063ffffffff16565b93506116a66114c761169b6116948d60a0015163ffffffff168561354090919063ffffffff16565b859061341e565b60408801519061341e565b60028801549093506116b885856134c5565b11156117065760405162461bcd60e51b815260206004820152601b60248201527f6761696e2e61646428726566756e6429203e207265636569766564000000000060448201526064016110ce565b60408051608081018252600060208201818152828401828152606084019283528a54610100900463ffffffff9081168552948f015185169091528851600390810b9092529085900b9052906117629060068b0190839061359516565b60000361184557865460ff191660031787556002880154600689015490945061178c9085906134c5565b5060006002890181905560068901556001546003890154604051633950935160e01b81526001600160a01b039182166004820152602481018790529116906339509351906044016020604051808303816000875af11580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061181691906159c6565b506003880154611837908d908d908d906001600160a01b0316600089613874565b505050505050505050505050565b6004875460ff16600781111561185d5761185d615187565b0361187257865460ff1916600317875561187e565b865460ff191660051787555b600060068901558315611908576001546003890154604051633950935160e01b81526001600160a01b039182166004820152602481018790529116906339509351906044016020604051808303816000875af11580156118e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061190691906159c6565b505b600154604051633950935160e01b8152336004820152602481018790526001600160a01b03909116906339509351906044016020604051808303816000875af1158015611959573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197d91906159c6565b506003880154611837908d908d908d906001600160a01b03168989613874565b505050565b60008163ffffffff16428111156119b857600080fd5b3360009081526004602052604080822090516005909101906119db908990615962565b90815260200160405180910390208663ffffffff1681548110611a0057611a00615856565b6000918252602080832063ffffffff8916845260076008909302019190910190526040902090506001815460ff166007811115611a3f57611a3f615187565b1115611a7d5760405162461bcd60e51b815260206004820152600d60248201526c139bdd081c195c9b5a5d1d1959609a1b60448201526064016110ce565b805464ffffffffff191660ff1961010063ffffffff87160216176002908117825560405133917f1ed0dfeede93aca193505d2c4448bfa80fc53727e2e524f2596ae333d7f4977c91611ad4918b918b918b916159e8565b60405180910390a25060019695505050505050565b33600090815260046020526040902054600160201b900460ff16611b0c57600080fd5b336000908152600460209081526040918290209151611b2f918591859101615a23565b604051602081830303815290604052805190602001208160050186604051611b579190615962565b90815260200160405180910390208563ffffffff1681548110611b7c57611b7c615856565b90600052602060002090600802016004015414611b9857600080fd5b60005b8351811015610a49576000826002016000868481518110611bbe57611bbe615856565b6020026020010151815260200190815260200160002090508060000160099054906101000a900460ff168015611c135750600060ff16848381518110611c0657611c06615856565b602002602001015160ff16145b15611c2457805460ff60401b191681555b5080611c2f81615949565b915050611b9b565b6040805180820190915260008082526020820152600080600080600080600460008c6001600160a01b03166001600160a01b031681526020019081526020016000206005018a604051611c8a9190615962565b90815260200160405180910390208963ffffffff1681548110611caf57611caf615856565b600091825260208083208b84526007600890930201828101909152604092839020600282015460038301548354600185015487518089019098528454959850939692956001600160a01b039092169463ffffffff8083169594600160201b90930416928891839160ff90911690811115611d2b57611d2b615187565b6007811115611d3c57611d3c615187565b8152905463ffffffff6101009091048116602090920191909152909d50949b509299509083169750955016925050505b9499939850945094509450565b33600081815260036020526040808220805463ffffffff19164363ffffffff1617905551909186917fc98f6c9d476630f8e465540b0a790aa56ef97c26f7d59649b8e56da66e17630290610aae90889088908890615910565b82516001600160a01b031660009081526004602052604090208054600160201b900460ff168015611e04575060008251115b8015611e1557508360800151518351145b8015611e22575081518351145b8015611e2f575084518351145b8015611e4057508360400151518351145b8015611e5157508360600151518351145b8015611e7f575060048460400151600081518110611e7157611e71615856565b602002602001015160ff1611155b8015611e9457508360c00151518460a0015151145b8015611eb457503360009081526003602052604090205463ffffffff1615155b8015611ec257506040865111155b8015611ed5575033600052600660205260015b8015611ef2575083516001600160a01b0316600052600660205260015b611efb57600080fd5b60408401515115611fa65760015b846040015151811015611fa45784604001518181518110611f2c57611f2c615856565b602002602001015160ff168560400151600081518110611f4e57611f4e615856565b602002602001015160ff161480611f895750600260ff1685604001518281518110611f7b57611f7b615856565b602002602001015160ff1611155b611f9257600080fd5b80611f9c81615949565b915050611f09565b505b83516001600160a01b031660009081526005602090815260408083208054825181850281018501909352808352919290919083018282801561203357602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411611ff65790505b505050505090506000816001835161204b9190615843565b8151811061205b5761205b615856565b602002602001015163ffffffff169050438111156120a35781600283516120829190615843565b8151811061209257612092615856565b602002602001015163ffffffff1690505b80866020015163ffffffff16146120b957600080fd5b6000818152600180850160209081526040808420815160c081018352815463ffffffff8082168352600160201b90910416938101939093529283015490820152600282015460608201526003820154608082015260049091015460a0820152906121216149cf565b61212f868a898d8c886138e3565b8e60008151811061214257612142615856565b602002602001018660006003811061215c5761215c615856565b602002018760016020020188600260200201939093529290915291905263ffffffff909116905260a08a015160c08b01519193506121a69161219f918691613ec4565b83906134c5565b91508189610100015110156121ba57600080fd5b6001546040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015612211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223591906159c6565b506000866005018c60405161224a9190615962565b9081526040516020918190038201902080546001808201835560009283529290912060089091020191508290602002015160018201558a518b9060009061229357612293615856565b6020908102919091010151815460e08c015163ffffffff888116600160401b0263ffffffff60401b19928216600160201b0267ffffffffffffffff19909416919094161791909117161781556122f182600060200201518490613540565b60028201556003810180546001600160a01b0319163317905560608a0151604051612320918a91602001615a23565b60408051601f19818403018152908290528051602091820120600484015560a08c015160c08d0151612356939192909101615ab2565b60408051601f1981840301815291905280516020909101206005820155816002602002015160068201556040516001906005890190612396908f90615962565b908152604051908190036020019020546123b09190615843565b94506118378c868a8d87613feb565b3360009081526004602052604081205463ffffffff166123de57600080fd5b33600090815260046020526040902054600160201b900460ff161561240257600080fd5b50336000908152600460205260409020805464ff000000001916600160201b179055600190565b3360009081526004602052604090205463ffffffff1661244857600080fd5b3360009081526004602090815260408083208684526003019091529020805415801561248a575061247c6006610e10615ac7565b61ffff1663ffffffff831610155b61249357600080fd5b8263ffffffff166000036124af576124ac836001615826565b92505b436000818152600180840160209081526040808420805463ffffffff898116600160201b0267ffffffffffffffff19909216818c16179190911790915586549384018755868552919093206008830401805494821660079093166004026101000a9283029290910219909316179091555133907f63b34caa4654531c1ea1645263f2d28e8233fe72f5a0925d41f702edf5d92b8c906125519087815260200190565b60405180910390a250505050565b6001600160a01b03861660009081526004602052604080822090516125da9089908790879087906005870190612596908e90615962565b90815260200160405180910390208b63ffffffff16815481106125bb576125bb615856565b906000526020600020906008020161407890949392919063ffffffff16565b50600081600501886040516125ef9190615962565b90815260200160405180910390208763ffffffff168154811061261457612614615856565b6000918252602080832063ffffffff8a16845260076008909302019182019052604082208454919350919060ff600160201b90910416158061266c57506001825460ff16600781111561266957612669615187565b11155b806126e357506002825460ff16600781111561268a5761268a615187565b1480156126e35750858863ffffffff16815181106126aa576126aa615856565b6020026020010151603c6126be91906158a9565b6126ca90610e1061586c565b82546126e190610100900463ffffffff1642615843565b115b1561279757815460ff1916600317825560068301546002840154612706916134c5565b60006002850181905560068501556001546003850154604051633950935160e01b81526001600160a01b0391821660048201526024810184905292935016906339509351906044016020604051808303816000875af115801561276d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061279191906159c6565b506127c0565b6002825460ff1660078111156127af576127af615187565b0361021a57815460ff191660041782555b8a6001600160a01b03167f84ee10d060221dce9423d13e552ceee10a21bf41bd5bedcc60dc203039cc61d28b8b8b856040516127ff9493929190615ae8565b60405180910390a260019450505050505b9695505050505050565b6001600160a01b03808416600090815260046020818152604080842094871684529184018152818320858452905281208054828255919291801580159061287957506000858152600284016020526040902054600160481b900460ff16155b61288257600080fd5b60008581526002840160205260409020805443906128b39063ffffffff80821691600160201b900481169061351816565b63ffffffff16106128c357600080fd5b805469ffffffffffffffffffff19168155600154604051633950935160e01b81526001600160a01b03898116600483015260248201859052909116906339509351906044016020604051808303816000875af1158015612927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294b91906159c6565b50866001600160a01b03167facafa53d73da949760af59b77d3adf645986bfeca66849b98b0e8a4d1e21150a8360405161298791815260200190565b60405180910390a2506001979650505050505050565b600080546001600160a01b031633146129b557600080fd5b6001600160a01b0383166000908152600660205260409020548390156129da57600080fd5b6001600160a01b0384166000908152600660205260409020839055600191505b5092915050565b6001600160a01b0381166000908152600660205260408120548103612a2857506000919050565b506001919050565b6001600160a01b038216600090815260046020819052604080832090516338e073f560e21b8152839283927388b0f4018e162be82052f1c75b9a9fe1829a8a849263e381cfd492612a96926006019189910191825263ffffffff16602082015260400190565b606060405180830381865af4158015612ab3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad79190615b1b565b9250925092509250925092565b6001600160a01b0382166000908152600460209081526040808320848452600301825291829020805483518184028101840190945280845260609392830182828015612b7b57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411612b3e5790505b505050505090505b92915050565b3360009081526004602052604081205463ffffffff1615612ba957600080fd5b33600090815260046020526040902063ffffffff851615801590612bed5750600084600081518110612bdd57612bdd615856565b602002602001015163ffffffff16115b8015612c195750600084600281518110612c0957612c09615856565b602002602001015163ffffffff16115b8015612c2e57508054600160201b900460ff16155b8015612c505750612c426006610e10615ac7565b61ffff1663ffffffff841610155b612c5957600080fd5b612c668143878787614165565b503360009081526005602090815260408220805460018101825590835291206008820401805463ffffffff43811660046007909516949094026101000a93840293021916919091179055612ce381805463ffffffff431664ffffffffff1990911617600160201b178155600601805463ffffffff19166001179055565b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b031916339081179091556040518a91907fcdaff867abac2aaa830f0e81523d81ac4f5a32dbb867445a8be99d0e039e9d6190612d5f908c908c908c90615910565b60405180910390a350600198975050505050505050565b612dbb6040518060c00160405280600063ffffffff168152602001600063ffffffff168152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b0384166000908152600460205260408082209051600590910190612de7908690615962565b90815260200160405180910390208381548110612e0657612e06615856565b600091825260208083206001600160a01b03891684526004808352604080862060089095029092015463ffffffff600160401b909104811686526001948501845294829020825160c08101845281548088168252600160201b90049096169386019390935292820154908401526002810154606084015260038101546080840152015460a08201529150509392505050565b3360009081526004602052604090205463ffffffff16612eb757600080fd5b33600090815260046020908152604080832084845260030190915281209061199d82826149ed565b3360009081526004602052604081205463ffffffff16612efe57600080fd5b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002060050182604051612f349190615962565b90815260405190819003602001902054905092915050565b3360009081526004602052604081205463ffffffff16612f6b57600080fd5b60008463ffffffff16118015612fa15750600082600081518110612f9157612f91615856565b602002602001015163ffffffff16115b8015612fc35750612fb56006610e10615ac7565b61ffff1663ffffffff841610155b612fcc57600080fd5b33600090815260046020908152604080832060058352818420805483518186028101860190945280845291949390919083018282801561305757602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161301a5790505b505050505090506000816001835161306f9190615843565b8151811061307f5761307f615856565b60200260200101519050438163ffffffff1611156130b0576130aa838263ffffffff1689888a614165565b50613189565b63ffffffff8082166000818152600186016020526040812054600160201b900490921691906130e090839061586c565b905043811161312e57816130fa63ffffffff851643615843565b6131049190615895565b61310f90600161586c565b905061311b82826158a9565b61312b9063ffffffff851661586c565b90505b61313b85828b8a8c614165565b503360009081526005602090815260408220805460018101825590835291206008820401805460079092166004026101000a63ffffffff818102199093169390921691909102919091179055505b5060019695505050505050565b33600090815260046020526040812054600160201b900460ff166131b957600080fd5b50336000908152600460205260409020805464ff0000000019169055600190565b6060600280548060200260200160405190810160405280929190818152602001828054801561323257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613214575b5050505050905090565b33600090815260046020526040812054600160201b900460ff1661325f57600080fd5b3360009081526004602081815260408084206001600160a01b038816855292830182528084208685528252808420600284019092529092208054919291600160481b900460ff1680156132d65750805443906132ce9063ffffffff80821691600160201b900481169061351816565b63ffffffff16105b6132df57600080fd5b815460008355600154604051633950935160e01b8152336004820152602481018390526001600160a01b03909116906339509351906044016020604051808303816000875af1158015613336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335a91906159c6565b50815469ffffffffffffffffffff1916825560405181815233907facafa53d73da949760af59b77d3adf645986bfeca66849b98b0e8a4d1e21150a9060200160405180910390a25060019695505050505050565b60008181526002830160205260408120805443906133df9063ffffffff80821691600160201b900481169061351816565b63ffffffff1610156133f5576000915050612b83565b613400600143615b5a565b815463ffffffff191663ffffffff9190911617905550600192915050565b60008260000361343057506000612b83565b600061343c83856158a9565b9050826134498583615895565b14610cd75760405162461bcd60e51b815260206004820152601760248201527f6d756c7469706c69636174696f6e206f766572666c6f7700000000000000000060448201526064016110ce565b60008263ffffffff168263ffffffff1611156134b157600080fd5b60006134bd8385615b5a565b949350505050565b6000806134d2838561586c565b905083811015610cd75760405162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b60448201526064016110ce565b6000806135258385615826565b90508363ffffffff168163ffffffff161015610cd757600080fd5b6000828211156135895760405162461bcd60e51b81526020600482015260146024820152737375627472616374696f6e206f766572666c6f7760601b60448201526064016110ce565b60006134bd8385615843565b815463ffffffff600160201b909104811660008181526001850160209081526040822054908501519193849283928392839283928392600160401b909104811691161161361e578694508493506135ee8a86868c614293565b949c50929a5090975063ffffffff909116945092509050600088900361361e576000975050505050505050612b83565b895463ffffffff1660018911613709576136438b898c602001518d6040015185614591565b61364e60018261586c565b905089604001519250886000036136945787965061366d600182615843565b8b5463ffffffff60201b1916600160201b63ffffffff92909216918202178c559550613709565b600086815260018c8101602052604090912054600160201b900463ffffffff1697506136c09082615843565b60008781526001808e016020526040909120805463ffffffff93909316600160201b0263ffffffff60201b19909316929092179091556137009082615843565b63ffffffff1695505b600189111561373357600086815260018c016020526040902054600160201b900463ffffffff1696505b8694506137448b868884878f6145f8565b15613786578860020361377557600088815260018c0160205260409020805463ffffffff191663ffffffff84161790555b600198505050505050505050612b83565b6001891161382e578a60010160006001836137a19190615843565b63ffffffff9081168252602082019290925260400160002080546bffffffffffffffffffffffff191690558b54600160201b90041686036137fd578a5463ffffffff60201b1916600160201b63ffffffff891602178b55613863565b600086815260018c0160205260409020805463ffffffff60201b1916600160201b63ffffffff8a1602179055613863565b8860030361386357600086815260018c0160205260409020805463ffffffff60201b1916600160201b63ffffffff8716021790555b600098505050505050505050612b83565b336001600160a01b03167f3247a6bce758540366529653a56f96ff1bfab0511d52c848598d4ececd7edbd687876000015188602001518960a001518888888c8e606001518f608001516040516138d39a99989796959493929190615b77565b60405180910390a2505050505050565b600080808080805b8951811015613e595760008a828151811061390857613908615856565b6020026020010151905060008d6002016000838152602001908152602001600020905060008e6004016000336001600160a01b03166001600160a01b03168152602001908152602001600020600084815260200190815260200160002090508060000154945060008511801561399e5750815443906139969063ffffffff600160201b820481169116615826565b63ffffffff16105b15613a7b57600081558d51600154604051633950935160e01b81526001600160a01b03808416600483015260248201899052909116906339509351906044016020604051808303816000875af11580156139fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a2091906159c6565b50825469ffffffffffffffffffff191683558e600001516001600160a01b03167facafa53d73da949760af59b77d3adf645986bfeca66849b98b0e8a4d1e21150a87604051613a7191815260200190565b60405180910390a2505b6000851180613ad3575081544390613aa29063ffffffff600160201b820481169116615826565b63ffffffff1610158015613abf57508154600160401b900460ff16155b8015613ad357508154600160481b900460ff165b613e435760008f6003016000858152602001908152602001600020905060026004811115613b0357613b03615187565b60ff168f604001518681518110613b1c57613b1c615856565b602002602001015160ff1614158015613b355750805415155b15613b3f57600080fd5b613b668f604001518681518110613b5857613b58615856565b602002602001015182614829565b63ffffffff16955085600003613df45782544390613b939063ffffffff600160201b820481169116615826565b63ffffffff161015613d2e5760008c8681518110613bb357613bb3615856565b602002602001015163ffffffff161115613ce757825463ffffffff19164363ffffffff16178355613c1c613bea6006610e10615ac7565b61ffff168d8781518110613c0057613c00615856565b602002602001015163ffffffff1661498890919063ffffffff16565b835463ffffffff91909116600160201b0263ffffffff60201b199091161783558b51613c8b90613c72908e9088908110613c5857613c58615856565b60200260200101518f8881518110613c0057613c00615856565b63ffffffff168c6080015161341e90919063ffffffff16565b6001600160f81b03811683559550613ca388876134c5565b9750600160ff168f606001518681518110613cc057613cc0615856565b602002602001015160ff1603613ce257825460ff60401b1916600160401b1783555b613d6a565b613d27613d208e8781518110613cff57613cff615856565b602002602001015163ffffffff168d60a0015161341e90919063ffffffff16565b88906134c5565b9650613d6a565b8154158015613d4a57508254600160401b900460ff1615156001145b15613d6a57613d67613d208e8781518110613cff57613cff615856565b96505b613d9c8d8681518110613d7f57613d7f615856565b60200260200101518a63ffffffff1661351890919063ffffffff16565b8f518354604080513381526020810189905290810191909152919a506001600160a01b0316907f4aa890e1a81112cc06a1091e0cdf62cbf89a31f51a411d0d13dbc40f9a61ef1f9060600160405180910390a2613e41565b613dfe8a876134c5565b8f51604051868152919b506001600160a01b0316907f258852d33ffd0dba761363df607e9bd50bf6f684b1f6a1e0dd6ff1222f9642d59060200160405180910390a25b505b5050508080613e5190615949565b9150506138eb565b506000859050613ea2613e9b613e828d60e001518863ffffffff1661351890919063ffffffff16565b63ffffffff16896060015161341e90919063ffffffff16565b87906134c5565b9550613eb28361164688876134c5565b95509050965096509650965096915050565b60008060005b8451811015613fe2576000613f30613f25868481518110613eed57613eed615856565b602002602001015161ffff16888581518110613f0b57613f0b615856565b602002602001015161ffff1661341e90919063ffffffff16565b60408901519061341e565b9050613f62858381518110613f4757613f47615856565b602002602001015161ffff16846134c590919063ffffffff16565b9250866000015163ffffffff16868381518110613f8157613f81615856565b602002602001015161ffff1611158015613f9b5750600081115b8015613fb95750613fb0600662015180615bea565b62ffffff168311155b613fc257600080fd5b613fcc84826134c5565b9350508080613fda90615949565b915050613eca565b50509392505050565b336001600160a01b031682600001516001600160a01b03167f28f3685dde3f06cc54dc36be3520020db5ee8bc4fb5e0bf71fd320bc59646545878786604001518888606001518960a001518a60c001518a8b8d610100015161404d9190615843565b8d61012001516040516140699a99989796959493929190615c64565b60405180910390a35050505050565b6000828260405160200161408d9291906159b1565b604051602081830303815290604052805190602001208660050154146140b257600080fd5b63ffffffff84166000908152600787016020526040902060038701546001600160a01b03163314806140ec5750336001600160a01b038716145b801561410e57506005815460ff16600781111561410b5761410b615187565b14155b801561413057506003815460ff16600781111561412d5761412d615187565b14155b801561415257506004815460ff16600781111561414f5761414f615187565b14155b61415b57600080fd5b5095945050505050565b60006040518060c001604052808563ffffffff1681526020018363ffffffff1681526020018460008151811061419d5761419d615856565b602002602001015163ffffffff168152602001846001815181106141c3576141c3615856565b602002602001015163ffffffff168152602001846002815181106141e9576141e9615856565b602002602001015163ffffffff1681526020018460038151811061420f5761420f615856565b60209081029190910181015163ffffffff90811690925260008881526001808b01835260409182902085518154948701518616600160201b0267ffffffffffffffff1990951695169490941792909217835583015182820155606083015160028301556080830151600383015560a090920151600490910155905095945050505050565b600083815260018581016020526040822054909190819081908190819063ffffffff600160401b8204811691600160201b81049091169060030b835b8363ffffffff168b6020015163ffffffff16106144bb5760408b01516142f59088615d31565b96508a606001518760030b1315614320575060009850889650869550859450849350611d6c92505050565b8363ffffffff168b6020015163ffffffff16036144aa5760408b01516143469083615d31565b90506143528288615d31565b96508a606001518760030b138061436f57508a606001518160030b135b1561438e575060009850889650869550859450849350611d6c92505050565b8060030b6000146143a257600299506144aa565b600399508d60010160008e815260200190815260200160002060000160049054906101000a900463ffffffff1695508d60010160008463ffffffff1681526020019081526020016000208e60010160008e81526020019081526020016000206000820160009054906101000a900460030b8160000160006101000a81548163ffffffff021916908360030b63ffffffff1602179055506000820160049054906101000a900463ffffffff168160000160046101000a81548163ffffffff021916908363ffffffff1602179055506000820160089054906101000a900463ffffffff168160000160086101000a81548163ffffffff021916908363ffffffff1602179055509050505b8b98508c97509350611d6c92505050565b6144c58288615d31565b96508a606001518760030b13156144f0575060009850889650869550859450849350611d6c92505050565b8b9c508263ffffffff169b508d60010160008d815260200190815260200160002060000160089054906101000a900463ffffffff1693508d60010160008d815260200190815260200160002060000160049054906101000a900463ffffffff1692508d60010160008d815260200190815260200160002060000160009054906101000a900460030b915060016142cf57505050509499939850945094509450565b63ffffffff908116600090815260019095016020526040909420805491851663ffffffff19938616600160401b0263ffffffff60401b1996909516600160201b02959095166bffffffffffffffff0000000019909216919091179290921716919091179055565b600085815260018701602052604081205463ffffffff600160401b8204811691600381900b91600160201b909104165b845163ffffffff1683116147c657845163ffffffff1683900361472c57600085604001516000196146599190615d58565b6146639084615d31565b90508060030b6000036146d157600089815260018c016020526040808220805463ffffffff60201b1916600160201b63ffffffff87811691909102919091179091558c8352912080546bffffffffffffffffffffffff191690558b5463ffffffff1916908916178b5561471f565b85606001518160030b13156146ed576000945050505050612810565b60008a815260018c0160205260409020805463ffffffff80841663ffffffff19928316179092558c54918a169116178b555b6001945050505050612810565b600088815260018b016020526040908190205486519187015161476b928d92600160201b900463ffffffff169161476590600019615d58565b8b614591565b600088815260018b81016020526040909120805463ffffffff60201b1916600160201b63ffffffff8b16021790556147a4908890615826565b8a5463ffffffff191663ffffffff91909116178a555060019250612810915050565b6147d08287615d31565b955084606001518660030b13156147ed5760009350505050612810565b63ffffffff908116600081815260018c01602052604090205490999850600160401b810482169350600381900b9250600160201b900416614628565b600060ff8316600214801561483e5750815415155b1561497f576000826000018054806020026020016040519081016040528092919081815260200182805480156148bf57602002820191906000526020600020906000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116148825790505b50505050509050600081600183516148d79190615843565b815181106148e7576148e7615856565b60200260200101519050438163ffffffff16111561492957816002835161490e9190615843565b8151811061491e5761491e615856565b602002602001015190505b63ffffffff8082166000908152600180870160205260409091205490911690811115614973575063ffffffff9081166000908152600185016020526040902054169150612b839050565b60009350505050612b83565b50600092915050565b60008263ffffffff166000036149a057506000612b83565b60006149ac8385615d78565b905063ffffffff83166149bf8583615da0565b63ffffffff1614610cd757600080fd5b60405180606001604052806003906020820280368337509192915050565b508054600082556007016008900490600052602060002090810190614a129190614a15565b50565b5b80821115614a2a5760008155600101614a16565b5090565b63ffffffff81168114614a1257600080fd5b8035610b6d81614a2e565b600080600060608486031215614a6057600080fd5b833592506020840135614a7281614a2e565b91506040840135614a8281614a2e565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614ac657614ac6614a8d565b60405290565b60405161014081016001600160401b0381118282101715614ac657614ac6614a8d565b604051601f8201601f191681016001600160401b0381118282101715614b1757614b17614a8d565b604052919050565b600082601f830112614b3057600080fd5b81356001600160401b03811115614b4957614b49614a8d565b614b5c601f8201601f1916602001614aef565b818152846020838601011115614b7157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215614ba457600080fd5b8435935060208501356001600160401b0380821115614bc257600080fd5b614bce88838901614b1f565b94506040870135915080821115614be457600080fd5b614bf088838901614b1f565b93506060870135915080821115614c0657600080fd5b50614c1387828801614b1f565b91505092959194509250565b60006001600160401b03821115614c3857614c38614a8d565b5060051b60200190565b600082601f830112614c5357600080fd5b81356020614c68614c6383614c1f565b614aef565b82815260059290921b84018101918181019086841115614c8757600080fd5b8286015b84811015614ca25780358352918301918301614c8b565b509695505050505050565b600060208284031215614cbf57600080fd5b81356001600160401b03811115614cd557600080fd5b6134bd84828501614c42565b6001600160a01b0381168114614a1257600080fd5b600080600060608486031215614d0b57600080fd5b8335614d1681614ce1565b9250602084013591506040840135614a8281614a2e565b600060208284031215614d3f57600080fd5b8135610cd781614ce1565b6020808252825182820181905260009190848201906040850190845b81811015614d8857835163ffffffff1683529284019291840191600101614d66565b50909695505050505050565b600080600060608486031215614da957600080fd5b8335614db481614ce1565b92506020840135614dc481614ce1565b929592945050506040919091013590565b60008060408385031215614de857600080fd5b8235614df381614ce1565b91506020830135614e0381614a2e565b809150509250929050565b63ffffffff8082511683528060208301511660208401525060408101516040830152606081015160608301526080810151608083015260a081015160a08301525050565b63ffffffff8316815260e08101610cd76020830184614e0e565b803560ff81168114610b6d57600080fd5b600080600060608486031215614e9257600080fd5b83356001600160401b0380821115614ea957600080fd5b614eb587838801614b1f565b94506020860135915080821115614ecb57600080fd5b908501906101208288031215614ee057600080fd5b614ee8614aa3565b614ef183614a40565b8152614eff60208401614a40565b6020820152614f1060408401614a40565b6040820152614f2160608401614a40565b6060820152614f3260808401614a40565b6080820152614f4360a08401614a40565b60a082015260c083013582811115614f5a57600080fd5b614f6689828601614c42565b60c08301525060e083013582811115614f7e57600080fd5b614f8a89828601614c42565b60e0830152506101009150614fa0828401614e6c565b82820152809450505050604084013590509250925092565b60008060008060808587031215614fce57600080fd5b84356001600160401b03811115614fe457600080fd5b614ff087828801614b1f565b945050602085013561500181614a2e565b9250604085013561501181614a2e565b9150606085013561502181614a2e565b939692955090935050565b600082601f83011261503d57600080fd5b8135602061504d614c6383614c1f565b82815260059290921b8401810191818101908684111561506c57600080fd5b8286015b84811015614ca25761508181614e6c565b8352918301918301615070565b600080600080608085870312156150a457600080fd5b84356001600160401b03808211156150bb57600080fd5b6150c788838901614b1f565b9550602087013591506150d982614a2e565b909350604086013590808211156150ef57600080fd5b6150fb88838901614c42565b9350606087013591508082111561511157600080fd5b50614c138782880161502c565b6000806000806080858703121561513457600080fd5b843561513f81614ce1565b935060208501356001600160401b0381111561515a57600080fd5b61516687828801614b1f565b935050604085013561517781614a2e565b9396929550929360600135925050565b634e487b7160e01b600052602160045260246000fd5b865160e0820190600881106151c257634e487b7160e01b600052602160045260246000fd5b825260209788015163ffffffff169782019790975260408101959095526001600160a01b03939093166060850152608084019190915260a083015260c09091015290565b600082601f83011261521757600080fd5b81356020615227614c6383614c1f565b82815260059290921b8401810191818101908684111561524657600080fd5b8286015b84811015614ca257803561525d81614a2e565b835291830191830161524a565b8035610b6d81614ce1565b600082601f83011261528657600080fd5b81356020615296614c6383614c1f565b82815260059290921b840181019181810190868411156152b557600080fd5b8286015b84811015614ca257803561ffff811681146152d45760008081fd5b83529183019183016152b9565b600061014082840312156152f457600080fd5b6152fc614acc565b90506153078261526a565b815261531560208301614a40565b602082015260408201356001600160401b038082111561533457600080fd5b6153408583860161502c565b6040840152606084013591508082111561535957600080fd5b6153658583860161502c565b6060840152608084013591508082111561537e57600080fd5b61538a85838601615206565b608084015260a08401359150808211156153a357600080fd5b6153af85838601615275565b60a084015260c08401359150808211156153c857600080fd5b506153d584828501615275565b60c0830152506153e760e08301614a40565b60e082015261010080830135818301525061012080830135818301525092915050565b600080600080600060a0868803121561542257600080fd5b85356001600160401b038082111561543957600080fd5b61544589838a01614b1f565b9650602088013591508082111561545b57600080fd5b61546789838a01615206565b9550604088013591508082111561547d57600080fd5b61548989838a016152e1565b9450606088013591508082111561549f57600080fd5b6154ab89838a01615206565b935060808801359150808211156154c157600080fd5b506154ce88828901614c42565b9150509295509295909350565b60008060008060008060c087890312156154f457600080fd5b86356154ff81614ce1565b955060208701356001600160401b038082111561551b57600080fd5b6155278a838b01614b1f565b96506040890135915061553982614a2e565b90945060608801359061554b82614a2e565b9093506080880135908082111561556157600080fd5b61556d8a838b01614c42565b935060a089013591508082111561558357600080fd5b5061559089828a01614c42565b9150509295509295509295565b600080604083850312156155b057600080fd5b82356155bb81614ce1565b946020939093013593505050565b600080600080600080600060e0888a0312156155e457600080fd5b8735965060208801356001600160401b038082111561560257600080fd5b61560e8b838c01614b1f565b975060408a013591508082111561562457600080fd5b6156308b838c01614b1f565b965060608a013591508082111561564657600080fd5b6156528b838c01614b1f565b955061566060808b01614a40565b945060a08a013591508082111561567657600080fd5b506156838a828b01615206565b92505061569260c08901614a40565b905092959891949750929550565b6000806000606084860312156156b557600080fd5b83356156c081614ce1565b925060208401356001600160401b038111156156db57600080fd5b6156e786828701614b1f565b925050604084013590509250925092565b60c08101612b838284614e0e565b60006020828403121561571857600080fd5b5035919050565b6000806040838503121561573257600080fd5b823561573d81614ce1565b915060208301356001600160401b0381111561575857600080fd5b61576485828601614b1f565b9150509250929050565b60008060006060848603121561578357600080fd5b833561578e81614a2e565b9250602084013561579e81614a2e565b915060408401356001600160401b038111156157b957600080fd5b6157c586828701615206565b9150509250925092565b6020808252825182820181905260009190848201906040850190845b81811015614d885783516001600160a01b0316835292840192918401916001016157eb565b634e487b7160e01b600052601160045260246000fd5b63ffffffff8181168382160190808211156129fa576129fa615810565b81810381811115612b8357612b83615810565b634e487b7160e01b600052603260045260246000fd5b80820180821115612b8357612b83615810565b634e487b7160e01b600052601260045260246000fd5b6000826158a4576158a461587f565b500490565b8082028115828204841417612b8357612b83615810565b60005b838110156158db5781810151838201526020016158c3565b50506000910152565b600081518084526158fc8160208601602086016158c0565b601f01601f19169290920160200192915050565b60608152600061592360608301866158e4565b828103602084015261593581866158e4565b9050828103604084015261281081856158e4565b60006001820161595b5761595b615810565b5060010190565b600082516159748184602087016158c0565b9190910192915050565b60008151602080840160005b838110156159a65781518752958201959082019060010161598a565b509495945050505050565b60006134bd6159c0838661597e565b8461597e565b6000602082840312156159d857600080fd5b81518015158114610cd757600080fd5b6080815260006159fb60808301876158e4565b63ffffffff958616602084015293909416604082015260ff9190911660609091015292915050565b825160009082906020808701845b83811015615a4d57815185529382019390820190600101615a31565b5050855181870193925060005b81811015615a7957845160ff1684529382019392820192600101615a5a565b5091979650505050505050565b60008151602080840160005b838110156159a657815161ffff1687529582019590820190600101615a92565b60006134bd615ac18386615a86565b84615a86565b600061ffff80841680615adc57615adc61587f565b92169190910492915050565b608081526000615afb60808301876158e4565b63ffffffff95861660208401529390941660408201526060015292915050565b600080600060608486031215615b3057600080fd5b8351615b3b81614a2e565b809350506020840151915060408401518060030b8114614a8257600080fd5b63ffffffff8281168282160390808211156129fa576129fa615810565b6000610140808352615b8b8184018e6158e4565b63ffffffff9c8d1660208501529a8c166040840152505096891660608801526001600160a01b0395909516608087015260a086019390935260c085019190915260e0840152841661010083015290921661012090920191909152919050565b600062ffffff80841680615adc57615adc61587f565b600081518084526020808501945080840160005b838110156159a657815160ff1687529582019590820190600101615c14565b8051808352602092830192600091908084018383156159a657815161ffff1687529582019590820190600101615a92565b6000610140808352615c788184018e6158e4565b9050602063ffffffff8d16818501528382036040850152615c99828d615c00565b84810360608601528b51808252828d0193509082019060005b81811015615cce57845183529383019391830191600101615cb2565b50508481036080860152615ce2818c615c00565b9250505082810360a0840152615cf88189615c33565b905082810360c0840152615d0c8188615c33565b60e0840196909652505061010081019290925261012090910152979650505050505050565b600381810b9083900b01637fffffff8113637fffffff1982121715612b8357612b83615810565b60008260030b8260030b028060030b91508082146129fa576129fa615810565b63ffffffff818116838216028082169190828114615d9857615d98615810565b505092915050565b600063ffffffff80841680615adc57615adc61587f56fea2646970667358221220ec1e977582e7b7902df0b47cbada059230ff2af261c266203005b955f89da5b964736f6c63430008140033