This tool allows you to quickly build your weightlifting programs, ensure you have proper weekly volume per muscle group, and balance it with the time you spend in a gym. You can build multi-week programs, plan your mesocycles, deload weeks, testing 1RM weeks, and see the weekly undulation of volume and intensity of each exercise on a graph.
Set the program name, create weeks and days, type the list of exercises for each day, putting each exercise on a new line, along with the number of sets and reps after slash (
/
) character, like this:
Squat /3x3-5
Romanian Deadlift /3x8
Autocomplete will help you with the exercise names. You can also create custom exercises if they're missing in the library.
On the right you'll see Weekly Stats, where you can see the number of sets per week per muscle group, whether you're in the recommended range (indicated by color), strength/hypertrophy split, and if you hover a mouse over the numbers - you'll see what exercises contribute to that number, and how much.
The exercise syntax supports RPEs , percentage of 1RM, rest timers, various progressive overload types, etc. Read more about the features in the docs!
When you're done, you can convert this program to Liftosaur program, and run what you planned in the gym, using the Liftosaur app!
To use this program:
Install Liftosaur app
Copy the link to this program by clicking on below
Import the link in the app, on the Choose Program screen.
03:55
999
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
///***Muscle Group IDs***/
/// 01 => Chest
/// 02 => Triceps
/// 03 => Back
/// 04 => Biceps
/// 05 => Calves
/// 06 => Quads
/// 07 => Hamstrings
/// 08 => Side Delts
/// 09 => Abs
/// 10 => Glutes
/// Full tag is created by combining digits from:
/// Day (1-2 digits) & Muscle Group ID (2-digits) & Index (2 digits, 0-based)
/// to create 5-6 digit long unique tag.
///
/// Ex:
/// 3 Quads exercises on day 4 would have tags:
/// 40600, 40601, 40602
/// 4 => 4th day of week
/// 06 => Quads Muscle Group ID
/// 00, 01, 02 => Index of exercise for muscle group in that day
//Lower your body slowly by hinging at the knees while keeping your torso straight, using your hamstrings to control the descent and pull yourself back up.
//**A2 SuperSet** Pull the cable handle upward toward your chest, keeping your elbows high and controlling the movement to target your shoulders and traps.
{"exportedProgram":{"customExercises":{"ycnfmjcn":{"name":"Incline shrug","types":["pull","upper"],"id":"ycnfmjcn","isDeleted":false,"meta":{"synergistMuscles":["Levator Scapulae","Trapezius Middle Fibers"],"targetMuscles":["Trapezius Upper Fibers"],"bodyParts":[],"sortedEquipment":[]}},"nkkrnugp":{"types":["push"],"isDeleted":false,"smallImageUrl":"https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.kettlebellkings.com%2Fblogs%2Fdefault-blog%2Fnordic-curls&psig=AOvVaw3I3qEAsFRIkbXkITtWm4Qw&ust=1733365480755000&source=images&cd=vfe&opi=89978449&ved=0CBMQjRxqFwoTCPCg2-KHjYoDFQAAAAAdAAAAABAE","meta":{"synergistMuscles":["Gluteus Maximus","Gastrocnemius","Rectus Abdominis","Obliques","Erector Spinae"],"targetMuscles":["Hamstrings"],"bodyParts":[],"sortedEquipment":[]},"largeImageUrl":"https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.kettlebellkings.com%2Fblogs%2Fdefault-blog%2Fnordic-curls&psig=AOvVaw3I3qEAsFRIkbXkITtWm4Qw&ust=1733365480755000&source=images&cd=vfe&opi=89978449&ved=0CBMQjRxqFwoTCPCg2-KHjYoDFQAAAAAdAAAAABAE","name":"Nordic Curls","id":"nkkrnugp"},"yfsdgjyj":{"name":"Chest Supported Row, Cable","types":["pull","upper"],"id":"yfsdgjyj","isDeleted":false,"meta":{"synergistMuscles":["Trapezius Middle Fibers","Trapezius Lower Fibers","Deltoid Posterior","Teres Major","Biceps Brachii","Brachialis","Brachioradialis"],"targetMuscles":["Latissimus Dorsi"],"bodyParts":[],"sortedEquipment":[]}},"zwanedzu":{"name":"Lat Pull-over","types":["pull","upper"],"id":"zwanedzu","isDeleted":false,"meta":{"synergistMuscles":["Teres Major","Deltoid Posterior","Triceps Brachii","Serratus Anterior"],"targetMuscles":[],"bodyParts":[],"sortedEquipment":[]}}},"program":{"deletedExercises":[],"planner":{"name":"Jeff Nippard PowerBuilding Phase 1 - 2 Week 4x days per week","weeks":[{"name":"Week 1","days":[{"name":"Full Body 1: Squat, OHP","exerciseText":"///***Muscle Group IDs***/\n/// 01 => Chest\n/// 02 => Triceps\n/// 03 => Back\n/// 04 => Biceps\n/// 05 => Calves\n/// 06 => Quads\n/// 07 => Hamstrings\n/// 08 => Side Delts\n/// 09 => Abs\n/// 10 => Glutes\n\n/// Full tag is created by combining digits from:\n/// Day (1-2 digits) & Muscle Group ID (2-digits) & Index (2 digits, 0-based)\n/// to create 5-6 digit long unique tag.\n///\n/// Ex:\n/// 3 Quads exercises on day 4 would have tags:\n/// 40600, 40601, 40602\n/// 4 => 4th day of week\n/// 06 => Quads Muscle Group ID\n/// 00, 01, 02 => Index of exercise for muscle group in that day\n\n///*****PROGRAM LOGIC*****///\ntLogic: Squat[1-3] / used: none / 10+x5 86.53% / warmup: 1x10 50%, 1x6 75%, 1x3 90% / update: custom() {~\n /// Minimum reps for any set to be in the hypertrophy range (based on RP\n /// guidelines of about 5-30 reps between 3-0 RIR for hypertrophy as of\n /// early 2024)\n var.MIN_HYP_REPS = 2\n\n /// Automatic down sets variables\n var.AUTO_DOWN_SET_MODE_DISABLED = 0 /// Don't create any down sets\n var.AUTO_DOWN_SET_MODE_HYP = 1 /// Create when near bottom of hypertrophy rep range (defined as var.MIN_HYP_REPS+1)\n var.AUTO_DOWN_SET_MODE_TARGET = 2 /// Create when at bottom of target rep range (i.e. state.targetMinReps)\n var.AUTO_DOWN_SET_PERCENTAGE = 0.80 /// Percentage of last completed set working weight to use for down set\n\n /// Bilateral exercise (both sides at the same time)\n var.TYPE_BILATERAL = 1\n /// Unilateral exercise (left/right side done as separate sets)\n var.TYPE_UNILATERAL = 2\n\n /// Minimum increment value that will be treated as a fixed weight rather than percentage\n var.FIXED_WEIGHT_INCR_MIN = 0.25\n\n /// Disable progression and match or beat system, just repeat targets\n var.PROG_TYPE_NONE = 0\n /// Linear - Add weight each week keeping a fixed single rep target after\n /// week 1, unless at the minimum for hypertrophy, in that case add 1 rep.\n var.PROG_TYPE_WEIGHT = 1\n /// Double - Add reps until hitting the top of the target rep range, then\n /// add weight and reset rep targets to the original range\n var.PROG_TYPE_REPS = 2\n\n /// Number of expected accumulation weeks to estimate RPE/RIR progression\n var.ACCUM_WEEKS = 4\n /// Week number to determine when progression vs deload logic applies (should\n /// be last week number defined in program)\n var.DELOAD_WEEK = 3\n\n /// Target RPE for week 1 of the program\n var.RPE_START = 7\n /// Target RPE for final accumulation week\n var.RPE_END = 10\n /// How much RPE should increase each week to reach RPE_END by final accumulation week\n var.RPE_INCR = (var.RPE_END-var.RPE_START)/(var.ACCUM_WEEKS-1)\n /// RPE value for deload and triggers recovery session logic to update all sets in that session\n var.RPE_RECOVERY = 3\n\n /// Prepare workout and handle set progression\n if (setIndex == 0) {\n /// Always start mesocycle with defined number of sets and values\n if (week == 1) {\n numberOfSets = state.startNumSets*state.type\n if (numberOfSets > 0) {\n /// Make all sets AMRAP during week 1 since we're targetting a rep range & RIR, keeping all other values the same\n sets(1, state.type, state.targetMinReps, state.targetMaxReps, 1, weights[1], 0, var.RPE_START, 0)\n sets(state.type+1, numberOfSets, var.MIN_HYP_REPS, var.MIN_HYP_REPS, 1, weights[1], 0, var.RPE_START, 0)\n }\n }\n /// Only do set progression during accumulation weeks\n else if (week < var.DELOAD_WEEK) {\n var.numSets = state.numSets\n if (state.progressType != var.PROG_TYPE_NONE) {\n var.numSets = (state.numSets + state.setsModifier)*state.type /// Double for unilateral exercises\n }\n /// Liftosaur doesn't like setting numberOfSets to 0 (causes errors) so the minimum sets must be 1 or 2\n /// depending on if the exercise is bilateral or unilateral\n var.numSets = var.numSets > 0 ? var.numSets : state.type\n numberOfSets = var.numSets\n \n var.rpe = 0\n var.amrap = 0\n /// Check if sets were added since last time\n if (numberOfSets/state.type > state.numSets) {\n /// Offset RPE by 1 increment since sets have increased and we don't want to progress sets & proximity\n /// to failure at the same time per critiques of RP methodolgy from sources like Eric Helms and MASS\n var.rpe = state.targetRpe - var.RPE_INCR\n var.rpe = var.rpe >= var.RPE_START ? var.rpe : var.RPE_START\n var.amrap = 1\n \n /// Undo previous weight progression when adding sets and doing linear progression so multiple variables\n /// are not progressing at once. Only reverse if we increased by a single increment over last time.\n if (state.progressType == var.PROG_TYPE_WEIGHT) {\n /// Handle reversing fixed increments\n if (state.increment >= var.FIXED_WEIGHT_INCR_MIN) {\n if (state.lastIncrement == state.increment) {\n weights -= state.lastIncrement\n }\n }\n /// Handle reversing percentage based increments\n else if (state.increment > 0) {\n var.lastWeight = weights[1] - state.lastIncrement\n var.lastWeightIncremented = roundWeight(var.lastWeight + (var.lastWeight*state.increment))\n if (var.lastWeightIncremented == weights[1]) {\n weights -= state.lastIncrement\n }\n }\n }\n\n /// Configure sets added today as RPE target & AMRAP and keeping weight of previous last set\n /// sets(fromIndex, toIndex, minReps, maxReps, isAmrap, weight, timer, rpe, shouldLogRpe)\n sets((state.numSets*state.type)+1, numberOfSets, var.MIN_HYP_REPS, var.MIN_HYP_REPS, 1, weights[state.numSets*state.type], 0, var.rpe, 0) \n }\n /// First set is a rep range (not just single rep increase from double progression) so show the RPE targets\n /// and make it prompt for completed reps\n else if (numberOfSets > 0 && minReps[1] < reps[1]-1) {\n var.rpe = state.targetRpe\n var.amrap = 1\n }\n\n /// Configure pre-existing sets in case we are targetting an RPE today instead of just match/beat previous session.\n /// Useful as a signal that I shouldn't just hit rep targets today and instead try to focus on hitting RPE/RIR\n for (var.set in reps) {\n if (var.set <= (state.numSets*state.type)) {\n sets(var.set, var.set, minReps[var.set], reps[var.set], var.amrap, weights[var.set], 0, var.rpe, 0)\n }\n }\n }\n /// Deload week\n else {\n var.deloadSets = floor((state.numSets*state.type) * state.deloadSetsRatio)\n /// Ensure we have an even number of deload sets for unilateral exercises (erring on side of doing less)\n if (var.deloadSets % state.type != 0) {\n var.deloadSets = var.deloadSets - 1\n }\n /// Ensure deloadSets is not 0 or negative (Liftosaur doesn't like that)\n if (var.deloadSets <= 0) {\n var.deloadSets = state.type\n }\n numberOfSets = var.deloadSets\n }\n }\n else if (week < var.DELOAD_WEEK) {\n /// Check if recovery session is being done/started by having marked a set as low\n /// RPE, and if so, we want to use that same low weight and RPE for the rest of the\n /// session\n if (RPE[setIndex] > 0 && RPE[setIndex] <= var.RPE_RECOVERY) {\n RPE = RPE[setIndex]\n weights = weights[setIndex]\n }\n /// Create or undo automatic down sets if we still have some sets remaining to do. Only do this\n /// on even numbered sets if exercise is unilateral (so we don't switch weight having only done\n /// 1 side) and if we were withing the target reps on the last done set\n else if (state.autoDownSetMode != var.AUTO_DOWN_SET_MODE_DISABLED && numberOfSets >= setIndex+state.type && setIndex % state.type == 0\n && completedReps[setIndex] >= minReps[setIndex]) {\n var.autoDownSetRepCutoff = state.autoDownSetMode == var.AUTO_DOWN_SET_MODE_HYP ? var.MIN_HYP_REPS+1 : state.targetMinReps\n /// If last completed set was at or below the minimum rep cut-off then drop weight of all following sets\n if (completedReps[setIndex] <= var.autoDownSetRepCutoff) {\n for (var.set in weights) {\n /// Only drop weight for remaining sets if weight is same as last completed set\n /// as we may have already dropped weight in previous weeks\n if (var.set > setIndex && weights[var.set] == weights[setIndex]) {\n weights[var.set] = weights[var.set] * var.AUTO_DOWN_SET_PERCENTAGE\n }\n }\n }\n /// If next set is a down set but we have room to drop reps and remain in the desired rep zone make the\n /// weight the same as the last completed set and add an RPE/RIR target (i.e. undo down set)\n else if (weights[setIndex+1] < weights[setIndex]) {\n sets(setIndex+1, setIndex+state.type, var.MIN_HYP_REPS, completedReps[setIndex], 1, weights[setIndex], 0, state.targetRpe, 0)\n }\n }\n }\n~} / progress: custom(increment: 5lb, progressType: 1, targetMinReps: 5, targetMaxReps: 10, startNumSets: 2, type: 1, deloadWeightRatio: 0.5, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 0, ratingIndex: 0, numRatingExercises: 0, lastIncrement: 0lb, numSets: 1, setsModifier: 0, mesoWeek: 1, targetRpe: 7, autoDownSetMode: 1) {~\n///***PARAMETERS***///\n /// increment: weight to progress by when targets are hit depending on progressType. Treated as fixed lb/kg value if at least FIXED_WEIGHT_INCR_MIN or higher, otherwise, decimal percentage. Always include lb/kg label even when setting a percentage.\n /// progressType: 0 = none, 1 = linear progression (add increment each time targets are hit), 2 = double progression (add reps until hitting top of rep range, then increment)\n /// targetMinReps: minimum target reps for week 1 set 1 (following sets can drop below this)\n /// targetMaxReps: max target reps for week 1 set 1\n /// startNumSets: how many sets to start with in week 1 (unilateral exercises will show double this amount)\n /// type: movement lateral type. 1 = bilateral, 2 = unilateral. Unilateral exercises will display double numSets in workout, 1 set per side.\n /// deloadWeightRatio: percent to change weight by for deload week (decimal 0 to 1)\n /// deloadRepsRatio: percent to change reps by for deload week (decimal 0 to 1)\n /// deloadSetsRatio: percent to change number of sets by for deload week (decimal 0 to 1)\n /// rating: set progression rating, prompted for during workout. Evalute recovery from previous session & performance/workload today and set value to add/subtract sets to exercises for the same muscle group from previous session (typically -2 to 2). 0 keeps set volume the same.\n /// rateGroup: target group of tagged exercises to apply rating. Typically 3-4 digits: first 1-2 are day in week, last 2 are muscle group ID.\n /// numRatingExercises: how many exercises are in that muscle group target where rating applies (i.e. basically how many exercises for a given muscle group are in the preceding session and have the rateGroup tag prefix)\n /// ratingIndex: index of exercise in group to apply next rating to (combined with rateGroup to create full tag, then gets incremented after applying rating so rating may apply to different exercise next time)\n /// lastIncrement: how much weight was changed after completing the last working session (automatically set by code and used in some calculations to undo progression when adding sets)\n /// numSets: last completed number of sets in previous working session, basis for how many sets to do again next time\n /// setsModifier: number of sets to add/remove relative to last done number of sets (numSets). Usually updated via code based on the in-workout rating prompt during the following session in a microcycle which hits the same muscle group to modify volume for future sessions.\n /// mesoWeek: current week in mesocycle\n /// targetRpe: underlying estimated RPE/RIR target for current working week based on meso length and start/end RPE targets (mainly displayed when new sets are added or rep ranges are used)\n /// autoDownSetMode: automatically reduce weight on remaining sets (i.e. create down sets based on var.AUTO_DOWN_SET_PERCENTAGE) when last completed set is at or below certain reps: 0 => disabled, 1 => hypertrophy rep range (MIN_HYP_REPS + 1), 2 => target rep range minimum (state.targetMinReps)\n\n///***CONSTANTS***///\n /// Minimum reps for any set to be in the hypertrophy range (based on RP\n /// guidelines of about 5-30 reps between 3-0 RIR for hypertrophy as of\n /// early 2024)\n var.MIN_HYP_REPS = 2\n \n /// Disable progression and match or beat system, just repeat targets\n var.PROG_TYPE_NONE = 0\n /// Linear - Add weight each week keeping a fixed single rep target after\n /// week 1, unless at/under the minimum for hypertrophy, in that case add\n /// reps.\n var.PROG_TYPE_WEIGHT = 1\n /// Double - Add reps until hitting the top of the target rep range, then\n /// add weight and reset rep targets to the original range\n var.PROG_TYPE_REPS = 2\n\n /// Bilateral exercise (both sides at the same time)\n var.TYPE_BILATERAL = 1\n /// Unilateral exercise (left/right side done as separate sets)\n var.TYPE_UNILATERAL = 2\n\n /// Maximum weight increment value that will be treated as a percentage rather than fixed weight\n var.FIXED_WEIGHT_INCR_MIN = 0.25\n\n /// Number of expected accumulation weeks to control RPE/RIR progression. Can\n /// be different than number of weeks defined in the program to allow smaller\n /// programs where weeks are manually repeated or larger programs to allow\n /// autoregulating mesocycle length while still having weeks auto-progress.\n var.ACCUM_WEEKS = 4\n /// Week number to determine when progression vs deload logic applies (should\n /// be same as number of weeks defined in program since deload should be the\n /// final week)\n var.DELOAD_WEEK = 3\n\n /// Target RPE for week 1 of the program\n var.RPE_START = 7\n /// Target RPE for final accumulation week\n var.RPE_END = 10\n /// How much RPE should increase each week to reach RPE_END by final accumulation week\n var.RPE_INCR = (var.RPE_END-var.RPE_START)/(var.ACCUM_WEEKS-1)\n /// RPE that indicates a recovery or deload session/set\n var.RPE_RECOVERY = 3\n\n /// Defines the threshold where we consider weights to be used during deload\n /// still \"heavy\" and thus should do logic to update each deload set weight\n ///\n /// Typically we just want to use the same weight for all deload sets if the\n /// weight is reduced substantially for deload, but if deload weight is still\n /// pretty heavy, and working weights bewteen sets were different during\n /// accumulation, we probably also want to use different weights in each deload\n /// set.\n var.DELOAD_WEIGHT_RATIO_HEAVY = 0.8\n\n///***Useful Variables***///\n /// Ensure type is valid\n state.type = state.type == var.TYPE_BILATERAL || state.type == var.TYPE_UNILATERAL ? \n state.type : var.TYPE_BILATERAL\n\n /// Ensure we have a non-negative starting number of sets\n if (state.startNumSets < 0) {\n state.startNumSets = state.type\n }\n\n /// Ensure the progress type is valid, default is weight progression\n state.progressType = state.progressType == var.PROG_TYPE_NONE\n || state.progressType == var.PROG_TYPE_WEIGHT || state.progressType == var.PROG_TYPE_REPS ?\n state.progressType : var.PROG_TYPE_WEIGHT\n\n /// Indicates if current day was for recovery\n var.recoveryDay = numberOfSets <= 0 || (RPE[numberOfSets] > 0 && RPE[numberOfSets] <= var.RPE_RECOVERY)\n\n /// Indicates if current day was a real working day that may produce progression\n var.progressDay = !var.recoveryDay && state.progressType != var.PROG_TYPE_NONE\n && completedReps[1] > 0\n\n /// If it's program week 1, and this isn't the first time we're doing the program,\n /// we may have skipped deload so ensure variables are set to restart progression\n if (week == 1) {\n state.mesoWeek = 1\n state.lastIncrement = 0lb\n state.ratingIndex = 0\n if (var.progressDay) {\n state.startNumSets = numberOfSets/state.type\n }\n state.numSets = state.startNumSets\n state.setsModifier = 0\n state.targetRpe = var.RPE_START\n }\n\n///***Now we do progression and setup future workouts/meso***///\n\n /// Still in acumulation weeks\n if (week < var.DELOAD_WEEK) {\n /// Ensure target RPE for this session is set correctly based on if sets were added\n /// compared to last time\n state.targetRpe = numberOfSets/state.type <= state.numSets ? state.targetRpe : state.targetRpe - var.RPE_INCR\n\n var.sumLastReps = 0 /// sum of minimum rep targets for same num sets as last time (i.e last session performance or target range)\n var.sumCompletedReps = 0 /// sum of completed reps today for same num sets as last time\n var.newSetsAboveMin = 1 /// signifies all new sets added today completed reps above minimum reps\n for (var.set in completedReps) {\n /// Compare sets from previous session to todays performance to determine if we\n /// at least matched performance/volume in those initial pre-existing sets\n if (var.set <= state.numSets) {\n var.sumLastReps = var.sumLastReps + minReps[var.set]\n var.sumCompletedReps = var.sumCompletedReps + completedReps[var.set]\n }\n /// Check that newly added sets were above the minium reps\n else if (completedReps[var.set] < minReps[var.set]) {\n var.newSetsAboveMin = 0\n }\n }\n\n /// Signifies if rep targets were hit in this session.\n ///\n /// We compare sums to allow missing the rep target on one set but then make up for\n /// it in another set so long as it balances out (i.e. set 1 did 2 LESS reps than\n /// target, but then set 2 did 2+ MORE reps than target which balances it out and we\n /// still should progress as volume should be about the same)\n var.hitReps = completedReps[1] >= state.targetMinReps\n && var.sumCompletedReps >= var.sumLastReps && var.newSetsAboveMin\n\n /// Potentially change weight by more than 1 increment in a few situations where\n /// we will set this value to indicate the reason and number of extra increments.\n /// <= -1 => weight was too heavy, so decreased by 1 or more increments\n /// == 0 => weight was inappropriate, but we manually corrected by last set today\n /// == 1 => weight was appropriate, normal progression logic applies\n /// >= 2 => weight was too light, so increased by multiple increments\n var.incrementModifier = 1\n \n /// Indicates if the first set progressed by weight or reps so later sets can\n /// follow. Will be modified in main progression logic loop below\n var.firstSetProgType = state.progressType\n \n /// Only record/update program if this was not a recovery session/set\n if (!var.recoveryDay) {\n /// Loop through sets and do main progression logic\n for (var.set in completedReps) {\n var.weight = weights[var.set]\n var.reps = reps[var.set]\n var.minReps = minReps[var.set]\n /// Save values from today before incrementing for setting up deload later\n var.todaysWeight = weights[var.set]\n var.todaysReps = var.reps\n\n /// Do unique logic for set 1\n if (var.set == 1) { \n if (var.progressDay) {\n /// We didn't hit targets in week 1, weight is too heavy for the desired rep\n /// range for this mesocycle so we need to decrease it\n if (week == 1 && completedReps[var.set] < state.targetMinReps) {\n /// Check if we manually lowered weights in later sets so we can re-use that\n if (weights[numberOfSets] < weights[var.set]) {\n var.weight = weights[numberOfSets]\n var.incrementModifier = 0\n }\n else {\n var.incrementModifier = completedReps[var.set] - state.targetMinReps\n /// Fixed weight increments\n if (state.increment >= var.FIXED_WEIGHT_INCR_MIN) {\n var.weight = weights[var.set] + (var.incrementModifier*state.increment)\n }\n /// Percentage based increments\n else {\n var.weight = weights[var.set] + (weights[var.set]*state.increment)*var.incrementModifier\n }\n }\n }\n else if (var.hitReps) {\n var.reps = completedReps[var.set]\n var.minReps = var.reps\n var.todaysReps = var.reps\n \n /// Linear progression\n if (state.progressType == var.PROG_TYPE_WEIGHT) {\n /// Options for indicating weight was too light and should be adjusted heavier:\n /// 1. Do more reps than the target rep range max\n /// 2. Manually mark as 1.5+ lower RPE than this week's target\n if (var.reps > state.targetMaxReps || (RPE[var.set] > 0 && RPE[var.set] <= state.targetRpe-1.5)) {\n /// Check if we manually adjusted weight in later sets during this workout and\n /// just use the weight from the last set as the new weight for all sets\n if (weights[numberOfSets] > weights[var.set]) {\n var.weight = weights[numberOfSets]\n var.incrementModifier = 0\n }\n /// Otherwise, modify the number of increments we add for next time\n else {\n var.diff = var.reps > state.targetMaxReps ?\n var.reps - state.targetMaxReps : state.targetRpe - RPE[var.set]\n var.incrementModifier = var.diff + 1 /// Add 1 to ensure change larger than 1 increment\n }\n }\n \n /// Only increase weight if we aren't around the minimum reps for hypertrophy\n if (var.reps > var.MIN_HYP_REPS+1) {\n /// Fixed weight increments\n if (state.increment >= var.FIXED_WEIGHT_INCR_MIN) {\n var.weight = var.weight + state.increment*var.incrementModifier\n }\n /// Percentage based increments\n else {\n var.weight = var.weight + (var.weight*state.increment)*var.incrementModifier\n }\n var.firstSetProgType = var.PROG_TYPE_WEIGHT\n }\n /// Otherwise increase reps instead so we have some room to drop reps in\n /// following sets without dropping weight since this is still the 1st set\n else {\n var.reps = var.reps + 1\n var.firstSetProgType = var.PROG_TYPE_REPS\n }\n }\n /// Double progression\n else if (var.reps >= state.targetMaxReps) {\n /// Check if we did way more reps than target double progression range.\n ///\n /// Increase weight by multiple increments if we did 1+ deviation\n /// above max reps based on the target rep range size.\n ///\n /// Ex: Min/Max = 10-15 reps => rep range size = 5, so if you do 5+ more\n /// reps than the max (i.e. 20+ reps), we need to increase weight\n /// by more than 1 increment to likely bring you back to the 10-15 range\n var.repRangeSize = state.targetMaxReps - state.targetMinReps\n if (var.reps >= state.targetMaxReps + var.repRangeSize) {\n var.repsAboveMax = var.reps - state.targetMaxReps\n var.deviations = floor(var.repsAboveMax / var.repRangeSize)\n var.incrementModifier = var.deviations + 1 /// Add 1 to ensure change larger than 1 increment\n }\n \n /// Fixed weight increments\n if (state.increment >= var.FIXED_WEIGHT_INCR_MIN) {\n var.weight = var.weight + state.increment*var.incrementModifier\n }\n /// Percentage based increments\n else {\n var.weight = var.weight + (var.weight*state.increment)*var.incrementModifier\n }\n var.minReps = state.targetMinReps\n var.reps = state.targetMaxReps\n var.firstSetProgType = var.PROG_TYPE_WEIGHT\n }\n else {\n var.reps = var.reps + 1\n var.firstSetProgType = var.PROG_TYPE_REPS\n }\n }\n \n /// Ensure weight is positive, Liftosaur doesn't seem to like negative values\n var.weight = var.weight >= 0lb ? var.weight : 0lb\n \n state.lastIncrement = roundWeight(var.weight) - weights[var.set]\n if (state.lastIncrement < 0) {\n state.lastIncrement = 0lb\n }\n }\n \n /// Default is all sets will use same weight from set 1 and must be bewteen\n /// the minimum hypertrophy range reps up to the target rep range max\n weights = roundWeight(var.weight)\n minReps = var.MIN_HYP_REPS\n reps = state.targetMaxReps\n \n /// Set match or beat targets if weight was appropriate for target reps\n if (var.incrementModifier == 1) {\n minReps[var.set] = var.minReps\n reps[var.set] = var.reps \n }\n /// Otherwise, we've made a larger adjustment to the weight so set 1 uses the target\n /// rep range minimum as the bottom bound\n else {\n minReps[var.set] = state.targetMinReps\n /// Unilateral exercises use a separate set for each side so set 2 is also\n /// the \"first\" set for one side and should be set similarly\n if (state.type == var.TYPE_UNILATERAL && numberOfSets >= 2) {\n minReps[2] = state.targetMinReps\n }\n }\n }\n /// Repeat simpler logic for rest of the sets\n else {\n /// Only calculate changes for secondary sets if we had a normal increment based\n /// on set 1's performance\n if (var.progressDay) {\n if (var.hitReps) {\n var.reps = completedReps[var.set]\n var.minReps = var.reps\n var.todaysReps = var.reps\n \n if ((state.progressType == var.PROG_TYPE_WEIGHT && var.firstSetProgType == var.PROG_TYPE_WEIGHT)\n || var.reps >= state.targetMaxReps || var.firstSetProgType == var.PROG_TYPE_WEIGHT) {\n /// Fixed weight increments\n if (state.increment >= var.FIXED_WEIGHT_INCR_MIN) {\n var.weight = var.weight + state.increment\n }\n /// Percentage based increments\n else {\n var.weight = var.weight + (var.weight*state.increment)\n }\n \n /// If progressing by reps ensure the rep range target is set since weight has changed\n if (state.progressType == var.PROG_TYPE_REPS) {\n /// Unilateral exercise should use target rep range for 2nd set as well, otherwise hypertrophy range\n var.minReps = var.set == 2 && state.type == var.TYPE_UNILATERAL ? state.targetMinReps : var.MIN_HYP_REPS\n var.reps = state.targetMaxReps\n }\n }\n else {\n var.reps = var.reps + 1\n } \n }\n }\n \n var.weight = var.weight >= 0lb ? var.weight : 0lb\n \n /// Override default values set earlier so we can match/beat performance\n if (var.incrementModifier == 1) {\n if (weights[var.set] != weights[1]) {\n weights[var.set] = roundWeight(var.weight)\n }\n minReps[var.set] = var.minReps\n reps[var.set] = var.reps\n }\n \n /// Only set potentially different weight for a deload set if we are still\n /// using heavy weight for deload week. Otherwise, we'll just keep using the\n /// same weight from set 1 for all deload sets to avoid the hassle of changing\n /// weights when it's already pretty light/easy\n var.todaysWeight = state.deloadWeightRatio >= var.DELOAD_WEIGHT_RATIO_HEAVY ?\n weights[var.set] : weights[1]\n }\n\n /// Update deload week based on todays performance if we hit targets in case\n /// we deload early. We update the value for all days rather than just this\n /// day of the week since some exercises may change days during deloads\n if (var.hitReps) {\n weights[var.DELOAD_WEEK:*:*:var.set] = roundWeight(var.todaysWeight * state.deloadWeightRatio)\n minReps[var.DELOAD_WEEK:*:*:var.set] = floor(var.todaysReps * state.deloadRepsRatio)\n reps[var.DELOAD_WEEK:*:*:var.set] = floor(var.todaysReps * state.deloadRepsRatio)\n }\n }\n }\n\n /// Ensure sets modifier is 0 so we don't add sets. Must be done before processing the\n /// rating since you may be rating this same exercise.\n state.setsModifier = 0\n \n if (state.progressType != var.PROG_TYPE_NONE) {\n if (var.progressDay) {\n state.numSets = numberOfSets/state.type\n }\n /// Do set progression if rating and target exercise values are set\n if (state.rating != 0 && state.rateGroup != 0 && state.numRatingExercises != 0) {\n /// Combine group + index to create full unique tag\n var.tag = state.rateGroup*100 + state.ratingIndex\n state[var.tag].setsModifier = state.rating\n state.ratingIndex = (state.ratingIndex + 1) % state.numRatingExercises\n }\n }\n \n /// Calculate weight for start of next meso based on performance achieved today\n /// since we could deload early or do recovery weeks or whatnot and restart a meso\n /// at any time.\n /// Logic here just ensures the weight we pick keeps us in the target rep range\n /// for week 1 of the meso based on the last non-recovery weight and RIR/RPE we\n /// did.\n if (var.progressDay && var.hitReps == 1) { \n /// RIR value where we want to start the meso\n var.startRir = 10 - floor(var.RPE_START)\n /// Based on RPE of set 1 today we can convert to how many reps-in-reserve\n var.rir = 10 - ceil(RPE[1] > 0 ? RPE[1] : state.targetRpe)\n /// Calculate an estimate for maximum number of reps possible at todays weight.\n /// Add 1 rep to assume we adapt and get a little stronger after this session.\n /// i.e. Estimate how many reps would be 0 RIR/failure with todays weight\n var.estMaxRepsAfterRecovering = completedReps[1] + var.rir + 1\n \n /// Determine estimate for how many reps would correspond to the starting RIR\n /// i.e. how many reps would be the target given the RIR we want to start at\n var.startRepEstimate = var.estMaxRepsAfterRecovering - var.startRir\n\n /// Next, based on how many starting reps we estimated, determine how many\n /// increments to modify the weight to keep us within our target rep range\n /// for week 1 set 1.\n var.numIncrements = 0\n \n /// If estimated reps for a starting RIR set with todays weight would be at or higher\n /// than the target max reps we can increase weight to start next meso\n if (var.startRepEstimate >= state.targetMaxReps) {\n /// Linear progression: increase by 1 increment for every rep above the target max\n /// since we assume that every increment drops about 1 rep worth of strength\n if (state.progressType == var.PROG_TYPE_WEIGHT) {\n /// + 1 to ensure we land more inside in the target range and not exactly\n /// at the max reps\n var.numIncrements = (var.startRepEstimate - state.targetMaxReps) + 1\n }\n /// Double progression: just go up by 1 weight increment\n else {\n var.numIncrements = 1\n }\n }\n /// Otherwise, if starting RIR w/todays weight would be below the minimum reps we\n /// need to decrease the weight to ensure we get more reps next time to put us in\n /// the target rep range (numIncrements will be negative)\n else if (var.startRepEstimate < state.targetMinReps) {\n /// Linear progression: Decrease by 1 increment for every rep below the target min\n /// since we assume that every decrement adds about 1 rep worth of strength\n if (state.progressType == var.PROG_TYPE_WEIGHT) {\n var.numIncrements = (var.startRepEstimate - state.targetMinReps)\n }\n /// Double progression: just go down by 1 weight increment\n else {\n var.numIncrements = -1\n }\n }\n\n /// Set starting weight for next meso\n var.weight = roundWeight(weights[1] + var.numIncrements*state.increment)\n weights[1:*:*:*] = var.weight >= 0lb ? var.weight : 0lb\n }\n\n /// Set RPE target for next session\n var.nextRpe = var.progressDay ? state.targetRpe + var.RPE_INCR : state.targetRpe\n var.nextRpe = var.nextRpe <= var.RPE_END ? var.nextRpe : var.RPE_END\n var.nextRpe = var.nextRpe >= var.RPE_START ? var.nextRpe : var.RPE_START\n state.targetRpe = var.nextRpe\n\n state.mesoWeek += 1\n }\n /// Deload week is done, so reset start of meso targets\n else {\n state.mesoWeek = 1\n state.lastIncrement = 0lb\n state.ratingIndex = 0\n state.numSets = state.startNumSets\n state.setsModifier = 0\n state.targetRpe = var.RPE_START\n }\n\n /// Always ensure default state of keeping sets the same for related target exercise(s)\n state.rating = 0\n RPE[var.DELOAD_WEEK:*:*:*] = var.RPE_RECOVERY\n~}\n\n//Focus on technique and explosive power! Keep back angle and form consistant across all reps\nFull-Body1:Squat, Barbell[1,1-2] / ...tLogic: Squat / 105lb / id: tags(10600) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 706, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Reset each rep(Don't Touch and press)\nOverhead Press[2,1-3] / ...tLogic: Squat / 100lb / id: tags(10800) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 608, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Muscle-Mind connection with hamstrings\nRomanian Deadlift, Barbell[3,1-3] / ...tLogic: Squat / 185lb / / id: tags(10700) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 507, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Focus on driving your elbow back toward your hip while keeping your shoulder blade retracted to engage your lats fully\nBent Over One Arm Row, Dumbbell[4,1-3] / ...tLogic: Squat / 30lb / id: tags(10300) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 12, targetMaxReps: 15, startNumSets: 3, type: 2, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 603, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Keep elbow locked in place, squeeze the dumbbellhandle hard!\nHammer Curl[5,1-3] / ...tLogic: Squat / 20lb / warmup: none / id: tags(10400) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 20, targetMaxReps: 25, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 804, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Keep your spine slightly rounded and focus on curling your torso down by engaging your abs, not pulling with your arms\nCable Crunch, Cable[6,1-3] / ...tLogic: Squat / 60lb / warmup: none / id: tags(10900) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 20, targetMaxReps: 25, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 709, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }"},{"name":"Full Body 2: Deadlift, Bench Press","exerciseText":"//Conventional or sumo: use whatever stance you are stronger with\nDeadlift, Barbell[1,1-2] / ...tLogic: Squat / 250lb / id: tags(21000) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 110, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Quick 1 second pause on the chest on each rep\nBench Press, Barbell[2,1-3] / ...tLogic: Squat / 150lb / id: tags(20100) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 101, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//1 second isometric hold at the top of each rep\nHip Abductor, Cable[3,1-3] / ...tLogic: Squat / 20lb / warmup: nonesqu/ id: tags(21300) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 15, targetMaxReps: 20, startNumSets: 3, type: 2, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 713, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**Weighted** 1.5x shoulder width grip, pull your chest to the bar\nPull Up[4,1-3] / ...tLogic: Squat / 205lb / id: tags(21200) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 5, targetMaxReps: 8, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 103, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Lower the weight by bending only your elbows, keeping your upper arms steady, and focus on fully extending your triceps at the top.\nSkullcrusher, Barbell[5,1-3] / ...tLogic: Squat / 60lb / warmup: none / id: tags(20200) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 10, targetMaxReps: 12, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 802, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//1-2 second pause at the bottom of each rep, **FULL ROM**\nStanding Calf Raise, Barbell[5,1-3] / ...tLogic: Squat / 185lb / warmup: none / id: tags(20500) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 8, targetMaxReps: 10, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 705, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }"},{"name":"Full Body 3: Squat, Dip","exerciseText":"//Maintain tight pressure in your upper back against the bar\nSquat, Barbell[1,1-3] / ...tLogic: Squat / 185lb / id: tags(30600) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 106, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//*Weighted** Lower yourself with control until your elbows are at 90 degrees, then push back up, keeping tension on your triceps throughout\nTriceps Dip[2,1-3] / ...tLogic: Squat / 150lb / id: tags(31000) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 8, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 201, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Knees to chest, controlled reps,straighten legs more to increase difficulty \nHanging Leg Raise[3,1-3] / ...tLogic: Squat / 0lb / / id: tags(30900) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 10, targetMaxReps: 12, startNumSets: 3, type: 2, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 109, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Keep your arms slightly bent, and pull the weight over your chest using your lats, maintaining control through the full range of motion.\nLat Pull-over[4,1-3] / ...tLogic: Squat / 25lb / id: tags(30300) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 12, targetMaxReps: 15, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 0, ratingIndex: 0, numRatingExercises: 0, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Do each are one at a time rather than alternating, start with weaker arm\nIncline Curl, Dumbbell[5,1-3] / ...tLogic: Squat / 30lb / warmup: none / id: tags(30400) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 12, targetMaxReps: 15, startNumSets: 3, type: 2, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 104, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Retract shoulder blades as you pull\nFace Pull[5,1-3] / ...tLogic: Squat / 185lb / warmup: none / id: tags(30301) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 10, targetMaxReps: 12, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 203, ratingIndex: 0, numRatingExercises: 2, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }"},{"name":"Full Body 4: Deadlift, Bench Press","exerciseText":"//**PAUSE** 3 second pause right after the plates come off the ground.\nPause:Deadlift, Barbell[1,1-3] / ...tLogic: Squat / 185lb / id: tags(41000) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 2, targetMaxReps: 4, startNumSets: 4, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 310, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**PAUSE** 2-3 second pause on the chest\nPause:Bench Press, Barbell[2,1-3] / ...tLogic: Squat / 150lb / id: tags(40100) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 301, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Pull the handles toward your chest while keeping your back straight and shoulders retracted to target your upper back and lats.\nChest Supported Row, Cable[3,1-3] / ...tLogic: Squat / 30lb /warmup:none / id: tags(41200) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 10, targetMaxReps: 12, startNumSets: 3, type: 2, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 303, rateGroup: 812, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Lower your body slowly by hinging at the knees while keeping your torso straight, using your hamstrings to control the descent and pull yourself back up.\nNordic Curls[4,1-3] / ...tLogic: Squat / 0lb / warmup:none / id: tags(40700) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 6, targetMaxReps: 8, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 107, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Lift your shoulders straight up toward your ears, squeezing your traps hard at the top, and lower them back down with control.\nShrug, Dumbbell[5,1-3] / ...tLogic: Squat / 40lb / warmup: none / id: tags(41100) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 20, targetMaxReps: 25, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating+: 0, rateGroup: 811, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 3, setsModifier: 0, mesoWeek: 2, targetRpe: 8, autoDownSetMode: 1) { ...tLogic: Squat }\n"},{"name":"Lower #1","exerciseText":"//Brace your lats, chest tall, pull the slack out of the bar before lifting\nLower1:Deadlift, Barbell[1,1-3] / ...tLogic: Squat / 185lb / id: tags(51000) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 5, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 410, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Sit back onto the box with a wide stance, keeping your chest up and knees out, then drive through your heels to stand back up.\nBox Squat, Barbell[2,1-3] / ...tLogic: Squat / 150lb / id: tags(50600) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 4, targetMaxReps: 8, startNumSets: 2, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 306, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Curl your heels toward your glutes by contracting your hamstrings, then lower the weight back down with control.\nLying Leg Curl, Leverage Machine[3,1-3] / ...tLogic: Squat / 70lb / warmup:none / id: tags(50700) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 6, targetMaxReps: 8, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 407, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//1-2 second pause at the bottom of each rep, full squeeze at the top\nLower1:Standing Calf Raise, Barbell[4,1-3] / ...tLogic: Squat / 185lb / warmup:none / id: tags(50500) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 8, targetMaxReps: 10, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 205, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Knees to chest, controlled reps, straighten legs more to increase difficulty\nLower1:Hanging Leg Raise[5,1-3] / ...tLogic: Squat / 0lb / id: tags(50900) / warmup:none / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 10, targetMaxReps: 12, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 309, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n\n"},{"name":"Upper #1","exerciseText":"//Set up a comfertalbe arch, slight pause on the chest, eplode up\nUpper1:Bench Press, Barbell[1,1-3] / ...tLogic: Squat / 135lb / id: tags(60100) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 4, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 301, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Underhand grip, pull your chest to the bar, add weight if needed to hit RPE\nChin Up, Bodyweight[2,1-3] / ...tLogic: Squat / 0lb / warmup:none / id: tags(61200) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 5, targetMaxReps: 10, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 0, ratingIndex: 0, numRatingExercises: 0, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n// Squeeze your glutes to keep your torso upright, press up and slightly back\nUpper1:Overhead Press, Barbell[3,1-3] / ...tLogic: Squat / 90lb / id: tags(60800) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 0, ratingIndex: 0, numRatingExercises: 0, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Lie on incline bench, dow row - pull with lats\nIncline Row, Dumbbell[4,1-3] / ...tLogic: Squat / 40lb / warmup:none / id: tags(61201) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 12, targetMaxReps: 15, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 412, rateGroup: 0, ratingIndex: 0, numRatingExercises: 2, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**A1 SuperSet** Retract shoulder blades as you pull\nA1-Upper1:Face Pull[5,1-3] / ...tLogic: Squat / 20lb / warmup:none / id: tags(60300) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 15, targetMaxReps: 20, startNumSets: 2, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 303, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**A2 SuperSet** Arc the dumbbells out, mind-muscle connection with middle fibers\nLateral Raise, Dumbbell[6,1-3] / ...tLogic: Squat / 20lb / warmup:none / id: tags(60801) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 15, targetMaxReps: 20, startNumSets: 2, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 108, ratingIndex: 0, numRatingExercises: 0, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**B1 SuperSet** Pin your elbow against your upper leg or the back of a bench\nConcentration Curl, Dumbbell[7,1-3] / ...tLogic: Squat / 30lb / warmup:none / id: tags(60400) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 12, targetMaxReps: 15, startNumSets: 3, type: 2, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 304, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**B2 SuperSet** Squeeze tricepts to move the weight\nTriceps Pushdown, Cable[8,1-3] / ...tLogic: Squat / 30lb / id: tags(60200) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 12, targetMaxReps: 15, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 202, ratingIndex: 0, numRatingExercises: 2, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n"},{"name":"Lower #2","exerciseText":"//Sit back and down, keep your upper back tight to the bar\nLower2:Squat, Barbell[1,1-3] / ...tLogic: Squat / 185lb / id: tags(70600) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 0, ratingIndex: 0, numRatingExercises: 0, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**Wide Grip** Mind-muscle connection with hamstrings\nLower2:Romanian Deadlift, Barbell[2,1-3] / ...tLogic: Squat / 135lb / id: tags(71000) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 5, targetMaxReps: 10, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 510, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Mind muscle connection with hamstrings\nLeg Extension, Leverage Machine[3,1-3] / ...tLogic: Squat / 90lb / warmup:none / id: tags(70601) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 12, targetMaxReps: 15, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 506, ratingIndex: 0, numRatingExercises: 2, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Emphasize mind muscle connection\nLower2:Standing Calf Raise, Barbell[4,1-3] / ...tLogic: Squat / 185lb / warmup:none / id: tags(70500) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 15, targetMaxReps: 20, startNumSets: 4, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 505, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Point toes slightly outward, mind-muscle connection with glutes\nLower2:Hip Abductor, Cable[5,1-3] / ...tLogic: Squat / 15lb / warmup:none / id: tags(713000) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 15, targetMaxReps: 20, startNumSets: 3, type: 2, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 213, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Think about squeezing your upper and lower abs together\nLower2:Cable Crunch, Cable[6,1-3] / ...tLogic: Squat / 60lb / warmup:none / id: tags(70900) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 12, targetMaxReps: 15, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 509, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n"},{"name":"Upper #2","exerciseText":"//Press the bar or dumbbells upward from your chest at an incline, keeping your elbows slightly tucked and controlling the descent\nIncline Bench Press, Barbell[1,1-3] / ...tLogic: Squat / 135lb / id: tags(80100) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 10, targetMaxReps: 12, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 601, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//Be mindful of lower back fatigue, stay light, minimize cheating\nPendlay Row, Barbell[2,1-3] / ...tLogic: Squat / 100lb / id: tags(81200) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 8, targetMaxReps: 10, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 0, ratingIndex: 0, numRatingExercises: 0, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**weighted** Lower yourself with control until your elbows are at 90 degrees, then push back up, keeping tension on your triceps throughout.\nUpper2:Triceps Dip[3,1-3] / ...tLogic: Squat / 0lb / id: tags(80200) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 3, targetMaxReps: 6, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 0, ratingIndex: 0, numRatingExercises: 0, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**Eccentric-accentuated** 3 second negitive on every rep, maintain controlled form for all reps\nLower2:Pull Up, Bodyweight[4,1-3] / ...tLogic: Squat / 0lb / id: tags(81201) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 5, targetMaxReps: 10+, startNumSets: 2, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 0, ratingIndex: 0, numRatingExercises: 0, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**A1 SuperSet** Lie face down against an incline bench and do shrugs - Full ROM and squeeze\nIncline shrug[5,1-3] / ...tLogic: Squat / 50lb / warmup:none / id: tags(81100) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 15, targetMaxReps: 20, startNumSets: 2, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 411, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**A2 SuperSet** Pull the cable handle upward toward your chest, keeping your elbows high and controlling the movement to target your shoulders and traps.\nUpright Row, Cable[6,1-3] / ...tLogic: Squat / 40lb / warmup:none / id: tags(81202) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 15, targetMaxReps: 20, startNumSets: 2, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 612, ratingIndex: 0, numRatingExercises: 2, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n\n//**B1 SuperSet** Focus on mind-muscle connection\nBicep Curl, EZ Bar[7,1-3] / ...tLogic: Squat / 65lb / warmup:none / id: tags(80400) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 12, targetMaxReps: 15, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 604, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n//**B2 SuperSet** Constant tension on tricepts\nUpper2:Skullcrusher, Barbell[8,1-3] / ...tLogic: Squat / 60lb / id: tags(80201) / update: custom() { ...tLogic: Squat } / progress: custom(increment: 5lb, progressType: 2, targetMinReps: 8, targetMaxReps: 10, startNumSets: 3, type: 1, deloadWeightRatio: 0.6, deloadRepsRatio: 1, deloadSetsRatio: 1, rating: 0, rateGroup: 602, ratingIndex: 0, numRatingExercises: 1, lastIncrement: 5lb, numSets: 4, setsModifier: 0, mesoWeek: 3, targetRpe: 9, autoDownSetMode: 1) { ...tLogic: Squat }\n"}]},{"name":"Week 2","days":[{"name":"Day 1","exerciseText":""},{"name":"Day 2","exerciseText":""},{"name":"Day 3","exerciseText":""},{"name":"Day 4","exerciseText":""},{"name":"Day 5","exerciseText":""},{"name":"Day 6","exerciseText":""},{"name":"Day 7","exerciseText":""},{"name":"Day 8","exerciseText":""}]},{"name":"Week 3","days":[{"name":"Day 1","exerciseText":"Squat[1] / ...tLogic: Squat / 3+x10 60lb+ @3, 7+x5-10 105lb+ @3"},{"name":"Day 2","exerciseText":""},{"name":"Day 3","exerciseText":""},{"name":"Day 4","exerciseText":""},{"name":"Day 5","exerciseText":""},{"name":"Day 6","exerciseText":""},{"name":"Day 7","exerciseText":""},{"name":"Day 8","exerciseText":""}]}]},"exercises":[],"days":[],"deletedDays":[],"url":"","isMultiweek":true,"name":"Jeff Nippard PowerBuilding Phase 1 - 2 Week 4x days per week","weeks":[],"nextDay":20,"description":"","id":"vvrmfepx","tags":[],"deletedWeeks":[],"author":""},"version":"20250306192146","settings":{"timers":{"warmup":90,"workout":180,"reminder":900},"units":"lb"}},"shouldSyncProgram":false,"isMobile":false,"revisions":[]}