From 0afa24a1bd1ce25cefb2b54399653284b40abccf Mon Sep 17 00:00:00 2001 From: Hekili Date: Wed, 23 Oct 2024 16:28:07 -1000 Subject: [PATCH] Outlaw priority update and Rogue combo points fixes --- TheWarWithin/Priorities/RogueOutlaw.simc | 46 +++++++++++++----------- TheWarWithin/RogueAssassination.lua | 27 +++----------- TheWarWithin/RogueOutlaw.lua | 32 +++++------------ 3 files changed, 39 insertions(+), 66 deletions(-) diff --git a/TheWarWithin/Priorities/RogueOutlaw.simc b/TheWarWithin/Priorities/RogueOutlaw.simc index 6d6dd7742..1dad8904e 100644 --- a/TheWarWithin/Priorities/RogueOutlaw.simc +++ b/TheWarWithin/Priorities/RogueOutlaw.simc @@ -5,23 +5,22 @@ actions.precombat+=/stealth,precombat_seconds=2 actions.precombat+=/adrenaline_rush,precombat_seconds=2,if=settings.use_ld_opener&talent.improved_adrenaline_rush&buff.adrenaline_rush.down&talent.keep_it_rolling&talent.loaded_dice actions.precombat+=/roll_the_bones,precombat_seconds=2,if=buff.roll_the_bones.down actions.precombat+=/adrenaline_rush,precombat_seconds=1,if=talent.improved_adrenaline_rush&buff.adrenaline_rush.down -actions.precombat+=/slice_and_dice,precombat_seconds=1,if=refreshable # Restealth if possible (no vulnerable enemies in combat) actions+=/stealth # Interrupt on cooldown to allow simming interactions with that actions+=/kick # Variables that define the reroll rules for Roll the Bones Default rule: reroll if the only buff that will be rolled away is Buried Treasure, or Grand Melee in single target without upcoming adds -actions+=/variable,name=rtb_reroll,value=rtb_buffs.will_lose=(rtb_buffs.will_lose.buried_treasure+rtb_buffs.will_lose.grand_melee&spell_targets.blade_flurry<2&raid_event.adds.in>12&raid_event.adds.count<2) -# If Loaded Dice is talented, then keep any 1 buff from Roll the Bones but roll it into 2 buffs when Loaded Dice is active -actions+=/variable,name=rtb_reroll,if=talent.loaded_dice,value=rtb_buffs.will_lose=buff.loaded_dice.up -# If all active Roll the Bones buffs are ahead of its container buff and have under 40s remaining, then reroll again with Loaded Dice active in an attempt to get even more buffs -actions+=/variable,name=rtb_reroll,value=variable.rtb_reroll&rtb_buffs.longer=0|rtb_buffs.normal=0&rtb_buffs.longer>=1&rtb_buffs<6&rtb_buffs.max_remains<=39&!stealthed.all&buff.loaded_dice.up -# Avoid rerolls when we will not have time remaining on the fight or add wave to recoup the opportunity cost of the global -actions+=/variable,name=rtb_reroll,op=reset,if=!(raid_event.adds.remains>12|raid_event.adds.up&(raid_event.adds.in-raid_event.adds.remains)<6|target.time_to_die>12)|fight_remains<12 +actions+=/variable,name=rtb_reroll,value=rtb_buffs.will_lose=(rtb_buffs.will_lose.buried_treasure+rtb_buffs.will_lose.grand_melee&spell_targets.blade_flurry<2) +# If Loaded Dice is talented, then keep any 1 buff from Roll the Bones but roll it into 2 buffs when Loaded Dice is active. Also reroll 2 buffs with loaded dice up if broadside, ruthless precision and true bearing are all missing and loaded dice is up +actions+=/variable,name=rtb_reroll,if=talent.loaded_dice,value=(rtb_buffs.will_lose<=buff.loaded_dice.up)|buff.loaded_dice.up&rtb_buffs.will_lose<3&(!rtb_buffs.will_lose.broadside|buff.broadside.remains<11)&(!rtb_buffs.will_lose.ruthless_precision|buff.ruthless_precision.remains<11)&(!rtb_buffs.will_lose.true_bearing|buff.true_bearing.remains<11) +# If all active Roll the Bones buffs are ahead of its container buff and have under 40s remaining or with supercharger talented, then reroll again with Loaded Dice active in an attempt to get even more buffs +actions+=/variable,name=rtb_reroll,value=variable.rtb_reroll&rtb_buffs.longer=0|rtb_buffs.normal=0&rtb_buffs.longer>=1&buff.loaded_dice.up&(rtb_buffs<6&rtb_buffs.max_remains<39|talent.supercharger) +# Non supercharger builds should avoid rerolls when we will not have time remaining on the fight or add wave to recoup the opportunity cost of the global +actions+=/variable,name=rtb_reroll,op=reset,if=!talent.supercharger&!(raid_event.adds.remains>12|raid_event.adds.up&(raid_event.adds.in-raid_event.adds.remains)<6|target.time_to_die>12)|fight_remains<12&boss actions+=/variable,name=ambush_condition,value=(talent.hidden_opportunity|combo_points.deficit>=2+talent.improved_ambush+buff.broadside.up)&energy>=50 # Use finishers if at -1 from max combo points, or -2 in Stealth with Crackshot. With the hero trees, Hidden Opportunity builds also finish at -2 if Audacity or Opportunity is active -actions+=/variable,name=finish_condition,value=effective_combo_points>=cp_max_spend-1-(stealthed.all&talent.crackshot|(talent.hand_of_fate|talent.flawless_form)&talent.hidden_opportunity&(buff.audacity.up|buff.opportunity.up)) +actions+=/variable,name=finish_condition,value=combo_points>=cp_max_spend-1-(stealthed.all&talent.crackshot|(talent.hand_of_fate|talent.flawless_form)&talent.hidden_opportunity&(buff.audacity.up|buff.opportunity.up)) # With multiple targets, this variable is checked to decide whether some CDs should be synced with Blade Flurry actions+=/variable,name=blade_flurry_sync,value=spell_targets.blade_flurry<2&raid_event.adds.in>20|buff.blade_flurry.remains>gcd actions+=/call_action_list,name=cds @@ -34,7 +33,8 @@ actions+=/arcane_pulse actions+=/lights_judgment actions+=/bag_of_tricks -+# Builders High priority Ambush for Hidden Opportunity builds +## Builders +# High priority Ambush for Hidden Opportunity builds actions.build+=/ambush,if=talent.hidden_opportunity&buff.audacity.up # With Audacity + Hidden Opportunity + Fan the Hammer, consume Opportunity to proc Audacity any time Ambush is not available actions.build+=/pistol_shot,if=talent.fan_the_hammer&talent.audacity&talent.hidden_opportunity&buff.opportunity.up&!buff.audacity.up @@ -49,8 +49,9 @@ actions.build+=/pool_resource,for_next=1 actions.build+=/ambush,if=talent.hidden_opportunity actions.build+=/sinister_strike -# Cooldowns Use Adrenaline Rush if it is not active and the finisher condition is not met, but Crackshot builds can refresh it with 2cp or lower inside stealth -actions.cds+=/adrenaline_rush,if=!buff.adrenaline_rush.up&(!variable.finish_condition|!talent.improved_adrenaline_rush)|stealthed.all&talent.crackshot&talent.improved_adrenaline_rush&combo_points<=2 +## Cooldowns +# Use Adrenaline Rush if it is not active and the finisher condition is not met, with Improved Adrenaline Rush you can also refresh it with 2cp or less if Loaded Dice is not already up Adrenaline rush if buff is missing unless you can finish or with 2 or less cp if loaded dice is missing +actions.cds+=/adrenaline_rush,if=!buff.adrenaline_rush.up&(!variable.finish_condition|!talent.improved_adrenaline_rush)|talent.improved_adrenaline_rush&combo_points<=2&!buff.loaded_dice.up # Sprint to further benefit from Scroll of Momentum trinket actions.cds+=/sprint,if=(trinket.1.is.scroll_of_momentum|trinket.2.is.scroll_of_momentum)&buff.full_momentum.up # Maintain Blade Flurry on 2+ targets @@ -69,8 +70,8 @@ actions.cds+=/use_item,name=imperfect_ascendancy_serum,if=!stealthed.all|boss&fi actions.cds+=/use_item,name=mad_queens_mandate,if=!stealthed.all|boss&fight_remains<=5 # Killing Spree has higher priority than stealth cooldowns actions.cds+=/killing_spree,if=variable.finish_condition&!stealthed.all -# Crackshot builds use stealth cooldowns if Between the Eyes is ready -actions.cds+=/call_action_list,name=stealth_cds,if=!stealthed.all&(!talent.crackshot|cooldown.between_the_eyes.ready) +# Crackshot builds use stealth cooldowns if not already in stealth +actions.cds+=/call_action_list,name=stealth_cds,if=!stealthed.all actions.cds+=/thistle_tea,if=!buff.thistle_tea.up&(energy.base_deficit>=150|fight_remains4&!stealthed.all @@ -82,16 +83,16 @@ actions.cds+=/ancestral_call actions.cds+=/use_items,slots=trinket1,if=buff.between_the_eyes.up|trinket.1.has_stat.any_dps|boss&fight_remains<=20 actions.cds+=/use_items,slots=trinket2,if=buff.between_the_eyes.up|trinket.2.has_stat.any_dps|boss&fight_remains<=20 -# Finishers Use Between the Eyes to keep the crit buff up, but on cooldown if Improved/Greenskins, and avoid overriding Greenskins +## Finishers +# Use Between the Eyes to keep the crit buff up, but on cooldown if Improved/Greenskins, and avoid overriding Greenskins actions.finish+=/between_the_eyes,if=!talent.crackshot&(buff.between_the_eyes.remains<4|talent.improved_between_the_eyes|talent.greenskins_wickers)&!buff.greenskins_wickers.up -# Crackshot builds use Between the Eyes outside of Stealth if we are unlikely to enter a Stealth window before the next BtE cast or if we are unlikely to lose Adrenaline Rush uptime by hitting BtE before the next cast of Vanish -actions.finish+=/between_the_eyes,if=talent.crackshot&(cooldown.vanish.true_remains>45|talent.underhanded_upper_hand&talent.without_a_trace&(buff.adrenaline_rush.remains>12|buff.adrenaline_rush.down&cooldown.adrenaline_rush.true_remains>45))&(raid_event.adds.remains>8|raid_event.adds.in=2&buff.opportunity.stack>=6&(buff.broadside.up&combo_points<=1|buff.greenskins_wickers.up) actions.stealth+=/ambush,if=talent.hidden_opportunity -# Stealth Cooldowns Builds with Underhanded Upper Hand and Subterfuge (and Without a Trace for Crackshot) must use Vanish while Adrenaline Rush is active -actions.stealth_cds+=/vanish,if=talent.underhanded_upper_hand&talent.subterfuge&(buff.adrenaline_rush.up|!talent.without_a_trace&talent.crackshot)&(variable.finish_condition|!talent.crackshot&(variable.ambush_condition|!talent.hidden_opportunity)) +## Stealth Cooldowns +# Builds with Underhanded Upper Hand and Subterfuge must use Vanish while Adrenaline Rush is active and either BTE on CD with RP up, adrenaline rush about to expire, supercharger buff up, vanish capped on charges or about to cap or fight about to end +actions.stealth_cds+=/vanish,if=talent.underhanded_upper_hand&talent.subterfuge&talent.crackshot&buff.adrenaline_rush.up&variable.finish_condition&(!cooldown.between_the_eyes.ready&buff.ruthless_precision.up|buff.adrenaline_rush.remains<3|buff.supercharge.up|cooldown.vanish.full_recharge_time<15|boss&fight_remains<8) +# Builds with Underhanded Upper Hand and Subterfuge but without crackshot use vanish only with Adrenaline Rush active +actions.stealth_cds+=/vanish,if=talent.underhanded_upper_hand&talent.subterfuge&!talent.crackshot&buff.adrenaline_rush.up&(variable.ambush_condition|!talent.hidden_opportunity)&(!cooldown.between_the_eyes.ready&buff.ruthless_precision.up|buff.ruthless_precision.down|buff.adrenaline_rush.remains<3) # Builds without Underhanded Upper Hand but with Crackshot must still use Vanish into Between the Eyes on cooldown actions.stealth_cds+=/vanish,if=!talent.underhanded_upper_hand&talent.crackshot&variable.finish_condition # Builds without Underhanded Upper Hand and Crackshot but still Hidden Opportunity use Vanish into Ambush when Audacity is not active and under max Opportunity stacks diff --git a/TheWarWithin/RogueAssassination.lua b/TheWarWithin/RogueAssassination.lua index 9414b6c83..3c1965396 100644 --- a/TheWarWithin/RogueAssassination.lua +++ b/TheWarWithin/RogueAssassination.lua @@ -15,23 +15,7 @@ local orderedPairs = ns.orderedPairs local spec = Hekili:NewSpecialization( 259 ) -spec:RegisterResource( Enum.PowerType.ComboPoints, nil, nil, { - percent = function( t ) - return max( 0, 100 * state.effective_combo_points / state.combo_points.max ) - end, - - deficit = function( t ) - return max( 0, state.combo_points.max - state.effective_combo_points ) - end, - - deficit_percent = function( t ) - return 100 * max( 0, state.combo_points.max - state.effective_combo_points ) / state.combo_points.max - end, - - deficit_pct = function( t ) - return 100 * max( 0, state.combo_points.max - state.effective_combo_points ) / state.combo_points.max - end -} ) +spec:RegisterResource( Enum.PowerType.ComboPoints ) spec:RegisterResource( Enum.PowerType.Energy, { garrote_vim = { @@ -257,12 +241,11 @@ end ) spec:RegisterStateExpr( "effective_combo_points", function () local c = combo_points.current or 0 - if talent.supercharger.enabled and buff.supercharged_combo_points.up then - if talent.forced_induction.enabled then return c + 3 - else return c + 2 - end - else return c + if buff.supercharged_combo_points.up then + c = c + ( talent.forced_induction.enabled and 3 or 2 ) end + + return c end ) diff --git a/TheWarWithin/RogueOutlaw.lua b/TheWarWithin/RogueOutlaw.lua index 971c51279..63a0514cd 100644 --- a/TheWarWithin/RogueOutlaw.lua +++ b/TheWarWithin/RogueOutlaw.lua @@ -519,22 +519,6 @@ local rtbApplicators = { keep_it_rolling = true, } -local lastApplicator = "roll_the_bones" - -local rtbSpellIDs = { - [315508] = "roll_the_bones", - [381989] = "keep_it_rolling", - [193356] = "broadside", - [199600] = "buried_treasure", - [193358] = "grand_melee", - [193357] = "ruthless_precision", - [199603] = "skull_and_crossbones", - [193359] = "true_bearing", - [2098] = "dispatch", - [8676] = "ambush", - [193315] = "sinister_strike" -} - local lastRoll = 0 local rollDuration = 30 @@ -753,12 +737,11 @@ end ) spec:RegisterStateExpr( "effective_combo_points", function () local c = combo_points.current or 0 - if talent.supercharger.enabled and buff.supercharged_combo_points.remains then - if talent.forced_induction.enabled then return c + 3 - else return c + 2 - end - else return c + if buff.supercharged_combo_points.remains then + c = c + ( talent.forced_induction.enabled and 3 or 2 ) end + + return c end ) @@ -836,7 +819,6 @@ end, state ) spec:RegisterHook( "reset_precast", function() - -- Supercharged Combo Point handling local cPoints = GetUnitChargedPowerPoints( "player" ) if talent.supercharger.enabled and cPoints then @@ -1258,6 +1240,10 @@ spec:RegisterAbilities( { end end + if talent.supercharger.enabled then + addStack( "supercharged_combo_points", nil, talent.supercharger.rank ) + end + if azerite.snake_eyes.enabled then applyBuff( "snake_eyes", nil, 5 ) end @@ -1537,4 +1523,4 @@ spec:RegisterSetting( "solo_vanish", true, { width = "full" } ) -spec:RegisterPack( "Outlaw", 20241022, [[Hekili:T3t6YTTrs)SOkvrtgDysAjz7uIQQy7KnXBo2VOKn)tGdbhsHiqagCifvLk(S)1DpdaMtqijQeND3FeRiGb90tF390ZOlhD5pF5fZzf8l)HXdhF8OHJhF04HVA8OXxErXDR5xEXAw41SLW)tcBf8V)yzrm7w8X3fNYMJFEEAzwi8QRkkwN)fV8LlJkUQC2rHPREzE0QYywruAsygBrb(7HV8YlMvgfx8TjxoZ9Cp6YlyLfxLMD5fxeT69aKJMpNlgopp8YlWHF4W3E4W3CWMPWphnu(Zt(IntXpzZ0Y1iK38XnFSEWVcE5)knkpnjV55V5WXNi(4HJQ)4SIzbz8S044ntlULZUwB8JHX9t8818WInt)UpSz6pUMNWZ2mnNxueLSuDWeg99SFlfEDg)MO8iC2NUilDLCYug8W3cd(xei(0frjr5xHGnmnzEurRF4PQO0)MHF5MPVhqTBVINqqipAopdrUPVR4RGNd8iyezaZn)Q0IgG96dh)gay)8vak8Rmy2)vyKrjxErCuEroYUrMhY3)bs2HNWMfZNF57U8IWSOcyoyGKdlMNuCKGTfKUEDAwrzsuXDhjh(MP92mDw5IfhXkNZcX3uUg46H4Ye(5QzL5xDzbiyymhvJynGnPXbiUlekYIwlEZVsRSVuc2nt3FZ0VHWdKpvJi0Z)Ag8WcCL(nSvR4zhiOuLR4gJTiDZ01zPHQWLLGVich7xsO7MPradkbiMtz3WIIrC2brzbljaMZGROPuJGihrnjXX76cjv9LLRPNVNdQnqDF1JK62zchdOiSntVkAjjjVolknJEr0c4faLAf7pa9McumCZuujbFrubkGIkF8)yDu2dKk6Jg03XROzEZ0ZN44DaQfiF)93749z8vSiuN8SnthVz6aKGE8ZnbvN8qcBP3WZczWA89)R8deerH29i8rsYmymzv5QDgHeSTplnyDAusr(rZ5lIcrKcjJ9P5DF6)rof)Ezu41bZZy32a(9LGFwg4ebTnraFWMPFU6xAGCzSKRPpDen0bcgJkUamJj1FDg4djMNNNa)xZmt8PtEW8PVDHKCxMtwrDWXkQT1AZ3MXYXjpfga6Ry5DhuzBwvyhqJyyWMCtACY59)djMBM(Hm0jCd3CpF0SoYqfi1riAg0WpRFEgFjIdaZz0rNyt2BebqY)iFSx8ZArMq51onb6WiMKDEQp2zkWmZ4vbOOXq)AwC8ms7ghfrB)TYCyjKNIoybxOfOjRlkYIUMlTTZVH8hZGxnxOlQA6V2Qp4Mg5BoD7qEpZV8cyebj8)OaDJc)ZRF8(sD528ni4QECUCXawZW1I68uCjjNVGvgx4YLUgfdcWOGZIrtl4sFDAEEeTA7NaKSBkJbzfXYhKAwfXbssuIqqHvmqbFeqXL7DDvUeaPZkxxi0Bcb2080BteUJbUx6TaZkA1kI3fHdwmd5vgalUIv0mTxdsCUC6LcbEarU1mWByaHNCEFdlUe(bgoik5LhGkQbXP5WAuyRZXRces(Lzr85bfzCwEzgNuj8o4LGLT5bR4XCojPdbYbVVGLTKdkxZIzZ5blIlZYURYBdmOmw08aqIevxMpp)iKwdASJC)2W0YKIgFv6u6)TCfNlOzBMI6ZjCPbUQiHZkPrqY2)Ki2y81VlnbFmytsihjg4x08DOWcnY0K47e6WvZJWW3mCsGHIkvSBz3juNEhrbHqrLKqP1W)bsRGyQfelCrJggrPob9sW8tlrt1Rbzps6ajbeJnqKftta(U8A3QeHdqyRTIPgbC)5rH8g1ul)jFhnkGWbdtSMfFoFET3KR581Yynhvr6e5ayZbMHRzjjVG0isjUnjYv5gXEoXf5nBxyNeuvxxIqin9KUDTPQhCKAww9u1oIttwIgAHzDOWTqZ7ssZwXIRENZp7CHpi13rc(NAmEmaVMG4Gp6vVTYpJ0efF(rmj25A5BZrPrliOU5qeUWq7bSR4mmIakGUCkUHcavWfGGntI5xXqivMmhF(XdZrTkeJbP6AzKkAiBjdvhe2(05ZvOe(EmWfwrbFfAyffriLg0ubeNykIAeA6xDX0BlYYbNSpofM9eMrnSwvZwKg0izaJX0e8IllHh2cqhujoiI4aTACeMjxqrkWB51ZQmaZfq2lfbQH7JvhrJ3)L3KgnVItuRRDlxlqDbVuKYynxu4BJesO5ryKdWx4tfJpfhny(EDLvu1WjctXqwsRSWUmoDgl2vafBxVSFNsY0FOFOA3yYpNemrRGCMVb0xeXL0HG)7vfWPaANmuv(raLG6QHuhNZdAvYxSGtkdb65nGZx4AYMa49fv9oKSICijHzBpqUgdRQGIofsHwIE2txeSGvWDgQ7Iy2TywkbGF1vkPP8aY6VVRaJDMZQKoB6))xY5nfCkVj78dhv5THYtNOyyGFijt6o(WXcRkxufAOrLLosubjP8jaEaaqqrC87Bjaz0ukgiUaPKyZyzm311Gbra90J18Nvj5iaIUKZBFWsopLGYgpuHHO(PAw6wgohR6GZkeScISkADtyo5K5FC9wHOIvF4v8WRr5c0UXCEiODrMJkOcWKNIgFE)hGbcmNY45IGVYVlje)gbV7Di(bz4siOkDufXdWVbjKJg6j5Rqqvjq8lbyXdfLqucQqiEm8JBnHJVbmiQw0O60pqaDqLT1fmHB2S0YLYutW8ruRAk5WDLk31g5WKJcP0Xu8ozR3R9KavUNS6V5hjhsWAqcaEG26wj3NrMj)0mT1Hizj5QIMvRLSYeV0zbaOPZxX(ALpjk2l(5Mbj3GTURDage2jKTE1AiOKSAwilbD5MLbAl0uCIAwRY3VUmo3iL1Fy0PQdmgDBMh8BLZxUcHKXyFT6yNXwIgJrA415wjcVg9ZIjR6kvyb9a8PXZqpibS8qWnbljeuf4zyT1QMKwgtvkV1lY1RJVd9bLJ)MgI7JDvjb1GTaSrbey9mUTAqYMdeAwmeIzqgwMa3aqv4VsGUeySXGxm52C0ZHhEDy7Om)gdqKiFdKW8CcIGOSG4NG50vPV3EovVt66qyg7FsPoHYI)KaOOPeoipbkYFzn6aVLkGZm(ck2x7G2lsvkQNr6tRwXNhbE2X8Ab7af1H0xhuhwJhyIHOa4RIcf5N1wfiX3t1VBgo7QSdIoQ)AIm6xsWxzXSKeSYF9PXyDIrolZvTqDmqpdWqLq2RkcLXxa5wCLWtShWwi8N4qP17kwtU59YklrvXGIfYw(OQW7n7XJmLkknnz87w7yNY4b3phiZrVzB3QJ2jKrjYrR1QAcJcXJdxlcZjo9weYr0g5v7gYitkNCKM8K2RjyblplI4t27bOAlZo6HeA8d0YHDL9h7QOH1crqKcjM1T)c6HcT4fLzIWGMbgYwGez52PgksGgvC)(u0js5kmk1OKRXygAiX9RF6rfJokcC1tFj6szv93rX2xnQX(g1GgvOfGjP63SLDMtnemJv63drIuqvaqlaoHTOX7xh4OMjE1yARtHRxRbQEwtGQT4TPfeveq7h4lkWTgpHxEdK0Xb4oCWDI7nf(fZc4K9vdbMswgE6Ro846hluwxfLl2XeTSwGOr(9sS(rO8aP1YwjQm6sqBoXHPqiIMciTqjAAUHeTOpj05CqHFLLWDts0tS(c)BLIdqFYw2FltVl2zbA7)djMvLyYvq1A75ig5TS8rocNvTIFAL1tupV28zzeGGlu3HdFbsrLp9yjIbjKIvQ7DvKtlt611v7wgclq4ikUAVHQIsGOpOjz6Hu56eBvDUNASLotOA2y059cXocs)iMQOMxVgcdYwpUUsxnfVmkjWyhOBsWuVUkUC82mvggz1Rcsd9F5vP5fqSQY9qYrTx0yi)SWaig(evO)QSnj6mMYzjTFOZlf9KsDMDkf90UPbaqLGPtuW1(QQyZbL0OWGLzrGgBAwOPZrp10DgV4woxSNP87451QxML9dvVAOhwtMJAkuBlKZafhS6IKQh)UuKY(KqUzP550WCJLYK3CnVTLYEBz30g6UnmA84oK)KRYb0qTNh87LaLaRAFc1Zypje6Kgzgla7k18ARqrKHfq5iJZne5)NrsJoyyQO8l28l(eIRf4RCU52GPtVkMlxNz3RhGRDaNKZwBSqyU)DcXoP1PV6oYSwo6gGn)U2QCWwKP7RgHPNsNwHk2Y(0StfV0UGkbvfuYFzkQIpgRAwrmpa(WT2aeurmg6BBacVc99Mt9fXPeIvrzuMJMkB4nkjhPK8lkXcjsaPUnEWOxQQsEAzHWhgg6QJCcuxvv7Wbvk3ZRCQ4uyY0jSrsOZIttNhdoerwc2XHUjpVsTON2zL0qfwNs)0UAn48earTFNzrD06VHzqCz8SRPOc0h2Bvh2cW9mbrJrnEOwfzscbN6zS4au62CO(SpjJ3FKnPYNbCL8iadfyJMvCeeNsW815B38fGYqkZPyS81ZmIE(mBjh04hb6nENGEJfzPxjH2sM6HG2FGKnPNiNT0T)YK2swIT1tqFvIOxnuSxsDlBDeI5xhTEnNQAEiJmHIkEuNOiu1SAShVjYzq53sPVDzrMAeJAu9ame0qogWjHQZbXDr7Kr9cbINxCfdSSUIhpVtuXTNmF)MMYkVg2n5NuBxjlDzj3tls2bePHQnpkFnRqeT1dVh(gB32E(lgJN(Vu13Ti7cLwy9aL8koqgmljCy2AM)JmmKJRjngrwhoY8S1cO4S1inYF3tNUEAfVZrYcoR6Yif74lRX8GBJcVgtj2BB4zTIEqnXwHUZ9wSzCd1W7UTxGjAPuDp9se)lyFvG7qlsB)fqZg7ApIRr)ZfLZa8Fr5sqkOp9KFTQ1IyyFjXWAaRRfoa3PomPqY4qvN4F7vr4(Z5OQITX)lBWUGse5cWFXLWqEnI6EFHDurq9Q9jBzQawqbUQCnhoKghunlDUQIEnJudbZD53ecTTv4dKYH(m97uorvIGyT(fkOI3AEYjK878cAZi1y7IoWYLPB1YAzeJ6dM57MM2QVrFoLEQei6F0mO2qzCUz)oixvDuROfAA2RF3fEx2zuKnynilmi)OPTBtKTdsJ980XYTyD(mhVs5yi0Rf9K2Qf7tJTEGEqgez3tNBuRE81qI0ZsljoKklgtIzbX9QpZhyPZIeLLx5RctPQLLGonjoCZrWHuJ(UYWRVdTTtdJ2BMxulGelZuSUEEeoNItYTri6G9AxucgsccwD5pgU5EIOmuN1pKwodTH)rE6Aw2CzPPHbpls0A)ig)SjU1n7FQrhuWxughWtMBUBQkXSTOIEheJKZaCjyEAzAgd(2GcwuCUAWeNOeBGXyXgC0CSdCoC7PFVoviGwIcCRY8OWscxP35yZsrbtk4pnHwuiyv9MR8Zm84a8c(kWY(Dymczqu65M1J6Vaw)EDH7lhrbSic4RcMDxqUCb40WLRXj2Gk)X6T1IxvZyf8OJmQQutMeIGaLTWslX)TLCP(6MgBtU9UUCjJCzr3wtpexpvL2VCD1o3QVDuODNVvUrMVSjK(kdomrtHINpRSO5uPbBgKB5fVXh5oBD1QTCSwxfwV)QwFtnGvgTJG6ncYBV2c)VTyU2cVXxLjDg0KAXUQdVhzcyJ2sBhvzsC01u3yGStANciJ0kDNyYCmHmTnYr0JguM(4z7zt9br0dCf9eVD08LRfn37S7Wc)kolWcW6y6KZ0Ik7mDobW(2AqfzLCTEr74t04VDWmuhseWx6eUAwBNdSUPFQXFZr4CHmqjtJ2Au83i3urhTG5zT8LY8lC1E5dCfSSrj00BDfnvsJsJ1RUdpqyPyWtV5xQcKZvfXAqJkxFwvgrFmNU9XqgzX92ghdDs8h(2rV(YlULLHnOoOXshgCWIc42rMV7legLFbUI(9YOmucr0BPSYI0vm68XfcczlbloB(43rkj45R)9PjWurV(fMs5VqODz98kHq499h9hd2g88A6Za(B1ezhNpBtIgtKFRRMZW4DmfYd8CBoWa4TBZOJZKH5eJPWJXMgyV5Joe9KhxXhMS3RmWV6ns)O6t5K5r2Rcz76r8ZKK0LPu5G)T1PtFSAt1XUP(kDmPbL3rVuAcZx7gM2bHAaA)rP2XzW4yJ4tRv)qLyc73SJ1K8ap1t3HjDGzFWp6iu1osigG15XfPJWDNW7CQtw3yMpmTspYT(AoqVIcU7HWoQLy0zrgtINgtUJW(jPbE6FsuhNCuzP3Fy8tttEpvTUt2XWZdf95tViCE(dJcUTyA2v88)AIiB3I9wXCi3ZApDMB9STLo4TRtJNw71AA8pUUybrV9tnOyU7nvlUYUwTCSfFUMYB2Saoi6ogIo09tW3k0DoKoyMlyxPO(meATNzQzp)mGU9Mb2ri(edw)pvtk7A4TtCb0AQqpdsg760f9yN4zaZ31wK8aVDix1J55NbAJNz6rtB8aVNFAJ(2qyaD37rHjK9ea4ZavFxhQPh4TdP6EMHNpQUJndYa8TSTsVOD)WuX)FXUWd8oKc7X(QERxzrHDD9R1rix1NagW082qRJqBhsj8yFDhqj8A745cYn38Cgq1(kPRJqu9Eg0aMUUcc7O22oGc8CwcVnF8BjfyeWVw0Qf4MJs3sSWRPJwy4L)W4thIN6(C(8Fmr5YdolDruZwGKFuD9J2FYlXtBEubF1byd(pX)bgzZhD91QNOE3JqgY)bwhM4jJ38XpZSfb)09uK7z9RN7SRv5brlM4(S93tka4lt8EE3wVQV0OCzvpwPAxUrB9dMOpSMMEhhb(hlPyec0h9A2J4L2U55Bsv2iqux6ZORVz1T0(bE7kwJlnc4eu3j3HIQahVffji)Ff3zGQR8Q(AryxQ5OSEaD)anXX27mPFh2MP93Y(c1Z)9o0zJ7zVz3NpY(P0L)4zJhiejw8P1npyNOXn6PkMsAHYtkT6xxF1l()d6s6Rt0obvYXHWUxdLtC3joz49338mXvT4KHwd78jJAE2zNQ8ELRuXZM8Q32BpTZwwpFCLpTU(86ernD9e6opeLm3RVNMlb0fbcQvJL0ZA8rjh6bedo707V3(okeG8G7VxRbtoB0y)yUz7clfk67nIV7V31fuW5tgVVL)sc07l2sCLdtYGEIJe15toziXL)pWBzo)eCZMFusWDF9dE(e1dD)HJoSVUEJKKxx0H7VVMXPSlZOCIi7a19iEqpV84E9fX200D63Fp9e9RmWbc)g)1Ep05NsBDR0jj1pu)MJhkx9UU2toFz4CvuW8OplqLqmIHpdf52XxCDBFQRYQrC)WjcYuxis73QmACUVBTo1z04cMtvaxB(835VBf9j9r1HPF9WHq3Xj0gCeDY(Axr92qGUa5uFUX9fN6R0UE4W4Y3VkFqz3dBYyRoSkB7(EVjvb63rSJ(sL4ACOEAQDQOg(jYFFtSxxkN(sLfNE9k6zuxRwSq5WCuV9AHU05L8U5VmjpY1VRvvFRhst(5tSEE9jcYH16Qybgp4XquEA)1fzxsmCh8r)r733QADoI84Z77Uoz4PKD)rdgOhCZztCuTUMCL(e7V6hBLkV3dGm7YMQQ90pF0rN4osWZMmYMWxhbIDTuRFLzXSTvNfK()s)7ZHdIS61gWbvhY)jJEuw2T)iJ)gDiRj0FFVycBwHqmroQfhkNk47wNn5E93ZBGe3F)EBPCDGUD7XoV1ACQBAqut4N8TiOj9qCxfIKH(BPTLafN2B4ObcvBZBrqcV76DcOj6PgcmfjPAS0qsG98gO8zuGY1UE(K8w(BBRwPeIE3v1ZVuzV(g0Nx1ZLjtDQOlRNgG5Kbn5nVRUx(mx7gfExnk(MQDOuvOjk5Y)38lCptsHXExqLPVAzF(KJ7PunxLBFVZgxL2OAeiMWw)6ZdbTMzgT)YdG03)mV)8mXv9nGZ8IUJmD7OSEoUkHmlq1KtAFQCDF19GMo8sjQ3dBo9V)I2ZS7jy84TranVI56kKpHefEI3RCws5QxHDTM1Ur1BfrKyhHWJ)MKZe1ATYgylA6qyO)E2fhBlNCClLtLBRTMat0VM4ChQ8KrNm0uixEPW95NQy8(XDrU52nvv4tEUA3o)yl2Mouex2A17MQXD5M5Q5vvffZXDiJf6vDBTz9M6lOnZ3uFNSzfVO21WMpfS8dORzSjvxcAnRkxwh83LYEuSh2X5DC3Mx7Mt2)8ksb6tXdUEdnryVG4V6RA1SqBI7UVBku1Y(46me9EWmRhH9jQCGmns3xpvTz56)(oP5DKdAZaB7yNF(XNuZEC35LvjEz0i5vBcH7dvoTdAoha11jD6GKdO2Gb275w1BFJ9w0fLCMNrdjGAVFEdCqrnAdKkdeUpT4NPzbONwZHyb5MZdUZxwUgCpbXRXcD9XvhbCPfMlm90iDDOnnBP0(ayE63BIUWa)LCXXwSSJVGeDHpUus8h8KT6JWcL2fLOAXkOljXbUM4kM22zeFkFdh6Kf7SaXw1QXrzCRlcHJkMFALVgLmYmkRZiPvfN(lCYe6uz90uQM(3JBEqRfBGiyhHrELfC7M1Bo2rESOJs775XhGjJhmx3HAaQOB59ErRz028l5gB35BcnzSu78BaWTZb2RtSGg6r7wjEaly2NA3OFpzALTWJx5d7TMWJjNZSEC9E01Z)nB5dIv8)Uf(68TW3ZGiIFBinUOupznvo79Cf3jTq6)U178jNiDq5)o1dRpS1G0NM92ELq(mtpt70BfV)Czf75MxiFQJdNKub39TCNpCVjaUTu9m33ZD41T0L))p]] ) +spec:RegisterPack( "Outlaw", 20241023.1, [[Hekili:T3Z6snUXs)SqLQ8IdGxBZLD3uyQk7MKtYEYTVWMt(hYYsJbfKLC0fiufLF2)6EUP5QKamNDZj5hzjinQNE67DpZ0CXKl(WfNhhwrU4hNoE6rtgp9Wrtoz6Ro8IZRUBn5IZxhgDD4LW)tw4k4F)P6Q0WBXhFxAEym(1L51frWRUQQAD5x8YxEzs1v1lgfLV6LLjRQtdRsYZIkcxwH)E0lV48f1jPvFx2flmN6lopSU6Q8Ilo)8KvVdazsCmHnosz0fNJJ7GjJpy6HFXM5tMmA8OJ38(nVN(4XV5GXVE)nZHFozm)NhdddH0M51RXzsBWim(58KY8SYMN)6dMEm7Jhpr(Xfvlckif5PPBMxDlj8ATXpfg3VqkxtIQ2m)7)QnZ)P1KmsXM5LKQQKSlvhmfJ(HWFphEDb5MKYeC2NVSiFfFYug843ad(xzi(8LjzjLxHGnkploPQ1p8evu6)eIF5M5VdqTBVIKrHqzsmParU5VT6RHNd8myefaZU8Q8QgG9QdM(AayF4kaf(Tqy2)nyKjzxCEAszvjY(rMjkh8Jurjsw4Ius8fVLXYkswJy6fN)TjxctW6IK8IKQ72m)lxTOgrQLiL4BPSzKWToVOQoJockClV4CagvaQgccKHPKSQrmHIG8MbpIpRBMpa)ULlhfwhhgHVPEnitfXWHq6CErfiV1gQ(BuAXxYHWM575bbHN)nHWdRqAZ3gUAfPyFgTTEfXySv54IppsfUHz4lsWXkOgjalndi)ZdVjmjfrphR)LHzbWCgCfDk1w78rix9oExFOEQVSEn9570gHDnilKNgGsoi19WUPU9MWfcuKWnZVceFqz)gbOKLWlak1QW)e00Qqb3nZrHj8fjvOinQUs(Z1jfpqQOpAWUoEfDM3m)SzoEhGAb83F)9oEFbzvycQfF6M5t3mFOxc6rBrcQo5HkSLFdPikewJV7Nl3Nrez2dMGpItMbZpRQxT1iKG3Hf5bRZtYQkhftwMeHifsg3LoV7r)F4tXFuNeDDqCr4TnGFpo4xuaUHqRzuGpCZ8px9lnqUIWSRPF6e6qhYymQ4cWmMj)6cWzukPSmd(VMz2pF6424tF3so5UUKA31bhRsAD2MVTiSeN8CyaO3LlVBFH1CvHDaXsHbBYnPJJpV)FiXCZ8VQaDJ3Wn3XhnRNmugsncrZGg(P85fKlrCayotaF2wK9graK8pXh7f)SwKjuETttGomI1g78K2yNFtyA6cQU9688ukL93RlHfqzo6qgC5wHgSoVQi5Ac3Yo5gQ)7q4vXmnrvd)sB(9XRimIGmYFwHUDBWFatGav4bKbV7vgRGhGVuxUnFncoXJl5RrWehUevNhK6buRLH1PvDgzaeNsfjmfT3GuK15LLjuIWUzaL8M6uqaIrvarPvjeGsLKXKEcRuyECO0P79Vldq6I61vmLPiGMfNFBgZhnWuZVf4HjRwrzPj4GzZqPWQy1vHvnt71GyOlNE5G)riaWMbEtiq4PE0VjmTg(bgvjkowgGAVbP5LWAKza0XRcyQd1fjK4GQcsyzDbHQN4DWxcM7IdwrsjeQ4pepi8(QWIljGg3I0WysWY06II7uCbPrR(pCCUKTQ3mhvtZiC7wIqIlQPJGk0(lSGKXx)28m8XGPgMKaBGFrZ3HSB6iZZsVJPAkMhM9Sf4Kadf1wcVn8oMEYBP0aiMuorGBK7FHRwi4A2Yffrq7DOCdBfZyF51Of41G0dL)ggJktaRjGLEttK(U872kp1biS13WCMa(xCsePrrZYnX3thfq4GHXwZSpNelDsCnHSMhc5ebPJLmGnhybUM5K8kQmDoLBtfAeEhSNtCrEdzeyKkfTPj4AkFivDiL)HX0peTOI8vPD79r2oZnkg(gjIMZdI6W3uvutq2CilvKquIoeNKvjLmVv0HPpfiUHrFYvJCRUWCKqvduP58yeKHJz(Ub(a2M5hk80TtB6NILTYC04ctnGVjSqq6gKcQxGcXtcB7x(4MeKrei5dsWR(yBa7kKNUn7jEWi1SQ1O7P5zxIokbg4ygY08US8IvHPI358ZoJfbXa)Syvrg6Y5edqHrURUCp8nAbxuwVgIy(k0SsHwCHwAYuHzMIKBntkgWK7VIeIb4rJpVKggyfGa4kIPEtvfUkeHuDwm(8JgxI6LiEs5BnrURIHoSEii7HxgIgkzFJUfabsNq1vXKaQiRqNMOXdQ5uiAg45RYrKNUq8Bi1mskukbIt5XzkDNo4dSa9qECysCaILq4GGD(gbyiS0jt5swgJrrcX4niH4Gwa6qHKetqbD5mcZUpOkhe(iYzLB(zjKrBLMqg(suOfcaYqs6hrDEDwkloq4PGhTu094n5jXcgR0O(TeTe9ycpSsoOk2iseHItmXiyTbFkB8uJ)r5iPH5UwnG0OCmO3CHR8ltZxeM6k2ZUTm0K2wBfPWFQdOI)uAirCWKSADbKCBCale2EK84arclmOD8yvXrgucK1Ftgs8dAvQNTjolrRPgCGWZqn8dOwVoGkdYJPLepkKBLKVYIevQtNUOqbXq)YxgSmSI4mbPLPH3s9CaHTTsXi2dOwr76kDkNv6GtDnTq(RLKMcBw2utNdMicMHwDhkfdZmajz8O9oykZ005IChmQG5iwLk5sLa4ZXOnie87BjXk0IngSddP4yZuEUAYk3HiGErvKHlPkVWaIU8YBEWYlDh1(a3gRa7nthRghIYNQzl8YOySwvoRR0kiW9K1nrrxs9HGRxbIYw9rxrIUgLlqRfXqSiyiqGrOkAz7kZrtoV7RumyHX2xExwe(nmE3Br8BZ8VHIGQ0rvepa)gKqozSbLuqaJavLa2VeGfPMvQAoOIGW9Xp(bvRAz(PiG2xyrDziZBErE9L8CxXewvRop1V(kvURnYHzphXsJVXfNTEV2tcu5E8DzOCeFibRbja4bARBLKJNyMDCZ0kdnZsYvfnfRLI6mV0zgaOtNzIX9IpX2ub8ZnZbRbBDxXjm4VJPw4vR8Ks1mkIcZqNYffG2cDkowTSg83VUoT0OMg)4Ktuhyk6SSm43RJVCfcjJX(k1XUi8s0ymsdVU0QsjyS70Qz4Qwjm6b4jJuSKevfewgbUjcZIavbsbwrwXK0Yye1erUixVo9o0huj(BAiUp2LqcQbBbyJciW6zQRKLLZvmqOdtHizdkW6i5gaQc)cb6AGXMcEX4BN2ah(11HTJ9bYyaSk90ajmn6GeiomiQjmhhva07u2Fl31bZm2)MMzokl(lmGst7fKNaf5VuIoWBPf(BbzjnaA7CdQYvkfSr25RwrItap7yzta7avYmhKHYH1geMyikaYQKiw6)UYxtQmNJozUcY2dNDv2blptTxtjJ(LemJ23RKGv5rEAmwNy0eMogA4VRkrsdhXMfj2XKMnNJNAeRegxrCU5SkJh8aSVq6474Rqxt0D51y1HZebHuqwcjjDLOc)4NpnAnl8dw9usCwSigsMwasf3XQiJ(SvixwSelXVrwWL6mgOBqgrSqnzxovfhI4v8XUinCyAK7Mt2xtAx70ezHLBiwWm78aSdmulM3Uh)ax7g0uTnpqVEc(LU7Qo0GWkmfm98L1fSaLwaM6wISB(g7hXYthvT)HC0nt9kmo2KSRXOkAOR7kF6OQjJsGGbOFj60zL87OucXOM6BudBuYwcgTKVrBXwsrEx(l0wJ)aeLsfTedAb3XStnDpzqLAM)vJ3vMu3GwdI9uLGyL(CvgPl)toc29RilRWJNrgP(giHK9X9mJ4e3B21amdHJ3tn8yA6ZWtp8GJKpMPIivY0YObIu5pQXAAHscuZjHRYRrrJlbZmzomtcr7ubPmYrtZkF0I6dtfZbf(qlr)M0QNz9f(3CohG(yTTyZKR06wMsniB7zejLIky5kCBT9WgJjNxDkhb6QwdsTcnYQWOx)JDT7Gum3rKamCIw2(J44fKPkwPW32u5ydhnYQ2DBiclqYijvSzJIWhOKN08Bj0hsTQZo5dLEQGx(cMEzJTM3XK5Oq6NWCivjyk0fKNEKvzudwLKfyCGgCubCJnC1i8lxLnQbhmmmRx3KgyE5v5Lvq0T8TL0rnAeJe0GsIcUSibuNYlIUYGh(bMPsmum6EsjYCLYAW0xRP7iFCnRO5YSevQtR9XwbavgMAsfr7Rm8rAN)hJosQULqy7op5osPuTZSyIOANi1bRvPJQq8KMCSGL0H1gwSGecQQyTqPkrK7Yv5zoFRRK8Bdr7cxMoD7LnLvbeEkiMcRko4pQbImUdez0JgPIWQ17CLmVMe8)oHB2bdmgfhXttLpzsP8RW3MBlMoDQyUMv0WzOaOKcyGZ6bOHXnNarzb5OUGTrorfxud1njtrHYFDg8ZRCvZKarnJ8xjcrOHyHXQsjbWh25jJHwNIX(2lawD(lPhyMt0mzQmhnfVOv3q8Wxy5yiplxyahIsDNxxX88GXz6WIK6kqSLg0kZEMWvGFbaMdFreXtm9AAKN5I0884uW1geBxiE4vDtEouTUM25s0m7RZP)0UGm48eaHDFNzDB0oJllGWRifxttIrFyVrDylbhTuiAmQPJ1k6swe4EUimniIsH0hQFdkTB9vjSFq9gpVHvJG4lcIxx2TLhabpVmnhdaNdhL67jFcIE(lAyprVPBf0BQf6nLLFVqQ1ro(9WiMI1cW8saJx2vcCFDg7i4OyZIEwQLHVvEDY61eATUJcPMXYP5jFRqZRVhJRwnzAwT63Yyf8i5(67KhnhjEUpgCyebdfKINXG4l7CdspDmisE(vHGv2vK04Er)6yRPKz2tLvkLWUjTbPTJI8lXJeIAgdgIwUYLRhOydaJtkxhwXceQvRNtTpKMACBHhkAvs8CABvDSYc(x5alVVsy)7lpRl3AFqC)xfOJ)RPkgSKcCKvOBcFBhewJCR9CUMprBZ(0JL3z9sMOyC(sjMhCBs01y6QpSdDP1Y8bDKfR0DJ3vfa1RK7VINYcCJurs5VcQY4HYKYKO)Z51lamBz9LywN0SXO64IRBXTxLGBoMJ6jwAucrscR4pV9dFnR6c0BQbff(LFglGhkByv)UWfuTvmzowQE7BFgbW8aPF(nCKkkKzrIwddrmg0cw0an6HhgFg)4aOorzXo4i1n0PGAKmfG)IlPWsjjZ1BDla3w9c7Suh70eXOTpkEuJI5WXzPsBdTnXbTasugNctqcajsWyeSkRbtdDubStKXPSDUQvNIBM)AnLhg460v1JwUME0bLNBYOgBFurDHuf78BYaUT8Uxdwpz5MDEcIo7Qi9yEWomRZCBNdIHphIAoEpRAJ9vy0PisRHrOkIqz2(LsKcfAEdzMalROBoUMLq2bo1vCjQLs1iHQhSmIBrGEepqdbQ1se)aiq0)rlqHgkJZdFIdYL4MbWoixnN9e37cf)absJTqdYSanE002U0W6HcYap37IwI64uhVs5YunOfvxxS1wdYR3S191JGMs29CsIKQhFtyfb8Es5qQSyml8LuUN8MRTSjoaLVkkNwK2m0HmLd3CrcPQrFFD013H1ULom6gv(IsZYIWKue4Cooj3MGOdEettYW4TrWQl)fI7Oilqz1z9RYRxGH18Es(6WIy(2HadErc7ckHy8ZM4w)mjRg1BfbC1gaXTyU7(kjKSuqVdsrYzaUeuCtymg8TbvHjPLQbjFSITzJXINRxZXo05WTN((4uXPT(w3Dc9WbYYZikNGtiCpuWKMuJMqlkeSsUHEFieVwtVGScSSFhg0qbKcAj5JpRFN(W95JOcwebKvblUlOKVaCA4Y14ulZudD3)2x0zfunJrKYEBMJM0Mz51WpIvDLsdReGo89ISt2TiH(qer1szGAgtFVordmIdWWlBYjvyzHFgKXRtArsmTWZndYTGH3If4UQsQr5CK7T236BKawz0oYk1iGUDAl)12lorRrI7Ra3oJosTSSYd6AL6jdHoAxFRk7eZLJYiJ3iVcB0OZfxlNFU5MLGFrVRTWU9mC2U4JDuTNdvRIQsb60RG6rQJswJh9XCC3JHQBHBRoogLgtXTHf4PLhKJP9cbqEdS(WRS2ly6IVazm)rnKkES4iVgwxLVkKEDpHC9YG0ThT59Fpn5iS9s8U8myQOV(fMu6xWy1wpxWbG3V7K)CyxWZRIHb87ubQNZNTcJXe5x3ZCgMU1OqBEVdMg)cQ(W4AhAGtYnaFK8gvzEjnfOzFVuNMKH(mLkx1ZoNo9XQnvh5MIRCKNmO5ooCKDbtNumrrf7e5vh5dEASTt15858tEWtS69ORZP0yWAt2XUzqQ19ZGd56oszc1tEwG6RCdv7W3mGT)4765myCTF8zOt)sbzc7xV1m(0k8uVNoM0Hq7RWtpHQ2L7XaSoV4p9eUBfENtJXYtU7dZCShdw(oONEffCFEq7svNdgJtXKXK45iM3ty)Km96rVERtDCYr577YdJFA6R7PQ15XE5JgEEOOpF6frXLpmkyxHbUT45FmMnRac5hUapN4z5S1XjJUVtJNJmT104FC9rJx)W9AqXCFYFTwawSfjHY8qy4Gg5yi6q3p9PtO7Ci9WksW2spWDLOmOYTxUQEQd0SNvVWm2jZnZQNq8rB1YtIupd0cpZ0tGwS9scSv4TvSG3QpSNbQ922BPhlspdyUNzABJ5BrUQNijEgOnB7yw8aVNFAJE93nGU7IZBczpXB9mq19mtpAQ(ZzKITodpFuDh7cIb4Bz)uEr7(5Pfd)fBdp8BrkShFf6NLolkSRUNypHSydYnGPzZmSNqBlsj84Pzlqj8y5(5dYnnosdOA3rj7jevBtOgW0vheT3wpFYuGNZkWT59Fhvbgb8RyNXaC)JOTfA4107Xz0f)40tgJT)Gss8pLP09WlYxMKkVDlLJKL)zVzVeV2)jvKv7JxdJz(VhoBEVRVwT1g4Ee8uk236YIpB6M3)zy)f8VgxNFpRF9uPDTk3pz5m3nzHbCbaFjMpW5zpd3CyXxAuTlXJvkwLB0w)(v6dRzLK3Uxe8yjftqG(OxZOsWNrB06vp(gyQe1BKmPqDR0Msvbo2OsPq(Vfn1t1vU4KxWmO0CLF3N2HLM5ydBMTBp2xV96yJ4g4VZnD60HmMSZ(3atG8FA2Nnn7ZEXnBuLvS2W5XU4NNYmNO3phgE)9oE6axF(Hd2DNw3mtoOS6)NNozYqpFR92nYbI)g9zlqtDNe5WXvh9eHGuC8VvDSYEjxXKGC0YauKky9E0zJV)(MNXAvPZgBnSZMnzGlHSgH0tpr5JuAgPNE4BU)EUqUkbJX((lxBISxK)81ZOTkuu)EhhR9b7SRNEY5ztMc8dRg85aRXNKDGhqm80tqcUzZ8eGmyOq7YzC6KPdOxBdVRjZJQSW0K3GUV)ExnKJZMnDpRqwOGEpdZnG1SbSlA4zZoEmve5)b74I(j4Mh0sobxLOE2m1MiXbtoyxTRXSi8vz1EU)Ej7sz35L6KA7T(WbE5Sd2LfuzZ5HNBEwVPzoKPx)XTtm6N(A1xg5e42I7zGTU3zthl8u6O5(C2LrXQOG515NHkryeFFgkOTLBDJDp1I0jzDirwkf6crA)MWEXz(6BJQZOrlwuvSwB(8F2I7e9PAHQdtVbjIq3rdmaCHD8EA)P9Wgc0wOO6Zn6yIQVsRbjsZRsKioAMYfNTV)bKQj1q6VJOh9lvcx0H(PP6PIE4Ni)HHYEDPCrAvwC6vkAGrffBXeLd7rd2Pf6sVxYBN)Ko9ix)Uwv7A9q6KF2mRNlVesomxlIdy6Whdr5P9NLPTjXWDmh7ozVDTQtQJao(8DDxHs8cNV3KHd1JP50zoQtAtUiFI9NlPoPY78aiZUmQQAq9ZNm6y3baE6Sj2eEzii2vXw(kZTrWwDMr6)O(N2ihez12HX(IoMXSjpkl72FKXFhJeoFENSrdjJB(FAnOB7wdAd3acGZrfBrDkMmQ1L4EWU74nQN7VFNokQ7qPsH3Y(QBNAkxzX4VMiOSXtUrEAsfynxtCXVBhNWnyv0(ztBiZ4JzJ8KI39T5CAIEQrPtd2vnCFi70bEJL)uAS8sNJFs2Un7A1YfB0piEd8lloyxd6ZHdCzuxNk6Y(UbyoEyJHPTvlY0CTBSPmQjA0uGgLsEntPid)fV5xAskm2xlKwix2Nn7iLA3nsPtyE6uRAatDYQdB9owjcAnBpA)5bbPV)3SXuAIR6BoRzVLKAWwp5x2Y3U9Gzw(Szh3(u5Qfr(GMoS4CdEyZP)9E2EMDpbtN2fb0SRo2xiFmvu4j2HhTKYv7wJTwyHb64ifz2AnVrt0Q1cVGhnyBIMjiuABInrvO3VgDht(Sjhp2uwL35K(8tuSb)46YIU92iI9XtFx8SJSO(6qH11dLByUrtv0C1COO8Bo6uowONOTjA9gzNs08nYMJOvWEA9drF6jL7t7aGZeDJWMvLlLC)h0Dp6NJ758oTFZR95B3)8YYZ4BKfJVru6J)T1VHQWu8PCy91TAcVY6JZRLIVl89Phzh3T5yLJW(IcpKheU7MkxBMG(u6613tARhsRZ7AVikdVK9HoM0MBsVZxwVgSbc(2dvpYoY3lU88cX4ZnTNXnqPnpDuQAamp9EQPlmWFfeCuy5TC)Z0f(4ID73tRTGatlqRpAc5hi9iq7HMdDnXcUw3mIpL79LozXoR3zdnZFvjLzS6OaWNiSNPe(UrHbMW19CAtYjtOxvPsxRYOAup6253FFAtLwe(aM7D2mOq8DFlbgipObcINTAOVct1sPa2PJM50GonX7PV)D6H83R38jXci3vJN80jh7mgLxp8PjRT9ADKBFEPDCl(yM76TtZ1uKrB93HBdwTNMazxcc2STpkTZXUzA70lUwdlQDhwpGfC4NATNXNmTYwE2)(6ATPpE8(DQ1JL7(5a)Do1heRy)n)tlvSNTuXNbre)MVAIws92IjI70t)kKhQK)gL4zZoMB7YFdseRRT1G0NMUmS6YT1wTfh(FxwXoU5f8N64c3XvWD3Yc9H7n5s0rv)C3KcXMM2f)))]] ) \ No newline at end of file