0x60806040526005805460ff191690553480156200001b57600080fd5b50600080546001600160a01b031916331790556040516200003f9060200162000247565b60408051601f1981840301815282825280516020918201208383018352600b84526a0c1e08141c9bdd1bd8dbdb60aa1b938201939093528151808301835260018152601960f91b908201529051620000df92917ff0f24618f4c4be1e62e026fb039a20ef96f4495294817d1027ffaa6d1f70e61e917fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a591309101620001f7565b60408051601f19818403018152919052805160209091012060085562000296565b620001156200010f8262000293565b62000293565b82525050565b60006200012a600c836200028e565b6b1cdd1c9a5b99c81b985b594b60a21b8152600c0192915050565b6000620001546019836200028e565b7f6164647265737320766572696679696e67436f6e747261637400000000000000815260190192915050565b60006200018f6001836200028e565b602960f81b815260010192915050565b6000620001ae600f836200028e565b6e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b8152600f0192915050565b6000620001db600d836200028e565b6c08a92a06e626488dedac2d2dc5609b1b8152600d0192915050565b600062000205828762000100565b60208201915062000217828662000100565b60208201915062000229828562000100565b6020820191506200023b828462000100565b50602001949350505050565b60006200025482620001cc565b915062000261826200011b565b91506200026e826200019f565b91506200027b8262000145565b9150620002888262000180565b92915050565b919050565b90565b61537f80620002a66000396000f3fe6080604052600436106102515760003560e01c806389d807fd11610139578063c585bb93116100b6578063eea086ba1161007a578063eea086ba146106eb578063f2fde38b14610700578063f3f6c9c814610720578063fa0aba3214610733578063fcfa641114610753578063ffa1ad741461077357610251565b8063c585bb9314610649578063c75e0a8114610669578063d46b02c314610696578063d9bfa73e146106b6578063e306f779146106d657610251565b8063b214faa5116100fd578063b214faa5146105b6578063b4be83d5146105c9578063bfc8bfce146105e9578063c202aded14610609578063c3e562f51461062957610251565b806389d807fd1461051f5780638da5cb5b1461054157806392b3462014610556578063931ea7d714610576578063936347021461059657610251565b80634f9559b1116101d2578063619d595311610196578063619d59531461045f578063642f2eaf1461047257806377fcce68146104925780637b8e3514146104b25780637e9d74dc146104d257806382c174d0146104ff57610251565b80634f9559b1146103bf57806350f62da7146103df5780635979612d146103ff578063607041081461041f57806360ac85d61461043f57610251565b806338a66be21161021957806338a66be21461031b5780633c28d861146103305780633fd3c9971461035d57806343c71aff1461038a5780634ac147821461039f57610251565b80631b258d5014610256578063288cdc91146102785780632ac12622146102ae5780632c45ed78146102db5780633683ef8e146102fb575b600080fd5b34801561026257600080fd5b50610276610271366004613b21565b610788565b005b34801561028457600080fd5b50610298610293366004613b03565b6107f4565b6040516102a59190614e2c565b60405180910390f35b3480156102ba57600080fd5b506102ce6102c9366004613b03565b610806565b6040516102a59190614e1e565b3480156102e757600080fd5b506102986102f6366004613b21565b61081b565b34801561030757600080fd5b50610276610316366004613b40565b610838565b34801561032757600080fd5b506102986108d7565b34801561033c57600080fd5b5061035061034b366004613cd5565b6108de565b6040516102a5919061516c565b34801561036957600080fd5b5061037d610378366004613c65565b610bd3565b6040516102a59190614d3e565b34801561039657600080fd5b50610298610bee565b3480156103ab57600080fd5b506102766103ba366004613acf565b610c1f565b3480156103cb57600080fd5b506102766103da366004613b03565b610c65565b3480156103eb57600080fd5b506102986103fa366004613a47565b610d50565b34801561040b57600080fd5b506102ce61041a366004613a47565b610d62565b34801561042b57600080fd5b5061037d61043a366004613c65565b610d77565b34801561044b57600080fd5b5061027661045a366004613a47565b610da0565b61027661046d366004613b21565b610e90565b34801561047e57600080fd5b506102ce61048d366004613b03565b610eda565b34801561049e57600080fd5b506102766104ad366004613a9f565b610eef565b3480156104be57600080fd5b506102ce6104cd366004613a65565b610f7b565b3480156104de57600080fd5b506104f26104ed366004613acf565b610f9b565b6040516102a59190614e0d565b34801561050b57600080fd5b506102ce61051a366004613b21565b61102f565b34801561052b57600080fd5b5061053461104f565b6040516102a59190614ed7565b34801561054d57600080fd5b5061037d61106b565b34801561056257600080fd5b50610276610571366004613a47565b61107a565b34801561058257600080fd5b50610276610591366004613a47565b6111f5565b3480156105a257600080fd5b506102ce6105b1366004613ba7565b6112e6565b6102766105c4366004613b03565b611674565b6105dc6105d7366004613d91565b61168f565b6040516102a5919061515e565b3480156105f557600080fd5b50610276610604366004613dd9565b6116b4565b34801561061557600080fd5b5061037d610624366004613b03565b611899565b34801561063557600080fd5b506102ce610644366004613a47565b6118c0565b34801561065557600080fd5b50610276610664366004613a47565b6118d5565b34801561067557600080fd5b50610689610684366004613ca1565b611a27565b6040516102a5919061517b565b3480156106a257600080fd5b506102766106b1366004613ca1565b611b10565b3480156106c257600080fd5b506102986106d1366004613a65565b611b42565b3480156106e257600080fd5b50610298611b5f565b3480156106f757600080fd5b5061037d611b65565b34801561070c57600080fd5b5061027661071b366004613a47565b611b74565b61027661072e366004613c0b565b611c1f565b34801561073f57600080fd5b5061037d61074e366004613b03565b611c79565b34801561075f57600080fd5b5061027661076e366004613a47565b611c86565b34801561077f57600080fd5b50610534611e01565b610790611e2e565b33600090815260026020526040902054819060ff16806107b857506001600160a01b03811633145b6107dd5760405162461bcd60e51b81526004016107d49061513e565b60405180910390fd5b6107e78383611e58565b506107f0611f62565b5050565b60096020526000908152604090205481565b600a6020526000908152604090205460ff1681565b600760209081526000928352604080842090915290825290205481565b6001600160a01b03831633146108a557610889848484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112e692505050565b6108a55760405162461bcd60e51b81526004016107d490614fee565b50506000918252600c602090815260408084206001600160a01b0390931684529190529020805460ff19166001179055565b620493e081565b6108e661370f565b6108ee611e2e565b61016080860151610140808701919091528601519085015261090e61373c565b61091786611a27565b905061092161373c565b61092a86611a27565b90506000610936611f6e565b905061094488848389611f94565b61095087838388611f94565b61095a888861207d565b61096e8888856040015185604001516120cd565b805160208101519051919550610989918a918691819061226c565b6020808501519081015190516109a5918991859190819061226c565b6109be8882856020015186604001518860000151612331565b6109d78782846020015185604001518860200151612331565b6109e3888883876123e1565b60405180606001604052806024815260200161531960249139604051610a099190614c15565b6040518091039020886101400151604051610a249190614c15565b60405180910390201415610a7b57610a7b83602001518960000151610a76876000015160400151610a6a89604001518a602001516020015161251090919063ffffffff16565b9063ffffffff61251016565b612535565b60405180606001604052806024815260200161531960249139604051610aa19190614c15565b6040518091039020876101400151604051610abc9190614c15565b60405180910390201415610af45760208083015188518683015160400151875190930151610af493610a76919063ffffffff61251016565b60405180606001604052806024815260200161531960249139604051610b1a9190614c15565b6040518091039020886101600151604051610b359190614c15565b60405180910390201415610b5a57610b5a836020015182866000015160600151612535565b60405180606001604052806024815260200161531960249139604051610b809190614c15565b6040518091039020876101600151604051610b9b9190614c15565b60405180910390201415610bc057610bc0826020015182866020015160600151612535565b505050610bcb611f62565b949350505050565b6010602052600090815260409020546001600160a01b031681565b60405180606001604052806024815260200161531960249139604051610c149190614c15565b604051809103902081565b610c27611e2e565b805160005b818114610c5857610c4f838281518110610c4257fe5b6020026020010151612591565b50600101610c2c565b5050610c62611f62565b50565b610c6d611e2e565b6000610c77611f6e565b905060006001600160a01b0382163314610c915733610c94565b60005b6001600160a01b038084166000908152600b60209081526040808320938516835292905220549091506001840190808211610ce15760405162461bcd60e51b81526004016107d49061507e565b6001600160a01b038085166000818152600b602090815260408083209488168084529490915290819020859055517f82af639571738f4ebd4268fb0363d8957ebe1bbb9e78dba5ebd69eed39b154f090610d3c908690614e2c565b60405180910390a350505050610c62611f62565b60066020526000908152604090205481565b60046020526000908152604090205460ff1681565b6001600160e01b031981166000908152601060205260409020546001600160a01b03165b919050565b6000546001600160a01b03163314610dca5760405162461bcd60e51b81526004016107d4906150ce565b6001600160a01b03811660009081526002602052604090205460ff1615610e035760405162461bcd60e51b81526004016107d490614fbe565b6001600160a01b038116600081815260026020526040808220805460ff19166001908117909155805480820182559083527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b03191684179055513392917f0da9caec92a6633ec5303ab10a916b8b9259517e13192c0aec8d6bf3f7fb350b91a350565b610e98611e2e565b3360009081526004602052604090205460ff16610ec75760405162461bcd60e51b81526004016107d490614f7e565b610ed28282346125c4565b6107f0611f62565b600e6020526000908152604090205460ff1681565b610ef7611e2e565b6000610f01611f6e565b6001600160a01b038181166000818152600d602090815260408083209489168084529490915290819020805460ff19168715151790555192935090917fa8656e308026eeabce8f0bc18048433252318ab80ac79da0b3d3d8697dfba89190610f6a908690614e1e565b60405180910390a3506107f0611f62565b600d60209081526000928352604080842090915290825290205460ff1681565b6060600082519050606081604051908082528060200260200182016040528015610fdf57816020015b610fcc61373c565b815260200190600190039081610fc45790505b50905060005b82811461102757611008858281518110610ffb57fe5b6020026020010151611a27565b82828151811061101457fe5b6020908102919091010152600101610fe5565b509392505050565b600c60209081526000928352604080842090915290825290205460ff1681565b6040518060600160405280602481526020016153196024913981565b6000546001600160a01b031681565b6000546001600160a01b031633146110a45760405162461bcd60e51b81526004016107d4906150ce565b6001600160a01b03811660009081526002602052604090205460ff166110dc5760405162461bcd60e51b81526004016107d4906150ee565b6001600160a01b0381166000908152600260205260408120805460ff191690555b6001548110156111bb57816001600160a01b03166001828154811061111e57fe5b6000918252602090912001546001600160a01b031614156111b35760018054600019810190811061114b57fe5b600091825260209091200154600180546001600160a01b03909216918390811061117157fe5b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790556001805460001901906111ad908261375c565b506111bb565b6001016110fd565b5060405133906001600160a01b038316907fc03f62302eb85eef9129d96cb26c130f821bd2244125a4a71fdf348790832b1390600090a350565b6000546001600160a01b0316331461121f5760405162461bcd60e51b81526004016107d4906150ce565b6001600160a01b03811660009081526004602052604090205460ff16156112585760405162461bcd60e51b81526004016107d490614f6e565b6001600160a01b038116600081815260046020526040808220805460ff1916600190811790915560038054918201815583527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b03191684179055513392917fd2f3f54a1162c37c3f0d514ab98620b75e42002fbf74284b2fd5e3eecf155b2991a350565b6000808251116113085760405162461bcd60e51b81526004016107d49061506e565b600061131383612687565b60f81c9050600781106113385760405162461bcd60e51b81526004016107d490614f5e565b60008160ff16600781111561134957fe5b905060008080808085600781111561135d57fe5b141561137b5760405162461bcd60e51b81526004016107d49061505e565b600185600781111561138957fe5b14156113be578751156113ae5760405162461bcd60e51b81526004016107d49061514e565b506000955061166d945050505050565b60028560078111156113cc57fe5b141561149c5787516041146113f35760405162461bcd60e51b81526004016107d490614f1e565b8760008151811061140057fe5b016020015160f81c935061141b88600163ffffffff6126d016565b925061142e88602163ffffffff6126d016565b915060018a858585604051600081526020016040526040516114539493929190614e87565b6020604051602081039080840390855afa158015611475573d6000803e3d6000fd5b5050604051601f1901516001600160a01b038b8116911614975061166d9650505050505050565b60038560078111156114aa57fe5b14156115575787516041146114d15760405162461bcd60e51b81526004016107d490614f1e565b876000815181106114de57fe5b016020015160f81c93506114f988600163ffffffff6126d016565b925061150c88602163ffffffff6126d016565b915060018a6040516020016115219190614c2c565b60405160208183030381529060405280519060200120858585604051600081526020016040526040516114539493929190614e87565b600485600781111561156557fe5b1415611584576115768a8a8a6126fa565b965061166d95505050505050565b600585600781111561159257fe5b141561160d57875160006115b08a601319840163ffffffff6128d216565b6001600160a01b03808d166000908152600d602090815260408083209385168352929052205490915060ff166115f15760009850505050505050505061166d565b6115fd818d8d8d612905565b985061166d975050505050505050565b600685600781111561161b57fe5b1415611655575050506000878152600c602090815260408083206001600160a01b038a16845290915290205460ff16935061166d92505050565b60405162461bcd60e51b81526004016107d490614f5e565b9392505050565b61167c611e2e565b6116878133346125c4565b610c62611f62565b611697613780565b61169f611e2e565b6116aa848484612a73565b905061166d611f62565b600f546001600160a01b0316156116dd5760405162461bcd60e51b81526004016107d4906150be565b6000611728611723888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612c1692505050565b612c73565b6000818152600e602052604090205490915060ff161561175a5760405162461bcd60e51b81526004016107d490614fde565b6001600160a01b03861633146117e3576117ab818785858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112e692505050565b6117c75760405162461bcd60e51b81526004016107d49061511e565b600f80546001600160a01b0319166001600160a01b0388161790555b6000818152600e6020526040808220805460ff1916600117905551309061180d9088908890614c08565b600060405180830381855af49150503d8060008114611848576040519150601f19603f3d011682016040523d82523d6000602084013e61184d565b606091505b505090508061186e5760405162461bcd60e51b81526004016107d49061500e565b6001600160a01b038716331461188f57600f80546001600160a01b03191690555b5050505050505050565b600381815481106118a657fe5b6000918252602090912001546001600160a01b0316905081565b60026020526000908152604090205460ff1681565b6000546001600160a01b031633146118ff5760405162461bcd60e51b81526004016107d4906150ce565b6000816001600160a01b031663ae25532e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561193a57600080fd5b505afa15801561194e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506119729190810190613c83565b6001600160e01b031981166000908152601060205260409020549091506001600160a01b031680156119b65760405162461bcd60e51b81526004016107d490614f4e565b6001600160e01b031982166000908152601060205260409081902080546001600160a01b0319166001600160a01b038616179055517fd2c6b762299c609bdb96520b58a49bfb80186934d4f71a86a367571a15c0319490611a1a9084908690614ebc565b60405180910390a1505050565b611a2f61373c565b611a3882612c98565b602080830182905260009182526009905260409081902054908201526080820151611a6a5760015b60ff168152610d9b565b60a0820151611a7a576002611a60565b8160a00151816040015110611a90576005611a60565b8161010001514210611aa3576004611a60565b6020808201516000908152600a909152604090205460ff1615611ac7576006611a60565b61012082015182516001600160a01b039081166000908152600b602090815260408083206060880151909416835292905220541115611b07576006611a60565b60038152919050565b611b18611e2e565b611b2061373c565b611b2982612591565b9050611b39816020015133611e58565b50610c62611f62565b600b60209081526000928352604080842090915290825290205481565b60085481565b600f546001600160a01b031681565b6000546001600160a01b03163314611b9e5760405162461bcd60e51b81526004016107d4906150ce565b6001600160a01b038116611bc45760405162461bcd60e51b81526004016107d49061508e565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611c27611e2e565b611c2f61373c565b611c3882612591565b90506000611c578360c00151846080015161251090919063ffffffff16565b9050611c6a858584602001518433612ca6565b5050611c74611f62565b505050565b600181815481106118a657fe5b6000546001600160a01b03163314611cb05760405162461bcd60e51b81526004016107d4906150ce565b6001600160a01b03811660009081526004602052604090205460ff16611ce85760405162461bcd60e51b81526004016107d49061502e565b6001600160a01b0381166000908152600460205260408120805460ff191690555b600354811015611dc757816001600160a01b031660038281548110611d2a57fe5b6000918252602090912001546001600160a01b03161415611dbf57600380546000198101908110611d5757fe5b600091825260209091200154600380546001600160a01b039092169183908110611d7d57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600380546000190190611db9908261375c565b50611dc7565b600101611d09565b5060405133906001600160a01b038316907f59b89d91440b7546647fc913702d6fceb3b3af75b87b4c71c6a2679909610d5190600090a350565b60405180604001604052806011815260200170322e312e302d616c7068612d6d69696d6560781b81525081565b60055460ff1615611e4957611e49611e44612ead565b612ecb565b6005805460ff19166001179055565b60008281526007602090815260408083206001600160a01b0385168452909152902054156107f05760008281526007602090815260408083206001600160a01b0385168452825280832054600690925290912054611ebc908263ffffffff612ed316565b6001600160a01b0383166000818152600660209081526040808320949094558682526007815283822083835290528281208190559151909183156108fc02918491818181858888f19350505050158015611f1a573d6000803e3d6000fd5b50816001600160a01b0316837fe7284ffe0c70ad2f3b0aa15cde1cfe95f736935651a138725b21fd168edc5d6a83604051611f559190614e2c565b60405180910390a3505050565b6005805460ff19169055565b600f546000906001600160a01b0316818115611f8a5781611f8c565b335b925050505b90565b825160ff16600314611fb85760405162461bcd60e51b81526004016107d4906150de565b60608401516001600160a01b031615611ff75760608401516001600160a01b03163314611ff75760405162461bcd60e51b81526004016107d4906150fe565b60208401516001600160a01b03161561203f57816001600160a01b031684602001516001600160a01b03161461203f5760405162461bcd60e51b81526004016107d490614f2e565b60408301516120775761205b83602001518560000151836112e6565b6120775760405162461bcd60e51b81526004016107d490614f9e565b50505050565b60a080820151908301516120969163ffffffff612ef216565b608080830151908401516120af9163ffffffff612ef216565b10156107f05760405162461bcd60e51b81526004016107d49061510e565b6120d561370f565b60a08501516000906120ed908563ffffffff612ed316565b9050600061210487608001518860a0015184612f23565b9050600061211f858860a00151612ed390919063ffffffff16565b9050600061213688608001518960a0015184612f23565b90508084106121795760208086018051839052805182018490525151865182015260808a015160a08b01518751909201516121719290612f23565b8551526121b6565b845183905284516020908101859052855181015190860180519190915260a089015160808a01519151516121ad9290612f8c565b60208087015101525b60208086015101518551516121d09163ffffffff612ed316565b604086015284515160808a015160c08b01516121ed929190612f23565b85516040015284516020015160a08a015160e08b015161220e929190612f23565b855160600152602085015151608089015160c08a015161222f929190612f23565b856020015160400181815250506122578560200151602001518960a001518a60e00151612f23565b60208601516060015250505050949350505050565b826122895760405162461bcd60e51b81526004016107d49061503e565b828211156122a95760405162461bcd60e51b81526004016107d49061501e565b60a085015160408501516122c3908463ffffffff61251016565b11156122e15760405162461bcd60e51b81526004016107d490614f3e565b60808501516122f6908363ffffffff612ef216565b60a086015161230c90839063ffffffff612ef216565b111561232a5760405162461bcd60e51b81526004016107d4906150ae565b5050505050565b602081015161234790839063ffffffff61251016565b60096000858152602001908152602001600020819055508285604001516001600160a01b031686600001516001600160a01b03167f0bcc4c97732e47d9946f229edb95f5b6323f601300e4690de719993f3c371129873386600001518760200151886040015189606001518e61014001518f61016001516040516123d2989796959493929190614d89565b60405180910390a45050505050565b60606040518060600160405280602481526020016153196024913961014086015186518651602080870151015193945061241a93612ffd565b6101408401518451865184516020015161243693929190612ffd565b61244f8561014001518660000151858560400151612ffd565b61246b8186600001518760400151856000015160400151612ffd565b6124878185600001518660400151856020015160400151612ffd565b83604001516001600160a01b031685604001516001600160a01b031614156124e0576124db818487604001516124d686602001516060015187600001516060015161251090919063ffffffff16565b612ffd565b61232a565b6124f881848760400151856000015160600151612ffd565b61232a81848660400151856020015160600151612ffd565b60008282018381101561252c5761252c611e4460008686613268565b90505b92915050565b60008381526007602090815260408083206001600160a01b0386168452909152902054612568908263ffffffff612ed316565b60009384526007602090815260408086206001600160a01b039095168652939052919092205550565b61259961373c565b6125a161373c565b6125aa83611a27565b90506125b683826132c2565b61252f838260200151613366565b6001600160a01b0382166000908152600660205260409020546125ed908263ffffffff61251016565b6001600160a01b0383166000818152600660209081526040808320949094558682526007815283822092825291909152205461262f908263ffffffff61251016565b60008481526007602090815260408083206001600160a01b038716808552925291829020929092555184907f182fa52899142d44ff5c45a6354d3b3e868d5b07db6a65580b39bd321bdaf8ac90611f55908590614e2c565b60008151600014156126a4576126a4611e446002845160006133e2565b816001835103815181106126b457fe5b0160200151825160001901909252506001600160f81b03191690565b600081602001835110156126f1576126f1611e4460058551856020016133e2565b50016020015190565b604051600090606090630b135d3f60e11b9061271c9087908690602401614e67565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050600060405161275f90614d28565b6040519081900381206001600160e01b031916915060009061278090614c4c565b6040519081900381206001600160e01b03191691506000906127a190614c21565b60405180910390206001600160e01b0319169050863b6127ec5762461bcd60e51b600052600160e51b6020526c062ba0a62622aa2fa2a92927a960811b604052600060605260646000fd5b602084016020818651838b5afa60203d146128325762461bcd60e51b600052600160e51b6020526c062ba0a62622aa2fa2a92927a960811b604052600060605260646000fd5b8080156128465760018114612877576128c4565b62461bcd60e51b600052600160e51b6020526c062ba0a62622aa2fa2a92927a960811b604052600060605260646000fd5b6001600160e01b031984166001600160e01b0319845116146001600160e01b031986166001600160e01b031985511614176001600160e01b031987166001600160e01b0319855116141797505b505050505050509392505050565b600081601401835110156128f3576128f3611e4460048551856014016133e2565b5001601401516001600160a01b031690565b6040516000906060906349b1a38160e11b9061292990879087908790602401614e3a565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050600060405161296c90614d1d565b60405180910390206001600160e01b0319169050863b6129ba5762461bcd60e51b600052600160e51b6020526f07ab20a624a220aa27a92fa2a92927a960691b604052600060605260646000fd5b602082016020818451838b5afa60203d14612a035762461bcd60e51b600052600160e51b6020526f07ab20a624a220aa27a92fa2a92927a960691b604052600060605260646000fd5b808015612a175760018114612a4b57612a66565b62461bcd60e51b600052600160e51b6020526f07ab20a624a220aa27a92fa2a92927a960691b604052600060605260646000fd5b6001600160e01b031984166001600160e01b03198451161495505b5050505050949350505050565b612a7b613780565b612a8361373c565b612a8c85611a27565b90506000612a98611f6e565b90503415612aaf57612aaf826020015182346125c4565b612abb86838387611f94565b6000612ad883604001518860a00151612ed390919063ffffffff16565b90506000612ae68783613401565b9050612af28882613417565b9450612b0588858984896000015161226c565b612b1a88848660200151876040015189612331565b612b25888487613478565b60405180606001604052806024815260200161531960249139604051612b4b9190614c15565b6040518091039020886101400151604051612b669190614c15565b60405180910390201415612b98576020840151885160408701518751612b98939291610a76919063ffffffff61251016565b60405180606001604052806024815260200161531960249139604051612bbe9190614c15565b6040518091039020886101600151604051612bd99190614c15565b60405180910390201415612c0b57612c0b846020015184610a768860600151896020015161251090919063ffffffff16565b505050509392505050565b600080604051602001612c2890614c57565b60408051601f1981840301815282825280516020918201208651878301209084529083018890526001600160a01b038716918301919091526060820152608090209150509392505050565b60085460405161190160f01b8152600281019190915260228101919091526042902090565b600061252f611723836134f0565b3415612d3b576001600160a01b038116600090815260066020526040902054612cd5903463ffffffff61251016565b6001600160a01b03821660008181526006602090815260408083209490945588825260078152838220928252919091522054612d17903463ffffffff61251016565b60008681526007602090815260408083206001600160a01b03861684529091529020555b60008381526007602090815260408083206001600160a01b0385168452909152902054612d69848784613586565b84811115612e605760008681526007602090815260408083206001600160a01b0386168452909152812054612da4908763ffffffff612ed316565b60008881526007602090815260408083206001600160a01b0388168452909152902054909150612dda908263ffffffff612ed316565b60008881526007602090815260408083206001600160a01b0388168452825280832093909355600690522054612e16908263ffffffff612ed316565b6001600160a01b038416600081815260066020526040808220939093559151909183156108fc02918491818181858888f19350505050158015612e5d573d6000803e3d6000fd5b50505b816001600160a01b031684877f8cc802977edfa64abef2b610ec3adbc8fbe0dabbe60079046b02789ac0d13b868887604051612e9d929190615189565b60405180910390a4505050505050565b6040805180820190915260048152630c3b823f60e01b602082015290565b805160208201fd5b600082821115612eec57612eec611e4460028585613268565b50900390565b600082612f015750600061252f565b82820282848281612f0e57fe5b041461252c5761252c611e4460018686613268565b6000808311612f445760405162461bcd60e51b81526004016107d490614f8e565b612f4f8484846135fd565b15612f6c5760405162461bcd60e51b81526004016107d490614ffe565b610bcb83612f80868563ffffffff612ef216565b9063ffffffff61367216565b6000808311612fad5760405162461bcd60e51b81526004016107d490614f8e565b612fb884848461369c565b15612fd55760405162461bcd60e51b81526004016107d490614ffe565b610bcb83612f80612fed82600163ffffffff612ed316565b610a6a888763ffffffff612ef216565b60008111801561301f5750816001600160a01b0316836001600160a01b031614155b156120775760038451116130455760405162461bcd60e51b81526004016107d49061509e565b6040518060600160405280602481526020016153196024913960405161306b9190614c15565b604051809103902084805190602001201415613196576001600160a01b0383166000908152600660205260409020548111156130b95760405162461bcd60e51b81526004016107d490614fce565b6001600160a01b0383166000908152600660205260408120546130e2908363ffffffff612ed316565b6001600160a01b038086166000908152600660205260409020829055909150831630146131905760006060846001600160a01b0316620493e08560405161312890614d33565b600060405180830381858888f193505050503d8060008114613166576040519150601f19603f3d011682016040523d82523d6000602084013e61316b565b606091505b50915091508161318d5760405162461bcd60e51b81526004016107d49061512e565b50505b50612077565b6020848101516001600160e01b031916600081815260109092526040909120546001600160a01b0316806131dc5760405162461bcd60e51b81526004016107d49061504e565b604051660fffffffffffe0603f88510116806084018201632a17967960e21b8352608060048401526001600160a01b03881660248401526001600160a01b0387166044840152856064840152608483015b8181101561324557895181526020998a01990161322d565b61020084858403866000895af18061325b573d85fd5b5050505050505050505050565b606063e946c1bb60e01b84848460405160240161328793929190614ee8565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915290509392505050565b805160ff166003146132e65760405162461bcd60e51b81526004016107d4906150de565b60608201516001600160a01b0316156133255760608201516001600160a01b031633146133255760405162461bcd60e51b81526004016107d4906150fe565b600061332f611f6e565b9050806001600160a01b031683600001516001600160a01b031614611c745760405162461bcd60e51b81526004016107d490614fae565b6000818152600a602052604090819020805460ff19166001179055828101518351610140850151610160860151935185946001600160a01b039485169493909316927fdc47b3613d9fe400085f6dbdc99453462279057e6207385042827ed6b1a62cf7926133d692339290614d4c565b60405180910390a45050565b6060632800659560e01b84848460405160240161328793929190614f10565b6000818310613410578161252c565b5090919050565b61341f613780565b6020810182905260a0830151608084015161343b918491612f23565b808252608084015160c0850151613453929190612f23565b604082015260a083015160e084015161346d918491612f23565b606082015292915050565b606060405180606001604052806024815260200161531960249139610140850151855184519293506134ab928690612ffd565b6134c48461016001518486600001518560200151612ffd565b6134dc81856000015186604001518560400151612ffd565b612077818486604001518560600151612ffd565b60008060405160200161350290614c8e565b604051602081830303815290604052805190602001209050600083610140015160405161352f9190614c15565b60405180910390209050600084610160015160405161354e9190614c15565b604051908190039020601f19860180516101408801805161016090990180519784529581529285526101a08220915295905250525090565b60008381526007602081815260408084206001600160a01b038616808652908352818520805490869055878652938352818520908552909152909120546135d3908263ffffffff61251016565b60009384526007602090815260408086206001600160a01b03909516865293905291909220555050565b600080831161361e5760405162461bcd60e51b81526004016107d490614f8e565b811580613629575083155b156136365750600061166d565b6000838061364057fe5b8584099050613655858463ffffffff612ef216565b613667826103e863ffffffff612ef216565b101595945050505050565b60008161368857613688611e4460038585613268565b600082848161369357fe5b04949350505050565b60008083116136bd5760405162461bcd60e51b81526004016107d490614f8e565b8115806136c8575083155b156136d55750600061166d565b600083806136df57fe5b8584099050836136f5818363ffffffff612ed316565b816136fc57fe5b069050613655858463ffffffff612ef216565b6040518060600160405280613722613780565b815260200161372f613780565b8152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b815481835581811115611c7457600083815260209020611c749181019083016137a8565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b611f9191905b808211156137c257600081556001016137ae565b5090565b803561252f816152e9565b600082601f8301126137e257600080fd5b81356137f56137f0826151ca565b6151a4565b81815260209384019390925082018360005b83811015613833578135860161381d8882613900565b8452506020928301929190910190600101613807565b5050505092915050565b803561252f816152fd565b803561252f81615306565b803561252f8161530f565b805161252f8161530f565b60008083601f84011261387b57600080fd5b5081356001600160401b0381111561389257600080fd5b6020830191508360018202830111156138aa57600080fd5b9250929050565b600082601f8301126138c257600080fd5b81356138d06137f0826151ea565b915080825260208301602083018583830111156138ec57600080fd5b6138f7838284615293565b50505092915050565b6000610180828403121561391357600080fd5b61391e6101806151a4565b9050600061392c84846137c6565b825250602061393d848483016137c6565b6020830152506040613951848285016137c6565b6040830152506060613965848285016137c6565b606083015250608061397984828501613848565b60808301525060a061398d84828501613848565b60a08301525060c06139a184828501613848565b60c08301525060e06139b584828501613848565b60e0830152506101006139ca84828501613848565b610100830152506101206139e084828501613848565b610120830152506101408201356001600160401b03811115613a0157600080fd5b613a0d848285016138b1565b610140830152506101608201356001600160401b03811115613a2e57600080fd5b613a3a848285016138b1565b6101608301525092915050565b600060208284031215613a5957600080fd5b6000610bcb84846137c6565b60008060408385031215613a7857600080fd5b6000613a8485856137c6565b9250506020613a95858286016137c6565b9150509250929050565b60008060408385031215613ab257600080fd5b6000613abe85856137c6565b9250506020613a958582860161383d565b600060208284031215613ae157600080fd5b81356001600160401b03811115613af757600080fd5b610bcb848285016137d1565b600060208284031215613b1557600080fd5b6000610bcb8484613848565b60008060408385031215613b3457600080fd5b6000613a848585613848565b60008060008060608587031215613b5657600080fd5b6000613b628787613848565b9450506020613b73878288016137c6565b93505060408501356001600160401b03811115613b8f57600080fd5b613b9b87828801613869565b95989497509550505050565b600080600060608486031215613bbc57600080fd5b6000613bc88686613848565b9350506020613bd9868287016137c6565b92505060408401356001600160401b03811115613bf557600080fd5b613c01868287016138b1565b9150509250925092565b600080600060608486031215613c2057600080fd5b6000613c2c8686613848565b9350506020613c3d86828701613848565b92505060408401356001600160401b03811115613c5957600080fd5b613c0186828701613900565b600060208284031215613c7757600080fd5b6000610bcb8484613853565b600060208284031215613c9557600080fd5b6000610bcb848461385e565b600060208284031215613cb357600080fd5b81356001600160401b03811115613cc957600080fd5b610bcb84828501613900565b60008060008060808587031215613ceb57600080fd5b84356001600160401b03811115613d0157600080fd5b613d0d87828801613900565b94505060208501356001600160401b03811115613d2957600080fd5b613d3587828801613900565b93505060408501356001600160401b03811115613d5157600080fd5b613d5d878288016138b1565b92505060608501356001600160401b03811115613d7957600080fd5b613d85878288016138b1565b91505092959194509250565b600080600060608486031215613da657600080fd5b83356001600160401b03811115613dbc57600080fd5b613dc886828701613900565b9350506020613bd986828701613848565b60008060008060008060808789031215613df257600080fd5b6000613dfe8989613848565b9650506020613e0f89828a016137c6565b95505060408701356001600160401b03811115613e2b57600080fd5b613e3789828a01613869565b945094505060608701356001600160401b03811115613e5557600080fd5b613e6189828a01613869565b92509250509295509295509295565b6000613e7c8383614bc8565b505060600190565b613e8d81615267565b82525050565b613e8d81615224565b6000613ea782615217565b613eb1818561521b565b9350613ebc83615211565b8060005b83811015613eea578151613ed48882613e70565b9750613edf83615211565b925050600101613ec0565b509495945050505050565b613e8d8161522f565b613e8d81611f91565b613e8d613f1382611f91565b611f91565b613e8d81615234565b6000613f2d8385610d9b565b9350613f3a838584615293565b50500190565b6000613f4b82615217565b613f55818561521b565b9350613f6581856020860161529f565b613f6e816152cb565b9093019392505050565b6000613f8382615217565b613f8d8185610d9b565b9350613f9d81856020860161529f565b9290920192915050565b613e8d81615272565b613e8d8161527d565b6000613fc660128361521b565b7113115391d51217cd8d57d49154555254915160721b815260200192915050565b6000613ff4600d8361521b565b6c24a72b20a624a22faa20a5a2a960991b815260200192915050565b600061401d600e8361521b565b6d13d491115497d3d591549192531360921b815260200192915050565b6000614047601f83610d9b565b7f697356616c69645369676e617475726528627974657333322c627974657329008152601f0192915050565b6000614080601c83610d9b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c0192915050565b60006140b9601983610d9b565b7f75696e74323536206d616b65724173736574416d6f756e742c00000000000000815260190192915050565b60006140f2601d83610d9b565b7f697356616c69645369676e61747572652862797465732c6279746573290000008152601d0192915050565b600061412b601683610d9b565b751859191c995cdcc81cd95b99195c9059191c995cdccb60521b815260160192915050565b600061415d601283610d9b565b710b4cae4de8af0a8e4c2dce6c2c6e8d2dedc560731b815260120192915050565b600061418b600683610d9b565b6509ee4c8cae4560d31b815260060192915050565b60006141ad601a8361521b565b7f41535345545f50524f58595f414c52454144595f455849535453000000000000815260200192915050565b60006141e660158361521b565b7414d251d3905515549157d55394d5541413d4951151605a1b815260200192915050565b6000614217603883610d9b565b7f697356616c696456616c696461746f725369676e61747572652861646472657381527f732c627974657333322c616464726573732c6279746573290000000000000000602082015260380192915050565b6000614276601583610d9b565b74189e5d195cc81b585ad95c905cdcd95d11185d184b605a1b815260150192915050565b60006142a760228361521b565b7f5441524745545f49535f414c52454144595f4445504f5349545f4f504552415481526127a960f11b602082015260400192915050565b60006142eb601583610d9b565b741859191c995cdcc81b585ad95c9059191c995cdccb605a1b815260150192915050565b600061431c601e8361521b565b7f53454e4445525f49535f4e4f545f4445504f5349545f4f50455241544f520000815260200192915050565b600061435560108361521b565b6f4449564953494f4e5f42595f5a45524f60801b815260200192915050565b600061438160178361521b565b7f494e56414c49445f4f524445525f5349474e4154555245000000000000000000815260200192915050565b60006143ba600d8361521b565b6c24a72b20a624a22fa6a0a5a2a960991b815260200192915050565b60006143e360238361521b565b7f5441524745545f49535f414c52454144595f57495448445241575f4f504552418152622a27a960e91b602082015260400192915050565b6000614428601483610d9b565b7362797465732074616b657241737365744461746160601b815260140192915050565b6000614458601e8361521b565b7f4445504f5349545f414d4f554e545f49535f494e53554646494349454e540000815260200192915050565b6000614491600f8361521b565b6e0929cac82989288bea8b0be9082a69608b1b815260200192915050565b60006144bc600183610d9b565b602960f81b815260010192915050565b60006144d9601183610d9b565b701d5a5b9d0c8d4d881d185ad95c9199594b607a1b815260110192915050565b600061450660118361521b565b70494e56414c49445f5349474e415455524560781b815260200192915050565b6000614533600e8361521b565b6d2927aaa72224a723afa2a92927a960911b815260200192915050565b600061455d60108361521b565b6f2320a4a622a22fa2ac22a1aaaa24a7a760811b815260200192915050565b6000614589600d8361521b565b6c54414b45525f4f56455250415960981b815260200192915050565b60006145b2600d83610d9b565b6c1d5a5b9d0c8d4d881cd85b1d0b609a1b8152600d0192915050565b60006145db601e8361521b565b7f5441524745545f49535f4e4f545f4445504f5349545f4f50455241544f520000815260200192915050565b600061461460148361521b565b731253959053125117d51052d15497d05353d5539560621b815260200192915050565b6000614644600a83610d9b565b696279746573206461746160b01b8152600a0192915050565b600061466a601a8361521b565b7f41535345545f50524f58595f444f45535f4e4f545f4558495354000000000000815260200192915050565b60006146a360118361521b565b7014d251d3905515549157d253131151d053607a1b815260200192915050565b60006146d0601e8361521b565b7f4c454e4754485f475245415445525f5448414e5f305f52455155495245440000815260200192915050565b600061470960178361521b565b7f494e56414c49445f4e45575f4f524445525f45504f4348000000000000000000815260200192915050565b6000614742600d8361521b565b6c24a72b20a624a22fa7aba722a960991b815260200192915050565b600061476b601e8361521b565b7f4c454e4754485f475245415445525f5448414e5f335f52455155495245440000815260200192915050565b60006147a4601183610d9b565b701d5a5b9d0c8d4d881b585ad95c9199594b607a1b815260110192915050565b60006147d160128361521b565b71494e56414c49445f46494c4c5f505249434560701b815260200192915050565b60006147ff60128361521b565b71149151539514905390d657d253131151d05360721b815260200192915050565b600061482d60138361521b565b7227a7262cafa1a7a72a2920a1aa2fa7aba722a960691b815260200192915050565b600061485c602d83610d9b565b7f697356616c696457616c6c65745369676e617475726528627974657333322c6181526c6464726573732c62797465732960981b6020820152602d0192915050565b60006148ab601c83610d9b565b7f6164647265737320666565526563697069656e74416464726573732c000000008152601c0192915050565b600061252f600083610d9b565b60006148f160108361521b565b6f4f524445525f554e46494c4c41424c4560801b815260200192915050565b600061491d601f8361521b565b7f5441524745545f49535f4e4f545f57495448445241575f4f50455241544f5200815260200192915050565b6000614956600e8361521b565b6d24a72b20a624a22fa9a2a72222a960911b815260200192915050565b6000614980601683610d9b565b751859191c995cdcc81cda59db995c9059191c995cdccb60521b815260160192915050565b60006149b260188361521b565b7f4e454741544956455f5350524541445f52455155495245440000000000000000815260200192915050565b60006149eb60148361521b565b73494e56414c49445f54585f5349474e415455524560601b815260200192915050565b6000614a1b60128361521b565b7111551217d4d15391125391d7d1905253115160721b815260200192915050565b6000614a49601583610d9b565b741859191c995cdcc81d185ad95c9059191c995cdccb605a1b815260150192915050565b6000614a7a601e83610d9b565b7f75696e743235362065787069726174696f6e54696d655365636f6e64732c00008152601e0192915050565b6000614ab3601a8361521b565b7f53454e4445525f49535f4e4f545f574954484452415741424c45000000000000815260200192915050565b6000614aec601983610d9b565b7f75696e743235362074616b65724173736574416d6f756e742c00000000000000815260190192915050565b6000614b2560118361521b565b7013115391d51217cc17d491545552549151607a1b815260200192915050565b80516080830190614b568482613efe565b506020820151614b696020850182613efe565b506040820151614b7c6040850182613efe565b5060608201516120776060850182613efe565b8051610120830190614ba18482614b45565b506020820151614bb46080850182614b45565b506040820151612077610100850182613efe565b80516060830190614bd98482614bff565b506020820151614bec6020850182613efe565b5060408201516120776040850182613efe565b613e8d81615261565b6000610bcb828486613f21565b600061166d8284613f78565b600061252f8261403a565b6000614c3782614073565b9150614c438284613f07565b50602001919050565b600061252f826140e5565b6000614c6282614150565b9150614c6d826145a5565b9150614c7882614973565b9150614c8382614637565b915061252f826144af565b6000614c998261417e565b9150614ca4826142de565b9150614caf82614a3c565b9150614cba8261489e565b9150614cc58261411e565b9150614cd0826140ac565b9150614cdb82614adf565b9150614ce682614797565b9150614cf1826144cc565b9150614cfc82614a6d565b9150614d07826145a5565b9150614d1282614269565b9150614c838261441b565b600061252f8261420a565b600061252f8261484f565b600061252f826148d7565b6020810161252f8284613e93565b60608101614d5a8286613e84565b8181036020830152614d6c8185613f40565b90508181036040830152614d808184613f40565b95945050505050565b6101008101614d98828b613e93565b614da5602083018a613e84565b614db26040830189613efe565b614dbf6060830188613efe565b614dcc6080830187613efe565b614dd960a0830186613efe565b81810360c0830152614deb8185613f40565b905081810360e0830152614dff8184613f40565b9a9950505050505050505050565b6020808252810161252c8184613e9c565b6020810161252f8284613ef5565b6020810161252f8284613efe565b60608101614e488286613efe565b614e556020830185613e93565b8181036040830152614d808184613f40565b60408101614e758285613efe565b8181036020830152610bcb8184613f40565b60808101614e958287613efe565b614ea26020830186614bff565b614eaf6040830185613efe565b614d806060830184613efe565b60408101614eca8285613f18565b61166d6020830184613e93565b6020808252810161252c8184613f40565b60608101614ef68286613fa7565b614f036020830185613efe565b610bcb6040830184613efe565b60608101614ef68286613fb0565b6020808252810161252f81613fb9565b6020808252810161252f81613fe7565b6020808252810161252f81614010565b6020808252810161252f816141a0565b6020808252810161252f816141d9565b6020808252810161252f8161429a565b6020808252810161252f8161430f565b6020808252810161252f81614348565b6020808252810161252f81614374565b6020808252810161252f816143ad565b6020808252810161252f816143d6565b6020808252810161252f8161444b565b6020808252810161252f81614484565b6020808252810161252f816144f9565b6020808252810161252f81614526565b6020808252810161252f81614550565b6020808252810161252f8161457c565b6020808252810161252f816145ce565b6020808252810161252f81614607565b6020808252810161252f8161465d565b6020808252810161252f81614696565b6020808252810161252f816146c3565b6020808252810161252f816146fc565b6020808252810161252f81614735565b6020808252810161252f8161475e565b6020808252810161252f816147c4565b6020808252810161252f816147f2565b6020808252810161252f81614820565b6020808252810161252f816148e4565b6020808252810161252f81614910565b6020808252810161252f81614949565b6020808252810161252f816149a5565b6020808252810161252f816149de565b6020808252810161252f81614a0e565b6020808252810161252f81614aa6565b6020808252810161252f81614b18565b6080810161252f8284614b45565b610120810161252f8284614b8f565b6060810161252f8284614bc8565b604081016151978285613efe565b61166d6020830184613efe565b6040518181016001600160401b03811182821017156151c257600080fd5b604052919050565b60006001600160401b038211156151e057600080fd5b5060209081020190565b60006001600160401b0382111561520057600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061252f82615255565b151590565b6001600160e01b03191690565b80610d9b816152d5565b80610d9b816152df565b6001600160a01b031690565b60ff1690565b600061252f82615288565b600061252f82615241565b600061252f8261524b565b600061252f82615224565b82818337506000910152565b60005b838110156152ba5781810151838201526020016152a2565b838111156120775750506000910152565b601f01601f191690565b60048110610c6257fe5b60088110610c6257fe5b6152f281615224565b8114610c6257600080fd5b6152f28161522f565b6152f281611f91565b6152f28161523456fef47261b00000000000000000000000000000000000000000000000000000000000000000a365627a7a72315820b53bc6df196a4770dea96b0a47e540c106600ce51886e42222292d6b86d548d86c6578706572696d656e74616cf564736f6c63430005100040