60806040526101f4600c5567011c37937e080000600d556000600f60006101000a81548160ff0219169083151502179055503480156200003e57600080fd5b506040518060400160405280601481526020017f424c41434b20424f5820434f4c4c4543544956450000000000000000000000008152506040518060400160405280600d81526020017f424f415244494e472050415353000000000000000000000000000000000000008152508160009080519060200190620000c3929190620001d3565b508060019080519060200190620000dc929190620001d3565b505050620000ff620000f36200010560201b60201c565b6200010d60201b60201c565b620002e8565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001e19062000283565b90600052602060002090601f01602090048101928262000205576000855562000251565b82601f106200022057805160ff191683800117855562000251565b8280016001018555821562000251579182015b828111156200025057825182559160200191906001019062000233565b5b50905062000260919062000264565b5090565b5b808211156200027f57600081600090555060010162000265565b5090565b600060028204905060018216806200029c57607f821691505b60208210811415620002b357620002b2620002b9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b614e9280620002f86000396000f3fe6080604052600436106102255760003560e01c80637ba5e62111610123578063c4d6a1fb116100ab578063d50095841161006f578063d5009584146107e4578063e985e9c51461080f578063eb8d24441461084c578063f2fde38b14610877578063fa09e630146108a057610225565b8063c4d6a1fb146106fd578063c87b56dd14610728578063ca3286f514610765578063cf1582e814610790578063d0ebdbe7146107bb57610225565b806395d89b41116100f257806395d89b411461063b578063a22cb46514610666578063b4e380d51461068f578063b5edc467146106b8578063b88d4fde146106d457610225565b80637ba5e621146105a55780638b7afe2e146105bc5780638da5cb5b146105e757806391b7f5ed1461061257610225565b806342842e0e116101b15780636352211e116101755780636352211e146104c05780636c0360eb146104fd5780636f8b44b01461052857806370a0823114610551578063715018a61461058e57610225565b806342842e0e146103dd57806342966c68146104065780634f6ccce71461042f57806355f804b31461046c578063626be5671461049557610225565b806318160ddd116101f857806318160ddd146102f857806323b872dd146103235780632f745c591461034c57806330b5ddff146103895780633f0ab918146103b457610225565b806301ffc9a71461022a57806306fdde0314610267578063081812fc14610292578063095ea7b3146102cf575b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906138c0565b6108c9565b60405161025e9190613efc565b60405180910390f35b34801561027357600080fd5b5061027c6108db565b6040516102899190613f17565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190613953565b61096d565b6040516102c69190613e95565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f19190613884565b6109f2565b005b34801561030457600080fd5b5061030d610b0a565b60405161031a9190614299565b60405180910390f35b34801561032f57600080fd5b5061034a6004803603810190610345919061377e565b610b17565b005b34801561035857600080fd5b50610373600480360381019061036e9190613884565b610b77565b6040516103809190614299565b60405180910390f35b34801561039557600080fd5b5061039e610c1c565b6040516103ab9190614299565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d6919061397c565b610c22565b005b3480156103e957600080fd5b5061040460048036038101906103ff919061377e565b610da0565b005b34801561041257600080fd5b5061042d60048036038101906104289190613953565b610dc0565b005b34801561043b57600080fd5b5061045660048036038101906104519190613953565b610e1c565b6040516104639190614299565b60405180910390f35b34801561047857600080fd5b50610493600480360381019061048e9190613912565b610eb3565b005b3480156104a157600080fd5b506104aa610fa8565b6040516104b79190614299565b60405180910390f35b3480156104cc57600080fd5b506104e760048036038101906104e29190613953565b610fb9565b6040516104f49190613e95565b60405180910390f35b34801561050957600080fd5b5061051261106b565b60405161051f9190613f17565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190613953565b6110f9565b005b34801561055d57600080fd5b5061057860048036038101906105739190613719565b6111de565b6040516105859190614299565b60405180910390f35b34801561059a57600080fd5b506105a3611296565b005b3480156105b157600080fd5b506105ba61131e565b005b3480156105c857600080fd5b506105d1611425565b6040516105de9190614299565b60405180910390f35b3480156105f357600080fd5b506105fc611508565b6040516106099190613e95565b60405180910390f35b34801561061e57600080fd5b5061063960048036038101906106349190613953565b611532565b005b34801561064757600080fd5b50610650611617565b60405161065d9190613f17565b60405180910390f35b34801561067257600080fd5b5061068d60048036038101906106889190613848565b6116a9565b005b34801561069b57600080fd5b506106b660048036038101906106b19190613884565b6116bf565b005b6106d260048036038101906106cd9190613953565b61184b565b005b3480156106e057600080fd5b506106fb60048036038101906106f691906137cd565b6119e0565b005b34801561070957600080fd5b50610712611a42565b60405161071f9190613efc565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a9190613953565b611a59565b60405161075c9190613f17565b60405180910390f35b34801561077157600080fd5b5061077a611b00565b6040516107879190614299565b60405180910390f35b34801561079c57600080fd5b506107a5611b06565b6040516107b29190614299565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd9190613719565b611b0b565b005b3480156107f057600080fd5b506107f9611bcb565b6040516108069190613e95565b60405180910390f35b34801561081b57600080fd5b5061083660048036038101906108319190613742565b611cd0565b6040516108439190613efc565b60405180910390f35b34801561085857600080fd5b50610861611d64565b60405161086e9190613efc565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190613719565b611d77565b005b3480156108ac57600080fd5b506108c760048036038101906108c29190613719565b611e6f565b005b60006108d482612043565b9050919050565b6060600080546108ea90614554565b80601f016020809104026020016040519081016040528092919081815260200182805461091690614554565b80156109635780601f1061093857610100808354040283529160200191610963565b820191906000526020600020905b81548152906001019060200180831161094657829003601f168201915b5050505050905090565b6000610978826120bd565b6109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90614159565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006109fd82610fb9565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a65906141b9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610a8d612129565b73ffffffffffffffffffffffffffffffffffffffff161480610abc5750610abb81610ab6612129565b611cd0565b5b610afb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af2906140d9565b60405180910390fd5b610b058383612131565b505050565b6000600880549050905090565b610b28610b22612129565b826121ea565b610b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5e906141f9565b60405180910390fd5b610b728383836122c8565b505050565b6000610b82836111de565b8210610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba90613f59565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600c5481565b610c2a612129565b73ffffffffffffffffffffffffffffffffffffffff16610c48611508565b73ffffffffffffffffffffffffffffffffffffffff161480610cbe5750610c6d612129565b73ffffffffffffffffffffffffffffffffffffffff16600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490614059565b60405180910390fd5b600c5482610d09610b0a565b610d139190614389565b1115610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b90613f39565b60405180910390fd5b60005b82811015610d9b57610d7e826001610d6f600b61252f565b610d799190614389565b61253d565b610d88600b61255b565b8080610d93906145b7565b915050610d57565b505050565b610dbb838383604051806020016040528060008152506119e0565b505050565b610dd1610dcb612129565b826121ea565b610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790614239565b60405180910390fd5b610e1981612571565b50565b6000610e26610b0a565b8210610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e90614219565b60405180910390fd5b60088281548110610ea1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050919050565b610ebb612129565b73ffffffffffffffffffffffffffffffffffffffff16610ed9611508565b73ffffffffffffffffffffffffffffffffffffffff161480610f4f5750610efe612129565b73ffffffffffffffffffffffffffffffffffffffff16600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590614059565b60405180910390fd5b80600e9080519060200190610fa492919061353d565b5050565b6000610fb4600b61252f565b905090565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105990614119565b60405180910390fd5b80915050919050565b600e805461107890614554565b80601f01602080910402602001604051908101604052809291908181526020018280546110a490614554565b80156110f15780601f106110c6576101008083540402835291602001916110f1565b820191906000526020600020905b8154815290600101906020018083116110d457829003601f168201915b505050505081565b611101612129565b73ffffffffffffffffffffffffffffffffffffffff1661111f611508565b73ffffffffffffffffffffffffffffffffffffffff1614806111955750611144612129565b73ffffffffffffffffffffffffffffffffffffffff16600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90614059565b60405180910390fd5b80600c8190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561124f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611246906140f9565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61129e612129565b73ffffffffffffffffffffffffffffffffffffffff166112bc611508565b73ffffffffffffffffffffffffffffffffffffffff1614611312576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130990614179565b60405180910390fd5b61131c600061268e565b565b611326612129565b73ffffffffffffffffffffffffffffffffffffffff16611344611508565b73ffffffffffffffffffffffffffffffffffffffff1614806113ba5750611369612129565b73ffffffffffffffffffffffffffffffffffffffff16600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6113f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f090614059565b60405180910390fd5b600f60009054906101000a900460ff1615600f60006101000a81548160ff021916908315150217905550565b600061142f612129565b73ffffffffffffffffffffffffffffffffffffffff1661144d611508565b73ffffffffffffffffffffffffffffffffffffffff1614806114c35750611472612129565b73ffffffffffffffffffffffffffffffffffffffff16600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f990614059565b60405180910390fd5b47905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61153a612129565b73ffffffffffffffffffffffffffffffffffffffff16611558611508565b73ffffffffffffffffffffffffffffffffffffffff1614806115ce575061157d612129565b73ffffffffffffffffffffffffffffffffffffffff16600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490614059565b60405180910390fd5b80600d8190555050565b60606001805461162690614554565b80601f016020809104026020016040519081016040528092919081815260200182805461165290614554565b801561169f5780601f106116745761010080835404028352916020019161169f565b820191906000526020600020905b81548152906001019060200180831161168257829003601f168201915b5050505050905090565b6116bb6116b4612129565b8383612754565b5050565b6116c7612129565b73ffffffffffffffffffffffffffffffffffffffff166116e5611508565b73ffffffffffffffffffffffffffffffffffffffff16148061175b575061170a612129565b73ffffffffffffffffffffffffffffffffffffffff16600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179190614059565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516117c090613e80565b60006040518083038185875af1925050503d80600081146117fd576040519150601f19603f3d011682016040523d82523d6000602084013e611802565b606091505b5050905080611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d906141d9565b60405180910390fd5b505050565b600f60009054906101000a900460ff1661189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190614279565b60405180910390fd5b3481600d546118a99190614410565b11156118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e190614079565b60405180910390fd5b600a81111561192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192590614099565b60405180910390fd5b600c548161193a610b0a565b6119449190614389565b1115611985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197c90613ff9565b60405180910390fd5b60005b818110156119dc576000600161199e600b61252f565b6119a89190614389565b9050600c5481116119c8576119bd338261253d565b6119c7600b61255b565b5b5080806119d4906145b7565b915050611988565b5050565b6119f16119eb612129565b836121ea565b611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a27906141f9565b60405180910390fd5b611a3c848484846128c1565b50505050565b6000600f60009054906101000a900460ff16905090565b6060611a64826120bd565b611aa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9a90614199565b60405180910390fd5b6000611aad61291d565b90506000815111611acd5760405180602001604052806000815250611af8565b80611ad7846129af565b604051602001611ae8929190613e5c565b6040516020818303038152906040525b915050919050565b600d5481565b600a81565b611b13612129565b73ffffffffffffffffffffffffffffffffffffffff16611b31611508565b73ffffffffffffffffffffffffffffffffffffffff1614611b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7e90614179565b60405180910390fd5b80600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000611bd5612129565b73ffffffffffffffffffffffffffffffffffffffff16611bf3611508565b73ffffffffffffffffffffffffffffffffffffffff161480611c695750611c18612129565b73ffffffffffffffffffffffffffffffffffffffff16600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f90614059565b60405180910390fd5b600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600f60009054906101000a900460ff1681565b611d7f612129565b73ffffffffffffffffffffffffffffffffffffffff16611d9d611508565b73ffffffffffffffffffffffffffffffffffffffff1614611df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dea90614179565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5a90613f99565b60405180910390fd5b611e6c8161268e565b50565b611e77612129565b73ffffffffffffffffffffffffffffffffffffffff16611e95611508565b73ffffffffffffffffffffffffffffffffffffffff161480611f0b5750611eba612129565b73ffffffffffffffffffffffffffffffffffffffff16600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4190614059565b60405180910390fd5b600047905060008111611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8990614259565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051611fb890613e80565b60006040518083038185875af1925050503d8060008114611ff5576040519150601f19603f3d011682016040523d82523d6000602084013e611ffa565b606091505b505090508061203e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612035906141d9565b60405180910390fd5b505050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806120b657506120b582612b5c565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166121a483610fb9565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006121f5826120bd565b612234576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222b906140b9565b60405180910390fd5b600061223f83610fb9565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806122ae57508373ffffffffffffffffffffffffffffffffffffffff166122968461096d565b73ffffffffffffffffffffffffffffffffffffffff16145b806122bf57506122be8185611cd0565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff166122e882610fb9565b73ffffffffffffffffffffffffffffffffffffffff161461233e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233590613fb9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156123ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a590614019565b60405180910390fd5b6123b9838383612c3e565b6123c4600082612131565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612414919061446a565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461246b9190614389565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461252a838383612c4e565b505050565b600081600001549050919050565b612557828260405180602001604052806000815250612c53565b5050565b6001816000016000828254019250508190555050565b600061257c82610fb9565b905061258a81600084612c3e565b612595600083612131565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125e5919061446a565b925050819055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461268a81600084612c4e565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba90614039565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516128b49190613efc565b60405180910390a3505050565b6128cc8484846122c8565b6128d884848484612cae565b612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290e90613f79565b60405180910390fd5b50505050565b6060600e805461292c90614554565b80601f016020809104026020016040519081016040528092919081815260200182805461295890614554565b80156129a55780601f1061297a576101008083540402835291602001916129a5565b820191906000526020600020905b81548152906001019060200180831161298857829003601f168201915b5050505050905090565b606060008214156129f7576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612b57565b600082905060005b60008214612a29578080612a12906145b7565b915050600a82612a2291906143df565b91506129ff565b60008167ffffffffffffffff811115612a6b577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015612a9d5781602001600182028036833780820191505090505b5090505b60008514612b5057600182612ab6919061446a565b9150600a85612ac59190614600565b6030612ad19190614389565b60f81b818381518110612b0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612b4991906143df565b9450612aa1565b8093505050505b919050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612c2757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80612c375750612c3682612e45565b5b9050919050565b612c49838383612eaf565b505050565b505050565b612c5d8383612fc3565b612c6a6000848484612cae565b612ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca090613f79565b60405180910390fd5b505050565b6000612ccf8473ffffffffffffffffffffffffffffffffffffffff1661319d565b15612e38578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612cf8612129565b8786866040518563ffffffff1660e01b8152600401612d1a9493929190613eb0565b602060405180830381600087803b158015612d3457600080fd5b505af1925050508015612d6557506040513d601f19601f82011682018060405250810190612d6291906138e9565b60015b612de8573d8060008114612d95576040519150601f19603f3d011682016040523d82523d6000602084013e612d9a565b606091505b50600081511415612de0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd790613f79565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612e3d565b600190505b949350505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612eba8383836131c0565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612efd57612ef8816131c5565b612f3c565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612f3b57612f3a838261320e565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612f7f57612f7a8161337b565b612fbe565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612fbd57612fbc82826134be565b5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302a90614139565b60405180910390fd5b61303c816120bd565b1561307c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161307390613fd9565b60405180910390fd5b61308860008383612c3e565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546130d89190614389565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461319960008383612c4e565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600161321b846111de565b613225919061446a565b905060006007600084815260200190815260200160002054905081811461330a576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061338f919061446a565b90506000600960008481526020019081526020016000205490506000600883815481106133e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050806008838154811061342d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806134a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b60006134c9836111de565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b82805461354990614554565b90600052602060002090601f01602090048101928261356b57600085556135b2565b82601f1061358457805160ff19168380011785556135b2565b828001600101855582156135b2579182015b828111156135b1578251825591602001919060010190613596565b5b5090506135bf91906135c3565b5090565b5b808211156135dc5760008160009055506001016135c4565b5090565b60006135f36135ee846142d9565b6142b4565b90508281526020810184848401111561360b57600080fd5b613616848285614512565b509392505050565b600061363161362c8461430a565b6142b4565b90508281526020810184848401111561364957600080fd5b613654848285614512565b509392505050565b60008135905061366b81614e00565b92915050565b60008135905061368081614e17565b92915050565b60008135905061369581614e2e565b92915050565b6000815190506136aa81614e2e565b92915050565b600082601f8301126136c157600080fd5b81356136d18482602086016135e0565b91505092915050565b600082601f8301126136eb57600080fd5b81356136fb84826020860161361e565b91505092915050565b60008135905061371381614e45565b92915050565b60006020828403121561372b57600080fd5b60006137398482850161365c565b91505092915050565b6000806040838503121561375557600080fd5b60006137638582860161365c565b92505060206137748582860161365c565b9150509250929050565b60008060006060848603121561379357600080fd5b60006137a18682870161365c565b93505060206137b28682870161365c565b92505060406137c386828701613704565b9150509250925092565b600080600080608085870312156137e357600080fd5b60006137f18782880161365c565b94505060206138028782880161365c565b935050604061381387828801613704565b925050606085013567ffffffffffffffff81111561383057600080fd5b61383c878288016136b0565b91505092959194509250565b6000806040838503121561385b57600080fd5b60006138698582860161365c565b925050602061387a85828601613671565b9150509250929050565b6000806040838503121561389757600080fd5b60006138a58582860161365c565b92505060206138b685828601613704565b9150509250929050565b6000602082840312156138d257600080fd5b60006138e084828501613686565b91505092915050565b6000602082840312156138fb57600080fd5b60006139098482850161369b565b91505092915050565b60006020828403121561392457600080fd5b600082013567ffffffffffffffff81111561393e57600080fd5b61394a848285016136da565b91505092915050565b60006020828403121561396557600080fd5b600061397384828501613704565b91505092915050565b6000806040838503121561398f57600080fd5b600061399d85828601613704565b92505060206139ae8582860161365c565b9150509250929050565b6139c18161449e565b82525050565b6139d0816144b0565b82525050565b60006139e18261433b565b6139eb8185614351565b93506139fb818560208601614521565b613a04816146ed565b840191505092915050565b6000613a1a82614346565b613a24818561436d565b9350613a34818560208601614521565b613a3d816146ed565b840191505092915050565b6000613a5382614346565b613a5d818561437e565b9350613a6d818560208601614521565b80840191505092915050565b6000613a8660168361436d565b9150613a91826146fe565b602082019050919050565b6000613aa9602b8361436d565b9150613ab482614727565b604082019050919050565b6000613acc60328361436d565b9150613ad782614776565b604082019050919050565b6000613aef60268361436d565b9150613afa826147c5565b604082019050919050565b6000613b1260258361436d565b9150613b1d82614814565b604082019050919050565b6000613b35601c8361436d565b9150613b4082614863565b602082019050919050565b6000613b5860188361436d565b9150613b638261488c565b602082019050919050565b6000613b7b60248361436d565b9150613b86826148b5565b604082019050919050565b6000613b9e60198361436d565b9150613ba982614904565b602082019050919050565b6000613bc160228361436d565b9150613bcc8261492d565b604082019050919050565b6000613be4601f8361436d565b9150613bef8261497c565b602082019050919050565b6000613c07602e8361436d565b9150613c12826149a5565b604082019050919050565b6000613c2a602c8361436d565b9150613c35826149f4565b604082019050919050565b6000613c4d60388361436d565b9150613c5882614a43565b604082019050919050565b6000613c70602a8361436d565b9150613c7b82614a92565b604082019050919050565b6000613c9360298361436d565b9150613c9e82614ae1565b604082019050919050565b6000613cb660208361436d565b9150613cc182614b30565b602082019050919050565b6000613cd9602c8361436d565b9150613ce482614b59565b604082019050919050565b6000613cfc60208361436d565b9150613d0782614ba8565b602082019050919050565b6000613d1f602f8361436d565b9150613d2a82614bd1565b604082019050919050565b6000613d4260218361436d565b9150613d4d82614c20565b604082019050919050565b6000613d65600083614362565b9150613d7082614c6f565b600082019050919050565b6000613d8860108361436d565b9150613d9382614c72565b602082019050919050565b6000613dab60318361436d565b9150613db682614c9b565b604082019050919050565b6000613dce602c8361436d565b9150613dd982614cea565b604082019050919050565b6000613df160308361436d565b9150613dfc82614d39565b604082019050919050565b6000613e14600f8361436d565b9150613e1f82614d88565b602082019050919050565b6000613e3760298361436d565b9150613e4282614db1565b604082019050919050565b613e5681614508565b82525050565b6000613e688285613a48565b9150613e748284613a48565b91508190509392505050565b6000613e8b82613d58565b9150819050919050565b6000602082019050613eaa60008301846139b8565b92915050565b6000608082019050613ec560008301876139b8565b613ed260208301866139b8565b613edf6040830185613e4d565b8181036060830152613ef181846139d6565b905095945050505050565b6000602082019050613f1160008301846139c7565b92915050565b60006020820190508181036000830152613f318184613a0f565b905092915050565b60006020820190508181036000830152613f5281613a79565b9050919050565b60006020820190508181036000830152613f7281613a9c565b9050919050565b60006020820190508181036000830152613f9281613abf565b9050919050565b60006020820190508181036000830152613fb281613ae2565b9050919050565b60006020820190508181036000830152613fd281613b05565b9050919050565b60006020820190508181036000830152613ff281613b28565b9050919050565b6000602082019050818103600083015261401281613b4b565b9050919050565b6000602082019050818103600083015261403281613b6e565b9050919050565b6000602082019050818103600083015261405281613b91565b9050919050565b6000602082019050818103600083015261407281613bb4565b9050919050565b6000602082019050818103600083015261409281613bd7565b9050919050565b600060208201905081810360008301526140b281613bfa565b9050919050565b600060208201905081810360008301526140d281613c1d565b9050919050565b600060208201905081810360008301526140f281613c40565b9050919050565b6000602082019050818103600083015261411281613c63565b9050919050565b6000602082019050818103600083015261413281613c86565b9050919050565b6000602082019050818103600083015261415281613ca9565b9050919050565b6000602082019050818103600083015261417281613ccc565b9050919050565b6000602082019050818103600083015261419281613cef565b9050919050565b600060208201905081810360008301526141b281613d12565b9050919050565b600060208201905081810360008301526141d281613d35565b9050919050565b600060208201905081810360008301526141f281613d7b565b9050919050565b6000602082019050818103600083015261421281613d9e565b9050919050565b6000602082019050818103600083015261423281613dc1565b9050919050565b6000602082019050818103600083015261425281613de4565b9050919050565b6000602082019050818103600083015261427281613e07565b9050919050565b6000602082019050818103600083015261429281613e2a565b9050919050565b60006020820190506142ae6000830184613e4d565b92915050565b60006142be6142cf565b90506142ca8282614586565b919050565b6000604051905090565b600067ffffffffffffffff8211156142f4576142f36146be565b5b6142fd826146ed565b9050602081019050919050565b600067ffffffffffffffff821115614325576143246146be565b5b61432e826146ed565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061439482614508565b915061439f83614508565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156143d4576143d3614631565b5b828201905092915050565b60006143ea82614508565b91506143f583614508565b92508261440557614404614660565b5b828204905092915050565b600061441b82614508565b915061442683614508565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561445f5761445e614631565b5b828202905092915050565b600061447582614508565b915061448083614508565b92508282101561449357614492614631565b5b828203905092915050565b60006144a9826144e8565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b8381101561453f578082015181840152602081019050614524565b8381111561454e576000848401525b50505050565b6000600282049050600182168061456c57607f821691505b602082108114156145805761457f61468f565b5b50919050565b61458f826146ed565b810181811067ffffffffffffffff821117156145ae576145ad6146be565b5b80604052505050565b60006145c282614508565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156145f5576145f4614631565b5b600182019050919050565b600061460b82614508565b915061461683614508565b92508261462657614625614660565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f426f617264696e67205061737320536f6c64204f757400000000000000000000600082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f426f617264696e672050617373657320536f6c64204f75740000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f43616c6c6572206973206e6f7420746865206f776e6572206f72206d616e616760008201527f6572000000000000000000000000000000000000000000000000000000000000602082015250565b7f45746865722076616c75652073656e74206973206e6f7420636f727265637400600082015250565b7f596f752063616e206f6e6c79206d696e7420313020426f617264696e6720706160008201527f7373657320617420612074696d65000000000000000000000000000000000000602082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656400000000000000000000000000000000602082015250565b7f42616c616e6365206973207a65726f0000000000000000000000000000000000600082015250565b7f53616c65206d7573742062652061637469766520746f206d696e7420426f617260008201527f64696e6720506173730000000000000000000000000000000000000000000000602082015250565b614e098161449e565b8114614e1457600080fd5b50565b614e20816144b0565b8114614e2b57600080fd5b50565b614e37816144bc565b8114614e4257600080fd5b50565b614e4e81614508565b8114614e5957600080fd5b5056fea26469706673582212209dd3fe38fa3142a73257217ed291d0d0ee24364591468ac399d812a7d216ebb564736f6c63430008040033