diff --git a/packages/default.nix b/packages/default.nix new file mode 100755 index 0000000..da65bd2 --- /dev/null +++ b/packages/default.nix @@ -0,0 +1,11 @@ +let + importList = + let + content = builtins.readDir ./.; + dirContent = builtins.filter (n: content.${n} == "directory") (builtins.attrNames content); + in + map (name: ./. + "/${name}") dirContent; +in +{ + imports = importList; +} diff --git a/packages/website/default.nix b/packages/website/default.nix new file mode 100755 index 0000000..abe8e66 --- /dev/null +++ b/packages/website/default.nix @@ -0,0 +1,51 @@ +{ + inputs, + lib, + ... +}: +{ + perSystem = + { pkgs, system, ... }: + { + devShells.website = pkgs.mkShell { + buildInputs = builtins.attrValues { + inherit (pkgs) nil; + inherit (inputs.nixpkgs-stable.legacyPackages.${system}.elmPackages) + elm + elm-format + elm-land + elm-language-server + elm-review + elm-test + ; + }; + }; + + packages = + let + pkgs' = pkgs.extend inputs.mkElmDerivation.overlays.mkElmDerivation; + in + { + website = pkgs'.mkElmDerivation { + name = "upRootNutrition"; + src = ./frontend; + + nativeBuildInputs = builtins.attrValues { + inherit (inputs.nixpkgs-stable.legacyPackages.${system}.elmPackages) + elm + elm-land + ; + }; + + buildPhase = '' + ${lib.getExe pkgs'.elm-land} build + ''; + + installPhase = '' + mkdir -p "$out" + cp -r dist/* "$out/" + ''; + }; + }; + }; +} diff --git a/packages/website/frontend/.gitignore b/packages/website/frontend/.gitignore new file mode 100755 index 0000000..7295c4f --- /dev/null +++ b/packages/website/frontend/.gitignore @@ -0,0 +1,7 @@ +/dist +/.elm-land +/.env +/elm-stuff +/node_modules +.DS_Store +*.pem \ No newline at end of file diff --git a/packages/website/frontend/README.md b/packages/website/frontend/README.md new file mode 100755 index 0000000..35f05d1 --- /dev/null +++ b/packages/website/frontend/README.md @@ -0,0 +1,17 @@ +# frontend + +> Built with [Elm Land](https://elm.land) 馃寛 + +## Local development + +```bash +# Requires Node.js v18+ (https://nodejs.org) +npx elm-land server +``` + +## Deploying to production + +Elm Land projects are most commonly deployed as static websites. + +Please visit [the "Deployment" guide](https://elm.land/guide/deploying) to learn more +about deploying your app for free using Netlify or Vercel. diff --git a/packages/website/frontend/elm-land.json b/packages/website/frontend/elm-land.json new file mode 100755 index 0000000..0e22621 --- /dev/null +++ b/packages/website/frontend/elm-land.json @@ -0,0 +1,76 @@ +{ + "app": { + "elm": { + "development": { "debugger": true }, + "production": { "debugger": false } + }, + "env": [], + "html": { + "attributes": { + "html": { "lang": "en" }, + "head": {} + }, + "title": "upRootNutrition", + "meta": [ + { "charset": "UTF-8" }, + { "http-equiv": "X-UA-Compatible", "content": "IE=edge" }, + { + "name": "viewport", + "content": "width=device-width, initial-scale=1.0" + }, + { + "property": "og:title", + "content": "upRootNutrition" + }, + { + "property": "og:image", + "content": "/assets/meta.png" + }, + { + "property": "og:url", + "content": "https://upRootNutrition.com" + }, + { + "name": "twitter:card", + "content": "summary_large_image" + }, + { + "name": "twitter:title", + "content": "upRootNutrition" + }, + { + "name": "twitter:description", + "content": "upRootNutrition is an open source project, created by Nick Hiebert, designed to elevate the quality of nutrition science communication in online discourse. By applying more rigorous systems of reasoning, such as formal logic and semantic analysis, upRootNutrition aims to cut through the misinformation and sophistry that are endemic on social media." + }, + { + "name": "twitter:image", + "content": "https://upRootNutrition.com/assets/twittercard.png" + }, + { + "name": "twitter:site", + "content": "@upRootNutrition" + }, + { + "name": "twitter:creator", + "content": "@upRootNutrition" + }, + { + "property": "og:description", + "content": "upRootNutrition is an open source project, created by Nick Hiebert, designed to elevate the quality of nutrition science communication in online discourse. By applying more rigorous systems of reasoning, such as formal logic and semantic analysis, upRootNutrition aims to cut through the misinformation and sophistry that are endemic on social media." + } + ], + "link": [ + { "rel": "icon", "type": "png", "href": "/assets/favicon.png" }, + { "rel": "stylesheet", "href": "/styles.css" }, + { + "rel": "stylesheet", + "href": "https://fonts.googleapis.com/css2?family=League+Spartan:wght@100..900&display=swap" + } + ], + "script": [] + }, + "router": { + "useHashRouting": false + } + } +} diff --git a/packages/website/frontend/elm.json b/packages/website/frontend/elm.json new file mode 100755 index 0000000..ee3a344 --- /dev/null +++ b/packages/website/frontend/elm.json @@ -0,0 +1,35 @@ +{ + "type": "application", + "source-directories": [ + "src", + ".elm-land/src" + ], + "elm-version": "0.19.1", + "dependencies": { + "direct": { + "dillonkearns/elm-markdown": "7.0.1", + "elm/browser": "1.0.2", + "elm/core": "1.0.5", + "elm/html": "1.0.0", + "elm/json": "1.1.3", + "elm/svg": "1.0.1", + "elm/url": "1.0.0", + "elm-community/list-extra": "8.7.0", + "elm-community/maybe-extra": "5.3.0", + "hecrj/html-parser": "2.4.0", + "juliusl/elm-ui-hexcolor": "1.0.0", + "mdgriffith/elm-ui": "1.1.8" + }, + "indirect": { + "elm/parser": "1.1.0", + "elm/regex": "1.0.0", + "elm/time": "1.0.0", + "elm/virtual-dom": "1.0.3", + "rtfeldman/elm-hex": "1.0.0" + } + }, + "test-dependencies": { + "direct": {}, + "indirect": {} + } +} diff --git a/packages/website/frontend/scripts/directoryconverter.sh b/packages/website/frontend/scripts/directoryconverter.sh new file mode 100755 index 0000000..8e4db34 --- /dev/null +++ b/packages/website/frontend/scripts/directoryconverter.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +for file in *; do + # Check if it's a file (not a directory) + if [ -f "$file" ]; then + # Get filename without extension + dirname="${file%.*}" + + # Create directory if it doesn't exist + if [ ! -d "$dirname" ]; then + mkdir "$dirname" + echo "Created directory: $dirname" + fi + + # Move the file into its directory + mv "$file" "$dirname/" + echo "Moved $file to $dirname/" + fi +done \ No newline at end of file diff --git a/packages/website/frontend/scripts/imagedownloader.sh b/packages/website/frontend/scripts/imagedownloader.sh new file mode 100755 index 0000000..d0300fa --- /dev/null +++ b/packages/website/frontend/scripts/imagedownloader.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash + +if [ $# -eq 0 ]; then + echo "Usage: $0 " + exit 1 +fi + +# Create a directory to store images +mkdir -p downloaded_images +cd downloaded_images + +# Counter for image naming, start at 1 +counter=1 + +# Extract image URLs and download +wget -q -O- "$1" | grep -oE 'https?://[^"]+\.(jpg|jpeg|png|gif)' | while read -r img_url; do + # Download image + wget -q "$img_url" -O "temp_image" + + # Get image width using file size and basic check (approximate) + width=$(file "temp_image" | grep -oE '[0-9]+ x [0-9]+' | cut -d' ' -f1) + + # Check if width is over 400 + if [ -n "$width" ] && [ "$width" -gt 400 ]; then + # Rename to sequential PNG starting from image1.png + mv "temp_image" "image$counter.png" + ((counter++)) + else + # Remove images that don't meet criteria + rm "temp_image" + fi +done + +echo "Downloaded $((counter-1)) images larger than 400px wide" \ No newline at end of file diff --git a/packages/website/frontend/src/Config/Data/Hashtags/Helpers.elm b/packages/website/frontend/src/Config/Data/Hashtags/Helpers.elm new file mode 100755 index 0000000..4fec7b5 --- /dev/null +++ b/packages/website/frontend/src/Config/Data/Hashtags/Helpers.elm @@ -0,0 +1,1282 @@ +module Config.Data.Hashtags.Helpers exposing (hashtagList) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) + + +hashtagList : Hashtags -> String +hashtagList hashtag = + case hashtag of + Agriculture -> + "#agriculture" + + AgricultureAnimal -> + "#animal_agirculture" + + AgriculturePlant -> + "#plant_agirculture" + + AllCauseMortality -> + "#all_cause_mortality" + + AncestryAntagonisticPleiotropy -> + "#antogonistic_pleiotropy" + + AncestryHunterGatherers -> + "#hunter_gatherers" + + AncestryPrimitiveCultures -> + "#primitive_cultures" + + Animals -> + "#animals" + + AnimalsBivalves -> + "#vbivalves" + + AnimalsCats -> + "#cats" + + AnimalsChickens -> + "#chickens" + + AnimalsCrustaceans -> + "#crustaceans" + + AnimalsDogs -> + "#dogs" + + AnimalsOrca -> + "#orcas" + + AnimalsPredators -> + "#predators" + + AnimalsShellfish -> + "#shellfish" + + Assays4E6 -> + "#4E6_assay" + + AssaysE06 -> + "#E06_assay" + + BloodGlucose -> + "#blood_glucose" + + BloodLipids -> + "#blood_lipids" + + BloodLipidsCholesterol -> + "#cholesterol" + + BloodLipidsTriglycerides -> + "#triglycerides" + + Cancer -> + "#cancer" + + CancerBladderCancer -> + "#bladder_cancer" + + CancerBreastCancer -> + "#breast_cancer" + + CancerColonCancer -> + "#colon_cancer" + + CancerColorectalCancer -> + "#colorectal_cancer" + + CancerDistalColonCancer -> + "#distal_colon_cancer" + + CancerEndometrialCancer -> + "#endometrial_cancer" + + CancerEsophagealCancer -> + "#esophageal_cancer" + + CancerGasticCancer -> + "#gastric_cancer" + + CancerLungCancer -> + "#lung_cancer" + + CancerOvarianCancer -> + "#ovarian_cancer" + + CancerPancreaticCancer -> + "#pancreatic_cancer" + + CancerProstateCancer -> + "#prostate_cancer" + + CancerRectalCancer -> + "#rectal_cancer" + + CancerSkinCancer -> + "#skin_cancer" + + CancerStomachCancer -> + "#stomach_cancer" + + Carbohydrates -> + "#carbohydrates" + + CarbohydratesFructose -> + "#fructose" + + CarbohydratesGlucose -> + "#glucose" + + CarbohydratesSugar -> + "#sugar" + + Cuckery -> + "#cuckery" + + CuckeryFlatEarth -> + "#flat_earth_retardation" + + CuckeryLMHR -> + "#lmhr_retardation" + + CuckPapers -> + "#published_retardation" + + Cucks -> + "#cucks" + + Debate -> + "#debate" + + DebateArguments -> + "#debate_arguments" + + DebateCoursework -> + "#debate_coursework" + + DebateModeration -> + "#debate_moderation" + + DebateOpponents -> + "#debate_opponents" + + DietsAncestral -> + "#ancestral_diet" + + DietsAnimalBased -> + "#animal_based_diet" + + DietsCarnivore -> + "#carnivore_diet" + + DietsDietaryGuidelines -> + "#dietary_guidelines_diet" + + DietsEucaloric -> + "#eucaloric_diet" + + DietsFasting -> + "#fasting_diet" + + DietsHighCarbohydrate -> + "#high_carb_diet" + + DietsHypercaloric -> + "#hypercaloric_diet" + + DietsHypocaloric -> + "#hypocaloric_diet" + + DietsKeto -> + "#ketogenic_diet" + + DietsLowCarbohydrate -> + "#low_carb_diet" + + DietsMediterraneanDiet -> + "#mediterranean_diet" + + DietsPaleo -> + "#paleo_diet" + + DietsPlantBased -> + "#plant_based_diet" + + DietsStandardAmericanDiet -> + "#standard_american_diet" + + DietsTimeRestrictedFeeding -> + "#time_restricted_feeding" + + DietsVegetarian -> + "#vegetarian_diet" + + Disease -> + "#disease" + + DiseaseAFib -> + "#afib" + + DiseaseAnemia -> + "#anemia" + + DiseaseArrythmia -> + "#arrythmia" + + DiseaseAtherosclerosis -> + "#atherosclerosis" + + DiseaseAutoImmune -> + "#auto_immune_disease" + + DiseaseBronchitis -> + "#bronchitis" + + DiseaseCardiovascular -> + "#cardiovascular_disease" + + DiseaseCeliacDisease -> + "#celiac_disease" + + DiseaseCholestasis -> + "#cholestasis" + + DiseaseCognitiveDecline -> + "#cognitive_decline" + + DiseaseColonPolyops -> + "#colon_polyps" + + DiseaseConstipation -> + "#constipation" + + DiseaseCoronaryArteryCalcification -> + "#coronary_artery_calcification" + + DiseaseCoronaryHeart -> + "#coronary_heart_disease" + + DiseaseCOVID19 -> + "#covid19" + + DiseaseDementia -> + "#dementia" + + DiseaseDepression -> + "#depression" + + DiseaseDisability -> + "#disability" + + DiseaseDiverticularDisease -> + "#diverticular_disease" + + DiseaseEmphysema -> + "#emphysema" + + DiseaseErectileDysfunction -> + "#erectile_dysfunction" + + DiseaseFracture -> + "#bone_fracture" + + DiseaseFrailty -> + "#frailty" + + DiseaseGallstones -> + "#gallstones" + + DiseaseHeartAttack -> + "#heart_attack" + + DiseaseHeartDisease -> + "#heart_disease" + + DiseaseHeartFailure -> + "#heart_failure" + + DiseaseHyperphagia -> + "#hyperphagia" + + DiseaseHypertensions -> + "#hypertension" + + DiseaseHypothyroidism -> + "#hypothyroidism" + + DiseaseInflammation -> + "#inflammation" + + DiseaseKidneyDisease -> + "#kidney_disease" + + DiseaseKidneyStones -> + "#kidney_stones" + + DiseaseLupus -> + "#lupus" + + DiseaseMacularDegeneration -> + "#macular_degeneration" + + DiseaseMentalIllness -> + "#mental_illness" + + DiseaseMetabolicSyndrome -> + "#metabolic_syndrome" + + DiseaseMoodDisorders -> + "#mood_disorder" + + DiseaseMortality -> + "#mortality" + + DiseaseNAFLD -> + "#non_alcoholic_fatty_liver_disease" + + DiseaseNeuroDegenerative -> + "#neurodegeneration" + + DiseaseNutrientDeficiency -> + "#nutrient_deficiency" + + DiseaseObesity -> + "#obesity" + + DiseaseOsteoporosis -> + "#osteoporosis" + + DiseaseOverweight -> + "#overweight" + + DiseaseRespiratoryDisease -> + "#respiratory_disease" + + DiseaseSchizophrenia -> + "#schizophrenia" + + DiseaseScurvy -> + "#scurvy" + + DiseaseSepsis -> + "#sepsis" + + DiseaseStenosis -> + "#stenosis" + + DiseaseStroke -> + "#stroke" + + DiseaseSunburn -> + "#sunburn" + + DiseaseThrombosis -> + "#thrombosis" + + DiseaseTinnitus -> + "#tinnitus" + + DiseaseType1Diabetes -> + "#type_1_diabetes" + + DiseaseType2Diabetes -> + "#type_2_diabetes" + + DiseaseUlcerativeColitis -> + "#ulcerative_colitis" + + DiseaseUnderweight -> + "#underweight" + + DiseaseVisionLoss -> + "#vision_loss" + + Evolution -> + "#evolution" + + Exercise -> + "#exercise" + + ExerciseAgility -> + "#agility" + + ExerciseFitness -> + "#fitness" + + ExerciseHypertrophy -> + "#muscle_hypertrophy" + + Fallacies -> + "#logical_fallacies" + + FallaciesAppealFromIncredulity -> + "#appeal_from_incredulity" + + FallaciesAppealToAuthority -> + "#appeal_to_authority" + + FallaciesAppealToIgnorance -> + "#appeal_to_ignorance" + + FallaciesAppealToNature -> + "#appeal_to_nature" + + FallaciesBeggingTheQuestion -> + "#begging_the_question" + + FallaciesEcological -> + "#ecological_fallacy" + + FallaciesEquivocation -> + "#equivocation" + + FallaciesGeneticFallacy -> + "#genetic_fallacy" + + FallaciesMechanisticSpeculation -> + "#mechanistic_speculation" + + FallaciesMuddyingTheWaters -> + "#muddying_the_waters" + + FallaciesRedHerring -> + "#red_herring" + + FallaciesStrawman -> + "#strawman" + + FatMonounsaturated -> + "#monounsaturated_fat" + + FatPolyunsaturated -> + "#polyunsaturated_fat" + + FatsAnimal -> + "#animal_fat" + + FatsArachidonicAcid -> + "#arachidonic_acid" + + FatSaturated -> + "#saturated_fat" + + FatsDHA -> + "#docosahexaenoic_acid" + + FatsDietary -> + "#dietary_fat" + + FatsEPA -> + "#eicosapentaenoic_acid" + + FatsLinoleicAcid -> + "#linoleic_acid" + + FatsMCTs -> + "#medium_chain_triglycerides" + + FatsOmega3 -> + "#omega_3" + + FatsOmega6 -> + "#omega_6" + + FatsPlant -> + "#plant_fat" + + FatsStearicAcid -> + "#stearic_acid" + + FatsTrans -> + "#trans_fat" + + FoodsAlmonds -> + "#almonds" + + FoodsAnimal -> + "#animal_food" + + FoodsAvocado -> + "#avocado" + + FoodsBeef -> + "#beef" + + FoodsBread -> + "#bread" + + FoodsBreakfastCereals -> + "#breakfast_cereal" + + FoodsBreastMilk -> + "#breast_milk" + + FoodsBrewedDrinks -> + "#brewed_drink" + + FoodsButter -> + "#butter" + + FoodsCanolaOil -> + "#canola_oil" + + FoodsCereals -> + "#cereal" + + FoodsCheese -> + "#cheese" + + FoodsChocolate -> + "#chocolate" + + FoodsCoconutOil -> + "#coconut_oil" + + FoodsCoffee -> + "#coffee" + + FoodsCulturedMeat -> + "#cultured_meat" + + FoodsDairy -> + "#dairy" + + FoodsEggs -> + "#eggs" + + FoodsFermentedFoods -> + "#fermented_foods" + + FoodsFish -> + "#fish" + + FoodsFishOil -> + "#fish_oil" + + FoodsFlaxseeds -> + "#flaxseeds" + + FoodsFrenchFries -> + "#french_fries" + + FoodsFriedFoods -> + "#fried_foods" + + FoodsFruit -> + "#fruit" + + FoodsGoldenRice -> + "#golden_rice" + + FoodsGreenTea -> + "#green_tea" + + FoodsHazelnuts -> + "#hazelnuts" + + FoodsJuice -> + "#juice" + + FoodsLegumes -> + "#legumes" + + FoodsMargarine -> + "#margarine" + + FoodsMayonnaise -> + "#mayonnaise" + + FoodsMeat -> + "#meat" + + FoodsMilk -> + "#milk" + + FoodsMockMeats -> + "#mock_meat" + + FoodsMushroom -> + "#mushrooms" + + FoodsNuts -> + "#nuts" + + FoodsOats -> + "#oats" + + FoodsOliveOil -> + "#olive_oil" + + FoodsOrgans -> + "#organ_meat" + + FoodsPalmOil -> + "#palm_oil" + + FoodsPlant -> + "#plant_food" + + FoodsPork -> + "#pork" + + FoodsPotatoes -> + "#potatoes" + + FoodsPoultry -> + "#poultry" + + FoodsProcessedFood -> + "#processed_food" + + FoodsProcessedMeat -> + "#processed_meat" + + FoodsRedMeat -> + "#red_meat" + + FoodsRefinedGrains -> + "#refined_grains" + + FoodsSeafood -> + "#seafood" + + FoodsSeedOils -> + "#seed_oils" + + FoodsSoybeanOil -> + "#soybean_oil" + + FoodsSoyProducts -> + "#soy_products" + + FoodsSugarSweetenedBeverages -> + "#sugar_sweetened_beverages" + + FoodsTofu -> + "#tofu" + + FoodsTomatoes -> + "#tomato" + + FoodsTurmeric -> + "#turmeric" + + FoodsUltraProcessed -> + "#ultraprocessed_food" + + FoodsVegetables -> + "#vegetables" + + FoodsWalnuts -> + "#walnuts" + + FoodsWheat -> + "#wheat" + + FoodsWhey -> + "#whey" + + FoodsWhiteMeat -> + "#white_meat" + + FoodsWholeFoods -> + "#whole_foods" + + FoodsWholeGrains -> + "#whole_grains" + + FoodsYeast -> + "#yeast" + + FoodsYogurt -> + "#yogurt" + + HealthAnthropometrics -> + "#anthropometrics" + + HealthBodyWeight -> + "#body_weight" + + HealthDigestion -> + "#digestion" + + HealthEnergyIntake -> + "#energy_intake" + + HealthFertility -> + "#fertility" + + HealthGutHealth -> + "#gut_health" + + HealthLifestyle -> + "#lifestyle" + + HealthLongevity -> + "#longevity" + + HealthMasturbation -> + "#masturbation" + + HealthNutritionalStatus -> + "#nutritional_status" + + HealthSelfImprovement -> + "#self_improvement" + + HealthSkin -> + "#skin_health" + + HealthSmoking -> + "#smoking" + + HealthSunlight -> + "#sunlight" + + HealthTattooing -> + "#tattoos" + + HealthWeightGain -> + "#weight_gain" + + HealthWeightLoss -> + "#weight_loss" + + Humans -> + "#humans" + + HumansAdolescents -> + "#adolescents" + + HumansChildDevelopment -> + "#child_development" + + HumansChildren -> + "#children" + + HumansFemaleHealth -> + "#female_health" + + HumansGrowth -> + "#human_growth" + + HumansInfants -> + "#infants" + + HumansMaleHealth -> + "#male_health" + + HumansTransGender -> + "#transgender" + + LipoProteinsApoA -> + "#apoa" + + LipoProteinsApoB -> + "#apob" + + LipoproteinsChylomicrons -> + "#chylomicrons" + + LipoProteinsHighDensity -> + "#high_density_lipoproteins" + + LipoProteinsLowDensity -> + "#low_density_lipoproteins" + + LipoProteinsLPA -> + "#lpa" + + LipoProteinsNonHDL -> + "#non_hdl_cholesterol" + + LipoProteinsOxidizedLowDensity -> + "#oxidized_low_density_lipoproteins" + + LipoProteinsVeryLowDensity -> + "#very_low_density_lipoproteins" + + MarkersAbdominalFat -> + "#abdominal_fat" + + MarkersAcrylamide -> + "#acrylamide" + + MarkersAutoAntibodies -> + "#auto_antibodies" + + MarkersBiomarkers -> + "#biomarkers" + + MarkersBloodPressure -> + "#blood_pressure" + + MarkersBMI -> + "#body_mass_index" + + MarkersBodyOdour -> + "#body_odour" + + MarkersBoneMineralDensity -> + "#bone_mineral_density" + + MarkersCognitiveFunction -> + "#cognitive_function" + + MarkersCReactiveProtein -> + "#c_reactive_protein" + + MarkersEndothelialFunction -> + "#endothelial_function" + + MarkersEnergyExpenditure -> + "#energy_expenditure" + + MarkersFlowMediatedDilation -> + "#flow_mediated_dilation" + + MarkersGlucoseTolerance -> + "#glucose_tolerance" + + MarkersHbA1C -> + "#hba1c" + + MarkersHeartRate -> + "#heart_rate" + + MarkersHOMAIR -> + "#homa_ir" + + MarkersHormones -> + "#hormones" + + MarkersIGF1 -> + "#igf1" + + MarkersImmuneFunction -> + "#immune_function" + + MarkersInsulin -> + "#insulin" + + MarkersInsulinSensitivity -> + "#insulin_sensitivity" + + MarkersInterleukin6 -> + "#interleukin_6" + + MarkersKetones -> + "#ketones" + + MarkersLiverEnzymes -> + "#liver_enzymes" + + MarkersLiverFunction -> + "#liver_function" + + MarkersLPS -> + "#lipopolysaccharide" + + MarkersMalondialdehyde -> + "#malondialdehyde" + + MarkersMicrobiome -> + "#microbiome" + + MarkersOxidativeStress -> + "#oxidative_stress" + + MarkersPCSK9 -> + "#pcsk9" + + MarkersSatiety -> + "#satiety" + + MarkersSexHormones -> + "#sex_hormones" + + MarkersSNPs -> + "#single_nucleotide_polymorphism" + + MarkersTestosterone -> + "#testosterone" + + MarkersTMAO -> + "#tmao" + + MarkersTNF -> + "#tumour_necrosis_factor" + + MarkersVisceralFat -> + "#visceral_fat" + + MedicationsCETPInhibitors -> + "#cetp_inhibitors" + + MedicationsPCSK9Inhibitors -> + "#pcsk9_inhibitors" + + MedicationsStatins -> + "#statins" + + Nutrients -> + "#nutrients" + + NutrientsAlcohol -> + "#alcohol" + + NutrientsAnimal -> + "#animal_nutrients" + + NutrientsAntiNutrient -> + "#anti_nutrients" + + NutrientsAntioxidants -> + "#antioxidants" + + NutrientsArtificialSweeteners -> + "#artificial_sweeteners" + + NutrientsB12 -> + "#vitamin_b12" + + NutrientsBetaCarotene -> + "#beta_carotene" + + NutrientsBioavailability -> + "#bioavailability" + + NutrientsBiotin -> + "#biotin" + + NutrientsCalcium -> + "#calcium" + + NutrientsCarotenoids -> + "#carotenoids" + + NutrientsCasein -> + "#casein" + + NutrientsCholine -> + "#choline" + + NutrientsCreatine -> + "#creatine" + + NutrientsDietaryCholesterol -> + "#dietary_cholesterol" + + NutrientsFat -> + "#dietary_fat" + + NutrientsFibre -> + "#fibre" + + NutrientsFibreInsoluble -> + "#insoluble_fibre" + + NutrientsFibreSoluble -> + "#soluble_fibre" + + NutrientsFODMAPs -> + "#fodmaps" + + NutrientsGluten -> + "#gluten" + + NutrientsGoitrogens -> + "#goitrogens" + + NutrientsIsoflavones -> + "#isoflavones" + + NutrientsK2 -> + "#vitamin_k2" + + NutrientsLCarnitine -> + "#l_carnitine" + + NutrientsLectins -> + "#lectins" + + NutrientsManganese -> + "#manganese" + + NutrientsMinerals -> + "#minerals" + + NutrientSodium -> + "#sodium" + + NutrientsOxalate -> + "#oxalate" + + NutrientsPhosphorus -> + "#phosphorus" + + NutrientsPhytate -> + "#phytate" + + NutrientsPhytoEstrogens -> + "#phytoestrogens" + + NutrientsPhytosterols -> + "#phytosterols" + + NutrientsPolyphenols -> + "#polyphenols" + + NutrientsSupplements -> + "#supplements" + + NutrientsTannins -> + "#tannins" + + NutrientsTaurine -> + "#taurine" + + NutrientsVitaminA -> + "#vitamin_A" + + NutrientsVitaminB5 -> + "#vimtain_b5" + + NutrientsVitaminB6 -> + "#vitamin_b6" + + NutrientsVitaminC -> + "#vitamin_c" + + NutrientsVitaminD -> + "#vitamin_d" + + NutrientsVitaminE -> + "#vitamin_e" + + Nutrition -> + "#nutrition" + + Philosophy -> + "#philosophy" + + PhilosophyAntiNatalism -> + "#antinatalism" + + PhilosophyAutopoiesis -> + "#autopoiesis" + + PhilosophyCausalInference -> + "#causal_inference" + + PhilosophyDeMorgansLaw -> + "#de_morgans_law" + + PhilosophyEfilism -> + "#efilism" + + PhilosophyEpistemology -> + "#epistemology" + + PhilosophyEthics -> + "#ethics" + + PhilosophyLinguisticPrescriptivism -> + "#linguistic_prescriptivism" + + PhilosophyModalLogic -> + "#model_logic" + + PhilosophyMoralRealism -> + "#moral_realism" + + PhilosophyMoralSubjectivism -> + "#moral_subjectivism" + + PhilosophyPredicateLogic -> + "#predicate_logic" + + PhilosophyPropositionalLogic -> + "#propositional_logic" + + PhilosophySentience -> + "#sentience" + + PhysiologyAdiposeTissue -> + "#adipose_tissue" + + PhysiologyAndrogens -> + "#androgens" + + PhysiologyDeNovoLipogenesis -> + "#de_novo_lipogenesis" + + PhysiologyEjaculation -> + "#ejaculation" + + PhysiologyGluconeogenesis -> + "#gluconeogenesis" + + PhysiologyGlycogen -> + "#glycogen" + + PhysiologyLPL -> + "#liproprotein_lipase" + + PhysiologyMetabolism -> + "#metabolism" + + PhysiologyPostMenopause -> + "#post_menopause" + + PhysiologyPreMenopause -> + "#pre_menopause" + + PhysiologySenescence -> + "#senescence" + + PhysiologySubendothelialSpace -> + "#subendothelial_space" + + PlantsAlgae -> + "#algae" + + PoliticsAbortion -> + "#abortion" + + PoliticsIsraelPalestine -> + "#israel_palestine" + + ProteinAnimal -> + "#animal_protein" + + ProteinPlant -> + "#plant_protein" + + Proteoglycans -> + "#proteoglycans" + + ResearchAnthropology -> + "#anthropology" + + ResearchArcheology -> + "#archeology" + + ResearchBradfordHill -> + "#bradford_hill" + + ResearchCardiology -> + "#cardiology" + + ResearchCaseControl -> + "#case_control_study" + + ResearchClimateScience -> + "#climate_science" + + ResearchClinicalTrials -> + "#clinical_trial" + + ResearchCohortStudies -> + "#prospective_cohort_study" + + ResearchDermatology -> + "#dermatology" + + ResearchDIAAS -> + "#diaas" + + ResearchDoseResponse -> + "#dose_response" + + ResearchEconomics -> + "#economics" + + ResearchEpidemiology -> + "#epidemiology" + + ResearchEvidenceHierarchy -> + "#evidence_hierarchy" + + ResearchFFQs -> + "#food_frequency_questionnaire" + + ResearchGenetics -> + "#genetics" + + ResearchGlycemicIndex -> + "#glycemic_index" + + ResearchGlycemicLoad -> + "#glycemic_load" + + ResearchImmunology -> + "#immunology" + + ResearchKinetics -> + "#kinetics" + + ResearchLipidology -> + "#lipidology" + + ResearchMendelianRandomization -> + "#mendelian_randomization" + + ResearchMetaAnalysis -> + "#meta_analysis" + + ResearchMetaRegression -> + "#meta_regression" + + ResearchMice -> + "#mice" + + ResearchMulticollinearity -> + "#multicollinearity" + + ResearchNutritionScience -> + "#nutrition_science" + + ResearchOphthalmology -> + "#ophthalmology" + + ResearchPDCAAS -> + "#pdcaas" + + ResearchPhysiology -> + "#physiology" + + ResearchPsychology -> + "#psychology" + + ResearchRandomizedControlledTrial -> + "#randomized_controlled_trial" + + ResearchSexuality -> + "#sexuality" + + ResearchSubstitionAnalysis -> + "#analysis" + + ResearchSurvivorshipBias -> + "#survivorship_bias" + + ResearchSystematicReview -> + "#systematic_review" + + ResearchVirology -> + "#virology" + + SocioEconomicStatus -> + "#economic_status" + + Veganism -> + "#veganism" + + VeganismCropDeaths -> + "#crop_deaths" + + VeganismNameTheTrait -> + "#name_the_trait" diff --git a/packages/website/frontend/src/Config/Data/Hashtags/Types.elm b/packages/website/frontend/src/Config/Data/Hashtags/Types.elm new file mode 100755 index 0000000..8f20474 --- /dev/null +++ b/packages/website/frontend/src/Config/Data/Hashtags/Types.elm @@ -0,0 +1,429 @@ +module Config.Data.Hashtags.Types exposing (Hashtags(..)) + + +type Hashtags + = Agriculture + | AgricultureAnimal + | AgriculturePlant + | AllCauseMortality + | AncestryAntagonisticPleiotropy + | AncestryHunterGatherers + | AncestryPrimitiveCultures + | Animals + | AnimalsBivalves + | AnimalsCats + | AnimalsChickens + | AnimalsCrustaceans + | AnimalsDogs + | AnimalsOrca + | AnimalsPredators + | AnimalsShellfish + | Assays4E6 + | AssaysE06 + | BloodGlucose + | BloodLipids + | BloodLipidsCholesterol + | BloodLipidsTriglycerides + | Cancer + | CancerBladderCancer + | CancerBreastCancer + | CancerColonCancer + | CancerColorectalCancer + | CancerDistalColonCancer + | CancerEndometrialCancer + | CancerEsophagealCancer + | CancerGasticCancer + | CancerLungCancer + | CancerOvarianCancer + | CancerPancreaticCancer + | CancerProstateCancer + | CancerRectalCancer + | CancerSkinCancer + | CancerStomachCancer + | Carbohydrates + | CarbohydratesFructose + | CarbohydratesGlucose + | CarbohydratesSugar + | Cuckery + | CuckeryFlatEarth + | CuckeryLMHR + | CuckPapers + | Cucks + | Debate + | DebateArguments + | DebateCoursework + | DebateModeration + | DebateOpponents + | DietsAncestral + | DietsAnimalBased + | DietsCarnivore + | DietsDietaryGuidelines + | DietsEucaloric + | DietsFasting + | DietsHighCarbohydrate + | DietsHypercaloric + | DietsHypocaloric + | DietsKeto + | DietsLowCarbohydrate + | DietsMediterraneanDiet + | DietsPaleo + | DietsPlantBased + | DietsStandardAmericanDiet + | DietsTimeRestrictedFeeding + | DietsVegetarian + | Disease + | DiseaseAFib + | DiseaseAnemia + | DiseaseArrythmia + | DiseaseAtherosclerosis + | DiseaseAutoImmune + | DiseaseBronchitis + | DiseaseCardiovascular + | DiseaseCeliacDisease + | DiseaseCholestasis + | DiseaseCognitiveDecline + | DiseaseColonPolyops + | DiseaseConstipation + | DiseaseCoronaryArteryCalcification + | DiseaseCoronaryHeart + | DiseaseCOVID19 + | DiseaseDementia + | DiseaseDepression + | DiseaseDisability + | DiseaseDiverticularDisease + | DiseaseEmphysema + | DiseaseErectileDysfunction + | DiseaseFracture + | DiseaseFrailty + | DiseaseGallstones + | DiseaseHeartAttack + | DiseaseHeartDisease + | DiseaseHeartFailure + | DiseaseHyperphagia + | DiseaseHypertensions + | DiseaseHypothyroidism + | DiseaseInflammation + | DiseaseKidneyDisease + | DiseaseKidneyStones + | DiseaseLupus + | DiseaseMacularDegeneration + | DiseaseMentalIllness + | DiseaseMetabolicSyndrome + | DiseaseMoodDisorders + | DiseaseMortality + | DiseaseNAFLD + | DiseaseNeuroDegenerative + | DiseaseNutrientDeficiency + | DiseaseObesity + | DiseaseOsteoporosis + | DiseaseOverweight + | DiseaseRespiratoryDisease + | DiseaseSchizophrenia + | DiseaseScurvy + | DiseaseSepsis + | DiseaseStenosis + | DiseaseStroke + | DiseaseSunburn + | DiseaseThrombosis + | DiseaseTinnitus + | DiseaseType1Diabetes + | DiseaseType2Diabetes + | DiseaseUlcerativeColitis + | DiseaseUnderweight + | DiseaseVisionLoss + | Evolution + | Exercise + | ExerciseAgility + | ExerciseFitness + | ExerciseHypertrophy + | Fallacies + | FallaciesAppealFromIncredulity + | FallaciesAppealToAuthority + | FallaciesAppealToIgnorance + | FallaciesAppealToNature + | FallaciesBeggingTheQuestion + | FallaciesEcological + | FallaciesEquivocation + | FallaciesGeneticFallacy + | FallaciesMechanisticSpeculation + | FallaciesMuddyingTheWaters + | FallaciesRedHerring + | FallaciesStrawman + | FatMonounsaturated + | FatPolyunsaturated + | FatsAnimal + | FatsArachidonicAcid + | FatSaturated + | FatsDHA + | FatsDietary + | FatsEPA + | FatsLinoleicAcid + | FatsMCTs + | FatsOmega3 + | FatsOmega6 + | FatsPlant + | FatsStearicAcid + | FatsTrans + | FoodsAlmonds + | FoodsAnimal + | FoodsAvocado + | FoodsBeef + | FoodsBread + | FoodsBreakfastCereals + | FoodsBreastMilk + | FoodsBrewedDrinks + | FoodsButter + | FoodsCanolaOil + | FoodsCereals + | FoodsCheese + | FoodsChocolate + | FoodsCoconutOil + | FoodsCoffee + | FoodsCulturedMeat + | FoodsDairy + | FoodsEggs + | FoodsFermentedFoods + | FoodsFish + | FoodsFishOil + | FoodsFlaxseeds + | FoodsFrenchFries + | FoodsFriedFoods + | FoodsFruit + | FoodsGoldenRice + | FoodsGreenTea + | FoodsHazelnuts + | FoodsJuice + | FoodsLegumes + | FoodsMargarine + | FoodsMayonnaise + | FoodsMeat + | FoodsMilk + | FoodsMockMeats + | FoodsMushroom + | FoodsNuts + | FoodsOats + | FoodsOliveOil + | FoodsOrgans + | FoodsPalmOil + | FoodsPlant + | FoodsPork + | FoodsPotatoes + | FoodsPoultry + | FoodsProcessedFood + | FoodsProcessedMeat + | FoodsRedMeat + | FoodsRefinedGrains + | FoodsSeafood + | FoodsSeedOils + | FoodsSoybeanOil + | FoodsSoyProducts + | FoodsSugarSweetenedBeverages + | FoodsTofu + | FoodsTomatoes + | FoodsTurmeric + | FoodsUltraProcessed + | FoodsVegetables + | FoodsWalnuts + | FoodsWheat + | FoodsWhey + | FoodsWhiteMeat + | FoodsWholeFoods + | FoodsWholeGrains + | FoodsYeast + | FoodsYogurt + | HealthAnthropometrics + | HealthBodyWeight + | HealthDigestion + | HealthEnergyIntake + | HealthFertility + | HealthGutHealth + | HealthLifestyle + | HealthLongevity + | HealthMasturbation + | HealthNutritionalStatus + | HealthSelfImprovement + | HealthSkin + | HealthSmoking + | HealthSunlight + | HealthTattooing + | HealthWeightGain + | HealthWeightLoss + | Humans + | HumansAdolescents + | HumansChildDevelopment + | HumansChildren + | HumansFemaleHealth + | HumansGrowth + | HumansInfants + | HumansMaleHealth + | HumansTransGender + | LipoProteinsApoA + | LipoProteinsApoB + | LipoproteinsChylomicrons + | LipoProteinsHighDensity + | LipoProteinsLowDensity + | LipoProteinsLPA + | LipoProteinsNonHDL + | LipoProteinsOxidizedLowDensity + | LipoProteinsVeryLowDensity + | MarkersAbdominalFat + | MarkersAcrylamide + | MarkersAutoAntibodies + | MarkersBiomarkers + | MarkersBloodPressure + | MarkersBMI + | MarkersBodyOdour + | MarkersBoneMineralDensity + | MarkersCognitiveFunction + | MarkersCReactiveProtein + | MarkersEndothelialFunction + | MarkersEnergyExpenditure + | MarkersFlowMediatedDilation + | MarkersGlucoseTolerance + | MarkersHbA1C + | MarkersHeartRate + | MarkersHOMAIR + | MarkersHormones + | MarkersIGF1 + | MarkersImmuneFunction + | MarkersInsulin + | MarkersInsulinSensitivity + | MarkersInterleukin6 + | MarkersKetones + | MarkersLiverEnzymes + | MarkersLiverFunction + | MarkersLPS + | MarkersMalondialdehyde + | MarkersMicrobiome + | MarkersOxidativeStress + | MarkersPCSK9 + | MarkersSatiety + | MarkersSexHormones + | MarkersSNPs + | MarkersTestosterone + | MarkersTMAO + | MarkersTNF + | MarkersVisceralFat + | MedicationsCETPInhibitors + | MedicationsPCSK9Inhibitors + | MedicationsStatins + | Nutrients + | NutrientsAlcohol + | NutrientsAnimal + | NutrientsAntiNutrient + | NutrientsAntioxidants + | NutrientsArtificialSweeteners + | NutrientsB12 + | NutrientsBetaCarotene + | NutrientsBioavailability + | NutrientsBiotin + | NutrientsCalcium + | NutrientsCarotenoids + | NutrientsCasein + | NutrientsCholine + | NutrientsCreatine + | NutrientsDietaryCholesterol + | NutrientsFat + | NutrientsFibre + | NutrientsFibreInsoluble + | NutrientsFibreSoluble + | NutrientsFODMAPs + | NutrientsGluten + | NutrientsGoitrogens + | NutrientsIsoflavones + | NutrientsK2 + | NutrientsLCarnitine + | NutrientsLectins + | NutrientsManganese + | NutrientsMinerals + | NutrientSodium + | NutrientsOxalate + | NutrientsPhosphorus + | NutrientsPhytate + | NutrientsPhytoEstrogens + | NutrientsPhytosterols + | NutrientsPolyphenols + | NutrientsSupplements + | NutrientsTannins + | NutrientsTaurine + | NutrientsVitaminA + | NutrientsVitaminB5 + | NutrientsVitaminB6 + | NutrientsVitaminC + | NutrientsVitaminD + | NutrientsVitaminE + | Nutrition + | Philosophy + | PhilosophyAntiNatalism + | PhilosophyAutopoiesis + | PhilosophyCausalInference + | PhilosophyDeMorgansLaw + | PhilosophyEfilism + | PhilosophyEpistemology + | PhilosophyEthics + | PhilosophyLinguisticPrescriptivism + | PhilosophyModalLogic + | PhilosophyMoralRealism + | PhilosophyMoralSubjectivism + | PhilosophyPredicateLogic + | PhilosophyPropositionalLogic + | PhilosophySentience + | PhysiologyAdiposeTissue + | PhysiologyAndrogens + | PhysiologyDeNovoLipogenesis + | PhysiologyEjaculation + | PhysiologyGluconeogenesis + | PhysiologyGlycogen + | PhysiologyLPL + | PhysiologyMetabolism + | PhysiologyPostMenopause + | PhysiologyPreMenopause + | PhysiologySenescence + | PhysiologySubendothelialSpace + | PlantsAlgae + | PoliticsAbortion + | PoliticsIsraelPalestine + | ProteinAnimal + | ProteinPlant + | Proteoglycans + | ResearchAnthropology + | ResearchArcheology + | ResearchBradfordHill + | ResearchCardiology + | ResearchCaseControl + | ResearchClimateScience + | ResearchClinicalTrials + | ResearchCohortStudies + | ResearchDermatology + | ResearchDIAAS + | ResearchDoseResponse + | ResearchEconomics + | ResearchEpidemiology + | ResearchEvidenceHierarchy + | ResearchFFQs + | ResearchGenetics + | ResearchGlycemicIndex + | ResearchGlycemicLoad + | ResearchImmunology + | ResearchKinetics + | ResearchLipidology + | ResearchMendelianRandomization + | ResearchMetaAnalysis + | ResearchMetaRegression + | ResearchMice + | ResearchMulticollinearity + | ResearchNutritionScience + | ResearchOphthalmology + | ResearchPDCAAS + | ResearchPhysiology + | ResearchPsychology + | ResearchRandomizedControlledTrial + | ResearchSexuality + | ResearchSubstitionAnalysis + | ResearchSurvivorshipBias + | ResearchSystematicReview + | ResearchVirology + | SocioEconomicStatus + | Veganism + | VeganismCropDeaths + | VeganismNameTheTrait diff --git a/packages/website/frontend/src/Config/Data/Identity.elm b/packages/website/frontend/src/Config/Data/Identity.elm new file mode 100755 index 0000000..ef5d833 --- /dev/null +++ b/packages/website/frontend/src/Config/Data/Identity.elm @@ -0,0 +1,36 @@ +module Config.Data.Identity exposing (pageNames) + + +type alias PageInput = + { pageHome : String + , pageContact : String + , pageArguments : String + , pageDebate : String + , pageCucks : String + , pageGibberish : String + , pageHyperBlog : String + , pageInterviews : String + , pageNutriDex : String + , pageServices : String + , pageDonate : String + , pageNotFound : String + , pageJournal : String + } + + +pageNames : PageInput +pageNames = + { pageHome = "home" + , pageServices = "services" + , pageCucks = "cuckList" + , pageArguments = "arguments" + , pageDebate = "debate" + , pageGibberish = "gibberish" + , pageHyperBlog = "blog" + , pageNutriDex = "nutriDex" + , pageInterviews = "interviews" + , pageContact = "contact" + , pageDonate = "donate" + , pageNotFound = "notFound" + , pageJournal = "journal" + } diff --git a/packages/website/frontend/src/Config/Data/ImageFolders.elm b/packages/website/frontend/src/Config/Data/ImageFolders.elm new file mode 100755 index 0000000..f0014cf --- /dev/null +++ b/packages/website/frontend/src/Config/Data/ImageFolders.elm @@ -0,0 +1,74 @@ +module Config.Data.ImageFolders exposing + ( ImageFolder(..) + , getImageFolderString + , imagePathMaker + ) + + +imagePathMaker : ImageFolder -> String -> String +imagePathMaker imageFolder name = + case imageFolder of + Cuck -> + "/" ++ getImageFolderString imageFolder ++ "/" ++ name ++ "/" ++ name ++ ".png" + + _ -> + "/" ++ getImageFolderString imageFolder ++ "/" ++ name ++ ".png" + + +getImageFolderString : ImageFolder -> String +getImageFolderString imageFolder = + case imageFolder of + Interviews -> + "interviews" + + Gibberish -> + "gibberish" + + Cuck -> + "cucks" + + BlogArticle -> + "blog" + + BlogCard -> + "blog/thumbs" + + Argument -> + "arguments" + + Service -> + "services" + + Debate -> + "debate" + + Donate -> + "donate" + + NutriDex -> + "nutridex" + + ServicePage -> + "services" + + Contact -> + "contact" + + Journal -> + "journal" + + +type ImageFolder + = Interviews + | Contact + | Gibberish + | Cuck + | BlogArticle + | BlogCard + | Argument + | Service + | Debate + | Donate + | NutriDex + | ServicePage + | Journal diff --git a/packages/website/frontend/src/Config/Data/Language.elm b/packages/website/frontend/src/Config/Data/Language.elm new file mode 100755 index 0000000..30ff70a --- /dev/null +++ b/packages/website/frontend/src/Config/Data/Language.elm @@ -0,0 +1,118 @@ +module Config.Data.Language exposing + ( Language(..) + , MultilingualTextElement + ) + +{-| Types for facilitating multilingual functionality. +-} + +import Element exposing (Element) + + +{-| A list of all currently supported languages. DeepL seems to +have the best translations, so we're just using those. Arabic will need some custom work though +since it runs right to left. It will be nice to expand this list over time as DeepL adds support +for more languages. Eventually it could be nice to host some local AI to do translation so we can +reduce lines of code by writing all text only once in English then automatically generating +translations. +-} +type Language + = -- Arabic + Bulgarian + | Chinese + | Czech + | Danish + | Dutch + | English + | Estonian + | Finnish + | French + | German + | Greek + | Hungarian + | Indonesian + | Italian + | Japanese + | Korean + | Latvian + | Lithuanian + | Norwegian + | Polish + | Portuguese + | Romanian + | Russian + | Slovak + | Slovenian + | Spanish + | Swedish + | Turkish + | Ukranian + + + +-- type alias MultilingualText = +-- { bulgarian : String +-- , chinese : String +-- , czech : String +-- , danish : String +-- , dutch : String +-- , english : String +-- , estonian : String +-- , finnish : String +-- , french : String +-- , german : String +-- , greek : String +-- , hungarian : String +-- , indonesian : String +-- , italian : String +-- , japanese : String +-- , korean : String +-- , latvian : String +-- , lithuanian : String +-- , norwegian : String +-- , polish : String +-- , portuguese : String +-- , romanian : String +-- , russian : String +-- , slovak : String +-- , slovenian : String +-- , spanish : String +-- , swedish : String +-- , turkish : String +-- , ukranian : String +-- } + + +{-| We need a type that returns a different element based on which language is selected. +-} +type alias MultilingualTextElement msg = + { bulgarian : Element msg + , chinese : Element msg + , czech : Element msg + , danish : Element msg + , dutch : Element msg + , english : Element msg + , estonian : Element msg + , finnish : Element msg + , french : Element msg + , german : Element msg + , greek : Element msg + , hungarian : Element msg + , indonesian : Element msg + , italian : Element msg + , japanese : Element msg + , korean : Element msg + , latvian : Element msg + , lithuanian : Element msg + , norwegian : Element msg + , polish : Element msg + , portuguese : Element msg + , romanian : Element msg + , russian : Element msg + , slovak : Element msg + , slovenian : Element msg + , spanish : Element msg + , swedish : Element msg + , turkish : Element msg + , ukranian : Element msg + } diff --git a/packages/website/frontend/src/Config/Helpers/Articles/Article.elm b/packages/website/frontend/src/Config/Helpers/Articles/Article.elm new file mode 100755 index 0000000..5c050e5 --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Articles/Article.elm @@ -0,0 +1,116 @@ +module Config.Helpers.Articles.Article exposing (..) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Markdown as Markdown + exposing + ( articleImage + , renderDeviceMarkdown + , renderDeviceMarkdownNoToc + ) +import Config.Helpers.Articles.Types exposing (References) +import Config.Helpers.Cards.Inner.Text exposing (detailFormat) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , getThemeColor + ) +import Config.Style.Transitions + exposing + ( hoverFontDarkOrange + , transitionStyleFast + ) +import Element as E exposing (..) +import Element.Background as B exposing (color) +import Element.Border as D exposing (width) +import Element.Font as F + exposing + ( alignLeft + , bold + , color + , regular + ) +import Ports + + +contentList : BlogArticle -> List (Element msg) -> (Markdown.Msg -> msg) -> List (Element msg) +contentList article extraElements toMsg = + [ case article.articleImage of + "" -> + none + + _ -> + articleImage article.articleImage + , case article.hasTableOfContents of + True -> + E.map toMsg (renderDeviceMarkdown article.articleBody) + + False -> + E.map toMsg (renderDeviceMarkdownNoToc article.articleBody) + , case article.hasReferences of + True -> + articleReferences article + + False -> + none + , detailFormat column extraElements + ] + + +articleReferences : BlogArticle -> Element msg +articleReferences article = + column [ E.width fill, F.size 15, spacing 10 ] <| + List.map2 (\x y -> makeReference x y) + article.articleReferences + (List.range 1 (List.length article.articleReferences)) + + +makeReference : References -> Int -> Element msg +makeReference references index = + let + comma = + ", " + in + el + [ F.regular + , F.alignLeft + ] + <| + paragraph [] + [ newTabLink + [ F.bold + , F.color (getThemeColor TextLightOrange) + , hoverFontDarkOrange + , transitionStyleFast + ] + { url = references.link, label = text (String.fromInt index ++ ". ") } + , text (references.author ++ comma) + , text (references.title ++ comma) + , text (references.journal ++ comma) + , text references.year + ] + + +extractFirstWords : String -> String +extractFirstWords text = + let + words = + text + |> String.split " " + |> List.filter (not << String.isEmpty) + + truncatedWords = + List.take 80 words + + wasTextTruncated = + List.length words > 80 + + result = + String.join " " truncatedWords + in + if wasTextTruncated then + result ++ "..." + + else + result diff --git a/packages/website/frontend/src/Config/Helpers/Articles/Markdown.elm b/packages/website/frontend/src/Config/Helpers/Articles/Markdown.elm new file mode 100755 index 0000000..e2b6810 --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Articles/Markdown.elm @@ -0,0 +1,976 @@ +module Config.Helpers.Articles.Markdown exposing (..) + +-- import Config.Style.Colour.Helpers exposing (colourTheme) + +import Config.Helpers.Cards.Inner.Text exposing (divider) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Style.Colour.Helpers exposing (ThemeColor(..), getThemeColor) +import Config.Style.Fonts + exposing + ( defaultFontSize + , headerFontSizeBig + , headerFontSizeMedium + ) +import Config.Style.Transitions + exposing + ( hoverFontDarkOrange + , transitionStyleFast + ) +import Element as E exposing (..) +import Element.Background as B exposing (color) +import Element.Border as D + exposing + ( color + , rounded + , widthEach + ) +import Element.Font as F exposing (color) +import Element.Input as Input +import Element.Region as Region +import Html exposing (Attribute, Html) +import Html.Attributes +import Html.Events +import Markdown.Block as Block + exposing + ( Block + , Inline + , ListItem(..) + , Task(..) + ) +import Markdown.Html +import Markdown.Parser +import Markdown.Renderer +import Ports + + +articleImage : String -> Element msg +articleImage pic = + el + [ centerX + , width fill + ] + <| + column + [ E.paddingEach + { top = 20 + , bottom = 20 + , left = 20 + , right = 20 + } + ] + [ image + [ width fill + ] + { src = "/blog/" ++ pic ++ ".png", description = "" } + ] + + +type Msg + = ScrollToElement String + + +renderDeviceMarkdown : String -> Element Msg +renderDeviceMarkdown markdown = + case renderMarkdown markdown of + Ok ( toc, renderedMarkdown ) -> + paragraph [] + [ column + [ width fill + , centerX + , spacing 10 + ] + (tocView toc :: renderedMarkdown) + ] + + Err error -> + E.text error + + +renderDeviceMarkdownGeneric : String -> Element msg +renderDeviceMarkdownGeneric markdown = + case renderMarkdownGeneric markdown of + Ok ( toc, renderedMarkdown ) -> + paragraph [] + [ column + [ width fill + , centerX + , spacing 10 + ] + (tocViewGeneric toc :: renderedMarkdown) + ] + + Err error -> + E.text error + + +renderMarkdown : String -> Result String ( TableOfContents, List (Element Msg) ) +renderMarkdown markdown = + case + markdown + |> Markdown.Parser.parse + of + Ok okAst -> + case + Markdown.Renderer.render elmUiRenderer okAst + of + Ok rendered -> + Ok ( buildToc okAst, rendered ) + + Err errors -> + Err errors + + Err error -> + Err (error |> List.map Markdown.Parser.deadEndToString |> String.join "\n") + + +renderMarkdownGeneric : String -> Result String ( TableOfContents, List (Element msg) ) +renderMarkdownGeneric markdown = + case + markdown + |> Markdown.Parser.parse + of + Ok okAst -> + case + Markdown.Renderer.render elmUiRendererGeneric okAst + of + Ok rendered -> + Ok ( buildToc okAst, rendered ) + + Err errors -> + Err errors + + Err error -> + Err (error |> List.map Markdown.Parser.deadEndToString |> String.join "\n") + + +renderDeviceMarkdownNoToc : String -> Element Msg +renderDeviceMarkdownNoToc markdown = + case renderMarkdownNoToc markdown of + Ok ( _, renderedMarkdown ) -> + paragraph [] + [ column + [ width fill + , centerX + , spacing 10 + ] + renderedMarkdown + ] + + Err error -> + E.text error + + +renderDeviceMarkdownNoTocGeneric : String -> Element msg +renderDeviceMarkdownNoTocGeneric markdown = + case renderMarkdownNoTocGeneric markdown of + Ok ( _, renderedMarkdown ) -> + paragraph [] + [ column + [ width fill + , centerX + , spacing 10 + ] + renderedMarkdown + ] + + Err error -> + E.text error + + +renderMarkdownNoToc : + String + -> Result String ( TableOfContents, List (Element Msg) ) -- Keep original return type +renderMarkdownNoToc markdown = + case + markdown + |> Markdown.Parser.parse + of + Ok okAst -> + case + Markdown.Renderer.render elmUiRenderer okAst + of + Ok rendered -> + Ok ( buildToc okAst, rendered ) + + -- Keep building TOC but don't use it + Err errors -> + Err errors + + Err error -> + Err (error |> List.map Markdown.Parser.deadEndToString |> String.join "\n") + + +renderMarkdownNoTocGeneric : + String + -> Result String ( TableOfContents, List (Element msg) ) +renderMarkdownNoTocGeneric markdown = + case + markdown + |> Markdown.Parser.parse + of + Ok okAst -> + case + Markdown.Renderer.render elmUiRendererGeneric okAst + of + Ok rendered -> + Ok ( buildToc okAst, rendered ) + + Err errors -> + Err errors + + Err error -> + Err (error |> List.map Markdown.Parser.deadEndToString |> String.join "\n") + + +tocView : TableOfContents -> Element Msg +tocView toc = + column + [ alignTop + , width fill + , spacing 10 + ] + [ paragraph + [ F.bold + , headerFontSizeBig + , F.center + , width fill + , F.color (getThemeColor TextLightOrange) + ] + [ text "TABLE OF CONTENTS" ] + , column + [ E.spacing 3 + , defaultFontSize + , E.width fill + ] + (toc + |> List.indexedMap + (\index headingBlock -> + row + [ E.width fill ] + [ el + [ E.alignTop + , width <| px 30 + , F.bold + , alignRight + , alignBottom + ] + (text (String.fromInt (index + 1) ++ ".")) + , el + [ F.alignLeft + , E.width fill + , defaultFontSize + , alignTop + ] + <| + Input.button + [ F.color (getThemeColor TextLightOrange) + , transitionStyleFast + , hoverFontDarkOrange + , width fill + , paddingEach { top = 0, bottom = 0, left = 0, right = 0 } + ] + { onPress = Just (ScrollToElement headingBlock.anchorId) + , label = + el + [ alignLeft ] + <| + text (toTitleCase headingBlock.name) + } + ] + ) + ) + , el + [ width fill + , height fill + , spacing 20 + , paddingEach + { top = 0 + , bottom = 0 + , left = 100 + , right = 100 + } + ] + <| + divider + , el + [] + <| + text "" + ] + + +tocViewGeneric : TableOfContents -> Element msg +tocViewGeneric toc = + column + [ alignTop + , width fill + , spacing 10 + ] + [ paragraph + [ F.bold + , headerFontSizeBig + , F.center + , width fill + , F.color (getThemeColor TextLightOrange) + ] + [ text "TABLE OF CONTENTS" ] + , column + [ E.spacing 3 + , defaultFontSize + , E.width fill + ] + (toc + |> List.indexedMap + (\index headingBlock -> + row + [ E.width fill ] + [ el + [ E.alignTop + , width <| px 30 + , F.bold + , alignRight + , alignBottom + ] + (text (String.fromInt (index + 1) ++ ".")) + , el + [ F.alignLeft + , E.width fill + , defaultFontSize + , alignTop + ] + <| + link + [] + { url = "#" ++ headingBlock.anchorId + , label = + el + [ F.color (getThemeColor TextLightOrange) + , transitionStyleFast + , hoverFontDarkOrange + ] + <| + text (toTitleCase headingBlock.name) + } + ] + ) + ) + , el + [ width fill + , height fill + , spacing 20 + , paddingEach + { top = 0 + , bottom = 0 + , left = 100 + , right = 100 + } + ] + <| + divider + , el + [] + <| + text "" + ] + + +buildToc : List Block -> TableOfContents +buildToc blocks = + let + headings = + gatherHeadings blocks + in + headings + |> List.map Tuple.second + |> List.map + (\styledList -> + { anchorId = styledList |> Block.extractInlineText |> rawTextToId + , name = styledToString styledList + , level = 1 + } + ) + + +styledToString : List Inline -> String +styledToString list = + list + |> Block.extractInlineText + + +gatherHeadings : List Block -> List ( Block.HeadingLevel, List Inline ) +gatherHeadings blocks = + List.filterMap + (\block -> + case block of + Block.Heading level content -> + Just ( level, content ) + + _ -> + Nothing + ) + blocks + + +elmUiRenderer : Markdown.Renderer.Renderer (Element Msg) +elmUiRenderer = + { heading = heading + , paragraph = + E.paragraph + [ E.spacing 3 + , defaultFontSize + , F.alignLeft + , width fill + ] + , thematicBreak = E.none + , text = E.text + , strong = + \content -> + E.row + [ F.bold + ] + content + , emphasis = + \content -> + E.row + [ F.italic + ] + content + , strikethrough = + \content -> + E.row + [ F.strike + ] + content + , codeSpan = code + , link = + \{ title, destination } body -> + E.newTabLink + [ width fill ] + { url = destination + , label = + E.paragraph + [ F.color (getThemeColor TextLightOrange) + , defaultFontSize + , transitionStyleFast + , hoverFontDarkOrange + ] + body + } + , hardLineBreak = Html.br [] [] |> E.html + , image = + \image -> + case image.title of + Just title -> + el + [ width fill ] + <| + column + [ E.centerX + , E.centerY + , width fill + , E.paddingEach + { top = 0 + , bottom = 10 + , left = 10 + , right = 10 + } + ] + [ E.image + [ E.centerX + , width (fill |> maximum 600) + ] + { src = image.src + , description = image.alt + } + ] + + Nothing -> + el + [ width fill ] + <| + column + [ E.centerX + , E.centerY + , width fill + , E.paddingEach + { top = 3 + , bottom = 10 + , left = 10 + , right = 10 + } + ] + [ E.image + [ E.centerX + , width (fill |> maximum 600) + ] + { src = image.src + , description = image.alt + } + ] + , blockQuote = + \children -> + E.column + [ D.widthEach + { top = 0 + , right = 0 + , bottom = 0 + , left = 5 + } + , D.rounded 10 + , E.paddingEach + { top = 13 + , bottom = 10 + , left = 10 + , right = 10 + } + , D.color (getThemeColor TextLightOrange) + , B.color (getThemeColor BackgroundLightGrey) + , defaultFontSize + , width fill + , spacing 10 + ] + children + , unorderedList = + \items -> + E.column + [ E.spacing 10 + , defaultFontSize + ] + (items + |> List.map + (\(ListItem task children) -> + E.row + [ E.width fill + ] + [ E.el + [ E.width <| E.px 20 + , E.alignTop + , alignRight + ] + (case task of + IncompleteTask -> + Input.defaultCheckbox False + + CompletedTask -> + Input.defaultCheckbox True + + NoTask -> + E.text "鈥" + ) + , E.column + [ E.width fill, F.alignLeft ] + children + ] + ) + ) + , orderedList = + \startingIndex items -> + E.column + [ E.spacing 10 + , E.width fill + ] + (items + |> List.indexedMap + (\index itemBlocks -> + E.row + [ E.width fill + ] + [ E.el + [ E.alignTop + , width <| px 25 + , F.bold + , alignRight + , defaultFontSize + ] + (E.text (String.fromInt (index + startingIndex) ++ ".")) + , E.column + [ alignLeft + , defaultFontSize + , E.width fill + ] + itemBlocks + ] + ) + ) + , codeBlock = codeBlock + , html = Markdown.Html.oneOf [] + , table = E.column [ width fill ] + , tableHeader = E.column [ width fill ] + , tableBody = E.column [ width fill ] + , tableRow = E.row [ width fill ] + , tableHeaderCell = + \maybeAlignment children -> + E.paragraph [ width fill ] children + , tableCell = + \maybeAlignment children -> + E.paragraph [ width fill ] children + } + + +code : String -> Element msg +code snippet = + E.el + [ B.color (getThemeColor BackgroundLightGrey) + , D.rounded 2 + , E.paddingXY 5 3 + , width fill + , F.family + [ F.external + { url = "https://fonts.googleapis.com/css?family=Source+Code+Pro" + , name = "Source Code Pro" + } + ] + ] + (E.text snippet) + + +codeBlock : { body : String, language : Maybe String } -> Element msg +codeBlock details = + E.el + [ B.color (getThemeColor BackgroundLightGrey) + , E.htmlAttribute (Html.Attributes.style "white-space" "pre") + , width fill + , E.paddingEach + { top = 23 + , bottom = 20 + , left = 20 + , right = 20 + } + , defaultFontSize + , F.family + [ F.external + { url = "https://fonts.googleapis.com/css?family=Source+Code+Pro" + , name = "Source Code Pro" + } + ] + ] + (E.text details.body) + + +elmUiRendererGeneric : Markdown.Renderer.Renderer (Element msg) +elmUiRendererGeneric = + { heading = headingGeneric + , paragraph = + E.paragraph + [ E.spacing 3 + , defaultFontSize + , F.alignLeft + , width fill + ] + , thematicBreak = E.none + , text = E.text + , strong = + \content -> + E.row + [ F.bold + ] + content + , emphasis = + \content -> + E.row + [ F.italic + ] + content + , strikethrough = + \content -> + E.row + [ F.strike + ] + content + , codeSpan = codeGeneric + , link = + \{ title, destination } body -> + E.newTabLink + [ width fill ] + { url = destination + , label = + E.paragraph + [ F.color (getThemeColor TextLightOrange) + , defaultFontSize + , transitionStyleFast + , hoverFontDarkOrange + ] + body + } + , hardLineBreak = Html.br [] [] |> E.html + , image = + \image -> + case image.title of + Just title -> + el + [ width fill ] + <| + column + [ E.centerX + , E.centerY + , width fill + , E.paddingEach + { top = 0 + , bottom = 10 + , left = 10 + , right = 10 + } + ] + [ E.image + [ E.centerX + , width (fill |> maximum 600) + ] + { src = image.src + , description = image.alt + } + ] + + Nothing -> + el + [ width fill ] + <| + column + [ E.centerX + , E.centerY + , width fill + , E.paddingEach + { top = 3 + , bottom = 10 + , left = 10 + , right = 10 + } + ] + [ E.image + [ E.centerX + , width (fill |> maximum 600) + ] + { src = image.src + , description = image.alt + } + ] + , blockQuote = + \children -> + E.column + [ D.widthEach + { top = 0 + , right = 0 + , bottom = 0 + , left = 5 + } + , D.rounded 10 + , E.paddingEach + { top = 13 + , bottom = 10 + , left = 10 + , right = 10 + } + , D.color (getThemeColor TextLightOrange) + , B.color (getThemeColor BackgroundLightGrey) + , defaultFontSize + , width fill + , spacing 10 + ] + children + , unorderedList = + \items -> + E.column + [ E.spacing 10 + , defaultFontSize + ] + (items + |> List.map + (\(ListItem task children) -> + E.row + [ E.width fill + ] + [ E.el + [ E.width <| E.px 20 + , E.alignTop + , alignRight + ] + (case task of + IncompleteTask -> + Input.defaultCheckbox False + + CompletedTask -> + Input.defaultCheckbox True + + NoTask -> + E.text "鈥" + ) + , E.column + [ E.width fill, F.alignLeft ] + children + ] + ) + ) + , orderedList = + \startingIndex items -> + E.column + [ E.spacing 10 + , E.width fill + ] + (items + |> List.indexedMap + (\index itemBlocks -> + E.row + [ E.width fill + ] + [ E.el + [ E.alignTop + , width <| px 25 + , F.bold + , alignRight + , defaultFontSize + ] + (E.text (String.fromInt (index + startingIndex) ++ ".")) + , E.column + [ alignLeft + , defaultFontSize + , E.width fill + ] + itemBlocks + ] + ) + ) + , codeBlock = codeBlockGeneric + , html = Markdown.Html.oneOf [] + , table = E.column [ width fill ] + , tableHeader = E.column [ width fill ] + , tableBody = E.column [ width fill ] + , tableRow = E.row [ width fill ] + , tableHeaderCell = + \maybeAlignment children -> + E.paragraph [ width fill ] children + , tableCell = + \maybeAlignment children -> + E.paragraph [ width fill ] children + } + + +codeGeneric : String -> Element msg +codeGeneric snippet = + E.el + [ B.color (getThemeColor BackgroundLightGrey) + , D.rounded 2 + , E.paddingXY 5 3 + , width fill + , F.family + [ F.external + { url = "https://fonts.googleapis.com/css?family=Source+Code+Pro" + , name = "Source Code Pro" + } + ] + ] + (E.text snippet) + + +codeBlockGeneric : { body : String, language : Maybe String } -> Element msg +codeBlockGeneric details = + E.el + [ B.color (getThemeColor BackgroundLightGrey) + , E.htmlAttribute (Html.Attributes.style "white-space" "pre") + , width fill + , E.paddingEach + { top = 23 + , bottom = 20 + , left = 20 + , right = 20 + } + , defaultFontSize + , F.family + [ F.external + { url = "https://fonts.googleapis.com/css?family=Source+Code+Pro" + , name = "Source Code Pro" + } + ] + ] + (E.text details.body) + + +headingGeneric : { level : Block.HeadingLevel, rawText : String, children : List (Element msg) } -> Element msg +headingGeneric { level, rawText, children } = + column [ width fill, spacing 20 ] + [ case level of + Block.H1 -> + divider + + _ -> + none + , E.paragraph + [ case level of + Block.H1 -> + headerFontSizeBig + + Block.H2 -> + headerFontSizeMedium + + _ -> + defaultFontSize + , F.bold + , case level of + Block.H1 -> + F.center + + _ -> + F.alignLeft + , width fill + , F.color (getThemeColor TextLightOrange) + , Region.heading (Block.headingLevelToInt level) + , E.htmlAttribute + (Html.Attributes.attribute "name" (rawTextToId rawText)) + , E.htmlAttribute + (Html.Attributes.id (rawTextToId rawText)) + ] + children + ] + + +heading : { level : Block.HeadingLevel, rawText : String, children : List (Element Msg) } -> Element Msg +heading { level, rawText, children } = + column [ width fill, spacing 20 ] + [ case level of + Block.H1 -> + divider + + _ -> + none + , E.paragraph + [ case level of + Block.H1 -> + headerFontSizeBig + + Block.H2 -> + headerFontSizeMedium + + _ -> + defaultFontSize + , F.bold + , case level of + Block.H1 -> + F.center + + _ -> + F.alignLeft + , width fill + , F.color (getThemeColor TextLightOrange) + , Region.heading (Block.headingLevelToInt level) + , E.htmlAttribute + (Html.Attributes.attribute "name" (rawTextToId rawText)) + , E.htmlAttribute + (Html.Attributes.id (rawTextToId rawText)) + ] + children + ] + + +rawTextToId rawText = + rawText + |> String.split " " + -- |> Debug.log "split" + |> String.join "-" + -- |> Debug.log "joined" + |> String.toLower + + + +-- Types + + +type alias TableOfContents = + List { anchorId : String, name : String, level : Int } diff --git a/packages/website/frontend/src/Config/Helpers/Articles/Types.elm b/packages/website/frontend/src/Config/Helpers/Articles/Types.elm new file mode 100755 index 0000000..32ec998 --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Articles/Types.elm @@ -0,0 +1,10 @@ +module Config.Helpers.Articles.Types exposing (References) + + +type alias References = + { author : String + , title : String + , link : String + , year : String + , journal : String + } diff --git a/packages/website/frontend/src/Config/Helpers/Cards/Inner/BuyButton.elm b/packages/website/frontend/src/Config/Helpers/Cards/Inner/BuyButton.elm new file mode 100755 index 0000000..d87ad73 --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Cards/Inner/BuyButton.elm @@ -0,0 +1,67 @@ +module Config.Helpers.Cards.Inner.BuyButton exposing (buyButton) + +import Config.Style.Colour.Helpers exposing (colourTheme) +import Config.Style.Fonts exposing (headerFontSizeBig) +import Config.Style.Glow exposing (glowDeepDarkGrey) +import Config.Style.Transitions exposing (hoverPageButtonDeepDarkOrange, transitionStyleMedium) +import Element as E + exposing + ( Element + , centerX + , el + , newTabLink + , paddingEach + , pointer + , row + , text + ) +import Element.Background as B exposing (color) +import Element.Border as D exposing (rounded) +import Element.Font as F + exposing + ( bold + , center + ) + + +buyButton : String -> String -> Element msg +buyButton price url = + el + [ D.width 5 + , D.rounded 30 + , centerX + , glowDeepDarkGrey + , D.color colourTheme.backgroundLightGrey + , B.color colourTheme.backgroundLightGrey + , pointer + ] + <| + el + [ B.color colourTheme.textDarkOrange + , D.rounded 30 + , headerFontSizeBig + , F.bold + , transitionStyleMedium + , hoverPageButtonDeepDarkOrange + , paddingEach + { top = 10 + , right = 25 + , bottom = 10 + , left = 25 + } + ] + <| + newTabLink [] + { url = url + , label = + row + [ F.center + , paddingEach + { top = 3 + , right = 0 + , bottom = 0 + , left = 0 + } + ] + [ text price ] + } diff --git a/packages/website/frontend/src/Config/Helpers/Cards/Inner/CopyButton.elm b/packages/website/frontend/src/Config/Helpers/Cards/Inner/CopyButton.elm new file mode 100755 index 0000000..b09dd1b --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Cards/Inner/CopyButton.elm @@ -0,0 +1,30 @@ +module Config.Helpers.Cards.Inner.CopyButton exposing (..) + +import Config.Helpers.Cards.Inner.Text + exposing + ( getHoverColours + ) +import Config.Helpers.Cards.Inner.ToolTip exposing (tooltip) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , colourTheme + , getThemeColor + ) +import Config.Style.Icons.Icons exposing (copyLink) +import Config.Style.Icons.Types as TySvg exposing (..) +import Config.Style.Transitions exposing (transitionStyleSlow) +import Element as E exposing (..) +import Element.Background as B +import Element.Border as D +import Element.Font as F +import Element.Input as Input +import Ports +import Shared +import Shared.Msg exposing (Msg(..)) +import Svg.Attributes as SvgAttr +import Task + + +sdafasd = + [] diff --git a/packages/website/frontend/src/Config/Helpers/Cards/Inner/StrengthBar.elm b/packages/website/frontend/src/Config/Helpers/Cards/Inner/StrengthBar.elm new file mode 100755 index 0000000..85b86fc --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Cards/Inner/StrengthBar.elm @@ -0,0 +1,77 @@ +module Config.Helpers.Cards.Inner.StrengthBar exposing + ( barMaker + , barPadding + ) + +import Config.Helpers.Cards.Inner.ToolTip + exposing + ( ToolTipPosition(..) + , tooltip + ) +import Config.Style.Colour.Helpers exposing (colourTheme) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignLeft + , column + , el + , fill + , height + , none + , px + , width + ) +import Element.Background as B exposing (gradient) +import Element.Border as D + exposing + ( color + , rounded + , width + ) +import Shared exposing (Model) + + +barMaker : Shared.Model -> (Int -> String) -> Int -> Element msg +barMaker shared getTooltip num = + let + strengthBarAttr = + [ height <| px 12 + , E.width fill + , D.rounded 10 + , D.color colourTheme.textDarkGrey + , D.width 2 + , B.gradient + { angle = 1.57 + , steps = + List.concat + [ List.repeat num colourTheme.barGreen + , List.repeat (10 - num) colourTheme.barRed + ] + } + ] + in + el + (strengthBarAttr + ++ (case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + [] + + ( Tablet, Portrait ) -> + [] + + _ -> + [ tooltip IsLeft (getTooltip num) ] + ) + ) + none + + +barPadding : List (Element msg) -> Element msg +barPadding = + column + [ E.width fill + , alignLeft + ] diff --git a/packages/website/frontend/src/Config/Helpers/Cards/Inner/Text.elm b/packages/website/frontend/src/Config/Helpers/Cards/Inner/Text.elm new file mode 100755 index 0000000..1e7f40a --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Cards/Inner/Text.elm @@ -0,0 +1,351 @@ +module Config.Helpers.Cards.Inner.Text exposing + ( bodyFormat + , detailBodyLink + , detailBodyMaker + , detailFormat + , detailFormatEl + , detailHeader + , detailSpacing + , detailTitleLink + , detailTitleLinkWide + , detailTitleMaker + , divider + , generalButton + , getHoverColours + , listCounter + , listItem + , listMaker + , listMaker2 + , numberedListItem + , renderCodeLine + , socialMaker + , titleFormat + ) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Converters exposing (formatSocial) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , getThemeColor + ) +import Config.Style.Colour.Types exposing (SyntaxColors) +import Config.Style.Fonts + exposing + ( defaultFontSize + , headerFontSizeBig + , paragraphSpacing + ) +import Config.Style.Icons.Types as TySvg exposing (..) +import Config.Style.Transitions + exposing + ( hoverFontDarkOrange + , transitionStyleMedium + , transitionStyleSlow + ) +import Element as E + exposing + ( Attribute + , Element + , alignLeft + , alignTop + , centerX + , column + , el + , fill + , height + , maximum + , mouseOver + , newTabLink + , none + , paddingEach + , paddingXY + , paragraph + , pointer + , row + , spacing + , text + , width + ) +import Element.Border as D + exposing + ( color + , rounded + , widthEach + ) +import Element.Font as F + exposing + ( alignLeft + , bold + , color + , family + ) +import Shared +import Svg.Attributes as SvgAttr + + +detailSpacing : Attribute msg +detailSpacing = + spacing 5 + + +detailFormat : (List (Attribute msg) -> List (Element msg) -> Element msg) -> List (Element msg) -> Element msg +detailFormat block elements = + block + [ detailSpacing + , width fill + ] + elements + + +detailFormatEl : Element msg -> Element msg +detailFormatEl element = + el + [ detailSpacing + , width fill + ] + element + + +titleFormat : ThemeColor -> List (Attribute msg) +titleFormat colour = + [ alignTop + , F.bold + , F.color (getThemeColor colour) + , defaultFontSize + , paragraphSpacing + ] + + +bodyFormat : ThemeColor -> List (Attribute msg) +bodyFormat colour = + [ F.regular + , defaultFontSize + , F.color (getThemeColor colour) + , width fill + , F.alignLeft + ] + + +detailTitleMaker : ThemeColor -> String -> Element msg +detailTitleMaker colour item = + el + (titleFormat colour) + <| + text item + + +detailTitleLink : ThemeColor -> String -> Element msg +detailTitleLink colour item = + el + (getHoverColours colour + ++ (titleFormat colour + ++ [ pointer + ] + ) + ) + <| + text item + + +detailTitleLinkWide : ThemeColor -> String -> Element msg +detailTitleLinkWide colour item = + paragraph + (getHoverColours colour + ++ (titleFormat colour + ++ [ width fill + , pointer + ] + ) + ) + [ text item ] + + +detailBodyLink : ThemeColor -> String -> Element msg +detailBodyLink colour item = + el + (getHoverColours colour + ++ (bodyFormat colour + ++ [ width fill + , pointer + ] + ) + ) + <| + text item + + +getHoverColours : ThemeColor -> List (Attribute msg) +getHoverColours colour = + [ transitionStyleMedium + , mouseOver + [ case colour of + TextLightGrey -> + F.color (getThemeColor TextLightOrange) + + TextLightOrange -> + F.color (getThemeColor TextDarkOrange) + + TextDarkOrange -> + F.color (getThemeColor TextDeepDarkOrange) + + _ -> + F.color (getThemeColor TextDeepDarkOrange) + ] + ] + + +detailBodyMaker : ThemeColor -> Element msg -> Element msg +detailBodyMaker colour item = + paragraph + (bodyFormat colour) + [ item ] + + +listMaker : (a -> Element msg) -> List a -> Element msg +listMaker makeItem itemInfo = + detailFormat column <| + List.map2 (\x y -> makeItem x) + itemInfo + (List.range 1 (List.length itemInfo)) + + +listMaker2 : (a -> Int -> Element msg) -> List a -> Element msg +listMaker2 makeItem itemInfo = + detailFormat column <| + List.map2 + (\x y -> makeItem x y) + itemInfo + (List.range 1 (List.length itemInfo)) + + +listItem : ThemeColor -> String -> Element msg +listItem colour item = + el + [ defaultFontSize + , F.bold + , E.alignLeft + , width fill + , F.color (getThemeColor colour) + ] + <| + paragraph [ F.regular ] + [ E.text ("鈥 " ++ item) ] + + +numberedListItem : ThemeColor -> Int -> Element msg +numberedListItem colour index = + el + [ alignTop + , F.bold + , F.color (getThemeColor colour) + , defaultFontSize + ] + <| + text (String.fromInt index ++ ". ") + + +generalButton : Shared.Model -> String -> (OuterPart msg -> Element msg) -> Element msg +generalButton shared url icon = + newTabLink + ([ alignTop + , paddingXY 0 5 + , F.color (getThemeColor TextLightOrange) + ] + ++ getHoverColours TextLightOrange + ) + { url = url + , label = + el + [ transitionStyleSlow + , paddingXY 7 7 + , D.rounded 10 + ] + <| + icon + { elementAttributes = + [] + , sharedModel = shared + , svgAttributes = [ SvgAttr.width "20" ] + } + } + + +socialMaker : String -> String -> Element msg +socialMaker link item = + newTabLink + [] + { url = link + , label = + detailTitleLink + TextLightOrange + (formatSocial item) + } + + +listCounter : Int -> Element msg +listCounter index = + detailTitleMaker TextLightGrey + (String.fromInt index ++ ". ") + + +divider : Element msg +divider = + el + [ width fill + , height fill + , centerX + , width (fill |> maximum 600) + , D.widthEach + { bottom = 1 + , top = 0 + , left = 0 + , right = 0 + } + , D.color (getThemeColor TextLightOrange) + , paddingEach + { top = 10 + , bottom = 0 + , left = 0 + , right = 0 + } + ] + <| + none + + +renderCodeLine : SyntaxColors -> List (Element msg) -> Element msg +renderCodeLine colors elements = + paragraph + [ F.color colors.text + , F.alignLeft + , F.family + [ F.monospace ] + ] + elements + + +detailHeader : String -> Element msg +detailHeader title = + column + [ centerX + , width fill + ] + [ divider + , paragraph + [ F.color (getThemeColor TextLightGrey) + , paragraphSpacing + , F.bold + , centerX + , F.center + , headerFontSizeBig + , F.color (getThemeColor TextLightOrange) + , paddingEach + { top = 20 + , right = 0 + , bottom = 0 + , left = 0 + } + ] + [ text (String.toUpper title) ] + ] diff --git a/packages/website/frontend/src/Config/Helpers/Cards/Inner/ToolTip.elm b/packages/website/frontend/src/Config/Helpers/Cards/Inner/ToolTip.elm new file mode 100755 index 0000000..01ef031 --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Cards/Inner/ToolTip.elm @@ -0,0 +1,148 @@ +module Config.Helpers.Cards.Inner.ToolTip exposing + ( ToolTipPosition(..) + , tooltip + , tooltipImage + ) + +import Config.Style.Colour.Helpers exposing (colourTheme) +import Config.Style.Transitions exposing (transitionStyleSlow) +import Element as E + exposing + ( Attribute + , alignLeft + , alignRight + , below + , centerX + , centerY + , el + , fill + , height + , htmlAttribute + , image + , inFront + , mouseOver + , moveLeft + , none + , padding + , pointer + , px + , rgba + , text + , transparent + , width + ) +import Element.Background as B exposing (color) +import Element.Border as D + exposing + ( color + , rounded + , shadow + , width + ) +import Element.Font as F + exposing + ( center + , regular + , size + ) +import Html.Attributes as H exposing (style) + + +tooltip : ToolTipPosition -> String -> Attribute msg +tooltip toolTipPosition content = + let + tooltipContent : Attribute msg + tooltipContent = + below <| + el + [ htmlAttribute (H.style "pointerEvents" "none") + , case toolTipPosition of + IsLeft -> + alignLeft + + IsRight -> + alignRight + ] + <| + el + [ E.width fill + , htmlAttribute <| H.style "z-index" "4" + , F.size 15 + , F.center + , F.regular + , B.color colourTheme.backgroundLightGrey + , F.color colourTheme.textLightGrey + , padding 15 + , D.color colourTheme.textLightOrange + , D.rounded 5 + , D.width 2 + , D.shadow + { offset = ( 0, 3 ) + , blur = 6 + , size = 0 + , color = rgba 0 0 0 0.32 + } + ] + (text content) + in + inFront <| + el + [ E.width fill + , height fill + , pointer + , transparent True + , mouseOver [ transparent False ] + , htmlAttribute <| H.style "z-index" "4" + , transitionStyleSlow + , tooltipContent + ] + none + + +type ToolTipPosition + = IsLeft + | IsRight + + +tooltipImage : String -> Attribute msg +tooltipImage content = + inFront <| + el + [ E.width fill + , height fill + , transparent True + , mouseOver [ transparent False ] + , htmlAttribute <| H.style "z-index" "4" + , transitionStyleSlow + , below <| + el + [ htmlAttribute (H.style "pointerEvents" "none") + , moveLeft 200 + ] + <| + el + [ E.width <| px 400 + , htmlAttribute <| H.style "z-index" "4" + , B.color colourTheme.backgroundLightGrey + , D.color colourTheme.textLightOrange + , D.rounded 5 + , D.width 2 + , D.shadow + { offset = ( 0, 3 ) + , blur = 6 + , size = 0 + , color = rgba 0 0 0 0.32 + } + ] + (image + [ E.width fill + , height fill + , centerX + , centerY + ] + { src = content + , description = "Tooltip image" + } + ) + ] + none diff --git a/packages/website/frontend/src/Config/Helpers/Cards/Outer/Helpers.elm b/packages/website/frontend/src/Config/Helpers/Cards/Outer/Helpers.elm new file mode 100755 index 0000000..da374cd --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Cards/Outer/Helpers.elm @@ -0,0 +1,576 @@ +module Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) + +-- import Config.Style.Colour.Helpers exposing (colourTheme) + +import Config.Data.Identity exposing (pageNames) +import Config.Data.ImageFolders as M + exposing + ( ImageFolder(..) + , getImageFolderString + , imagePathMaker + ) +import Config.Helpers.Cards.Inner.Text exposing (divider) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Helpers.Response exposing (contentContainer) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , getThemeColor + ) +import Config.Style.Fonts + exposing + ( defaultFontSize + , headerFontSizeBig + ) +import Config.Style.Glow + exposing + ( glowDeepDarkGrey + , glowDeepDarkOrange + ) +import Config.Style.Transitions exposing (transitionStyleSlow) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignRight + , alignTop + , centerX + , column + , el + , fill + , height + , image + , link + , mouseOver + , newTabLink + , none + , padding + , paddingEach + , paddingXY + , paragraph + , row + , spacing + , text + , width + ) +import Element.Background as B exposing (color) +import Element.Border as D + exposing + ( color + , roundEach + , rounded + , width + ) +import Element.Font as F + exposing + ( alignLeft + , bold + , center + , color + ) +import Html.Attributes as H exposing (id) + + +cardMaker : Device -> Cardable -> List (Element msg) -> Element msg +cardMaker device cardable contents = + let + hasLink : Bool + hasLink = + case cardable of + C.Contact _ -> + True + + C.Cuck c -> + False + + C.BlogArticle _ -> + False + + C.BlogCard _ -> + True + + C.Argument _ -> + False + + C.Gibberish _ -> + True + + C.Service _ -> + True + + C.Debate _ -> + True + + C.Donate _ -> + True + + C.Interview _ -> + False + + C.NutriDex _ -> + False + + C.ServicePage _ -> + False + + C.ContactPage _ -> + False + + cardTitleMaker : String -> String -> Maybe String -> Element msg + cardTitleMaker htmlId title maybeUrl = + el + ([ headerFontSizeBig + , F.bold + , F.color (getThemeColor TextLightGrey) + , E.width fill + , E.htmlAttribute (H.id (formatName htmlId)) + ] + ++ (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + [] + + ( Tablet, Portrait ) -> + [] + + _ -> + [ F.center + , B.color (getThemeColor TextDarkOrange) + , D.roundEach + { topLeft = 26 + , topRight = 26 + , bottomRight = 0 + , bottomLeft = 0 + } + , paddingEach + { top = 6 + , bottom = 3 + , left = 20 + , right = 20 + } + ] + ) + ) + <| + column + [ E.width fill + , spacing 10 + ] + [ case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + case cardable of + C.NutriDex _ -> + none + + _ -> + divider + + ( Tablet, Portrait ) -> + case cardable of + C.NutriDex _ -> + none + + _ -> + divider + + _ -> + none + , case cardable of + C.BlogCard blogArticle -> + case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + image + [ E.width fill + , paddingEach + { top = 8 + , bottom = 0 + , left = 0 + , right = 0 + } + ] + { src = "/blog/" ++ blogArticle.articleImage ++ ".png", description = "" } + + ( Tablet, Portrait ) -> + image + [ E.width fill + , paddingEach + { top = 8 + , bottom = 0 + , left = 0 + , right = 0 + } + ] + { src = "/blog/" ++ blogArticle.articleImage ++ ".png", description = "" } + + _ -> + none + + _ -> + none + , row + [ E.width fill + , spacing 10 + , case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + F.alignLeft + + ( Tablet, Portrait ) -> + F.alignLeft + + _ -> + F.center + , paddingXY 0 + (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + 10 + + ( Tablet, Portrait ) -> + 10 + + _ -> + 0 + ) + ] + [ case cardable of + C.NutriDex _ -> + case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + none + + ( Tablet, Portrait ) -> + none + + _ -> + paragraph [] [ text title ] + + _ -> + paragraph [] [ text title ] + , el + [ alignRight + ] + (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + case maybeUrl of + Just url -> + readMoreLink url + + Nothing -> + none + + ( Tablet, Portrait ) -> + case maybeUrl of + Just url -> + readMoreLink url + + Nothing -> + none + + _ -> + none + ) + ] + ] + + readMoreLink : String -> Element msg + readMoreLink url = + link [ alignTop, paddingXY 0 5 ] + { url = url + , label = + el + [ F.color (getThemeColor TextLightGrey) + , B.color (getThemeColor TextDarkOrange) + , D.rounded 10 + , paddingEach + { top = 6 + , bottom = 3 + , left = 10 + , right = 10 + } + , mouseOver + [ F.color (getThemeColor TextLightOrange) + , B.color (getThemeColor TextDeepDarkOrange) + ] + , transitionStyleSlow + , defaultFontSize + ] + <| + text + (case cardable of + C.Donate _ -> + "Support!" + + C.Argument _ -> + "Proof Tree!" + + _ -> + "Read More!" + ) + } + + cardInner : String -> String -> Maybe String -> List (Element msg) -> Element msg + cardInner htmlId title maybeUrl elements = + column + [ E.width fill + , spacing 0 + ] + [ cardTitleMaker htmlId title maybeUrl + , (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + el + [ E.width fill + , centerX + ] + + ( Tablet, Portrait ) -> + el + [ E.width fill + , centerX + ] + + _ -> + cardStuff + ) + <| + row + [ E.width fill + ] + elements + ] + + cardOuter : Element msg -> Element msg + cardOuter elements = + contentContainer <| + el + ([ E.width fill + ] + ++ (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + [] + + ( Tablet, Portrait ) -> + [] + + _ -> + [ E.width fill + , D.width 5 + , D.color (getThemeColor BackgroundDarkGrey) + , D.rounded 32 + , glowDeepDarkGrey + ] + ++ (if hasLink then + [ mouseOver + [ D.color (getThemeColor TextDarkOrange) + , B.color (getThemeColor TextDarkOrange) + , glowDeepDarkOrange + ] + , transitionStyleSlow + ] + + else + [] + ) + ) + ) + elements + + cardWithImageWithLink : String -> Bool -> String -> String -> String -> List (Element msg) -> Element msg + cardWithImageWithLink htmlId linkBool title image url content = + linkChooser + linkBool + (cardInner htmlId + title + (if hasLink then + Just url + + else + Nothing + ) + [ cardContentMaker content + ] + ) + url + + cardWithNoImageWithLink : String -> Bool -> String -> String -> List (Element msg) -> Element msg + cardWithNoImageWithLink htmlId linkBool title url content = + linkChooser + linkBool + (cardInner htmlId + title + (Just url) + [ cardContentMaker content + ] + ) + url + + cardWithImage : String -> String -> String -> List (Element msg) -> Element msg + cardWithImage htmlId title image content = + cardOuter <| + cardInner htmlId + title + Nothing + [ cardContentMaker content + ] + + cardWithNoImage : String -> String -> List (Element msg) -> Element msg + cardWithNoImage htmlId title content = + cardOuter <| + cardInner htmlId + title + Nothing + [ cardContentMaker content + ] + + linkChooser : Bool -> Element msg -> String -> Element msg + linkChooser linkBool element url = + cardOuter <| + case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + el [ E.width fill ] <| element + + ( Tablet, Portrait ) -> + el [ E.width fill ] <| element + + _ -> + (if linkBool then + newTabLink + + else + link + ) + [ E.width fill ] + { url = url + , label = element + } + in + case cardable of + C.Contact contact -> + cardWithImageWithLink + contact.contactImage + contact.isNewTabLink + contact.contactName + (imagePathMaker M.Contact contact.contactImage) + contact.contactLink + contents + + C.Cuck cuck -> + cardWithImage + cuck.cuckImage + cuck.cuckName + (imagePathMaker M.Cuck cuck.cuckImage) + contents + + C.BlogArticle blogArticle -> + cardWithNoImage + blogArticle.articleImage + (String.toUpper blogArticle.articleName) + contents + + C.BlogCard blogArticle -> + cardWithImageWithLink + blogArticle.articleImage + blogArticle.isNewTabLink + blogArticle.articleName + (imagePathMaker M.BlogCard blogArticle.articleImage) + blogArticle.articleLink + contents + + C.Argument argument -> + cardWithNoImage + argument.argumentImage + argument.argumentTitle + contents + + C.Gibberish gibberish -> + cardWithImageWithLink + gibberish.gibberishImage + gibberish.isNewTabLink + gibberish.gibberishTitle + (imagePathMaker M.Gibberish gibberish.gibberishImage) + gibberish.gibberishLink + contents + + C.Service service -> + cardWithImageWithLink + service.serviceImage + service.isNewTabLink + service.serviceName + (imagePathMaker M.Service service.serviceImage) + service.serviceLink + contents + + C.Debate debate -> + cardWithImageWithLink + debate.debateImage + debate.isNewTabLink + debate.debateTitle + (imagePathMaker M.Debate debate.debateImage) + debate.debateLink + contents + + C.Donate donate -> + cardWithImageWithLink + donate.donateImage + donate.isNewTabLink + donate.donateName + (imagePathMaker M.Donate donate.donateImage) + donate.donateLink + contents + + C.Interview interview -> + cardWithImage + interview.interviewImage + interview.interviewName + (imagePathMaker M.Interviews interview.interviewImage) + contents + + C.NutriDex nutriDex -> + cardWithNoImage + nutriDex.nutriDexTitle + (String.toUpper nutriDex.nutriDexTitle) + contents + + C.ServicePage service -> + cardWithNoImage + service.serviceImage + (String.toUpper service.serviceName) + contents + + C.ContactPage contact -> + cardWithNoImage + contact.contactImage + (String.toUpper contact.contactName) + contents + + +cardContentMaker : List (Element msg) -> Element msg +cardContentMaker content = + column + [ spacing 8 + , E.width fill + ] + content + + +cardStuff : Element msg -> Element msg +cardStuff content = + el + [ E.width fill + , centerX + , B.color (getThemeColor BackgroundDarkGrey) + , padding 10 + , D.roundEach + { topLeft = 0 + , topRight = 0 + , bottomRight = 26 + , bottomLeft = 26 + } + ] + <| + el + [ paddingXY 15 0 + , E.width fill + , height fill + ] + content diff --git a/packages/website/frontend/src/Config/Helpers/Cards/Outer/Types.elm b/packages/website/frontend/src/Config/Helpers/Cards/Outer/Types.elm new file mode 100755 index 0000000..a7914fc --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Cards/Outer/Types.elm @@ -0,0 +1,28 @@ +module Config.Helpers.Cards.Outer.Types exposing (Cardable(..)) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Config.Pages.Contact.Types exposing (Contact) +import Config.Pages.Debate.Arguments.Types exposing (Argument) +import Config.Pages.Debate.Cuckery.Types exposing (Cuck) +import Config.Pages.Debate.Gibberish.Types exposing (Gibberish) +import Config.Pages.Debate.Types exposing (Debate) +import Config.Pages.Donate.Types exposing (Donate) +import Config.Pages.Interviews.Types exposing (Interview) +import Config.Pages.Products.Types exposing (NutriDex) +import Config.Pages.Services.Types exposing (Service) + + +type Cardable + = Contact Contact + | ContactPage Contact + | Cuck Cuck + | BlogArticle BlogArticle + | BlogCard BlogArticle + | Argument Argument + | Gibberish Gibberish + | Service Service + | Debate Debate + | Donate Donate + | Interview Interview + | NutriDex NutriDex + | ServicePage Service diff --git a/packages/website/frontend/src/Config/Helpers/Converters.elm b/packages/website/frontend/src/Config/Helpers/Converters.elm new file mode 100755 index 0000000..2e36f2c --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Converters.elm @@ -0,0 +1,66 @@ +module Config.Helpers.Converters exposing + ( formatName + , formatSocial + , toTitleCase + , wordCount + ) + + +formatName : String -> String +formatName name = + name + |> String.toLower + |> String.replace " " "" + |> String.replace "'" "" + |> String.replace "." "" + |> String.replace "-" "" + |> String.replace "_" "" + + +formatSocial : String -> String +formatSocial name = + name + |> String.replace "https://x.com/" "@" + |> String.replace "https://www.threads.net/@" "@" + |> String.replace "https://bsky.app/profile/" "@" + |> String.replace "https://www.instagram.com/" "@" + |> String.replace "https://www.youtube.com/" "@" + + +wordCount : String -> Int +wordCount text = + text + |> String.words + |> List.length + + +toTitleCase : String -> String +toTitleCase input = + let + lowercaseWords = + [ "a", "an", "the", "and", "but", "or", "for", "nor", "on", "at", "to", "in", "of", "with", "by" ] + + words = + String.words input + + capitalizeFirst word = + case String.uncons word of + Just ( first, rest ) -> + String.toUpper (String.fromChar first) ++ String.toLower rest + + Nothing -> + "" + + capitalizeWord index word = + if index == 0 then + capitalizeFirst word + + else if not (List.member (String.toLower word) lowercaseWords) then + capitalizeFirst word + + else + String.toLower word + in + words + |> List.indexedMap capitalizeWord + |> String.join " " diff --git a/packages/website/frontend/src/Config/Helpers/Headers/Helpers.elm b/packages/website/frontend/src/Config/Helpers/Headers/Helpers.elm new file mode 100755 index 0000000..186fcac --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Headers/Helpers.elm @@ -0,0 +1,160 @@ +module Config.Helpers.Headers.Helpers exposing (headerMaker) + +import Config.Helpers.Cards.Inner.Text exposing (divider) +import Config.Helpers.Converters exposing (formatName) +import Config.Helpers.Headers.Types as C exposing (Headerable(..)) +import Config.Helpers.Response exposing (contentContainer) +import Config.Style.Colour.Helpers exposing (colourTheme) +import Config.Style.Fonts + exposing + ( defaultFontSize + , headerFontSizeBig + ) +import Element as E + exposing + ( Element + , centerX + , column + , el + , fill + , maximum + , minimum + , padding + , paddingEach + , paragraph + , spacing + , text + , width + ) +import Element.Font as F + exposing + ( bold + , center + ) + + +headerMaker : Headerable msg -> Element msg +headerMaker headerable = + let + headerTitleMaker : String -> Element msg + headerTitleMaker title = + el + [ headerFontSizeBig + , F.bold + , width fill + , F.center + ] + <| + paragraph [] [ text title ] + + headerHelper : String -> List (Element msg) -> Element msg + headerHelper title body = + el + [ width (fill |> minimum 100) + , width (fill |> maximum 725) + , padding 10 + , centerX + ] + <| + column + [ width fill + ] + [ headerTitleMaker title + , divider + , el + [ E.height fill + , E.width fill + , centerX + , spacing 8 + , paddingEach + { top = 10 + , bottom = 0 + , left = 0 + , right = 0 + } + ] + <| + el + [ paddingEach + { top = 0 + , bottom = 0 + , left = 15 + , right = 15 + } + , spacing 8 + , width fill + ] + <| + paragraph + [ width fill + , defaultFontSize + , F.center + ] + <| + body + ] + in + case headerable of + C.Arguments argument -> + headerHelper argument.headerTitle argument.headerBody + + C.BlogPage blog -> + headerHelper blog.headerTitle blog.headerBody + + C.CuckList cuck -> + headerHelper cuck.headerTitle cuck.headerBody + + C.Debate debate -> + headerHelper debate.headerTitle debate.headerBody + + C.Donate donate -> + headerHelper donate.headerTitle donate.headerBody + + C.Gibberish gibberish -> + headerHelper gibberish.headerTitle gibberish.headerBody + + C.Services service -> + headerHelper service.headerTitle service.headerBody + + C.Interviews interview -> + headerHelper interview.headerTitle interview.headerBody + + C.NutriDex nutriDex -> + headerHelper nutriDex.headerTitle nutriDex.headerBody + + C.Contact contact -> + headerHelper contact.headerTitle contact.headerBody + + C.Journal journal -> + headerHelper journal.headerTitle journal.headerBody + + +cardContentMaker : List (Element msg) -> Element msg +cardContentMaker content = + column + [ spacing 8 + , width fill + ] + content + + +cardStuff : Element msg -> Element msg +cardStuff content = + el + [ E.height fill + , E.width fill + , centerX + , spacing 8 + ] + <| + el + [ paddingEach + { top = 0 + , bottom = 0 + , left = 15 + , right = 15 + } + , spacing 8 + , width fill + ] + content diff --git a/packages/website/frontend/src/Config/Helpers/Headers/Records.elm b/packages/website/frontend/src/Config/Helpers/Headers/Records.elm new file mode 100755 index 0000000..c102823 --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Headers/Records.elm @@ -0,0 +1,151 @@ +module Config.Helpers.Headers.Records exposing + ( argumentHeader + , blogHeader + , contactHeader + , cuckListHeader + , debateHeader + , donateHeader + , gibberishHeader + , interviewHeader + , journalHeader + , nutriDexHeader + , servicesHeader + ) + +import Config.Helpers.Cards.Inner.Text exposing (detailBodyLink) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Style.Colour.Helpers exposing (ThemeColor(..)) +import Element as E + exposing + ( newTabLink + , text + ) +import Route.Path as Path + + +argumentHeader : Header msg +argumentHeader = + let + name = + "Arguments" + in + { headerTitle = String.toUpper name + , headerBody = [ text "This page features arguments that I hold to be sound. I'm open to hearing all challenges, as I am ready to engage with and defend any argument listed." ] + } + + +blogHeader : Header msg +blogHeader = + let + name = + "Blog" + in + { headerTitle = String.toUpper name + , headerBody = [ text "This page features blog articles written by me, along with contributions from guest authors, covering topics primarily related to nutrition science, health science, and article." ] + } + + +cuckListHeader : Header msg +cuckListHeader = + let + name = + "Cucklist" + in + { headerTitle = String.toUpper name + , headerBody = [ text "This page features a list of morons who wrote cheques with their mouths that their asses couldn't cash. Each person included in this list has dodged debating me." ] + } + + +debateHeader : Header msg +debateHeader = + let + name = + "Debate" + in + { headerTitle = String.toUpper name + , headerBody = [ text "Here you will find links to various pages relevant to debate, such as formal arguments and a list of debate-dodging cucks." ] + } + + +donateHeader : Header msg +donateHeader = + let + name = + "Donate" + in + { headerTitle = String.toUpper name + , headerBody = [ text "My site, research, and content all cost time and money to run. If you find my contributions valuable, please consider supporting my work on any of the platforms listed below!" ] + } + + +gibberishHeader : Header msg +gibberishHeader = + let + name = + "Gibberish" + in + { headerTitle = String.toUpper name + , headerBody = [ text "This page is specifically for terms and ostensible concepts that I think are either nonsensical or so practically useless that its intelligiblity is irrelevant." ] + } + + +servicesHeader : Header msg +servicesHeader = + let + name = + "Services" + in + { headerTitle = String.toUpper name + , headerBody = + [ text "Here are all the services I offer to interested clients. Feel free to " + , newTabLink [] + { url = Path.toString Path.Contact_Inquiry + , label = detailBodyLink TextLightOrange "reach out" + } + , text " with any questions or to receive a quote for bundled purchases." + ] + } + + +interviewHeader : Header msg +interviewHeader = + let + name = + "Interviews" + in + { headerTitle = String.toUpper name + , headerBody = [ text "This page showcases various podcasts and shows I've been on. If you鈥檇 like to have me as a guest on your podcast, feel free to reach out!" ] + } + + +nutriDexHeader : Header msg +nutriDexHeader = + let + name = + "The NutriDex" + in + { headerTitle = String.toUpper name + , headerBody = [ text "" ] + } + + +contactHeader : Header msg +contactHeader = + let + name = + "Contact" + in + { headerTitle = String.toUpper name + , headerBody = [ text "If you wish to contact me, please carefully choose from the following options before reaching out, to make sure that your communication ends up in the right place." ] + } + + +journalHeader : Header msg +journalHeader = + let + name = + "Journal" + in + { headerTitle = String.toUpper name + , headerBody = [ text "This page features blog articles on topics not necessarily related to nutrition science, such as technology, popular culture, veganism, etc." ] + } diff --git a/packages/website/frontend/src/Config/Helpers/Headers/Types.elm b/packages/website/frontend/src/Config/Helpers/Headers/Types.elm new file mode 100755 index 0000000..06bd25d --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Headers/Types.elm @@ -0,0 +1,26 @@ +module Config.Helpers.Headers.Types exposing + ( Header + , Headerable(..) + ) + +import Element exposing (Element) + + +type Headerable msg + = Arguments (Header msg) + | BlogPage (Header msg) + | CuckList (Header msg) + | Debate (Header msg) + | Donate (Header msg) + | Gibberish (Header msg) + | Services (Header msg) + | Interviews (Header msg) + | NutriDex (Header msg) + | Contact (Header msg) + | Journal (Header msg) + + +type alias Header msg = + { headerTitle : String + , headerBody : List (Element msg) + } diff --git a/packages/website/frontend/src/Config/Helpers/Response.elm b/packages/website/frontend/src/Config/Helpers/Response.elm new file mode 100755 index 0000000..647993a --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Response.elm @@ -0,0 +1,94 @@ +module Config.Helpers.Response exposing + ( contentContainer + , pageList + , pageListCenter + , pageListFormat + , topLevelContainer + ) + +import Config.Style.Colour.Helpers exposing (colourTheme) +import Element as E + exposing + ( Attribute + , Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignTop + , centerX + , centerY + , el + , fill + , height + , maximum + , minimum + , padding + , paddingXY + , scrollbarY + , spacing + , width + ) +import Element.Background as B exposing (color) +import Html.Attributes exposing (style) + + +topLevelContainer : Element msg -> Element msg +topLevelContainer = + el + [ width fill + , height fill + , B.color colourTheme.backgroundLightGrey + ] + + +pageListCenter : Device -> List (Attribute msg) +pageListCenter device = + [ centerY + ] + ++ pageListFormat device + + +pageList : Device -> List (Attribute msg) +pageList device = + [ alignTop + ] + ++ pageListFormat device + + +pageListFormat : Device -> List (Attribute msg) +pageListFormat device = + let + pageListAttr = + [ centerX + , width fill + , height fill + , scrollbarY + ] + in + pageListAttr + ++ (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + [ spacing 0 + , paddingXY 10 30 + ] + + ( Tablet, Portrait ) -> + [ spacing 0 + , paddingXY 10 30 + ] + + _ -> + [ spacing 20 + , paddingXY 30 30 + ] + ) + + +contentContainer : Element msg -> Element msg +contentContainer = + el + [ width (fill |> minimum 100) + , width (fill |> maximum 875) + , padding 10 + , centerX + ] diff --git a/packages/website/frontend/src/Config/Helpers/Viewport.elm b/packages/website/frontend/src/Config/Helpers/Viewport.elm new file mode 100755 index 0000000..0d9d44f --- /dev/null +++ b/packages/website/frontend/src/Config/Helpers/Viewport.elm @@ -0,0 +1,16 @@ +module Config.Helpers.Viewport exposing + ( Msg + , resetViewport + ) + +import Browser.Dom as Dom exposing (setViewport) +import Task exposing (attempt) + + +type Msg + = NoOp + + +resetViewport : Cmd Msg +resetViewport = + Task.attempt (\_ -> NoOp) (Dom.setViewportOf "scroll-container" 0 0) diff --git a/packages/website/frontend/src/Config/Pages/Blogs/Journal/DigitalPrivacy.elm b/packages/website/frontend/src/Config/Pages/Blogs/Journal/DigitalPrivacy.elm new file mode 100755 index 0000000..8d7e68c --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/Journal/DigitalPrivacy.elm @@ -0,0 +1,26 @@ +module Config.Pages.Blogs.Journal.DigitalPrivacy exposing (articleDigitalPrivacy) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleDigitalPrivacy : BlogArticle +articleDigitalPrivacy = + { articleName = "" + , articleLink = Path.toString Path.Journal_Digitalprivacy + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = True + , articleImage = "digitalprivacy" + , articlePublished = "" + , articleBody = """""" + , articleReferences = + [ { author = "" + , title = "" + , journal = "" + , year = "" + , link = "" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/BigFatSurprise.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/BigFatSurprise.elm new file mode 100755 index 0000000..f2bc2a5 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/BigFatSurprise.elm @@ -0,0 +1,2321 @@ +module Config.Pages.Blogs.MainBlog.BigFatSurprise exposing (articleBigFatSurprise) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleBigFatSurprise : BlogArticle +articleBigFatSurprise = + { articleName = "The Big Fat Surprise: A Critical Review" + , articleLink = Path.toString Path.Blog_Bigfatsurprise + , articleAuthor = "Seth Yoder" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "bigfatsurprise" + , articlePublished = "Aug 10, 2014" + , articleBody = """ +Nina Teicholz鈥檚\u{00A0}_The Big Fat Surprise_\u{00A0}(BFS) is a book that claims to reveal 鈥渢he unthinkable: that everything we thought we knew about dietary fats is wrong.鈥 This is a trope that is often exploited to sell diet/nutrition books, and it works surprisingly well. + +What makes this particular book interesting is not so much that it is bad (which it is) or that it is extravagantly biased (which it also is). No, what really fascinates me about this book is that the author excessively and shamelessly lifts other people鈥檚 material. Most notably Teicholz lifts from another popular low-carb book called _Good Calories, Bad Calories_\u{00A0}(GCBC) by Gary Taubes. + +If I had written a book and I had 鈥渂orrowed鈥 other people鈥檚 work, here鈥檚 what I would do: I would cross my fingers and pray that no one ever notices. I would never bring it up, and diffuse it as quickly as I could if someone else brought it up. Not Teicholz. She gets in there and picks fights, accusing others of plagiarizing _her work_\u{00A0}if they write a piece that is also critical of low-fat diets. + +> .[@newscientist](https://twitter.com/newscientist)\u{00A0}hey, how can you list all arguments from The Big Fat Surprise without mentioning the book itself in yr article? Not ethical.. 鈥 Nina Teicholz (@bigfatsurprise) [August 2, 2014](https://twitter.com/bigfatsurprise/statuses/495419761019609088) + +> [@Dick_Muller](https://twitter.com/Dick_Muller)\u{00A0}That is so true. First [@TIMEHealth](https://twitter.com/TIMEHealth)\u{00A0}now [@newscientist](https://twitter.com/newscientist)\u{00A0}taking my work without attribution鈥 鈥 Nina Teicholz (@bigfatsurprise) [August 2, 2014](https://twitter.com/bigfatsurprise/statuses/495428132099616770) + +Despite all this finger-wagging Teicholz does try to bring something new to the table. She makes an effort to speak to some people involved that Taubes did not. Although given the excessive misrepresentation of not only her work but those of others I am deeply skeptical that Teicholz fairly represented her conversations with some of these individuals. + +Teicholz also attempts to appeal to the soccer mom demographic by writing a chapter about how women and children are not adequately studied when it comes to low-fat diets. However, any study she might cite in favor of her low-carb narrative (Shai, for example) has similar male:female ratios, and most don鈥檛 include children. There are good reasons for this, of course, but I won鈥檛 discuss them here. + +At any rate, to wrap up this introduction, the results of fact-checking the first five chapters of BFS are below. I posses all of the texts that are discussed. I will be happy to provide them if you like. Let me know. + +### CHAPTER 1: THE FAT PARADOX: GOOD HEALTH ON A HIGH-FAT DIET + +On page 11-12 Teicholz discusses the Masai tribe of Africa and how they consume quite a bit of milk daily yet have very low cholesterol (much like Taubes does in ch. 2 of GCBC). She also mentions that they are not fat and they don鈥檛 have high blood pressure. I don鈥檛 know why she throws the blood pressure and leanness in there since no one claims that milk causes high blood pressure, nor that these African tribes that walk about 30 miles per day and burn 300-500 kcals/hour would be fat because they drink milk. The real crime here is one of omission. + +In support of her argument that diets heavy in saturated fat won鈥檛 lead to high cholesterol because the Masai do it, she cites an article published in the _NEJM_\u{00A0}titled 鈥淪ome Unique Biologic Characteristics of the Masai of East Africa鈥 [[1](https://doi.org/10.1056/NEJM197104012841304)].\u{00A0}The _entire point_ of that article was to claim that the reason that the Masai have such low cholesterol levels despite a diet heavy in saturated fats was because they have a unique feedback mechanism that suppresses endogenous cholesterol synthesis that most of us don鈥檛 have. Yet there of course is no mention of this in the text (or GCBC) because to suggest that their low cholesterol was due to genetics would hurt her meat-is-good-for-you narrative. + +Continuing with the Masai on page 12, Teicholz discusses George Mann and his findings: + +> If our current belief about animal fat is correct, then all the meat and dairy these tribesmen were eating would have caused an epidemic of heart disease in Kenya. However, Mann found exactly the opposite鈥攈e could identify almost no heart disease at all. + +As evidence for this she cites a paper titled 鈥淎therosclerosis in the Masai鈥 that does indicate very little evidence of infarctions, but does state the following: + +> We find the Masai vessels do show extensive atherosclerosis; they show coronary intimal thickening which is equal to that seen in elderly Americans. + +Mann goes on to say that the reason why there are so few occlusions despite the extensive atherosclerosis (ASCVD) is that the Masai鈥檚 blood vessels enlarge as they age [[2](https://doi.org/10.1093/oxfordjournals.aje.a121365)]. + +Now that we have uncovered some very important points that were concealed by Teicholz, we are still confronted with an odd reality. The Masai consume a ton of milk and likely a fair amount of meat and yet they do not have elevated cholesterol levels due to a unique biological mechanism. Despite the low cholesterol they still get ASCVD. Enough that men in their prime have the blood vessels of elderly Americans. Yet despite even this they manage to escape heart attacks because their vessels are larger than average. Wow. I don鈥檛 know what to make of the Masai, except that they are indeed a unique people. In this case I think we can treat the Masai as outliers and not assume that we can live like they do and remain free of heart disease. + +On page 14 Teicholz discusses a text by Hrdlicka [[3](http://repository.si.edu/xmlui/handle/10088/15501)]\u{00A0}published near the turn of the (last) century and states: + +> The Native Americans he visited were eating a diet of predominantly meat, mainly from buffalo, yet, as Hrdlicka observed, they seemed to be spectacularly healthy and lived to a ripe old age. + +However, if you go look at the text you will find that the diet of Native Americans is based around, y鈥檏now, the most abundant crops in the Americas: corn and wheat. There are several pages devoted to describing the diet, so I don鈥檛 want to quote all of it, but perhaps this will give you an idea of what Hrdlicka really found. Page 19: + +> The principal article of diet among the Indians throughout the Southwest and Mexico is maize, which is eaten in the form of bread of various kinds, or as mush, or boiled entire. It is also parched on charcoal and eaten thus, or is ground into a fine meal, which, sweetened, constitutes the nourishing pinole of some of the tribes. Wheat is used in similar ways but less extensively. Next in importance to corn and wheat in the Indian diet are meat and fat and beans. Meat is scarce. + +For a more nuanced view of the issue see [this post](http://carbsanity.blogspot.com/2014/05/no-big-surprise.html)\u{00A0}and scroll down to 鈥淗rdli膷ka and the diet of Southwestern Native Americas.鈥 + +Page 15, Teicholz attempts to make the case that Africans living in British colonies nearly 100 years ago ate a ton of meat and had basically no cancer. As evidence for both of these claims she cites what amounts as a Letter to the Editor in the _BMJ_\u{00A0}by George Prentice [[4](https://doi.org/10.1136/bmj.2.3285.1181-a)]. + +> The _British Medical Journal_\u{00A0}routinely carried reports from colonial physicians who, though experienced in diagnosing cancer at home, could find very little of it in the African colonies overseas. So few cases could be identified that 鈥渟ome seem to assume that it does not exist,鈥 wrote George Prentice, a physician who worked in Southern Central Africa, in 1923. + +If you bother to look at the publication by Prentice you will notice that right after he says that some seem to assume that cancer does not exist, he immediately states why this is both a false and dangerous belief that has led to a patient of his dying of cancer because he himself believed that Africans did not get cancer when he was a younger doctor. He didn鈥檛 remove a breast tumor when he could have and should have and that his patient died because of this. Prentice also says in addition to breast cancer he sees other cancers all the time: + +> I have also seen epithelioma of the face. In this case the eyelids and the whole of one eye were completely destroyed, and the bone of the eye socket was attacked; the case was inoperable. I have seen a tumour, fungating and evidently malignant, that had practically split the bones of the face, causing the eyes to bulge laterally and giving a strange chameleon look to the patient. It was inoperable. I have seen cancer of the left ovary that proved fatal. I believe I have seen cases of malignant disease of the liver, but as there was no autopsy the diagnosis was not confirmed. I have removed many large tumours of the testicle which, if not cancerous, are of a nature unknown to me. Keloids and fatty tumours are very common. + +In case you could not tell, Teicholz takes Prentice鈥檚 words _completely out of context_\u{00A0}to make it appear he was communicating the opposite of what he was actually communicating. + +I鈥檓 sure she鈥檚 also hoping that the reader won鈥檛 realize that 鈥 true or not 鈥 all she has been discussing so far in the book are very tenuous and unscientific correlations, and that by the time the readers get to the part where she bashes these types of associations that they won鈥檛 realize she鈥檚 being wildly inconsistent and even hypocritical in how she deals with studies and observations. + +Page 16: + +> It is true that American beef from a cow raised on grain does have a different fatty-acid profile from an ox hunted in the wild. In 1968, the English biochemist Michael Crawford was the first to look at this question in detail. [鈥 His paper seemed to confirm that modern-day people should not consider their domesticated meat to be anywhere near as healthy as hunted meat from the wild. And for the past forty-five years, Crawford鈥檚 paper has been widely cited, forming the general view of the subject. What Crawford buries in his data, however, is that the _saturated_\u{00A0}fat content of the wild and domesticated animal meats hardly differed at all. + +Yep. Crawford 鈥渂uries鈥 it by making it Figure 1 in his paper [[5](https://doi.org/10.1016/s0140-6736(68)92034-5)].\u{00A0}I know when I want to bury data in a paper I visualize it and put it at the head of the results. + +![][image1] +[image1]: /blog/bigfatsurprise/image1.png + + +By the way, this 鈥渨idely cited鈥 paper has been cited only 183 times since it鈥檚 publication in 1968. Truly a landmark paper, this one. + +### CHAPTER 2: WHY WE THINK SATURATED FAT IS UNHEALTHY + +**Cribbing Taubes Alert** + +In GCBC on page 14 Taubes discusses a century-old document that was published by a German journal that is both very difficult to find and written in German. + +> The evidence initially cited in support of the hypothesis came almost exclusively from animal research-particularly in rabbits. In 1913, the Russian pathologist Nikolaj Anitschkow reported that he could induce atherosclerotic-type lesions in rabbits by feeding them olive oil and cholesterol. + +Do you think Taubes both A) possesses that obscure text AND B) is fluent in German? It鈥檚 possible, although my money would be on Taubes simply reading what others had written about the study and simply paraphrasing. + +BFS page 22: + +> Early evidence suggestively linking cholesterol to heart disease also came from animals. In 1913, the Russian pathologist Nikolaj Anitschkow reported that he could induce atherosclerotic-type lesions in rabbits by feeding them huge amounts of cholesterol. + +What are the odds that Teicholz also speaks German and has the German text that was published over 100 years ago? Again, possible, but given the similarity of how she and Taubes discuss the paper my guess is that she simply paraphrased Taubes without attribution. + +Here鈥檚 something interesting鈥 On page 16 of GCBC Taubes says the following: + +> In 1937, two Columbia University biochemists, David Rittenberg and Rudolph Schoenheimer, demonstrated that the cholesterol we eat has very little effect on the amount of cholesterol in our blood. + +As evidence he cites Rittenberg and Schoenheimer鈥檚 1937 paper titled 鈥淒euterium as an indicator in the study of intermediary metabolism XI. Further studies on the biological uptake of deuterium into organic substances, with special reference to fat and cholesterol formation鈥 [[6](https://doi.org/10.1126/science.82.2120.156)]. + +On page 23 of BFS Teicholz writes the following: + +> The notion that cholesterol in the diet would translate directly into higher cholesterol in the blood just seemed intuitively reasonable, and was introduced by two biochemists from Columbia University in 1937. + +She also cites the same exact paper. You see the problem, right? Both Taubes and Teicholz claim opposite things yet cite the same paper as evidence. So who is correct? Actually neither of them are correct because the cited text doesn鈥檛 address the issue. The paper discusses experiments on animals such as rodents and chicks, not humans as is implied by both Taubes and Teicholz. Furthermore, the only thing these experiments demonstrate is that these animals are capable of synthesizing cholesterol, and has essentially nothing to do with dietary cholesterol influencing or not influencing serum cholesterol. + +Continuing with the dietary cholesterol controversy, on page 23 immediately after the above statement Teicholz claims: + +> It was Ancel Keys himself who first discredited this notion. Although in 1952 he stated that there was 鈥渙verwhelming evidence鈥 for the theory [鈥 + +She then accuses him of being a hypocritical flip-flopper for arrogantly walking the statement back three years later by saying that tremendous amounts of cholesterol have only a trivial effect on serum cholesterol and that 鈥渢his point requires no further consideration.鈥 + +Damn, this guy sounds like an arrogant prick considering he wholly endorsed the theory a few years before, right?! + +鈥xcept if you look at the 1952 paper where Teicholz pulls that quote Keys says the EXACT OPPOSITE of what Teicholz claims [[7](https://doi.org/10.1161/01.CIR.5.1.115)]. In the paper Keys argues that the animal experiments that have shown that feeding high cholesterol to, say, rabbits have no relevance to humans, going on to say + +> No animal species close to man in metabolic habitus has been shown to be susceptible to the induction of atherosclerosis by cholesterol feeding. + +AND + +> From the animal experiments alone the most reasonable conclusion would be that the cholesterol content of human diets is unimportant in human atherosclerosis. + +AND + +> Direct evidence on man in this connection is unimpressive. + +Besides, even if he did hold an erroneous belief beforehand, why would you want to knock a guy for simply following the evidence? This is _science_: you are supposed to always be self-correcting. + +Page 23-24: + +> In 1992, one of the most comprehensive analyses of this subject concluded that the vast majority of people will react to even a great deal of cholesterol in the diet by ratcheting down the amount of cholesterol the body itself produces.\u{00A0}[鈥 Responding to this evidence, health authorities in Britain and most other European nations\u{00A0}**in recent years** have rescinded their advisories to cap dietary cholesterol. + +Emphasis mine. The reason for bolding 鈥渋n recent years鈥 is because the evidence cited for this sentence is a paper published in 1987 [[8](https://doi.org/10.1093/ajcn/45.5.1060)]!!\u{00A0}And of course the evidence they were apparently responding to was a meta-analysis published in 1992 [[9](https://doi.org/10.1093/ajcn/55.6.1060)].\u{00A0}There鈥檚 a chronology problem here. A meta-analysis, by the way, whose first sentence of the summary states: + +> **Serum cholesterol concentration is clearly increased by added dietary cholesterol**\u{00A0}but the magnitude of predicted change is modulated by baseline dietary cholesterol. + +Again, emphasis mine. + +On page 25 you will see this structure: + +![][image2] +[image2]: /blog/bigfatsurprise/image2.png + +This structure is incorrect on many levels. For one it is not even a fatty acid. It鈥檚 actually not anything because it is not a legitimate chemical structure, but it鈥檚 closest to pentane which no one would want to consume. In order for it to be a fatty acid it would at least need a carboxyl group at one end. However, that would make the structure into valeric acid which is not commonly found in foods (especially the butter, meat, and cheese Teicholz promotes) and not commonly consumed unless you鈥檙e eating valerian root. + +I pointed this out on my Amazon review of the book and I got pilloried because apparently I was supposed to simply _know_ that the Fisher projection was not really supposed to be a fatty acid, but was supposed to be a simple, generic structure to illustrate how hydrogens are arranged around carbon atoms. However, if Teicholz didn鈥檛 want to put a proper carboxyl group because she was afraid it might confuse her audience she could have at least put an 鈥淩鈥 or ellipses or something to indicate that part of the fatty acid is being left out in order to concentrate on the hydrogens. Even so, if it is indeed just a generic structure used to illustrate how hydrogens are arranged then why are the end hydrogens arranged incorrectly, and why are there two missing hydrogens? This structure is absolutely wrong no matter how you slice it. + +The lies about Ancel Keys continue on page 27 when Teicholz discusses a paper of his called 鈥淎therosclerosis: A Problem in Newer Public Health鈥 and says this paper received 鈥渆normous attention鈥 and was the genesis of America鈥檚 alleged fear of fat. + +There is no evidence at all that Keys鈥檚 1953 paper received 鈥渆normous attention.鈥 In fact, the evidence that exists would suggest the opposite. There was no mention of the paper in the lay press. That is until relatively recently when [Gary Taubes began lying about it](https://thescienceofnutrition.wordpress.com/2014/04/21/fat-in-the-diet-and-mortality-from-heart-disease-a-plagiaristic-note/). What about academia? According to Google Scholar this highly influential paper has only been cited 247 times since its publication, which spans 61 years as of this writing. An average of four citations per year. It was cited merely 99 times from the time it was published to 1973, a full twenty years after its publication. For comparison, on page 159-160 Teicholz mentions a study whose results she claims were 鈥渋gnored.鈥 That study was published in 1992 and has received 682 citations. + +Page 31: + +> Keys found further ammunition for his hypothesis from a compelling observation made during World War II, which is that deaths from heart disease dropped dramatically across Europe during wartime and rebounded soon afterward. These events led Keys to presume that the food shortages鈥 particularly of meat, eggs, and dairy鈥攚ere very likely the cause. There were, however, other explanations: for instance, sugar and flour were also scarce during the war; people breathed fewer car-exhaust fumes due to gasoline shortages and got more exercise by cycling or walking to get around. Other scientists noted these alternative explanations for the decline in heart disease, but Keys dismissed them outright. + +The paper that noted the alternative explanations was published in 1957, yet Keys was apparently dismissing them in 1956 [[10](https://doi.org/10.1016/0002-9343(57)90325-x)[[11](https://doi.org/10.1016/0021-9681(56)90040-6)]. + +On page 34, Teicholz discusses a paper by Yerushalmy and Hilleboe that criticized a graph in Keys鈥檚 鈥淎therosclerosis: A Problem in Newer Public Health鈥 paper mentioned above [[12](https://pubmed.ncbi.nlm.nih.gov/13441073/)]. + +> Yerushalmy鈥檚 objection was that Keys seemed to have selected only certain countries that fit his hypothesis. There were other factors that could equally well explain the trends in heart disease in all these countries, he asserted. + +If you actually read Keys鈥檚 paper you will note that Keys mentioned that he left out some less-developed countries because they had very poor vital health statistics [[13](https://pubmed.ncbi.nlm.nih.gov/13085148/)].\u{00A0}Some more developed European countries he claims he would have included if the Nazi鈥檚 had not very recently invaded, occupied, and rationed food which would confound his simple cross-sectional analysis. It wasn鈥檛 that he was a diabolical scientist bent on lying to the public about the cause of heart disease. Or if he was he had a damn fine excuse for not using those countries. + +It鈥檚 funny because on pages 34-36 Teicholz criticizes Keys for not including more European countries like France and Switzerland (which incidentally would have fallen right in line with Keys鈥檚 graph). Then a few pages later on 37-38 Teicholz discusses Keys鈥檚 Seven Countries Study and criticizes him for including countries that Nazi Germany had invaded and occupied several years before. + +At any rate, Yerushalmy and Hilleboe did indeed point out some other factors in their paper, most prominently they pointed out that [both _animal_\u{00A0}fat and _animal_\u{00A0}protein were far better correlated with heart disease than total fat](https://thescienceofnutrition.files.wordpress.com/2014/03/yh-2.jpg). Many different types of heart disease, in fact. This held true whether or not it was calculated as total amounts or as a percentage of total calories. Moreover, _vegetable_\u{00A0}protein and _vegetable_\u{00A0}fat were negatively correlated with heart disease. + +Of course there was no way that Teicholz was ever going to mention this. + +Page 40: + +> I looked more closely into the dietary data on Greece, because it became the exemplar for the Mediterranean diet (see Chapter 7), and I found one of the most stunning and troubling errors. In that country. Keys had sampled the diets on Crete and Corfu more than once, in different seasons, in order to capture variations in the food eaten. Yet in an astonishing oversight, one of the three surveys on Crete fell during the forty-eight-day fasting period of Lent. + +_Astonishing_\u{00A0}oversight? One of the most _stunning_\u{00A0}and _troubling_ errors? Despite what appears to be insincere hand-wringing over this gravest of all scientific errors, I don鈥檛 really see the problem here. The question that needs to be asked here is: Does collecting dietary information during a period where some Christians adhere to a quasi-fasting ritual invalidate the dietary data? I suppose it would if a sufficient number of participants were strictly adhering to the fast. Was this the case? According to the 211-page write-up of the study programs and objectives this was not the case [[14](https://pubmed.ncbi.nlm.nih.gov/5442783/)]: + +> The seasonal comparisons in Crete and Corfu were of interest because the survey in Crete in February and part of the survey in Corfu in March-April were in the 40-day fasting period of Lent of the Greek Orthodox church, but strict adherence did not seem to be common in the populations of the present study. + +How would the scientists come to the conclusion that there was no strict adherence? They could simply compare the dietary data collected during the spring with the dietary data collected during other times of the year. What if the participants were all lying on their dietary surveys? The researchers also collected the actual foods eaten by participants, lyophilized them, and sent them out for chemical analysis. Apparently there were no significant differences with that data either. + +Even if the alleged 鈥渆rror鈥 of collecting data in the spring was so insurmountable it had to be thrown out, it would not invalidate the other two dietary collections in Crete and it would certainly not be nearly enough to nullify the entire study. It seems pretty clear to me that while writing this book Teicholz is actively searching for any hint of impropriety. She discovered a mention of Lent, decided to ignore the rest, and enthusiastically proclaimed that she had unearthed some alarming facts about the study. + +Additionally she tries to make the case on pages 41 and 42 that Keys tried to sheepishly bury the flawed methodology of his crappy study. If this is true he did an exceedingly poor job of it, considering in addition to all of the analyses published from the data. + +Keys published: + +- A 211-page paper describing the study objectives and methods [[14](https://pubmed.ncbi.nlm.nih.gov/5442783/)]. + +- A 300+ page monograph describing the particular details of data collection in each country [[15](https://doi.org/10.1111/j.0954-6820.1966.tb04737.x)]. + +- A 300+ page book describing in great detail the study and its results [[16](https://doi.org/10.1001/jama.1981.03310300063026)]. + + +In addition, there were other entire books published on the study [[17](https://books.google.ca/books/about/The_Seven_Countries_Study.html?id=hgWRAAAACAAJ&redir_esc=y)[[18](https://link.springer.com/book/10.1007/978-4-431-68269-1)].\u{00A0}Keys is not being obfuscatory. + +### CHAPTER 3: THE LOW-FAT DIET IS INTRODUCED TO AMERICA + +**Cribbing Taubes Alert** + +On page 49 Teicholz discusses an AHA nutrition committee report: + +> Committee members went so far as to rap diet-heart supporters like Keys on the knuckles for taking 鈥渦ncompromising stands based on evidence that does not stand up under critical examination.鈥 The evidence, they concluded, did not permit such a 鈥渞igid stand.鈥 + +On page 20 of GCBC, Taubes makes a similar statement regarding the same report and uses the same quotes [[19](https://doi.org/10.1001/jama.1957.62980180004013)]. I would argue that both get it wrong. The report seems to have somewhere between a neutral and a favorable view of Keys, as evidenced by the following quotes: + +> Mayer et al. found that high-fat animal or vegetable diets increased and low-fat diets decreased serum cholesterol of normal subjects, confirming earlier data of Keys. + +> Keys, in particular, has placed emphasis on the proportion of total dietary calories contributed by the common food fats [鈥 Certainly there is an abundance of data, both clinical and experimental, that tends to relate excess fat intake to atherosclerosis. + +**Cribbing Taubes Alert** + +On page 49 Teicholz continues discussing the views of the AHA: + +> The AHA committee swung around in favor of their ideas, and the resulting report in 1961 argued that 鈥渢he best scientific evidence available at the present time鈥 suggested that Americans could reduce their risk of heart attacks and strokes by cutting the saturated fat and cholesterol in their diets. + +On page 21 of GCBC Taubes says essentially the same thing and uses the same quote from the same paper [[20](https://pubmed.ncbi.nlm.nih.gov/14447694/)]. + +Continuing on the report, page 50: + +> Keys himself thought that the 1961 AHA report he had helped write suffered from 鈥渟ome undue pussy-footing鈥 because it had prescribed the diet only for high-risk people rather than the entire American population [鈥 + +On page 21 of GCBC Taubes says almost the exact same thing, including the undue pussy-footing quote. However, Taubes cites the quote correctly as being from _Time_\u{00A0}magazine鈥檚 article titled Fat in the Fire, whereas Teicholz cites it incorrectly as The Fat of the Land [[21](https://content.time.com/time/subscriber/article/0,33009,895155,00.html)][[22](https://content.time.com/time/subscriber/article/0,33009,828721,00.html)]. + +**Cribbing Taubes Alert** + +There is getting to be too many of these alerts. On page 4 of GCBC Taubes states: + +> 鈥淧eople should know the facts,鈥 Keys told Time. 鈥淭hen if they want to eat themselves to death, let them.鈥 + +BFS page 50: + +> 鈥淧eople should know the facts,鈥 he said. 鈥淭hen, if they want to eat themselves to death, let them.鈥 + +This quote is found in _Time_\u{00A0}magazine鈥檚 The Fat of the Land article [[22](https://content.time.com/time/subscriber/article/0,33009,828721,00.html)].\u{00A0}Continuing鈥 + +GCBC page 21: + +> The _Time_\u{00A0}cover story, more than four pages long, contained only a single paragraph noting that Keys鈥檚 hypothesis was 鈥渟till questioned by some researchers with conflicting ideas of what causes coronary disease.鈥 + +BFS page 51: + +> In the _Time_\u{00A0}article, there is only a brief mention of the reality that Keys鈥檚 ideas were 鈥渟till questioned鈥 by 鈥渟ome researchers鈥 with conflicting ideas about what causes coronary disease. + +On page 54 Teicholz educates the reader on case-control studies: + +> These studies are understood to suffer from 鈥渞ecall bias,鈥 whereby patients may inaccurately remember past consumption. + +_Immediately after_\u{00A0}this disclaimer Teicholz goes on to produce several case-control studies that fit her narrative. By doing so, this is what I hear as a reader: 鈥淐ase-control studies suck. Don鈥檛 try to use them as evidence. But here are a few whose results I like and you should know about them.鈥 + +**Cribbing Taubes Alert** + +GCBC page 26: + +> [JAMA] reported that the mostly Italian population of Roseto, Pennsylvania, ate copious animal fat 鈥 eating prosciutto with an inch-thick rim of fat, and cooking with lard instead of olive oil 鈥 and yet had a 鈥渟trikingly low鈥 number of deaths from heart disease, Keys said it warranted 鈥渇ew conclusions and certainly cannot be accepted as evidence that calories and fats in the diet are not important.鈥 + +BFS page 55: + +> [T]he mostly Italian population living there had a 鈥渟trikingly low鈥 number of deaths from heart disease [鈥 the local diet included copious amounts of animal fats, including prosciutto with fat an inch thick around the rim, and most meals cooked in lard. [鈥 Keys concluded that the Roseto data 鈥渃ertainly cannot be accepted as evidence that calories and fats in the diet are not important.鈥 + +There is so much information in both those publications, yet surprisingly the same exact quotes are independently plucked by Teicholz [[23](https://doi.org/10.1001/jama.1964.03060360005001)][[24](https://doi.org/10.1001/jama.1966.03100020081018)]. + +Page 56: + +> F. W. Lowenstein, a medical officer for the World Health Organization in Geneva, collected every study he could find on men who were virtually free of heart disease, and concluded that their fat consumption varied wildly. + +I suppose that鈥檚 true according to the study [[25](https://doi.org/10.1159/000385025)].\u{00A0}Fat intake varied from 21 g/day to 355 g/day in the case of the Somalis. Although, if you remove the Somalis as something of an outlier (they also consume 6,247 kcals/day according to the paper), then fat intake in all the other populations drops to 100 grams of fat per day or less. + +**Cribbing Taubes Alert** + +Teicholz uses Taubes鈥檚 Karl Popper quote. + +GCBC page 24-25: + +> [The scientific method requires] that scientists not just test their hypotheses, but try to prove them false. 鈥淭he method of science is the method of bold conjectures and ingenious and severe attempts to refute them,鈥 said Karl Popper. + +BFS page 56-57: + +> A scientist must always try to disprove his or her own hypothesis. Or, as one of the great science philosophers of the twentieth century, Karl Popper, described, 鈥淭he method of science is the method of bold conjectures and ingenious and severe attempts to refute them.鈥 + +Page 57: + +> [鈥 Keys was not on the lookout for his own biases. He considered the burden of proof to be on those opposing him. He made no attempts to refute his own ideas, as Popper advised. He promoted the 鈥渋dol of his mind鈥 without hesitation. + +OMG. _What?! How??_\u{00A0}Can I get some evidence for that? + +Page 65 Teicholz then pivots to Framingham and mentions how they found cholesterol to be a big predictor of death [[26](https://www.semanticscholar.org/paper/Carbohydrate-induced-and-fat-induced-lipemia.-Ahrens-Hirsch/e1e4cfdfe4d98afd5b711226cdc75bdb0c843cb9)][[27](https://doi.org/10.1001/jama.257.16.2176)]. BUT鈥. Let鈥檚 face it. They are bound to happen. There are surely citation errors in this blog post. + +> However, thirty years later, in the Framingham follow-up study鈥攚hen investigators had more data because a greater number of people had died鈥 it turned out that the predictive power of total cholesterol was not nearly as strong as study leaders had originally thought. + +Is she talking about the paper that states in the conclusion 鈥淭his study and the Coronary Drug Project results on nicotinic acid therapy show a direct association of cholesterol levels with mortality, which becomes stronger with lengthy follow-up鈥 [[27](https://doi.org/10.1001/archinte.1992.00400190013003)]?\u{00A0}Is that the one she鈥檚 talking about? Because that鈥檚 the one she cited. The paper also states that the association holds strong even after adjusting for individual differences in blood pressure, smoking, relative weight, and diabetes. + +Page 67: + +> Not until 1992, in fact, did a Framingham study leader publicly acknowledge the study鈥檚 findings on fat. 鈥淚n Framingham, Mass, the more saturated fat one ate . . . the _lower_\u{00A0}the person鈥檚 serum cholesterol. . . and [they] weighed the _least_鈥 wrote William P. Castelli [鈥 + +What the reader doesn鈥檛 know is that 1) this quote is taken from an editorial that extols the virtues not of meat and cheese, but of the unsaturated fat in nuts, 2) there is literally a half page of text between the ellipses, 3) the italics are not part of the original quote, and most importantly 4) Teicholz cuts off the quote immediately before the author mentions that he is talking about the people that were the _most physically active_ [[29](https://doi.org/10.1001/archinte.1992.00400190013003)].\u{00A0}But I鈥檓 sure their physical activity has no effect on their weight or cholesterol levels, right? + +**Cribbing Taubes Alert** + +On page 159 of GCBC Taubes quotes from a 1967 JAMA editorial [[30](https://doi.org/10.1001/jama.1966.03110190079022)]: + +> _JAMA_\u{00A0}published an editorial in response to Kuo鈥檚 article, suggesting that the 鈥渁lmost embarrassingly high number of researchers [who had] boarded the 鈥榗holesterol bandwagon'鈥 had done a disservice to the field. 鈥淭his fervent embrace of cholesterol to the exclusion of other biochemical alterations resulted in a narrow scope of study,鈥 the editorial said. + +On page 71 of BFS Teicholz uses the same exact quote: + +> An 鈥渁lmost embarrassingly high number of researchers boarded the 鈥榗holesterol bandwagon,'鈥 lamented the editors of the _Journal of the American Medical Association_ in 1967, referring to the narrow, 鈥渇ervent embrace of cholesterol鈥 to the 鈥渆xclusion鈥 of other biochemical processes that might cause heart disease. + +### CHAPTER 4: THE FLAWED SCIENCE OF SATURATED VERSUS POLYUNSATURATED FAT + +**Cribbing Taubes Alert** + +Much like elsewhere in BFS, Teicholz appears to take an incredible amount of what might be called 鈥渋nspiration鈥 from GCBC. Much like in GCBC, Teicholz discusses the Anti-Coronary Club trial, plucks the same quotes, and discusses the same media reactions. + +GCBC, page 36: + +> The first and most highly publicized was the Anti-Coronary Club Trial, launched in the late 1950s by New York City Health Department Director Norman Jolliffe. + +BFS, page 73: + +> An early and celebrated trial was called the Anti-Coronary Club, launched by Norman Jolliffe, director of the New York City Health Department, in 1957. + +GCBC, page 36: + +> The eleven hundred middle-aged members of Jolliffe鈥檚 Anti-Coronary Club were prescribed what he called the 鈥減rudent diet,鈥 which included at least one ounce of polyunsaturated vegetable oil every day. The participants could eat poultry or fish anytime, but were limited to four meals a week containing beef, lamb, or pork. + +BFS, page 73: + +> He signed up eleven hundred men to his Anti-Coronary Club and instructed them to reduce their consumption of red meat, such as beef, lamb, or pork, to no more than four times a week (which would be considered a lot by today鈥檚 standards!) while consuming as much fish and poultry as they liked. + +GCBC, page 36: + +> [T]wenty-six members of the club had died during the trial, compared with only six of the men whose diet had not been prudent. + +BFS, page 74: + +> [T]wenty-six members of the diet club had died during the trial, compared to only six men from the controls. + +Okay, maybe both Taubes and Teicholz did independent research and came across the same study and both found it was compelling enough to include in their books. And maybe they both independently included the same info from the study as well. It鈥檚 certainly possible. But would they mention the same NYT article? + +GCBC, page 36: + +> 鈥淒iet Linked to Cut in Heart Attacks,鈥 reported the New York Times in May 1962. + +BFS, page 74: + +> 鈥淒iet Linked to Cut in Heart Attacks,鈥 reported the New York Times in 1962 [鈥 + +Would they independently use the same quote from the multiple trial publications? + +GCBC, page 36: + +> Eight members of the club died from heart attacks, but none of the controls. This appeared 鈥渟omewhat unusual,鈥 Christakis and his colleagues acknowledged. + +BFS, page 74: + +> [I]nvestigators began to find 鈥渟omewhat unusual鈥 results: [鈥 Eight members of the club had died of heart attacks, but not one of the controls. + +They also both misrepresent the study: + +GCBC, page 36: + +> They discussed the improvements in heart-disease risk factors (cholesterol, weight, and blood pressure decreased) and the significant reduction in debilitating illness 鈥渇rom new coronary heart disease,鈥 but omitted further discussion of mortality. + +BFS, page 74: + +> In the discussion section of the final report, the authors [鈥 emphasized the improved risk factors among the men in the diet club but ignored what those risk factors had blatantly failed to predict: their higher death rate. + +Notice how both Taubes and Teicholz minimize the main results of the study, namely that the prudent diet did exactly what researchers imagined it would do: reduce not only risk factors for heart disease, but also actual coronary events [[31](https://doi.org/10.2307/4592649)[[32](https://doi.org/10.1093/ajcn/7.4.451)[[33](https://doi.org/10.1056/NEJM196205172662001)].\u{00A0}Further, they both misrepresent the study by claiming those devious scientists omitted discussion of death rate when nothing could be further from the truth. Both cited publications discuss death rate and mortality among participants very clearly. In fact, the slight difference in death from causes other than heart disease was not even significant. From the 1966 publication31\u{00A0}(emphasis mine): + +> The rates for these deaths in the 50-59 age group were 689 per 100,000 person-years in the experimental group, and 666 per 100,000 in the control group**. The difference between these two rates is slight and not statistically significant.** + +**Cribbing Taubes Alert** + +In GCBC, Taubes immediately segues from discussing the Anti-Coronary Club trial to discussing the Dayton鈥檚 LA Veterans trial [[34](https://doi.org/10.1016/S0140-6736(70)90868-8)][[35](https://doi.org/10.1016/s0140-6736(71)91086-5)[[36](https://doi.org/10.3945/ajcn.110.006643)].\u{00A0}Strangely enough Teicholz does the exact same thing. + +GCBC, page 37: + +> In July 1969, Seymour Dayton, a professor of medicine at the University of California, Los Angeles, reported the results of the largest diet-heart trial to that date. Dayton gave half of nearly 850 veterans residing at a local Veterans Administration hospital a diet in which corn, soybean, safflower, and cottonseed oils replaced the saturated fats in butter, milk, ice cream, and cheeses. The other half, the controls, were served a placebo diet in which the fat quantity and type hadn鈥檛 been changed. The first group saw their cholesterol drop 13 percent lower than the controls [鈥 + +BFS, page 75: + +> It was conducted by UCLA professor of medicine Seymour Dayton on nearly 850 elderly men living in a local Veterans Administration (VA) home in the 1960s. For six years, Dayton fed half the men a diet in which corn, soybean, safflower, and cottonseed oils replaced the saturated fats in butter, milk, ice cream, and cheese. The other half of the men acted as controls and ate regular foods. The first group saw their cholesterol levels drop almost 13 percent more than did the controls. + +Is it just me or do those paragraphs sound very similar? + +GCBC, page 37: + +> 鈥淲as it not possible,鈥 Dayton asked, 鈥渢hat a diet high in unsaturated fat鈥ight have noxious effects when consumed over a period of many years? Such diets are, after all, rarities [鈥鈥 + +BFS, page 75: + +> 鈥淲as it not possible,鈥 he asked, 鈥渢hat a diet high in unsaturated fat. . . might have noxious effects when consumed over a period of many years? Such diets are, after all, rarities.鈥 + +Both Taubes and Teicholz introduce the author and gives a brief background of the trial, then relate the conditions and methods of the study, then they cherry-pick from the results. They both then interpret the results for you. ONLY AFTER ALL THAT do Teicholz and Taubes reproduce a couple sentences from the journal article questioning whether a diet of unsaturated fat might have 鈥渘oxious effects鈥 presumably because of the study results. What they likely want the reader\u{00A0}to think is that after the results of the study are in and the numbers have been crunched and the data has been analyzed Dr. Seymour Dayton is sitting at his desk and ruminating on what could have produced these results. As if he is asking a rhetorical question or providing a hypothesis for a future dietary trial. + +In reality Dayton actually asks that question in the beginning of the paper to kind of whet the reader鈥檚 appetite. He then goes on to answer that very question in the text with an answer that would not be favorable to Teicholz鈥檚 (or Taubes鈥檚) argument. Do you want to know if the experimental diet has noxious effects? Well there鈥檚 a section in the results portion of the study titled 鈥淒oes the Experimental Diet Have Noxious Effects?鈥 where Dr. Dayton states34: + +> As indicated in table 29 and discussed in some detail above, the excess mortality in nonatherosclerotic categories was not sufficiently impressive to justify the conclusion that harmful effects had been demonstrated. + +AND + +> One may also wonder whether the experimental diet may have exerted its effect on mortality data primarily by accelerating nonatherosclerotic deaths (see table 28), decreasing the atherosclerotic mortality by inducing early death due to other cause. Such a mode of action would be associated with higher numbers of deaths in the experimental group compared with the controls, whereas the reverse was true in this trial (fig. 13). + +AND + +> The other observation which raised some question of a possible toxic effect was the low arachidonic acid concentrations in atheromata of long-term, high-adherence subjects on the experimental diet (tables 37 to 40). For reasons already cited, this may be more appropriately viewed as evidence of a salutary rather than a toxic effect. + +Teicholz both 1) Uses the exact same quote Taubes does in GCBC, phrases it the exact same way, and removes the same exact words from within the quote; and 2) Takes the quote out of context just like Taubes does in order to imply something antithetical to what Dayton actually meant. + +Moreover, both Taubes and Teicholz either minimize or outright ignore results of the study that they do not like (ironically, a trait they accuse the big, bad nutrition researchers of doing). Remember the _control_ group was **high in saturated animal fat**, and the _experimental_ group was **high in unsaturated fats from plants**. + +> The number of men sustaining events in major categories, in the control and experimental groups, respectively, was: definite silent myocardial infarction, 4 and 9; definite overt myocardial infarction, 40 and 27; sudden death due to coronary heart disease, 27 and 18; definite cerebral infarction, 22 and 13. The difference in the primary end point of the study-sudden death or myocardial infarction was not statistically significant. However, when these data were pooled with those for cerebral infarction and other secondary end points, the totals were 96 in the control group and 66 in the experimental group; _P_\u{00A0}= 0.01. Fatal atherosclerotic events numbered 70 in the control group and 48 in the experimental group; _P_ < 0.05. Life-table analysis in general confirmed these conclusions. For all primary and secondary end points combined, eight year incidence rates were 47.7% and 31.3% for the control and experimental groups, respectively; _P_\u{00A0}value for the difference between the two incidence curves was 0.02. + +If you don鈥檛 want to read the above block quote, I鈥檒l summarize it for you: in all but one endpoint that was measured **the experimental diet of unsaturated fats had less overt myocardial infarction, sudden death, cerebral infarction, fatal ASCVD events, etc.**\u{00A0}And not by a tiny margin 鈥 a significant margin. + +Page 75: + +> [V]egetable oils had been introduced into the food supply only in the 1920s, yet suddenly the oils were being recommended as a cure-all. In fact, the upward curve of vegetable oil consumption happened to coincide _perfectly_\u{00A0}with the rising tide of heart disease in the first half of the twentieth century [鈥 + +Not true. At least not true by the study she cites [[37](https://doi.org/10.1161/01.CIR.102.25.3137)].\u{00A0}The study by Blasbalg et al simply shows the trends of fatty acid consumption from various sources. Specifically, it shows from which foods Americans have been getting their linoleic acid and alpha linolenic acid. It has absolutely zero analysis of heart disease or any other disease for that matter. Nor does she cite a separate paper that shows trends in heart disease to compare the paper on fatty acid consumption. + +Just for kicks, let鈥檚 do Teicholz鈥檚 work for her. Let鈥檚 start with the Blasbalg paper. It appears that in the 20th century butter and lard dropped precipitously at about mid-century. Shortly afterward poultry and shortening consumption rose. Soybean oil also rose concurrently with shortening probably because it was a prominent ingredient. Canola oil consumption also increased in the 90s. + +![][image3] +[image3]: /blog/bigfatsurprise/image3.png + +![][image4] +[image4]: /blog/bigfatsurprise/image4.png + +What about heart disease? According to a paper by Cooper et al CVD rose until about mid-century, but then begins a steady decline into the millennium [[38](https://www.academia.edu/98361249/Serum_lipoprotein_levels_in_patients_with_cancer)]. + +![][image5] +[image5]: /blog/bigfatsurprise/image5.png + +You have to ask yourself: does the vegetable oil correlate _perfectly_\u{00A0}with CVD? + +**Cribbing Taubes Alert**. + +In GCBC, after discussing the LA Veterans trial, Taubes moves immediately to discuss the Helsinki Mental Hospital Study. Strangely enough Teicholz does the exact same thing! What are the odds that they would both independently discuss the same trials _in the\u{00A0}very same order!_ + +GCBC, page 37: + +> Ordinary milk was replaced with an emulsion of soybean oil in skim milk, and butter and ordinary margarine were replaced with a margarine made of polyunsaturated fats. These changes alone supposedly increased the ratio of polyunsaturated to saturated fats sixfold. + +BFS, pages 76-77: + +> Ordinary milk was replaced with an emulsion of soybean oil in skim milk, and butter was replaced by a special margarine high in polyunsaturated fats. The vegetable oil content of the special diet was six times higher than in a normal diet. + +Page 86: + +> [R]emarkably, when Jerry Stamler reissued his 1963 book. _Your Heart Has Nine Lives_, it was published as a 鈥減rofessional鈥 red leather edition by the Corn Products Company and distributed free of charge to thousands of doctors. Inside, Stamler thanks both that company and the Wesson Fund for Medical Research for 鈥渟ignificant鈥 research support. + +The very same point was also made by Taubes in GCBC, but that鈥檚 not my point here. What I鈥檇 like to say about this is that there is roughly half a page in the book that lists people and organizations that have lent financial support to the research in the book. Taubes and Teicholz, however, only list the vegetable oil manufacturers. + +However, neither list the National Dairy Council which is also named among the research supporters. The reason for leaving out organizations like the NDC should be pretty obvious by now. But let me spell it out for you just in case you鈥檙e confused: Both Teicholz and Taubes are attempting to craft a narrative where Big Vegetable Oil and greedy nutrition researchers are in cahoots with each other (and also the government) to dupe the American consumer into eating less butter and cheese. If Teicholz or Taubes were to mention that the National Dairy Council funded the same research, well, then that conspiracy narrative would be weakened. + +On pages 94-95, Teicholz makes the case that low cholesterol is associated with cancer in some studies, and strongly implies that low cholesterol might _cause_\u{00A0}cancer: + +> By 1981, nearly a dozen sizable studies on humans had found a link between lowering cholesterol and cancer, principally for colon cancer. + +This is kind of nit-picky, but notice how Teicholz uses the words 鈥淿lowering_ cholesterol鈥 and not 鈥渓ow cholesterol.鈥 This implies that the act of lowering cholesterol leads to cancer and not that the condition of low cholesterol is somehow linked to cancer. To the average Joe Schmo this may seem like I鈥檓 being petty and unreasonably contrarian, but if you ever take an epidemiology class you will know that how you phrase things matters a great deal. + +Anyway, let鈥檚 take a look at the studies Teicholz cites鈥 + +**Cribbing Taubes Alert** + +The first thing to notice is that ALL of the studies she cites in favor of the link between low cholesterol and cancer are also cited by Gary Taubes in GCBC when he makes the same argument. Hmmm鈥 + +- Pearce and Dayton 1971 [[36](https://doi.org/10.3945/ajcn.110.006643)]: Cited by Taubes, and as previously mentioned it is a bad study to cite in favor of this association. + +- Nydegger and Butler 1970 [[39](https://doi.org/10.1136/hrt.40.10.1069)]: Cited by Taubes. Does show a link between cancer and low lipoprotein levels. However, the authors point out this is likely due to some cholesterol-lowering effect of cancer and not the other way around, since people with chronically low cholesterol levels do not show an increased incidence of cancer. + +- Oliver et al 1978 [[40](https://doi.org/10.1136/bmj.280.6210.285)]: Cited by Taubes. The high-cholesterol group had a lower cancer rate than the two low-cholesterol groups, but it was not significant. From the paper: 鈥淭hese figures are surprisingly close to the rates observed in trial subjects in Groups I and III. Thus the data for all cancer do not give rise to special concern.鈥 + +- Beaglehole et al. 1980 [[41](https://doi.org/10.1016/0021-9681(80)90026-0)]: Cited by Taubes. Shows a significant inverse relationship. + +- Kark et al. 1980 [[42](https://doi.org/10.1093/oxfordjournals.aje.a113171)]: Cited by Taubes. Also shows an inverse relationship between low cholesterol and cancer, but the authors suggest that the cancer is not likely a result of low cholesterol. From the paper: Were high cholesterol levels associated with improved survival, one would expect that those prevalent cases surviving until 1974 as well as live incident cases (surviving until 1974) would also have high cholesterols. The reverse was true. + +- Garcia-Palmieri et al. 1981 [[43](https://pubmed.ncbi.nlm.nih.gov/2025146/)]: Cited by Taubes. Shows a significant inverse relationship. + +- Stemmermann et al. 1981 [[44](https://doi.org/10.1093/jnci/67.2.297)]: Cited by Taubes. Shows a significant inverse relationship with colon cancer, but also shows a positive relationship with CHD but that, of course, is never mentioned. + +- Miller et al. 1981 [[45](https://doi.org/10.1093/oxfordjournals.aje.a113170)]: Cited by Taubes. Shows a significant inverse relationship, but makes it clear that suggesting low cholesterol might cause cancer is almost certainly wrong: 鈥淎lthough we found colon cancer patients to have significantly lower serum cholesterol levels than controls, the observed differences may partially reflect the metabolic influence of advancing disease, since there were no significant differences in serum cholesterol levels between controls and cases with early tumors. Our data suggest that low serum cholesterol levels in colon cancer patients do not necessarily precede tumor formation but may be a consequence thereof.鈥 + +- Kozarevic et al. 1981 [[46](https://doi.org/10.1016/S0140-6736(74)92492-1)]: Cited by Taubes. Shows a non-significant relationship. Also mentions the following that is never discussed: 鈥淪erum cholesterol, as expected, was positively related to the incidence of coronary heart disease death.鈥 + +- Rose et al. 1974 [[47](https://doi.org/10.1001/jama.1981.03310280023021)]: Cited by Taubes. Shows a significant inverse relationship with colon cancer. Again, the authors suggest that low-cholesterol might be a result of colon cancer. And again, this is not mentioned. + +- Williams et al. 1981 [[48](https://www.semanticscholar.org/paper/Effects-of-dietary-fat-on-the-uptake-and-clearance-Gammal-Carroll/c8c4012f8544114648842f1af6898b2ed197b0b7)]: Cited by Taubes. Shows a significant inverse relationship with colon cancer, but also mentions that it is possible that cancer of the colon can affect cholesterol absorption and excretion leading to low serum levels. I鈥檓 shocked this was not mentioned. Shocked. + + +Page 94: + +> [E]ver since corn oil had been shown to double the rate of tumor growth in rats in 1968, there had been a baseline level of concern about vegetable oils and cancer. + +There has? I don鈥檛 think so. But anyway, the study Teicholz cites is waaayy off the mark [[49](https://pubmed.ncbi.nlm.nih.gov/5922675/)]. For some brief detail some rats were fed either a low-fat diet, a diet high in coconut oil, or a diet high in corn oil. Then they were injected with a carcinogen known to cause breast cancer. Turns that the rates of uptake and clearance of the carcinogen was equal on all three diets. + +Page 94: + +> Other studies from this time led to the supposition that corn oil might cause cirrhosis of the liver. + +As evidence she cites a very obscure study on rats that were fed a diet _explicitly\u{00A0}designed to induce cirrhosis_\u{00A0}where some were also supplemented with corn oil. The researchers found that the corn oil did not exert a protective effect [[50](https://doi.org/10.1016/0091-7435(79)90033-1)]. Not preventing cancer DOES NOT EQUAL CANCER-PROMOTION. This is possibly the most twisted and misleading claim Teicholz has made so far in the chapter. + +Page 94: + +> NIH investigators found that Japanese people with cholesterol levels below 180 mg/dL suffered strokes at rates two to three times higher than those with higher cholesterol. + +The cited text does state that the people with the lowest cholesterol did have the highest incidence of stroke [[51](https://doi.org/10.1016/0091-7435(82)90059-7)], but I want to note a few things. First, this is not a study, but a letter to the editor. Second, these were not NIH investigators nor do I think it had anything to do with the NIH considering the NIH is never mentioned and the studies discussed in the letter were conducted by Japanese researchers on Japanese participants in Japan. Why would American taxpayer money fund this effort? Please correct me if I am wrong. + +Page 94-95: + +> The NHLBI became so concerned about the cancer findings that it hosted three workshops in 1981, 1982, and 1983. The evidence on the topic was reviewed and rereviewed by an extremely prominent group of scientists [鈥 One suggestion was that low cholesterol might be an early symptom of cancer, rather than a cause. It was a plausible bit of logic. In the end, however, although the assembled researchers could find no convincing explanation for the cancer findings, they concluded that they did 鈥渘ot present a public health challenge鈥 and did not 鈥渃ontradict鈥 the more urgent, 鈥渃ommonsense鈥 public health message for everyone to lower their cholesterol. + +A couple of minor things, but I could not find the word 鈥渃ommonsense鈥 that was quoted above in either of the Feinleib papers that were cited [[52](https://doi.org/10.1093/oxfordjournals.aje.a113173)][[53](https://doi.org/10.1158/0008-5472.CAN-10-2953)]. Moreover, as I recall the public health message for everyone to lower their cholesterol never even existed. The message was/is for those with high cholesterol to lower their cholesterol. There鈥檚 a difference. + +The scientists involved included nearly all of the above authors of the scary observational studies that indicated a link between low serum cholesterol and cancer.52\u{00A0}Furthermore, the consensus of the panelists was unanimous in that there was not nearly enough evidence to suggest that lowering cholesterol is a risky behavior. + +If Teicholz was not an extraordinarily biased journalist, and she wanted to write BFS with a modicum of honesty she could have easily included some more recent studies that show no association with cholesterol-lowering and an increased risk of cancer [[54](https://doi.org/10.1074/jbc.M110.184010)[[55](https://doi.org/10.1093/annonc/mdr155)][[56](https://doi.org/10.1136/gut.2009.190900)][[57](https://doi.org/10.1136/bmj.308.6925.373)][[58](https://doi.org/10.1056/NEJM198101083040201)]. Some even indicate a protective effect of low serum cholesterol on cancer. But when has the truth ever been able to move books? + +Page 95: + +> When I mentioned all this to Stamler, he didn鈥檛 remember any part of this cancer-cholesterol debate. In this way, he is a microcosm of a larger phenomenon that allowed the diet-heart hypothesis to move forward: inconvenient results were consistantly ignored; here again, 鈥渟election bias鈥 was at work. + +WOW鈥 Pot. Kettle. _Black!_ + +**Cribbing Taubes Alert** + +GCBC, page 38: + +> The principal investigator on the trial was Ivan Frantz, Jr., who worked in Keys鈥檚 department at the University of Minnesota. Frantz retired in 1988 and published the results a year later in a journal called _Arteriosclerosis_, which is unlikely to be read by anyone outside the field of cardiology. [鈥 When I asked Frantz in late 2003 why the study went unpublished for sixteen years, he said, 鈥淲e were just disappointed in the way it came out.鈥 + +BFS, page 96: + +> Frantz, who worked in Keys鈥檚 university department, did not publish the study for sixteen years, until after he retired, and then he placed his results in the journal _Arteriosclerosis, Thrombosis, and Vascular Biology_, which is unlikely to be read by anyone outside the field of cardiology. When asked why he did not publish the results earlier, Frantz replied that he didn鈥檛 think he鈥檇 done anything wrong in the study. 鈥淲e were just disappointed in the way it came out,鈥 he said. + +At least Teicholz cites Taubes as the source of the Frantz quote. + +On page 97, Teicholz discusses the Western Electric study: + +> But the results, after twenty years of study, actually showed that diet affected blood cholesterol only a tiny bit and that the 鈥渁mount of saturated fatty acids in the diet was not significantly associated with risk of death from CHD [coronary heart disease],鈥 as the authors wrote. + +Strangely enough, on page 29 of GCBC Taubes discusses the very same study and quotes the very same line. Whooda thunk? Well, by now everyone shoulda thunk. + +Anyway, it is true that Western Electric found only non-significant relationships between saturated fat and CHD mortality [[59](https://doi.org/10.1093/ajcn/26.2.177)].\u{00A0}But yet again, evidence that runs contrary to the overall thesis is left out. From the paragraph\u{00A0}_immediately before_ the saturated fat quote (emphasis mine): + +> When the risk of death from CHD was analyzed in terms of the component dietary variables, it was **inversely related to intake of polyunsaturated fatty acids and positively related to intake of dietary cholesterol**. + +Those evil vegetable oils that are toxic and cause all kinds of disease evidently protect from CHD death. And all that cholesterol from the butter, meat, and cheese that Teicholz wants people to eat is evidently increasing it. What was that Teicholz was saying about 鈥渟election bias鈥? + +Page 98, Teicholz discusses a study in which participants were from either Hiroshima or Nagasaki and tries really hard to convince you to not to pay attention to the results by saying: + +> The possible radiation exposure of these men to the atomic bombs dropped on their cities at the end of World War II was not factored into the analysis. + +If the only participants are from areas with essentially the same amount of radiation then the results are controlled for. If one cohort had been from Osaka and the other from Nagasaki AND their diet or lifestyle was different then she would have a point, but that is clearly not the case. Not to mention the lead author on the publication in question is a STATISTICIAN working in Japan鈥檚 ATOMIC BOMB CASUALTY COMMISSION. Ladies and gentlemen, this is what you call a hail mary. + +On page 99, Teicholz discusses the results of a large cohort study she refers to as the Ni-Hon-San. The results indicate that a diet high in saturated fat increases risk of pretty much 鈥渁ll manifestations of CHD鈥 and that you might do well to eat less of it. Of course Teicholz will have none of this so she again scours the publications to find a molehill to portray as a mountain: + +> So I dug up the paper on NiHonSan鈥檚 diet methodology, published two years earlier. It seems that the team in the San Francisco Bay Area had completely fallen down on the job. Not only did they get diet information from only 267 men, compared to the 2,275 interviewed in Japan and a whopping 7,963 in Honolulu, but they had done these interviews only one time and in only one way (a twenty-four-hour recall questionnaire), whereas the other two teams had assessed diet on two different occasions, several years apart, and in four different ways; this was clearly not the 鈥渟ame method鈥 that the authors claimed. Yet these issues were never mentioned [鈥 + +These issues are 鈥渘ever mentioned鈥 except where they are explicitly mentioned鈥 in a published article鈥 by the most widely-read nutrition journal鈥 that is completely free and does not require any kind of subscription to access鈥 which is where Teicholz found them. + +A few things: + +- Teicholz seems to think that because CA completed less diet records that somehow invalidates the results. + +- California did more than just the 24-hour recall, according to the methods paper [[60](https://books.google.ca/books/about/Honolulu_Heart_Program.html?id=hcT0HzpKe28C&redir_esc=y)].\u{00A0}They also did a 7-day food record and a food acculturation questionnaire. + +- Teicholz assumes incompetence by the CA researchers, when in fact it was funding issues. It is described in detail in the book _Honolulu Heart Program_ [[61](https://doi.org/10.2302/kjm.61.79)]. Books are often compiled from large cohort studies like these (e.g. The Seven Countries Study and The China-Cornell-Oxford Project). Investigative journalism, anyone? + + +Page 100: + +> [T]he Japanese have recently been eating far more meat, eggs, and dairy than they used to since the end of World War II, rates of heart disease have dropped to levels seen by Keys in the 1950s. This means that although the story of diet and disease in Japan is complex, we can pretty well say that based on this trend alone, a diet low in saturated fat was not the factor that spared the Japanese from heart disease in the postwar years. + +That鈥檚 a bold claim for which Teicholz cites a review article not on heart disease, but on stroke 鈥 a particular subset of heart disease [[62](https://doi.org/10.1194/jlr.R400012-JLR200)]. Additionally, the article never even mentions meat or even fat consumption. It does mention cholesterol as a risk factor, though. Perhaps Teicholz should have read the conclusion: + +> The atherogenic effect of hypercholesterolemia is well established and is based on evidence from numerous epidemiological, pathological, and biological studies. Furthermore, the proportion of atherothrombotic cerebral infarctions may have recently increased in Japan, because this subtype currently accounts for approximately one third of cerebral infarctions in the Japan Standard Stroke Registry Study (JSSRS). We should formulate a confirmed strategy for lipid management to prevent cerebral infarction. + +Teicholz cites no evidence for the increased meat consumption, but no matter. I know how to Google. It seems that meat consumption has increased in Japan over the years, although it still pales in comparison to US consumption which is probably why Japanese heart disease remains comparatively low. + +![][image6] +[image6]: /blog/bigfatsurprise/image6.png + +Source [here](http://karlandersson.se/2012/11/07/japan-vs-the-west-meat-consumption/)\u{00A0}and [here](http://www.theguardian.com/environment/datablog/2009/sep/02/meat-consumption-per-capita-climate-change). + +Page 101: + +> Seymour Dayton was concerned about the extremely low levels of arachidonic acid, an essential fatty acid present mainly in animal foods, among his prudent dieters. + +A few things: 1) Arachidonic acid is one of those evil polyunsaturates, 2) Arachidonic acid is not an EFA, and 3) Here鈥檚 what Dayton said about AA on the exact page from the exact paper Teicholz cites [[34](https://doi.org/10.1016/S0140-6736(70)90868-8)] (emphasis mine) + +> The other observation which raised some question of a possible toxic effect was the low arachidonic acid concentrations in atheromata of long-term, high-adherence subjects on the experimental diet (tables 37 to 40). **For reasons already cited, this may be more appropriately viewed as evidence of a salutary rather than a toxic effect.** + +Page 101-102: + +> In the United States, Pete Ahrens, who was still the prudent diet鈥檚 most prominent critic, continued to publish his central point of caution: the diet-heart hypothesis 鈥渋s still a hypothesis 鈥 I sincerely believe we should not. . . make broadscale recommendations on diets and drugs to the general public now.鈥 + +A few things: + +1. Ahrens is not referring to the diet-heart hypothesis in this text, he is referring to the lipid hypothesis. There is a difference. Teicholz actually clips the words 鈥渓ipid hypothesis鈥 from one of the quotes: 鈥淭he Lipid Hypothesis is still a hypothesis.鈥 In fact, he never even mentions the diet-heart hypothesis in the text. + +2. Ahrens does write those words, but all three phrases are out of order. As a journalist, are you allowed to do that? Take bits of text and arrange them however, as long as you put ellipses in there? If they were to go in order of appearance it would be 鈥淸鈥 make broadscale recommendations on diet and drugs to the general public now [鈥 I sincerely believe we should not [鈥 is still a hypothesis [鈥鈥 By the way there is about one and a half paragraphs between the last two quotes. + +3. This is another example of quote-mining by Teicholz, because Ahrens actually says some not-so-bad things about the Lipid hypothesis in the text and cholesterol-lowering in general. Two can play the quote-mining game. For instance: + + +> [When asked whether we should abandon the Lipid Hypothesis] My reply to the last question is 鈥渘o鈥: I submit that the Lipid Hypothesis has never really been put to an adequate test, and that therefore we cannot conclude that the premise is false. + +AND + +> [I]t seems entirely logical, indeed essential, for internists to screen routinely for hyperlipidemia [鈥 If hyperlipidemia persists, a full year鈥檚 evaluation should be made of a low-cholesterol, low-saturated, high polyunsaturated-fat diet, with moderation in alcohol intake. + +AND + +> The Lipid Hypothesis is still a hypothesis. I have tried to show that it is a viable one, and how in the future we may better put it to test. + +**Cribbing Taubes Alert** + +On page 22 of GCBC Taubes states the following: + +> The resulting literature very quickly grew to what one Columbia University pathologist in 1977 described as 鈥渦nmanageable proportions.鈥 + +On page 102 of BFS Teicholz writes: + +> By the late 1970s, however, the number of scientific studies had grown to such 鈥渦nmanageable proportions,鈥 as one Columbia University pathologist put it, that it was overwhelming. + +This quote is from _Dietary Goals for the United States鈥擲upplemental Views_ publication which is an 881-page text, at least in PDF format. What are the odds that Teicholz independently arrived at 鈥渦nmanageable proportions鈥 in that enormous publication? Do you think this is original research? + +Page 102: + +> The ambiguities inherent to nutrition studies opened the door for their interpretation to be influenced by bias鈥 which hardened into a kind of faith. There were simply 鈥渂elievers鈥 and 鈥渘onbelievers,鈥 according to cholesterol expert Daniel Steinberg. + +Interestingly enough, this person that Teicholz calls a 鈥渃holesterol expert鈥 would almost certainly disagree with the entire thesis of BFS, since he appears to accept that high cholesterol plays a role in heart disease, and that serum cholesterol can be controlled to some degree via the diet. This is made pretty clear if you read the publication Teicholz cites for this [[63](https://doi.org/10.1093/ajcn/32.12.2627)].\u{00A0}In fact, Ahrens himself (whom Teicholz describes above as the biggest critic of the diet-heart hypothesis 鈥 although she confuses it with the lipid hypothesis) was, according to Steinberg, one of the first to conduct 鈥渢he definitive demonstration that saturated fats tend to raise while polyunsaturated fats tend to lower blood cholesterol in humans [鈥鈥 Steinberg鈥檚 entire review series on the pathogenesis of ASCVD is both quite interesting and readable. I highly suggest reading them if you are interested in the topic. They are open access papers, but if you didn鈥檛 want to go to the trouble of finding them [here is a link to the series](http://ge.tt/9VafyxZ?c). + +### CHAPTER 5: THE LOW-FAT DIET GOES TO WASHINGTON + +**Cribbing Taubes Alert** + +BFS, page 112: + +> [W]hen Senator McGovern announced his Senate committee鈥檚 report, called Dietary Goals, at a press conference in 1977, he expressed a gloomy outlook about where the American diet was heading. 鈥淥ur diets have changed radically within the past fifty years,鈥 he explained, 鈥渨ith great and often harmful effects on our health.鈥 + +The problem here is that Teicholz cites the source of this quote as 鈥淪elect Committee on Nutrition and Human Needs of the United States Senate, _Dietary Goals for the United States_\u{00A0}(Washington, DC: US Government Printing Office, 1977); 1.鈥 However, this quote does not appear on page 1. It appears on page XIII. Normally I would chalk this up to a simple citation error [[64](https://doi.org/10.1126/science.451563)].\u{00A0}The reason I mention it is because Taubes uses the same exact quote on page 10 of GCBC, and also mistakenly cites the source of the quote as being on page 1. I would argue (as I have done previously many times) that this is good evidence that Teicholz is simply lifting sentences from others and simply citing what they cite 鈥 likely without ever even seeing the source material. + +**Cribbing Taubes Alert** + +Page 112: + +> The _New York Times_\u{00A0}health columnist Jane Brody perfectly encapsulated this idea when she wrote, 鈥淲ithin this century, the diet of the average American has undergone a radical shift away from plant-based foods such as grains, beans and peas, nuts, potatoes, and other vegetables and fruits and toward foods derived from animals鈥攎eat, fish, poultry, eggs and dairy products.鈥 + +This Brody quote appears word-for-word on page 10 of GCBC. It鈥檚 from a book Brody published 30 years ago. Isn鈥檛 it astonishing that both Taubes and Teicholz can do completely independent research, find the exact same publications, and use the same quotes from those publications? + +Page 122: + +> Ahrens chose a nine-member task force representing the full range of scientific views on the diet-heart hypothesis. The panel deliberated for several months over each link in the chain of the diet-heart hypothesis, from eating saturated fat, to total cholesterol, to heart disease. The results, however, were not exactly welcome news to diet-heart supporters [鈥 The final report from the Ahrens task force in 1979 made it clear that the majority of its members remained highly skeptical of the idea that reducing fat or saturated fat could deter coronary disease. + +Actually, the task force didn鈥檛 make that clear at all.65\u{00A0}I actually blogged about this not too long ago because Taubes cites the same obscure paper and comes to a similar but still erroneous conclusion. + +The paper gives a score of 0-100 to associations between a given dietary issue and atherosclerosis, where 0 is the weakest evidence for the association and 100 is the most rock-solid evidence. The final score is an aggregation of scores by several experts in the field based on epidemiological evidence, animal studies, human interventions, autopsies, biological plausibility, etc. Cholesterol alone received a score of 62. Saturated fat alone received a 58. Cholesterol and fat together received a 73. For comparison the association between alcohol and liver disease received an 88, and the association between carbohydrate and atherosclerosis got an 11. Carbohydrate and diabetes got a 13. + +I don鈥檛 want to tell you how you should interpret that data, but it seems pretty clear to me that the evidence that cholesterol and fat play a role in ASCVD is quite strong: well above the halfway point and approaching the level of alcohol and liver disease. Teicholz, however, tells her readers that the committee was 鈥渉ighly skeptical鈥 for reasons that should be pretty clear by now. + +**Cribbing Taubes Alert** + +On pages 56-59 of GCBC Taubes discusses lipid trial and a consensus conference. On page 127-134 Teicholz discusses the same trial and conference in a strikingly similar way. + +GCBC page 56: + +> The second trial was the $150 million Lipid Research Clinics (LRC) Coronary Primary Prevention Trial. The trial was led by Basil Rifkind of the NHLBI and Daniel Steinberg, a specialist on cholesterol disorders at the University of California, San Diego. The LRC investigators had screened nearly half a million middle-aged men and found thirty-eight hundred who had no overt signs of heart disease but cholesterol levels sufficiently high-more than 265 mg/dl-that they could be considered imminently likely to suffer a heart attack. + +BFS page 127: + +> The other trial was the $150 million Lipid Research Clinic Coronary Primary Prevention Trial (LRC) [鈥 LRC was led by Basil Rifkind, chief of NHLBl鈥檚 Lipid Metabolism Branch, together with Daniel Steinberg, a cholesterol specialist at the University of California, San Diego. They screened nearly half a million middle-aged men and found 3,800 with levels of cholesterol high enough (265 mg/dL or above) to be considered likely to have a heart attack soon [鈥 + +GCBC page 57: + +> To call these results 鈥渃onclusive,鈥 as the University of Chicago biostatistician Paul Meier remarked, would constitute 鈥渁 substantial misuse of the term.鈥 + +BFS page 130: + +> The biostatistician Paul Meier commented that to call the results 鈥渃onclusive鈥 would constitute 鈥渁 substantial misuse of the term.鈥 + +GCBC page 57: + +> As Rifkind told _Time_\u{00A0}magazine, 鈥淚t is now indisputable that lowering cholesterol with diet and drugs can actually cut the risk of developing heart disease and having a heart attack.鈥 + +BFS page 130: + +> [鈥 Rifkind told Time magazine, 鈥淚t is now indisputable that lowering cholesterol with diet and drugs can actually cut the risk of developing heart disease and having a heart attack.鈥 + +![][image8] +[image8]: /blog/bigfatsurprise/image8.png + +![][image9] +[image9]: /blog/bigfatsurprise/image9.png + +### CHAPTER 6: HOW WOMEN AND CHILDREN FARE ON A LOW-FAT DIET + +Page 136 + +> Jerry Stamler expressed in 1972, that fat was 鈥渆xcessive in calories鈥 so that obesity develops.鈥 This seemingly obvious but nonetheless unproven assumption was that fat made you fat. + +If you actually read the cited paper you will note that Stamler was not referring to fat when he said that, he was instead referring to the 鈥渉abitual diet of Americans鈥 [[65](https://doi.org/10.1016/0091-7435(72)90076-x)].\u{00A0}Stamler鈥檚 quote is taken out of context and put into a different context that is inaccurate. + +**Cribbing Taubes Alert** + +Teicholz seemingly copy-pastes Taubes work on page 136 when she discusses an amazingly obscure 1995 pamphlet by the American Heart Association. According to Teicholz the pamphlet: + +> told Americans to control their fat intake by increasing refined-carbohydrate consumption. Choose 鈥渟nacks from other food groups such as . . . low-fat cookies, low-fat crackers, . . . unsalted pretzels, hard candy, gum drops, sugar, syrup, honey, jam, jelly, marmalade鈥 [鈥 + +Leaving aside the fact that the pamphlet never actually advises anyone to increase their refined-carbohydrate consumption, what鈥檚 interesting is that Taubes says the very same thing in chapter sixteen of WWGF: + +> [T]he AHA counseled, 鈥渃hoose snacks from other food groups such as 鈥 low-fat cookies, low-fat crackers 鈥 unsalted pretzels, hard candy, gum drops, sugar, syrup, honey, jam, jelly, marmalade (as spreads).鈥 + +The ellipses are even in the same place! What a coinkydink. + +She goes on to say: + +> In short, to avoid fat, people should eat sugar, the AHA advised. + +No. That鈥檚 a gross and highly misleading oversimplification. There鈥檚 no way you can distill 20 pages of dietary advice into 鈥渆at sugar鈥 and think you鈥檙e even approaching a decent approximation. + +Page 138: + +> Jane Brody, the health columnist for the New York Times and the most influential promoter of the low-fat diet in the press, wrote, 鈥淚f there鈥檚 one nutrient that has the decks stacked against it, it鈥檚 fat鈥 [鈥 + +That quote does not appear in the cited NYT article [[66](https://www.nytimes.com/1980/02/05/archives/tending-to-obesity-inbred-tribe-aids-diabetes-study-inbred-tribe.html)]. + +On page 143 Teicholz attempts to make the argument that plant-based diets aren鈥檛 all they鈥檙e cracked up to be: + +> Vegetarian diets generally have not been shown to help people live longer. The 2007 report by the World Cancer Research Fund and the American Institute for Cancer Research, discussed in the last chapter, found that in no case was the evidence for the consumption of fruits and vegetables in the prevention of cancer 鈥渏udged to be convincing.鈥 + +This has got to be one of the most selective and misleading interpretations of the Second Expert鈥檚 Report. I mean, my god鈥 So for those who are not familiar with it, the Second Expert鈥檚 Report (what Teicholz discusses above) is an incredible text that outlines ALL of the quality evidence on a given cancer topic regarding food, nutrition, and the prevention of cancer. All the evidence is evaluated by a large panel of elite doctors and researchers and given one of the following labels: unlikely, suggestive, probable, and convincing. To reach the **convincing**\u{00A0}level you really need some rock solid evidence [[67](https://doi.org/10.1016/s0899-9007(99)00021-0)]. None of the evidence regarding fruits and vegetables reached the venerable **convincing**\u{00A0}level, but there was a ton of **probable**\u{00A0}and **suggestive** evidence for many cancers. You really have to scour that section to find a quote that might fit an anti-vegetable narrative. Read it yourself for all the juicy details, but here are some remarks from the conclusion on page 1144: + +> Non-starchy vegetables probably protect against cancers of the mouth, pharynx, and larynx, and those of the oesophagus and stomach. There is limited evidence suggesting that they also protect against cancers of the nasopharynx, lung, colorectum, ovary, and endometrium. Allium vegetables probably protect against stomach cancer. Garlic (an allium vegetable, commonly classed as a herb) probably protects against colorectal cancer. Fruits in general probably protect against cancers of the mouth, pharynx, and larynx, and of the oesophagus, lung, and stomach. There is limited evidence suggesting that fruits also protect against cancers of the nasopharynx, pancreas, liver, and colorectum. + +![][image10] +[image10]: /blog/bigfatsurprise/image10.png + +On page 144 Teicholz derides the study that low-carbers love to hate, T. Colin Campbell鈥檚 China Study [[68](https://www.westonaprice.org/book-reviews/the-china-study-by-t-colin-campbell/)]: + +> These books are based on one epidemiological study, with a number of significant methodological problems, that was never published in a peer-reviewed issue of a scientific journal. Campbell鈥檚 two papers were instead published as part of conference proceedings in journal 鈥渟upplements,鈥 which are subject to little or no peer review. + +As evidence she cites a BLOG POST by then-undergraduate Chris Masterjohn, published by a private organization that is explicitly biased in favor of animal-based diets [[69](https://www.westonaprice.org/book-reviews/the-china-study-by-t-colin-campbell/)].\u{00A0}Just let that sink in鈥 + +After discussing the Ornish diet for a bit, Teicholz mentions a paper on page 145 that reviews the evidence for (very) low-fat diets: + +> Tufts University nutrition professor Alice Lichtenstein and a colleague reviewed the very low-fat diet for the AHA [鈥 Lichtenstein concluded that very low-fat diets 鈥渁re not beneficial and may be harmful.鈥 + +Teicholz both takes the quote out of context and mangles it somewhat. Here鈥檚 the actual quote (emphasis mine): + +> At this time, no health benefits and possible harmful effects can be predicted from adherence to very low fat diets **in certain subgroups**. + +The 鈥渋n certain subgroups鈥 part is vital to the accuracy of the statement. You can鈥檛 just cut it out. And Dr. Lichtenstein鈥檚 conclusion is quite a bit more nuanced than Teicholz would have you believe. The paper is actually a very objective look at low-fat diets [[70](https://doi.org/10.1161/01.CIR.98.9.935)]. It acknowledges that more research needs to be done on these diets in order for a definitive recommendation. Moreover, as alluded to above, it states that until more evidence comes in young children, the elderly, pregnant women, and those with eating disorders should probably avoid the diet. However, it also acknowledges that a low fat diet can be beneficial and there is evidence for that. Here鈥檚 an actual quote from the conclusion: + +> There is overwhelming evidence that reductions in saturated fat, dietary cholesterol, and weight offer the most effective dietary strategies for reducing total cholesterol, LDL-C levels, and cardiovascular risk. + +On page 146 Teicholz discusses the idea of reducing cholesterol levels In young children: + +> Indeed, in the late 1960s, the NHLBI had been putting children as young as four years old on cholesterol-lowering diets and also giving them cholestyramine, the same drug that would be used in the LRC trial. Convinced that cholesterol was a crucial part of the heart disease puzzle, the NHLBI went so far as to propose universal umbilical cord blood screening in order to start treatment as early as possible, even at birth. In 1970, mass screening of cord blood at 鈥渘o more than鈥 five dollars per baby was given serious consideration. Such was the preoccupation with heart disease that researchers believed healthy children ought to start out life in a position of defense. + +_These people are obsessed with cholesterol! Won鈥檛 somebody pleeease think of the children??_ Of course to the average person reading this it sounds absurd, and it would be absurd if Teicholz had not removed a key bit of information that makes it very not absurd. According to the JAMA article she cited for this paragraph, the NHLBI was not proposing we give all or even most kids cholesterol-lowering drugs or cholesterol screenings [[71](http://archive.org/details/sim_jama_1970_214_index)]. The article makes it abundantly clear that these are for children with familial type 2 hypercholesterolemia, a genetic condition associated with chronically high cholesterol levels. People with familial hypercholesterolemia have heart attacks and can die far younger than normal lipid folks. It makes perfect sense to go on a cholesterol-lowering diet or a statin if you have that condition. But of course, Teicholz wants to stoke your outrage a bit so you think the NHLBI are a bunch of incompetent boobs that are completely absorbed (pardon the pun) with the idea of cholesterol. + +Teicholz continues to make the argument against vegetarianism on page 148: + +> One of the more important early nutrition researchers looking at these questions was Elmer V. McCollum, an influential biochemist at Johns Hopkins University. He performed endless feeding studies on rats and pigs because they, like humans, are omnivores and are therefore considered instructive for human nutritional needs. His book The Newer Knowledge of Nutrition (1921) is populated with pictures of scrawny, scruffy-furred rats raised on poor nutrition, compared to large, lustrously furred ones raised on better nutrition. He found that animals on a vegetarian diet had an especially difficult time reproducing and rearing their young. + +She goes on to quote a passage from the book with the author explaining that the vegetarian rats were smaller and lived about half as long as the non-vegetarians. While I was looking for the quoted passage I noticed that basically the entire book is a discussion of rats on deprivation diets of some sort; rat experiments where the researchers deprive them of one or more essential amino acids, vitamins, and breast milk at birth to see what happens [[72](http://archive.org/details/newerknowledgeof00mcco_1)].\u{00A0}This is what the pics of 鈥渟crawny, scruffy-furred rats鈥 she refers to are; not necessarily vegetarian rats. + +Moreover, I鈥檓 not sure that rats make a great proxy for humans. At least I would not be convinced to change my diet based only on rat studies. At any rate, much like her scholarship on the Second Expert鈥檚 Report, to find a quote that puts vegetarianism in a negative light you have to ignore paragraphs immediately preceding and immediately following her quoted passage. I鈥檒l give you an idea of what I鈥檓 talking about. On page 1599: + +> The more valid arguments concerning the use of meat as contrasted with the fleshless dietary regimen, are based upon the view that meat is unwholesome and that it contains waste products, which, because of their poisonous properties, tend to do damage to the body tissues. This view is upheld by experimental results. Professor Irving Fisher of Yale conducted extensive experiments with flesh abstainers and flesh eaters, and found the former possessed of much greater endurance than the latter. + +After discussing the experiment where the rats鈥 growth were stunted on a vegetarian diet, McCollum goes on to describe a different vegetarian diet that was more successful. Page 161: + +> The diet induced growth at approximately the normal rate, and reproduction and rearing of a considerable number of young. The young grew up to the full adult size and were successful in rearing a considerable number of their offspring (see Chart 7). + +McCollum then describes another successful experiment where rats were fed _another_ iteration of a vegetarian diet and thrived. He even explains why the diet that Teicholz mentioned did not permit the rats to thrive. Page 164: + +> [T]he diet was of such a nature that the animals could hardly do otherwise than take a rather low protein intake. Secondly, the leaves, which formed the only components of the food supply containing enough mineral elements to support growth, were fed in the fresh condition. In this form the water content and bulk are so great that it would be practically impossible for an animal whose digestive apparatus is no more capacious than that of an omnivorous rat to eat a sufficient amount of leaf to correct the inorganic deficiencies of the rest of the mixture [鈥 + +Ladies and gentlemen, this is cherry-picking at its finest. + +On page 152 Teicholz tries really hard to find a reason to dismiss the results of a study: + +> [The NHLBI] funded a trial called the Dietary Intervention Study in Children (DISC). Starting in 1987, three hundred seven- to ten-year-old children were counseled, along with their parents, to eat a diet in which saturated fat was limited to 8 percent of calories and total fat to 28 percent, and this group was compared to an equal-sized group of controls. Investigators found that those put on the diet low in fat (and animal fat) grew just as well as the children eating normally during the three years of the experiment, and the authors emphasized this point. Yet it was problematic for the study that the boys and girls in the trial did not represent a normal sample. For their study population, the DISC leaders had selected children who had unusually high levels of LDL cholesterol (in the 80th to 98th percentile). In other words, these children could very well have had familial hypercholesterolemia, the genetic condition that causes heart disease through a metabolic defect, which is entirely different from the way that cholesterol is altered by diet. These at-risk children were chosen because they were thought to need help more urgently in fighting the early onset of a life-threatening disease, yet their unusually high cholesterol levels meant that the results could not be generalized to the larger population of normal children. + +I would totally agree with Teicholz here if there was significant evidence that hypercholesterolemia would confound growth results in some way. However, it seems obvious to me that she is trying real hard to find reasons to discount the results, and if this is the best she can do then it must be a good study design. Also, the diet is nearly one-third fat. How is this a 鈥渄iet low in fat鈥?? + +Teicholz hits the vegetarian diet from all possible angles, including the idea that vegetarian children show retarded growth. Page 153: + +> Slightly stunted growth was consistently found among children eating vegetarian diets. Children were also found to experience growth spurts when incorporating more animal foods in their diets. Growth faltering was particularly pronounced among children on a vegan diet, which cuts out all animal foods. + +As evidence she cites a twenty-two year-old review article on reduced fat diets [[73](https://doi.org/10.1016/0091-7435(92)90004-2)]. Refreshingly, Teicholz doesn鈥檛 really misrepresent the article nearly as much as her other claims. However, she does leave out some important details. One important distinction that is not made by Teicholz and is only kind-of made in the review article is the content of the vegetarian diets. What I mean is that the terms vegetarian diet, low fat diet, and low calorie diet are used almost interchangeably in the text. Now a vegetarian diet can of course be low fat or low calorie or both, but it certainly does not have to be. + +The author also implies that ridiculously strict vegetarian diets are also included in the review including the Zen macrobiotic diet which the author claims as consisting only of brown rice and water. He also mentions some limitations of this review stating 鈥淸N]early all of the studies focus on diets that provide undernourishment in nutrients.鈥 I think it鈥檚 reasonable to assume that this can and almost certainly does account for the slight growth stunting and not, as Teicholz would claim, a lack of animal fat. + +Similar to the DISC trial above there was also another study done to test the outcomes of a low saturated fat diet on kids called STRIP (Special Turku Coronary Risk Factor Intervention Project). Teicholz refers to it as a low fat diet, but it simply replaces saturated fat with unsaturated. Evidently there were no adverse effects to growth or coronary disease risk factors. But that doesn鈥檛 stop Teicholz from doing her damnedest to try and convince you that the study is bunk. Page 154: + +> [A]lthough investigators found no vitamin deficiencies, the supplements they provided may have masked this problem. It is also significant that 20 percent of the families in both groups left before the end of the study. + +Page 157: + +> The British biochemist and nutrition expert Andrew M. Prentice, for instance, hypothesized that the lack of high-fat animal foods was possibly 鈥渢he major contributor of growth failure鈥 among babies he studied in Gambia. He compared some 140 Gambian infants to a slightly larger group of relatively affluent babies in Cambridge, England; early on, the Gambians and British infants grew almost equally well. When they started to be weaned off breast milk at six months of age, however, their growth curves steadily diverged. The Gambians ate an equal number of calories as did the Cambridge babies for the first eighteen months of life, but the fat content of their diet steadily declined to just 15 percent of calories by the age of two, and most of that fat was polyunsaturated from nuts and vegetable oils. The Cambridge babies, by contrast, ate a majority of calories from eggs, cow鈥檚 milk, and meat鈥攁 minimum of 37 percent of calories as fat, most of it saturated. By the age of three, the Gambian babies weighed 75 percent less than they should, according to standard growth charts, while the Cambridge babies were growing according to expectations and weighed on average 8 pounds more than the Gambians. + +The cited paper does make the case that essential fatty acids are needed for proper growth, and that a lack of dietary fat might explain the stunted growth in the Gambians [[74](https://doi.org/10.1093/ajcn/72.5.1253s)]. But some important details in the paper that Teicholz gets wrong or leaves out are that the Gambians did in fact consume less kcals and that Gambian children suffer from infection, disease, and diarrhea more than their Cambridge counterparts. + +Page 158: + +> Reports from poorer countries in Latin America and Africa, however, revealed that children were eating less fat, with clear implications for nutrition and growth: diets with less than 30 percent of calories as fat started to get nutritionally worrisome, and at 22 percent, they were associated with growth faltering. + +If look at the paper she cites for this data, you will find that the poorer countries such as Haiti also consumed FAR LESS kcals than their counterparts from more developed countries. Of course this doesn鈥檛 rule out fat as a factor, but I would argue that it definitely confounds the results. + +You should also note that this is a cross-sectional analysis which is extraordinarily weak in terms of showing any kind of cause-effect relationship. Teicholz makes this very argument earlier in the book, but you can see here that she has no problem invoking these types of studies when it fits her narrative. + +Teicholz then tries to make the argument that HDL was ignored by the major institutions as a predictor of heart disease. Page 162: + +> [W]hen diet and disease experts finally began to sidle away from total cholesterol, they did not turn to HDL-cholesterol. Instead, they chose to focus on LDL-cholesterol. By 2002, the NCEP was calling elevated LDL-cholesterol a 鈥減owerful鈥 risk factor. The AHA and other professional associations agreed. + +LDL was and is a powerful risk factor, but HDL was not ignored. The 2002 report that Teicholz cites has an entire section titled 鈥淟ow HDL cholesterol as an independent risk factor for CHD.鈥 I could quote about a hundred parts in that report that make the case that low HDL is a risk factor, but I鈥檒l spare you. The report is open access so you can find it and peruse it if you鈥檇 like. + +On page 165 Teicholz discusses the Boeing employees trial\u{00A0}and its implication for women [[75](https://doi.org/10.1046/j.1525-1373.2000.22524.x)]: + +> [The Boeing women] had followed the most stringent NCEP guidelines for an entire year and had apparently increased their risk of having a heart attack. + +She bases this on the study results that the women with high cholesterol levels had a 8% decrease in HDL levels. In the book she doesn鈥檛 mention that these HDL reductions only occurred in hypercholesterolemic women, instead implying that all women had their HDL levels go down. Moreover, if one鈥檚 HDL levels are at, say, 72 mg/dl and decrease 8% they are still high enough to be considered protective. High HDL levels are not unlikely for women with high cholesterol. HDL as a risk factor for heart disease only occurs when HDL levels get below 40 mg/dl. + +Page 166: + +> The idea that fat might lead to cancer was first aired at the McGovern committee hearings in 1976, when Gio Gori, director of the National Cancer Institute (NCI), testified that men and women in Japan had very low rates of breast and colon cancer and that those rates rose quickly upon emigrating to the United States. Gori showed charts demonstrating the parallel rising lines of fat consumption and cancer rates. 鈥淣ow I want to emphasize that this is a very strong correlation, but that correlation does not mean causation,鈥 he said. 鈥淚 don鈥檛 think anybody can go out today, and say that food causes cancer.鈥 + +That鈥檚 not nearly all Gori presented, but the source of this quote, according to Teicholz is the testimony of Gori in Volume 2 of _Diet Related to Killer Diseases_\u{00A0}(July 28, 1976): 176-182. However, that quote is not found in those page numbers. A similar quote is found on page 185, but it doesn鈥檛 include the 鈥淚 don鈥檛 think anybody can鈥︹ bit, so I don鈥檛 know where Teicholz got those page numbers or that quote. + +Page 167: + +> It is therefore surprising to learn that as far back as 1987, the epidemiologist Walter Willett at the Harvard School of Public Health had found fat consumption not to be positively linked to breast cancer among the nearly ninety thousand nurses whom he had been following for five years in the Nurses鈥 Health Study. In fact, Willett found just the opposite to be true, namely, that the more fat the nurses ate, particularly the more saturated fat they ate, the less likely they were to get breast cancer. These results held true even as the women aged. After fourteen years of study, Willett reported that his team had found 鈥渘o evidence鈥 that a reduction in fat overall nor of any particular kind of fat decreased the risk of breast cancer. Saturated fat actually appeared protective. + +The first sentence is actually true. Willett found that breast cancer incidence among those that ate more total fat (even saturated fat) was not higher than those women that ate less total or saturated fat [[76](https://doi.org/10.1056/NEJM198701013160105)].\u{00A0}But to claim that total fat or even saturated fat is _protective_\u{00A0}of breast cancer is not supported by the evidence. + +**Cribbing Taubes Alert** + +Taubes makes the same mistake regarding the same study on page 72 of GCBC. Coincidence? + +**Cribbing Taubes Alert** + +Page 167: + +> [T]he most effective fats for growing tumors were polyunsaturated鈥攖he fats found in vegetable oils that Americans were being counseled to eat. Saturated fats fed to rats had little effect unless supplemented with these vegetable oils. + +On page 73 of GCBC Taubes makes a similar statement: + +> Adding fat to the diets of lab rats certainly induced tumors or enhanced their growth, but the most effective fats by far at this carcinogenesis process were polyunsaturated fats鈥攕aturated fats had little effect unless 鈥渟upplemented with鈥 polyunsaturated fats. + +The reason I am suggesting Teicholz cribbed from Taubes here is not just that both statements are very similar, but also because both cite the same (somewhat obscure) paper and draw the same erroneous conclusion from it. It鈥檚 a rather long and dense (and old) paper that very persuasively makes the case that differences in dietary fat 鈥 both amount and type 鈥 lead to wildly variable results [[77](https://pubmed.ncbi.nlm.nih.gov/3059048/)]. I looked real hard for any kind of definitive statement on dietary fat and cancer in lab rats and this was the best that I found: + +> Corn and safflower oils and lard consistently enhance tumorigenesis when fed at high levels; coconut oil and fats high in n-3 fatty acids do not, and beef tallow and olive oil are variably effective [鈥 + +Go ahead and read the paper. I defy you to come to the honest conclusion that vegetable oils are the only fats that will cause cancer in lab rats. + +Page 168: + +> Even the NCI鈥檚 own studies came up empty-handed鈥攖he most recent of those being the Women鈥檚 Intervention Nutrition Study in 2006. This trial managed to get women to drop their fat intake to 15 percent or less, thereby answering criticisms that the women in earlier studies had not seen any results because they failed to lower their intake of fat enough. But even at 15 percent, the NCI still could not find a statistically significant association between fat reduction鈥攐f any kind or amount鈥攁nd reduced rates of breast cancer. + +The study in question does not study rates of breast cancer in general, but rather breast cancer relapses. And according to the results the lower fat intervention did in fact significantly reduce relapses by 24% [[78](https://doi.org/10.1093/jnci/djj494)]. + +Page 169-170, Teicholz discusses the Women鈥檚 Health Initiative (WHI) study results: + +> Yet to everyone鈥檚 alarm and bafflement, the results, published in a series of articles in JAMA, did not come out remotely as expected. [鈥 They had apparently met all their targets, but after a decade of following this diet, they were no less likely than a control group to contract breast cancer, colorectal cancer, ovarian cancer, endometrial cancer, stroke, or even heart disease. Nor did they lose more weight. + +Teicholz is actually right about most of the results, except for the ovarian cancer and weight loss. Evidently there was significantly less ovarian cancer and weight among the intervention group [[79](https://doi.org/10.1093/jnci/djm159)][[80](https://doi.org/10.1001/jama.295.1.39)]. + +**Cribbing Taubes Alert** + +Taubes makes this same mistake on page 75 of GCBC. + +Page 172: + +> A review in 2008 of all studies of the low-fat diet by the United Nation鈥檚 Food and Agriculture Organization concluded that there is 鈥渘o probable or convincing evidence鈥 that a high level of fat in the diet causes heart disease or cancer. + +This is absolutely true. However, here are some other conclusions by the same text that were intentionally left out because it runs contrary to the saturated-fat-is-sacred-and-unsaturated-fat-is-the-devil narrative [[81](https://www.who.int/news-room/events/detail/2008/11/10/default-calendar/fats-and-fatty-acids-in-human-nutrition)]: + +- There is convincing evidence that replacing SFA with PUFA decreases the risk of CHD. + +- There is convincing evidence that replacing carbohydrates with MUFA increases HDL cholesterol concentrations. + +- There is insufficient evidence for relationships of MUFA consumption with chronic disease end points such as CHD or cancer. + +- There is insufficient evidence for relationships of MUFA consumption and body weight and percent adiposity. + +- There is insufficient evidence of a relationship between MUFA intake and risk of diabetes. + +- There is insufficient evidence for relationships of MUFA consumption with chronic disease end points such as CHD or cancer. + +- There is insufficient evidence for relationships of MUFA consumption and body weight and percent adiposity. + +- There is insufficient evidence of a relationship between MUFA intake and risk of diabetes. + +- There is insufficient evidence for establishing any relationship of PUFA consumption with cancer. + +- There is insufficient evidence for relationships of PUFA consumption and body weight and percent adiposity. + +- There is a possible positive relationship between SFA intake and increased risk of diabetes. + + +And these aren鈥檛 found in some obscure or deep part of the text. They are found in the EXACT same place she found the above quote. + +Page 172: + +> The USDA and AHA have both quietly eliminated any specific percent fat targets from their most recent lists of dietary guidelines. + +If by 鈥渜uietly鈥 Teicholz means 鈥減ublicly published in their popular journal that has received widespread attention and 1773 academic citations since 2006,鈥 then, yes, they 鈥渜uietly鈥 did that. And if by 鈥渆liminated any specific percent fat targets鈥 Teicholz means 鈥渞ecommended consuming no more than 7% of kcals from saturated fat,鈥 then, yes, they 鈥渆liminated any specific percent fat targets鈥 [[82](https://doi.org/10.1161/CIRCULATIONAHA.106.176158)]. + +### CHAPTER 7: SELLING THE MEDITERRANEAN DIET: WHAT IS THE SCIENCE? + +Page 174: + +> The Mediterranean diet is now so famous and celebrated that it barely needs introduction. The regime recommends getting most of the body鈥檚 energy from vegetables, fruits, legumes, and whole grains. Seafood or poultry may be eaten several times a week, along with moderate amounts of yogurt, nuts, eggs, and cheese, while red meat is allowed only rarely, and milk, never. + +Anyway, I don鈥檛 know why she claims that milk is not allowed. Her cited source does not say that. In fact, it says that dairy is allowed on a daily basis in low to moderate amounts [[83](https://doi.org/10.1093/ajcn/61.6.1402S)]. + +Page 180: + +> In a meticulous, landmark paper in 1989, Ferro-Luzzi tried to create a workable definition of the nutritional patterns characterizing European countries bordering the Mediterranean Sea. + +This 鈥渓andmark鈥 paper has only 145 citations according to Google Scholar, and it鈥檚 25 years old. + +Page 182: + +> Ferro-Luzzi also took a magnifying glass to Keys鈥檚 Greek data expressly to see if she could find some flaw with his 40-percent-fat number. She concluded that his data, like all of those available on the Greek diet of that period, were so scanty and unreliable that there were 鈥渇ew scientific grounds鈥 for the claim of a traditional Greek diet ever being high in fat. + +As evidence Teicholz cites a paper published by Ferro-Luzzi in 2002 in the European Journal of Clinical Nutrition [[84](https://doi.org/10.1038/sj.ejcn.1601393)]. The paper makes the argument that the diets on Crete and Corfu are not exactly representative of Greek diets as a whole. She actually appears to conclude that Keys鈥檚 Seven Countries Study is THE ONLY reliable data on Greek diets so far; it鈥檚 _all the other data_\u{00A0}that is scanty and unreliable. Let鈥檚 take some quotes from the paper: + +> In conclusion, the great value of these Key鈥檚 studies is that they provide a coherent basis for the only cohort diet-health study published from anywhere in Greece so far. + +AND + +> Our first finding is that there are few reliable dietary studies from Greece in relation to dietary fat, **other than the detailed Seven Countries Study**. [emphasis mine] + +Ferro-Luzzi鈥檚 attempt here is to associate the Seven Countries Study with her lower fat version of the Greek diet, claiming that Keys鈥檚 data confirms her argument. Do you see how this is basically the opposite of what Teicholz claims? + +On page 188 Teicholz makes the argument that because Willett鈥檚 Mediterranean Diet pyramid was published in a journal supplement, it should not be regarded as serious scientific work. + +> The journal articles that Willett鈥檚 team wrote to establish the pyramid were not subject to the peer-review process that scientific papers normally undergo; they had only one reviewer, not the usual two to three. This was because the papers were published, along with the entire 1993 Cambridge conference proceedings, in a special supplement of the _American Journal of Clinical Nutrition_\u{00A0}funded by the olive oil industry. These kinds of journal supplements sponsored by industry are standard in the field of diet and disease research, although a lay reader is unlikely to be aware of this financial backing, because sponsorship is not noted in the articles themselves. + +If this is the case, then surely Teicholz would never cite a journal supplement in favor of her arguments. Y鈥檏now, since the science is tainted by industry money and all. If she did that would make her a hypocrite, right? + +- On page 111 Teicholz cites a supplement that favors meat in a healthy diet and downplays its effects on carcinogenesis [[85](https://doi.org/10.1038/sj.ejcn.1601347)]. + +- On page 75 and 101 she cites a supplemental paper to try and make the case that polyunsaturated fats are dangerous [[34](https://doi.org/10.1016/S0140-6736(70)90868-8)]. + +- On pages 165 and 367 she cites an _American Journal of Clinical Nutrition_\u{00A0}supplement [[86](https://doi.org/10.1093/ajcn/66.4.965S)]. + +- On page 281 she cites a supplement as part of a claim that unsaturated fats play a role in cancer [[87](https://doi.org/10.1093/ajcn/57.5.779S)]. + +- Page 109 she cites a supplement to argue that Seventh-Day Adventist vegetarians weren鈥檛 so better off than others [[88](https://doi.org/10.1093/ajcn/48.3.833)].\u{00A0}(Note: I am not exactly sure this is a journal supplement, though. Teicholz cites it as one and so does PubMed, but the _AJCN_\u{00A0}does not.) + +- Page 230 she uses a supplement to claim that tropical oils containing saturated fat are not harmful [[89](https://doi.org/10.1080/07315724.2010.10719843)]. + +- Page 160 she cites a supplement as evidence that low-fat diets can lower HDL [[90](https://doi.org/10.1093/ajcn/66.4.974S)]. + +- Page 202 when she discusses a food frequency questionnaire [[91](https://doi.org/10.1093/ije/26.suppl_1.s118)]. + +- Page 144 when she claims vegetarians are not any better off than non-vegetarians [[92](https://doi.org/10.3945/ajcn.2009.26736L)]. + +- When she discusses Ancel Keys and his research on pages 38, 39, 40, 195, and 205 [[14](https://pubmed.ncbi.nlm.nih.gov/5442783/)]. + +- On page 158 where she makes the claim that more fat = healthier children [[74](https://doi.org/10.1093/ajcn/72.5.1253s)][[93](https://doi.org/10.1093/ajcn/72.5.1392s)][[94](https://doi.org/10.1093/ajcn/72.5.1399s)][[95](https://doi.org/10.1093/ajcn/72.5.1379s)][[96](https://doi.org/10.1093/ajcn/72.5.1354s)]. + +- Page 318 when discussing LDL subfractions [[97](https://doi.org/10.1093/ajcn/62.2.478S)]. + +- On page 92 when she discusses two 鈥渟cholarly estimates鈥 claiming that polyunsaturated fat was nearly unheard of before 1910 [[98](https://doi.org/10.1093/ajcn/71.1.179S)]. + +- When talking about trans fats and 7-11 on 261 [[99](https://doi.org/10.1038/ejcn.2009.14)]. + +- When claiming that vegetarian women don鈥檛 fare better than omnivorous women on page 108 [[100](https://doi.org/10.1093/ajcn/59.5.1136S)]. + +- On page 324 when she claims that the evidence against SFAs is thin [[101](https://doi.org/10.1093/ajcn/66.4.980S)]. + +- On pages 221-222 when she claims that meat consumption in Spain has 鈥渟kyrocketed鈥 while heart disease has 鈥減lummeted鈥 [[102](https://doi.org/10.1093/ajcn/61.6.1351S)]. + +- Page 223, when she claimed that sugar consumption in Spain fell dramatically [[103](https://doi.org/10.1093/ajcn/72.5.1316s)]. + +- On page 154 when she discusses a study on babies [[104](https://doi.org/10.1093/ajcn/72.5.1343s)]. + +- When she claims that children have reduced their intakes of fat in recent decades on page 158 [[105](https://doi.org/10.1016/0002-9149(86)90262-6)]. + + +Page 191 Teicholz claims that Keys and Company wooed people to their way of thinking by inviting them to Greece and describing the diet in a very romantic way. + +> [T]hese getaways were an easy sell. The enormous appeal of the Mediterranean had of course been a factor in influencing Keys and his colleagues from the start, and their rapture for the region came even to suffuse their scholarly work. Henry Blackburn, for instance, who worked closely with Keys, wrote a description of the Cretan male who was 鈥渇ree of coronary risk鈥 for the _American Journal of Cardiology_\u{00A0}in 1986, using language that is unusually florid for a scientific journal: He walks to work daily and labors in the soft light of his Greek Isle, midst the droning of crickets and the bray of distant donkeys, in the peace of his land鈥. In his elder years, he sits in the slanting bronze light of the Greek sun, enveloped in a rich lavender aura from the Aegean sea and sky. He is handsome, rugged, kindly and virile. The beauty of the landscape and lifestyle, its people, and its diet became united in one, overwhelming swoon. + +But what Teicholz does not mention is that the above passage was from an journal editorial and it was satirizing an earlier piece that took a sardonic look at the 鈥淟ow Risk Coronary Male鈥 [[106](https://doi.org/10.1016/s0002-9343(01)00994-9)]. + +Page 201: + +> Experts suggested that olive oil might help prevent breast cancer, for instance, but the evidence so far is very weak. + +I would argue that the paper she cites to support that statement doesn鈥檛 really say that [[107](https://doi.org/10.1093/ajcn/88.1.38)]. Although the statement is phrased in such a way that reasonable people may disagree. Here鈥檚 the relevant portion of the paper. I鈥檒l let you decide. + +> Overall, these observations suggest that olive oil or other oils high in monounsaturated fatty acids may decrease the risk of breast cancer, although more work is necessary before such inferences can be made with confidence. A practical implication may be that animal fat sources in the diet should be minimized, whereas monounsaturated fat sources, such as olive oil, need not be restricted, a recommendation that would be consistent with those for dietary prevention of heart disease. + +Teicholz also leaves out what the authors would consider strong evidence regarding red meat and cancer: + +> In the case of colorectal cancer, associations with fat intake appear to be attributable to red meat intake; indeed, red meat intake is also strongly associated with colon cancer risk in international correlations. In the case of prostate cancer, red meat is also relatively consistently associated with risk, although whether some of this is the result of fat intake remains unclear. + +On page 201, Teicholz claims that the bioactive compounds in olive oil have no benefits. + +> In 鈥渆xtra-virgin鈥 olive oil, investigators identified a host of 鈥渘onnutrients,鈥 such as anthocyanins, flavonoids, and polyphenols, that are believed to work their own minor miracles. They are present in olives because the fruit is dark-colored, a defense developed over thousands of years against exposure to the hot sun. Not all of the effects of these nonnutrients have been adequately explored, but in one case, flavonoids, sizable clinical trials on humans have been unable to show benefits to health. + +Apparently by 鈥渉ealth鈥 Teicholz actually means CVD and nothing else, since she cites a meta-analysis that only focuses on CVD [[108](https://doi.org/10.1371/journal.pone.0054318)]. Not cancer, not diabetes, not anything else. In any case I think she misunderstood the meta-analysis because after reading it I get the distinct impression that flavonoids do, in fact, play a beneficial role in CVD. I鈥檓 not sure why I get that impression, but maybe it has something to do with the forest plots that nearly all favor flavonoids and bits of text like this: + +> [T]his review provides evidence that some flavonoids or foods rich in flavonoids, such as chocolate or cocoa, and black tea, may modulate important risk factors. + +AND + +> The changes in risk factors observed after flavonoid intake are clinically significant. + +Also, if you鈥檙e curious, meta-analyses on flavonoids and outcomes like cancer and diabetes conclude that they are indeed beneficial [[109](https://doi.org/10.1016/j.clnu.2013.03.011)][[110](https://doi.org/10.1371/journal.pone.0075604)][[111](https://doi.org/10.1016/j.jacl.2012.04.077)]. + +Page 203: + +> [A] few recent studies on animals suggest that olive oil may even provoke heart disease, by stimulating the production of something called cholesterol esters. + +This is classic. To support her war on olive oil, Teicholz cites a review article that states in no uncertain terms that unsaturated fatty acids are far more beneficial to cardiovascular health than saturated fatty acids [[112](https://doi.org/10.1016/j.maturitas.2010.12.002)].\u{00A0}In fact, here鈥檚 a quote from the text: + +> The best types of fat, in terms of improving the lipid ratio, were canola (rapeseed) oil, soybean oil, and olive oil, whereas the worst types were butter and stick margarine. Not surprisingly, all types of fat were better than pure SFA because even the worst of them do contain some unsaturated fats. + +Hilarious, but getting back to the olive oil and provoking heart disease鈥 There is a section that questions whether olive oil is as good as we think it is. The author discusses a couple studies using nonhuman primates that were fed dietary cholesterol (to induce ASCVD) and three types of oil: palm oil (saturated), safflower oil (monounsaturated), and some oil high in linoleic acid (polyunsaturated). The author then explains that the polyunsaturated oil had the most favorable outcomes in terms of atherosclerosis, while the monounsaturated fat _was as bad as the saturated fat_\u{00A0}in the promotion of ASCVD. So if Teicholz wants to use that as evidence that olive oil provokes heart disease because it is high in MUFAs like safflower oil then she better also say that saturated fat also provokes heart disease. + +However, other than a couple of animal studies, the article is generally favorable toward both MUFAs and PUFAs and quite unfavorable to SFAs. + +Page 203: + +> Only because olive oil has been so wildly hyped does the disappointing news about actual scientific findings come as any surprise. Indeed, 鈥渟urprisingly鈥 is the word that two Spanish researchers used when confronting the data purporting to show olive oil鈥檚 heart-healthy effect, and concluding, in 2011, that there was 鈥渘ot much evidence.鈥 + +This may be another one of those reasonable-people-may-disagree type things, but I don鈥檛 really think the paper concludes that there is 鈥渘ot much evidence.鈥 They do say those words in the abstract, though [[113](https://doi.org/10.1016/s0140-6736(94)92580-1)]. Here is the sentence: 鈥淪urprisingly, there is not much evidence coming from analytical epidemiological studies about this issue.鈥 Which is slightly, but I would argue distinctly, different from how Teicholz phrases that. They say there are not many epidemiological studies on the issue, while Teicholz claims they say there is not much evidence showing a heart-healthy effect. Is there a difference? You decide. + +In any case, the paper actually goes on to describe the evidence that exists, and it seems quite positive for ol鈥 olive oil. In fact, Table 4 and Table 5 show the lowest odds ratios I have ever seen in real life. Most of the studies they review show a significant inverse association between olive oil and some form of heart disease. + +![][image11] +[image11]: /blog/bigfatsurprise/image11.png + +On page 208 she mentions that Antonia Trichopoulou was steeped in bias and not a great scientist (which is鈥 amusing coming from Teicholz). + +![][image12] +[image12]: /blog/bigfatsurprise/image12.png + +> 鈥淎ntonia is perhaps guilty, as we all were, of thinking with her heart,鈥 says her former colleague Elisabet Helsing, who, as the Advisor on Nutrition for WHO Europe, was involved in all the early work on the Mediterranean diet.鈥滿any of us in this field, we were led not by the head but by our hearts. The evidence was never so good.鈥 Or, as Harvard epidemiologist Frank B. Hu wrote in 2003, in a break with his colleagues, the Mediterranean diet 鈥渉as been surrounded by as much myth as scientific evidence.鈥 + +The first quote is personal correspondence, so it can鈥檛 be verified, but the Hu quote can be. It does appear in the paper, but this is another classic example of Teicholz鈥檚 quote-mining. The whole article is what I would consider the opposite of an indictment of the Mediterranean Diet: Hu makes the case that the diet is quite beneficial and versatile. That quote is the only sentence that 鈥 when taken out of context 鈥 could possibly be construed as incriminating. In fact, much of this book is based on personal interviews with people to which I am not privy. I am uncovering an uncomfortable level of quote-mining by Teicholz which really makes me skeptical of the interviews. + +Page 209, Teicholz discusses a randomized clinical trial of the Mediterranean Diet (the Lyon Diet Heart Study).52\u{00A0}The results clearly indicate CHD benefits, so naturally Teicholz has to do some serious spinning to explain-away these results: + +> Yet the study had enough methodological problems to give any reasonable person pause: It was small (鈥渉opelessly underpowered,鈥 meaning not enough subjects, as one researcher commented). + +I find it strange that a trial that contains 605 participants would be characterized as 鈥渉opelessly underpowered.鈥 Let鈥檚 take a look at that quote and see what the researcher鈥檚 explanation of this is鈥 The cited source of that quote is a paper by Ness et al [[114](https://doi.org/10.1038/sj.ejcn.1601342)]. The 鈥渉opelessly underpowered鈥 quote does not appear in the text, nor is there anything similar that might be interpreted as hopelessly underpowered. In fact, there is no mention whatsoever of the Lyon Diet Heart study. + +Teicholz continues the dubious Lyon-bashing on page 210 where she states the following: + +> These problems are described in a paper for the American Heart Association, which found itself in the awkward position of trying to reconcile its own recommended low-fat diet with the success of the relatively high-fat diet used in the Lyon study. The authors concluded that the diet had been 鈥渟o poorly assessed in both groups鈥 [鈥 + +Much like the hopelessly underpowered quote the 鈥渟o poorly assessed in both groups鈥 quote does not appear in the cited source [[115](https://doi.org/10.1161/01.cir.103.13.1823)].\u{00A0}Teicholz鈥檚 next sentence says: + +> It鈥檚 quite possible that the better health outcomes seen in the experimental group were due entirely to what is called the 鈥渋ntervention effect,鈥 they wrote. + +They didn鈥檛 write that, either. I don鈥檛 even think a paraphrasing argument could be made here. + +On page 211 Teicholz discusses the interesting case of Indian researcher Dr. Ram B. Singh who conducted a dietary trial in the early 90s examining common Indian fruits and vegetables and nuts and their effects on heart health [[116](https://doi.org/10.1136/bmj.304.6833.1015)][[117](https://doi.org/10.1016/0002-9149(92)90786-x)].\u{00A0}As it turns out Singh may have fabricated some of his data [[118](https://doi.org/10.1136/bmj.331.7511.281)][[119](https://doi.org/10.1016/S0140-6736(05)67014-6)][[120](https://doi.org/10.1136/bmj.331.7511.267)][[121](https://doi.org/10.1136/bmj.331.7511.245)][[123](https://doi.org/10.1111/j.1753-4887.2006.tb00232.x)]. Scandalous! + +Teicholz could have left it there as an interesting and accurate anecdote of research malfeasance exposed, but she has to take it a step further and lie about something that didn鈥檛 happen. + +> Years later, however, the Singh study was still being included in scientific literature reviews of the Mediterranean Diet, including an influential one by Lluis Serra-Majem in 2006. + +The review in question does not mention or cite that study at all [[124](https://doi.org/10.1016/S0140-6736(02)11472-3)]. Teicholz is on a roll here with the lies. Maybe she thinks that if you have got this far reading the book then you鈥檙e pretty much on board with her arguments and doesn鈥檛 really need to provide actual evidence for her claims. The review does cite another study by Singh (presumably the same guy), but that study was published in 2002 and has not been linked with any kind of impropriety that I know of [[125](https://doi.org/10.1016/j.amjmed.2011.04.024)]. + +Page 215: + +> If the Israeli trial had never existed, everyone could have assumed that the Mediterranean option in PREDIMED was the best possible regime for health. But that third, low-carb arm in Israel had revealed that an even better option was possible. (Previous shorter trials had found the same thing, as we will see in Chapter 10.) + +As evidence for the parenthetical claim she cites a meta-analysis comparing **low-fat diets**\u{00A0}to **Mediterranean diets** [**[**126](https://doi.org/10.1093/ajcn/61.6.1338S)]**!**\u{00A0}There is no discussion or mention of any low-carb diets in that paper. + +Page 218 Teicholz makes the argument that the people of the Mediterranean did not eat lean meats like Keys and others recorded, but fatty meats. As evidence she cites _a work of fiction_: + +> Nor were the ancient Greeks feasting on chicken. The Iliad describes the dinner given by Achilles for Odysseus this way: 鈥淧atrokles put a big bench in the firelight and laid on it the backs of a sheep and a fat goat and the chine of a great wild hog rich in lard.鈥 + +Alright everyone, pack it up. Clearly Homer鈥檚 poetry written about a thousand years before Jesus was born trumps any kind of scientific research. + +Page 221: + +> As Italy and Greece slowly grew more prosperous following the war, they started to leave the near vegetarian diet behind. From 1960 to 1990, Italian men came to eat ten times more meat on average, which was by far the biggest change in the Italian diet, yet the sizable spike in heart disease rates that might have been expected did not occur; in fact, they declined. And the height of the average Italian male during this time increased by almost three inches. + +Is Teicholz implying that meat consumption decreased heart disease rates and increased height? Is that what she is doing here? It sure looks like it. Is this evidence from a randomized controlled dietary trial? Does Teicholz need to be reminded that correlation does not equal causation? + +Her supporting evidence for this is a paper by Ferro-Luzzi (remember her?) [[127](https://doi.org/10.1136/jech.33.2.114)]. The paper states that meat consumption increased about 3X not 10X. Sugar consumption increased about 4X. Both fruit and vegetable consumption doubled, as did eggs and fish. At the risk of spelling this out for everyone, even if we were to assume that something like height was due only to diet (which is a stretch), Teicholz still has all her work ahead of her to find good reasons to eliminate all the other dietary changes as a possible factor. + +Page 221-222: + +> It was the same in Spain: since I960, meat and fat consumption have skyrocketed, while at the same time deaths from heart disease have plummeted. In fact, coronary mortality over the past three decades has halved in Spain, while saturated fat consumption during roughly this period increased by more than 50 percent. + +Her evidence for this claim is a cross-sectional study by Llu铆s Serra-Majem [[102](https://doi.org/10.1093/ajcn/61.6.1351S)]. If you were not aware, cross-sectional studies are the least informative and least robust of all epidemiology, except for perhaps a case series. Funny how Teicholz claims throughout the book that epi studies like this one are basically meaningless if they purport to show some link between meat or saturated fat and some negative health outcome, but are just fine to invoke if they fit her narrative. + +Meanwhile, if you actually read the study the author says something that Teicholz might not want you to hear: + +> This paradoxical situation can be explained by expanded access to clinical care, increased consumption of fruit and fish, improved control of hypertension, and a reduction in cigarette smoking. + +The author goes on to state that bioactive compounds and dietary antioxidants such as beta-carotene likely also played a role in decreasing CHD. Of course Teicholz never informs her readers of this, because she wants you to think that meat brought CHD rates down. + +Teicholz continues: + +> The trends are the same in France and Switzerland, whose populations have long eaten a great deal of saturated fat yet never suffered much from heart disease. The Swiss ate 20 percent more animal fats in 1976 than in 1951 while deaths from heart disease and hypertension fell by 13 percent for men and 40 percent for women. + +True according to one of those cross-sectional, observational studies she cites (which according to her are crappy and meaningless) [[128](https://doi.org/10.1016/0091-7435(83)90163-9)]. But what she doesn鈥檛 say is that other things happened in Switzerland in those years as well according to the analysis: use of anti-hypertensive drugs increased, the economy got much better, there was a migration to urban areas, intake of vegetable fats increased, there was an increased use of oral contraceptives. All of these factors are associated in some way with the decline of heart disease. Do they play a role? It is unclear, and it CANNOT be clear from this study. But that doesn鈥檛 stop Teicholz from letting you think that meat may have caused the downturn. + +Continuing to the very next paragraph: + +> This apparent contradiction holds true even on the island of Crete. When the lead researcher for the Greek portion of the Seven Countries study, Christos Aravanis, went back to Crete in 1980, two decades after his initial research, he found that the farmers were eating 54 percent more saturated fat, yet heart attack rates remained extraordinarily low. + +The Aravanis paper actually says the opposite of that [[129](https://www.proquest.com/openview/c28f798b1072ff71722cc83a3e7c3ea6/1?pq-origsite=gscholar&cbl=18750)]: + +> The 10-year adjusted MCHD [mortality from coronary heart disease] was correlated with total fat in the diet; the correlation with saturated fatty acids was much more significant. + +AND + +> The 10-year incidence rate for CHD was correlated in low order with percentage of calories from total fats, but its correlation with percentage of calories from saturated fatty acids was significantly positive. + +### CHAPTER 8: EXIT SATURATED FATS, ENTER TRANS FATS + +**Cribbing Schleifer Alert** + +It would appear that Teicholz lifts much of the first few pages of chapter 8 from the works of David Schleifer, specifically his 2010 dissertation and a 2012 article which is essentially a condensed version of his dissertation. Schleifer is not attributed in the references section, either. Teicholz doesn鈥檛 blatantly copy-paste verbatim, but instead changes enough words to where she has plausible deniability. If you read through both chapter 8 and Schleifer鈥檚 dissertation, though, you can easily tell that it鈥檚 the same information in the same order. + +For instance, Schleifer writes on page 64 of his dissertation 鈥淧hilip Sokolof founded NHSA in Omaha, Nebraska in 1985 to increase public awareness of cholesterol. Sokolof was motivated by a near-fatal heart attack to spend approximately $15 million of his own money on public education campaigns related to saturated fat and cholesterol" [[130](https://doi.org/10.1353/tech.2012.0018)].\u{00A0}On page 228 of BFS Teicholz writes 鈥淎nother force pushing food companies to ditch saturated fats for hydrogenated oils was a lone multimillionaire in Omaha, Nebraska, Philip Sokolof [鈥 after suffering a near-fatal heart attack in his forties, made it his mission in his retirement to inform Americans about the dangers of saturated fats.鈥 + +- Schleifer: 鈥淗e seems to have operated the organization mostly by himself, spending approximately $15 million of his own money [鈥鈥 [[131](https://doi.org/10.1016/0021-9150(73)90028-2)]. + +- Teicholz, page 230: 鈥淪okolof founded a group called the National Heart Saver Association, funded by his own millions, and ran it mostly by himself.鈥 + +- Schleifer: 鈥淪okolof mailed 鈥榯housands of letters鈥 to food manufacturers urging them to eliminate saturated fats鈥 [[131](https://doi.org/10.1016/0021-9150(73)90028-2)]. + +- Teicholz, page 230: 鈥淸Sokolof] had mailed 鈥榯housands of letters鈥 to food manufacturers urging them to eliminate tropical oils from their products [鈥鈥 + +- Schleifer, page 65: 鈥淚rritated at receiving form letters in response, he mounted his first of three 鈥楶oisoning of America鈥 campaigns in October 1988鈥 [[130](https://doi.org/10.1353/tech.2012.0018)]. + +- Teicholz, page 230: 鈥淸A]n irritated Sokolof decided that a campaign to shame these manufacturers publicly was his best option.鈥 + +- Schleifer, page 65: 鈥淭hese consisted of full-page advertisements in _The New York Times, Washington Times, The New York Post, USA Today, The Wall Street Journal_\u{00A0}and other newspapers [鈥鈥 [[130](https://doi.org/10.1353/tech.2012.0018)]. + +- Teicholz, references page 383: 鈥淚dentical full-page ads were also placed in the _Wall Street Journal, Washington Times, New York Post_, and _USA Today_, among other papers.鈥 + + +Both Teicholz and Schleifer even publish [the same Sokolof figure](https://thescienceofnutrition.files.wordpress.com/2014/06/1988-display-ad-27-no-title.pdf)\u{00A0}and use the same quotes from it. + +But that鈥檚 not all: it appears Teicholz also takes most of her information on CSPI from Schleifer as well. + +- Both discuss the 鈥淪aturated Fat Attack鈥 campaign, even though the source material from the 80s is nearly impossible to find. + +- Both pluck the same quotes from the same texts, even though the original texts might be 200+ page books. + +- Teicholz, page 228: 鈥淗ydrogenated oils were therefore 鈥榥ot a bad bargain鈥 when it came to heart disease, the group concluded.鈥 Schleifer uses the same 鈥渘ot a bad bargain鈥 quote in both of his texts [[130](https://doi.org/10.1353/tech.2012.0018)][[131](https://www.proquest.com/openview/c28f798b1072ff71722cc83a3e7c3ea6/)].\u{00A0}What are the odds? + +- Schleifer: 鈥淏ut it praised Burger King for switching to vegetable shortening in 1986, which it described as 鈥榓 great boon to Americans鈥 arteries鈥欌 [[131](https://www.proquest.com/openview/c28f798b1072ff71722cc83a3e7c3ea6/)]. + +- Teicholz, page 228: 鈥淎nother CSPI campaign successfully convinced movie theaters across America to switch from butter and coconut oil to partially hydrogenated oils in their popcorn poppers. This was 鈥榓 great boon to American arteries鈥 CSPI judged.鈥 Notice how Teicholz makes it seem like CSPI is referring to movie theaters here, when in fact it is actually Burger King. + + +The argument about the fight between the American Soybean Association and the Malaysian palm oil industry is also part of Schleifer鈥檚 dissertation. They both use the same quote from a NYT article. + +- Schleifer, page 71: 鈥溾橝 trade issue is not our concern,鈥 said Stuart Greenblatt, a spokesman for the Keebler Company, which has said it will remove tropical oils from all its products. 鈥楢merican consumers and their health is our concern, and they are telling us they don鈥檛 want it. We get piles of mail every day, from everywhere鈥欌 [[130](https://doi.org/10.1353/tech.2012.0018)]. + +- Teicholz, page 235: 鈥溾橶e are getting piles of mail every day, from everywhere,鈥 a spokesman for the Keebler Company told the _New York Times_. 鈥楢merican consumers and their health is our concern, and they are telling us they don鈥檛 want it [tropical oils].鈥欌 + +- Schleifer, page 77-78: 鈥淸鈥 General Mills鈥 Bugles brand corn chips were the only major American brand that did not reformulate; they were unable to find a technically viable alternative and continued to use coconut oil鈥 [[130](https://doi.org/10.1353/tech.2012.0018)]. + +- Teicholz, page 235: 鈥淣or could Bugles, the cornucopia-shaped snack made by General Mills, be easily reformulated without coconut oil.鈥 + + +It is amusing to me that Teicholz accuses Time magazine of lifting her arguments when she pretty blatantly lifts arguments from others. Again, I think it is worth mentioning that Schleifer is not mentioned in her references section, and he most definitely should be. To be fair, she puts his stuff in the bibliography, but never references it. + +I have no idea why the references/bibliography sections are structured like they are. It just makes everything monumentally confusing when attempting to look something up, plus it takes up an extra 100 or so pages that would not be necessary if they were cited the traditional way. My guess is that she just copied the way Taubes did GCBC, references and all. + +Page 234: + +> In preliminary studies, palm oil seemed to protect against blood clots. + +Nope. The study she cites actually shows that sunflower seed oil protects against blood clots鈥 in rats [[132](https://doi.org/10.1080/07315724.2010.10719839)]. + +### CHAPTER 9: EXIT TRANS FATS, ENTER SOMETHING WORSE? + +Page 275: + +> Research over the past twenty years has allayed the health concerns raised about palm oil during the 鈥渢ropical oil wars鈥; the oil may actually be beneficial for health in some ways [鈥 + +As evidence she cites a supplemental paper written by the Malaysian Palm Oil Council [[133](https://doi.org/10.1093/ajcn/62.1.1)]. + +Page 276: + +> More speculatively, research over the past decades has shown that omega-6s are related to depression and mood disorders. + +The cited paper actually makes the case that low omega-3 intake is related to depression [[134](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1924359/)]. I suppose if you really stretch your brain you can somehow argue that eating omega-6 will necessarily lead to low omega-3s, which might then cause depression, but that鈥檚 way out there. + +### CHAPTER 10: WHY SATURATED FAT IS GOOD FOR YOU + +On page 288 Teicholz discusses Dr. Atkins and says + +> The diet was a tremendous success for him and then for his patients. Atkins tweaked the Wisconsin paper and expanded it into an article for Vogue magazine (his regime was called the Vogue Diet for a while). + +I decided to check her bibliography and download the Vogue issue in question via ProQuest. She cites it as 鈥淭ake It Off, Keep It Off Super Diet . . . Devised with the Guidance of Dr. Robert Atkins,鈥 Vogue 155, no. 10 (1970): 84鈥85.鈥 I looked on pages 84-85 and it wasn鈥檛 there. Strange, right? Where did she come up with that citation? As it turns out (as of this writing, at least) it is cited that way on Dr. Robert Atkins鈥檚 Wikipedia page: It turns out that the actual Vogue article is located in the same issue, but different page numbers. My guess is that Teicholz simply copy-pasted the Wikipedia reference and never even saw the original magazine issue. + +![][image13] +[image13]: /blog/bigfatsurprise/image13.png + +Page 298, Teicholz discusses the memoirs of a physician: + +> With patients on his meat-all-the-time diet, Donaldson found himself 鈥渓ess and less likely to resort to drugs鈥 to combat these diseases. + +Her references indicate that the quote is found on page three of his memoir _Strong Medicine_. It is not. Nor is it clear, if it was the case that Donaldson prescribed fewer drugs, that it was the result of his meat-heavy diets. + +Teicholz then discusses a doctor and researcher Otto Schaefer who visited some 鈥淓skimo鈥 populations. On page 299 she states: + +> To Schaefer, it seemed obvious that the Inuit were 鈥渦nable to cope with starches and sugars鈥 to which they had been introduced. + +As the source of that quote Teicholz cites a paper titled 鈥淕lycosuria and Diabetes Mellitus in Canadian Eskimos鈥 [[135](https://doi.org/10.1172/JCI109945)]. The above quote does not exist in the text. The paper actually makes the case that diabetes was considerably overdiagnosed in Eskimo/Inuit populations, perhaps contrary to the case Teicholz is trying to make in this section, namely that CHOs led to chronic diseases in the Inuit. + +Page 304: + +> [F]or peak performance during long-distance efforts such as marathons, the common wisdom has been that athletes should eat a lot of carbohydrates the night before. His was the first idea that Phinney wanted to test. 鈥淲e were pretty sure we鈥檇 prove that the carb-loading concept was correct鈥 Phinney told me. To his surprise, he found just the opposite: athletes in his experiments could perform at their best on nearly zero carbohydrates. + +These 鈥渁thletes鈥 were actually obese study subjects [[136](https://doi.org/10.1172/JCI103265)]. These subjects were on a low-carb, calorie-restricted diet and there was no control group of moderate or high-carbohydrate dieters with which to compare the results. In my interpretation the best thing you can say about this study is that obese people are capable of exercise on a reduced-calorie, ketogenic diet. + +Page 305: + +> [O]ur bodies have no requirement for carbohydrates and can sustain themselves perfectly well, if not better, on ketones. + +For this claim she cites a paper from 1956 that measured fatty acids in the blood [[137](https://doi.org/10.1093/ajcn/84.6.1549)]. I don鈥檛 know if you can claim that we have no requirements for CHOs and can sustain ourselves as well or better on ketones. The only thing you can really say is that unesterified fatty acids exist in human plasma. + +Page 306: + +> [T]he ability of blood vessels to dilate (known as endothelial function,鈥 which many experts believe to be an indicator of heart attack risk) has also been shown to improve on the low carbohydrate diet, compared to people on one low in fat. Surprised and skeptical, Volek wondered if all these gains could simply be due to weight loss, since his subjects inevitably slimmed down on the Atkins diet. So he did further experiments keeping his subjects weight constant and found that the low-carb diet yielded the same improvements, even so. + +My beef here is with that last statement, the rest is just for context. If you look at the 鈥渇urther experiments鈥 Teicholz mentions you鈥檒l find that the source of this statement is no trial, but rather a letter to the editor of AJCN that criticizes another study that claims that weight loss causes the improved endothelial function and not a load of fat [[138](https://doi.org/10.1093/ajcn/83.5.1025)][[139](https://doi.org/10.2337/diab.25.6.494)]. + +Page 306: + +> Carbohydrate restriction as a cure for diabetes had been reported by physicians as far back as the late nineteenth century, but Westman鈥檚 trials were among the first to give solid scientific backing to the treatment. + +On page 398 of the Notes section Teicholz cites a study that predated Westman鈥檚 that ostensibly gives 鈥渟olid scientific backing鈥 to the idea that diabetes could be cured via CHO restriction. Except that the study was done on obese patients and given only 300-700 kcals of nearly pure protein, plus Tums and iron supplements [[140](https://doi.org/10.2337/diab.25.6.494)]. The patients ended up losing a lot of weight. A couple things: 1) 鈥淐ure鈥 is certainly a strong word; 2) Can Teicholz be sure that it was not the weight loss alone or the Tums or the iron or the protein or the lack of fat that played a role in the improvement? It must be CHO restriction? + +Page 307: + +> [T]he American Diabetes Association (ADA) has stood by its low-fat advice, based on the fact that diabetics have a very high risk of heart disease, and since authorities advise a low-fat diet to fight that disease, that is what the ADA recommends to prevent diabetes, too. + +The publication she cites actually favorably mentions both a low-fat AND a low-carbohydrate diet [[141](https://doi.org/10.2337/dc08-S061)].\u{00A0}In fact, it seems that the ADA might be inclined toward a low-carb diet. Don鈥檛 believe me? From the text: + +- For weight loss, either low-carbohydrate or low-fat calorie-restricted diets may be effective in the short term (up to 1 year). + +- Although low-fat diets have traditionally been promoted for weight loss, two randomized controlled trials found that subjects on low-carbohydrate diets lost more weight at 6 months than subjects on low-fat diets. + +- Another study of overweight women randomized to one of four diets showed significantly more weight loss at 12 months with the Atkins low-carbohydrate diet than with higher-carbohydrate diets. + +- Changes in serum triglyceride and HDL cholesterol were more favorable with the low-carbohydrate diets. + +- In one study, those subjects with type 2 diabetes demonstrated a greater decrease in A1C with a low-carbohydrate diet than with a low-fat diet. + +- It is possible that reduction in other macronutrients (e.g., carbohydrates) would also be effective in prevention of diabetes through promotion of weight loss [鈥 + +- Low-carbohydrate diets might seem to be a logical approach to lowering postprandial glucose. + + +Why not mention this? I don鈥檛 know. I suppose it is in keeping with the narrative throughout the book that nutrition authorities are incompetent, corrupt, and/or extremely rigid in their advice. + +Page 308: + +> One of the more extraordinary experiments involved 146 men suffering from high blood pressure who went on the Atkins diet for almost a year. The group saw their blood pressure drop significantly more than did a group of low-fat dieters鈥攚ho were also taking a blood-pressure medication. + +Barely any of that statement is true: blood pressure went down a bit among the low-carbohydrate group, but not enough to be statistically significant [[142](https://doi.org/10.7326/0003-4819-140-10-200405180-00006)]. Also there was no mention of any group taking a blood pressure lowering medication. I don鈥檛 know where she gets that. Also, the study lasted for 24 weeks, not one year. She must have cited the wrong article, this is just too wrong to even be lying. + +Page 309-310: + +> In 2008, results from a two-year trial were finally published. This was the study in Israel, discussed in the Mediterranean diet chapter, on 322 overweight men and women. The trial was exceptionally well controlled by the standards of nutrition research, with lunch, the principal meal of the day in Israel, provided at a company cafeteria. The study separated subjects into three groups: one eating the AHA鈥檚 prescribed low-fat diet, another on the Mediterranean diet, and a third on the Atkins diet. [鈥 Shai found that for nearly every marker of heart disease that could be measured during the two years of the study, Atkins dieters looked the healthiest鈥攁nd they lost the most weight. For the small subset of diabetics in the study, the results looked about equal for the Atkins and Mediterranean diets. And in every case, the low-fat diet performed the worst. [鈥 Kidney function and bone density, two primary concerns, were found to be perfectly fine, if not improved, on the Atkins diet. + +For these claims Teicholz cites a 2008 study by Shai published in NEJM [[143](https://doi.org/10.1056/NEJMoa0708681)].\u{00A0}However, she leaves out a few facts from the study. + +1. The participants in the low-carbohydrate arm of the study were counseled to consume **vegetarian sources of fat and protein**. + +2. The participants were nearly all male, something Teicholz takes umbrage with in chapter 6. + +3. Although the low-fat diet did seem to 鈥減erform鈥 the worst of the three, the Mediterranean diet and the low-carbohydrate diet fared similarly in most respects, not just in diabetics. So I doubt you can say unequivocally that the Atkins dieters were the healthiest when there鈥檚 another diet that leads to the same measured outcomes. + + +Although not discussed by Teicholz there were some other papers published using data from this particular study (referred to as DIRECT, Dietary Intervention Randomized Controlled Trial). One of which was a four year follow-up to the study that showed that the Atkins-style dieters gained back most of the weight that was lost [[144](https://doi.org/10.1056/NEJMoa0708681)]. The Mediterranean dieters ended up losing nearly double the weight of the Atkins dieters. The low-fat group still had the least amount of weight lost. The Mediterranean dieters also had the most favorable cholesterol and triglycerides. + +In another publication kidney function was found to be similarly improved among all three diets [[145](https://doi.org/10.1056/NEJMc1204792)]. Although the authors mention that since the improvement was so similar between diets, the improvement among participants was likely due to weight loss alone rather than the constituents of the diet. The same was said in a publication examining the effect of the three diets on ASCVD [[146](https://doi.org/10.2337/dc12-1846)]. + +Another publication from the same trial suggests that the Mediterranean diet is the most beneficial of the three for type 2 diabetics [[147](https://doi.org/10.1161/CIRCULATIONAHA.109.879254)]. + +For a more detailed discussion of the Shai study see CarbSane鈥檚 posts: [Part 1](http://carbsanity.blogspot.com/2014/06/nina-teiholz-shaister-part-i-diets-of.html), [Part 2](http://carbsanity.blogspot.com/2014/06/nina-teiholz-shaister-part-ii.html), [Part 3](http://carbsanity.blogspot.com/2014/06/nina-teiholz-shaister-part-iii-well.html), and [Part 4](http://carbsanity.blogspot.com/2014/06/nina-teiholz-shaister-part-iv-random.html). + +Page 314: + +> In 2011, a group of top nutrition experts published the first high-level, formal consensus paper stating that refined carbohydrates were worse than saturated fats in provoking heart disease and obesity (Astrup et al. 2011). + +This is not true. The paper stated that no clear benefit of replacing saturated fatty acids with carbohydrates has been shown, not that refined carbohydrates are worse [[148](https://doi.org/10.1016/S0168-8227(09)70008-7)]. Moreover, the authors state unambiguously that replacing saturated fatty acids with polyunsaturates does decrease risk of heart disease 鈥 something Teicholz unsurprisingly leaves out. + +Page 315: + +> Remember that the Shai study in Israel found that the Mediterranean diet group, eating a high proportion of calories as these 鈥渃omplex鈥 carbohydrates, turned out to be less healthy and fatter than the group on the Atkins diet, although they were healthier than the low-fat alternative. + +Umm鈥 No. + +Page 315: + +> The Women鈥檚 Health Initiative, too, in which some 49,000 women were tested on a diet high in complex carbohydrates for nearly a decade, showed no reduction in disease risk or weight. + +Wrong again. There was decreased risk in ovarian cancer and weight [[79](https://doi.org/10.1093/jnci/djm159)][[80](https://doi.org/10.1001/jama.295.1.39)]. + +Page 317: + +> [I]n more than a few major studies, LDL-cholesterol levels were found to be completely uncorrelated with whether people had heart attacks or not. + +Let鈥檚 take a look at these 鈥渕ajor studies鈥 she cites, shall we? + +The first is by de Lorgeril et al [[113](https://doi.org/10.1016/s0140-6736(94)92580-1)]. I won鈥檛 go into detail, but those in the intervention group had fewer heart attacks and also had lower LDL. From the text: 鈥淸T]he trend with time was a decrease in total and low density lipoprotein (LDL) cholesterol [鈥鈥 Although it was not statistically significant, so we鈥檒l give this one to Teicholz. + +The second is not a study, but a short commentary by Despres [[149](https://doi.org/10.1016/S0140-6736(09)60448-7)].\u{00A0}It argues that we should not focus **exclusively**\u{00A0}on LDL, which is not the same as saying LDL is not correlated with anything. + +The third is a statin trial that showed reducing LDL cholesterol also reduced coronary events [[150](https://doi.org/10.1001/archinternmed.2010.182)].\u{00A0}In other words, the opposite of Teicholz鈥檚 claim. Some choice quotes from the paper: + +> This trial provides evidence that the use of intensive atorvastatin therapy to reduce LDL cholesterol levels below 100 mg per deciliter is associated with substantial clinical benefit in patients with stable CHD. Our findings indicate that the quantitative relationship between reduced LDL cholesterol levels and reduced CHD risk demonstrated in prior secondary-prevention trials of statins holds true even at very low levels of LDL cholesterol. + +The fourth is a meta-analysis on statins and all-cause mortality [[151](https://doi.org/10.1001/archinternmed.2010.182)]. \u{00A0}Basically irrelevant because it鈥檚 only slightly related to the claim of no relationship between LDL and heart attacks. + +The fifth is by Castelli et al and is again pretty much the opposite of what Teicholz said [[152](https://doi.org/10.1161/01.CIR.55.5.767)].\u{00A0}Want some more choice quotes? + +> There is a very regular increase of CHD prevalence rates with increasing LDL cholesterol level at each level of HDL cholesterol. The inverse relationship between HDL cholesterol and CHD, when taken over the three levels of LDL cholesterol, is significant (P < 0.001) by a method of Mantel, as are the positive trends of CHD prevalence on LDL cholesterol level. Cross-classification of triglyceride with LDL cholesterol level (fig. 3) leads to the conclusion that either lipid has a statistically significant association with CHD prevalence [鈥 In general, then, when contingency tables are constructed for the three lipids considered two at a time, HDL and LDL cholesterol emerge as consistently significant factors in CHD prevalence [鈥 + +Does Teicholz even read the studies she cites? + +Page 324: + +> Krauss and his colleagues concluded that 鈥渟aturated fat was not associated with an increased risk鈥 for heart disease or stroke. + +Krauss did not conclude that, according to the cited study [[153](https://doi.org/10.3945/ajcn.2008.26285)].\u{00A0}What was said is that **replacing\u{00A0}saturated fat with carbohydrate**\u{00A0}is not associated with an increased risk of heart disease **in women**. Notice how they are very different statements? + +What about stroke? The paper mentions a couple things: + +> [S]aturated fat intake may be inversely related to ischemic and/or hemorrhagic stroke, but a meta-analysis including results from 6 other studies did not yield a statistically significant risk reduction. Notably, in humans, the risk of stroke has been related to both the saturated and monounsaturated fatty acid content of plasma cholesteryl esters, which further supports the possibility that the dietary intake of these fatty acids may influence CVD risk by altering cholesteryl ester composition. + +Bonus factoid: the paper also states that polyunsaturated fats are inversely associated with developing type 2 diabetes. + +On page 325-326 she discusses a panel event at FNCE in 2010 and produces a quote by Mozaffarian: 鈥渋ts not really useful anymore to focus on saturated fats,鈥 he said. She cites a subsequent publication of the event in the _Journal of the American Dietetic Association_ [[154](https://doi.org/10.1016/j.jada.2011.03.030)]. However, that paper does not contain that quote. Nor does the quote appear in other publications by JADA discussing that event and quoting Mozaffarian [[155](https://doi.org/10.1016/j.jada.2011.03.026)[[156](https://doi.org/10.1016/j.jada.2011.03.031)]. + +Page 326: 鈥淎mericans have dutifiilly followed official dietary advice [鈥鈥 Pretty sure that鈥檚 not true [[157](https://doi.org/10.1097/JOM.0b013e31823ccafa)]. Even by the admission of the USDA [[158](https://centerforinquiry.org/wp-content/uploads/sites/33/quackwatch/dga_advisory_2010.pdf)]. + +### CONCLUSION + +Some have called this review mere quibbling or nit-picking, and that the true thesis of BFS still stands. I would strenuously argue the opposite. If I was nit-picking I would have also brought up one or more instances where Teicholz misquotes someone, but the actual quote is not substantively different. I imagine those are innocent mistakes. Nor do I think that Teicholz鈥檚 main arguments still hold up. + +The arguments in this book are scientific claims that are purportedly supported by scientific evidence. If it turns out, however, that the evidence was never really there in the first place then you can no longer make the claim. The issues I bring up in this review are too substantial and too numerous to be ignored. If you were to remove all of the instances where Teicholz deeply distorts a study or publication, and you were to remove all conclusions that she draws from the distortions you would be left with nothing but a pamphlet. + +After reading The Big Fat Surprise by Nina Teicholz I am frankly disappointed 鈥 yet unsurprised 鈥 that a book like this was even published. We as readers need to start demanding better fact-checking from our publishers, especially the enormously successful ones like Simon & Schuster. Misinformation like this can actually affect people鈥檚 health in a potentially very negative way. I get that publishing companies want to make a profit, but you can publish a compelling pop science book that people buy without misinforming your audience. + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting! + +### BIBLIOGRAPHY""" + , articleReferences = + [ { author = "Biss, K., et al." + , title = "Some Unique Biologic Characteristics of the Masai of East Africa" + , journal = "The New England Journal of Medicine" + , year = "1971" + , link = "https://doi.org/10.1056/NEJM197104012841304" + } + , { author = "Mann, G. V., et al." + , title = "Atherosclerosis in the Masai" + , journal = "American Journal of Epidemiology" + , year = "1972" + , link = "https://doi.org/10.1093/oxfordjournals.aje.a121365" + } + , { author = "Hrdlicka, Ale" + , title = "Physiological and Medical Observations among the Indians of Southwestern United States and Northern Mexico" + , journal = "" + , year = "1908" + , link = "http://repository.si.edu/xmlui/handle/10088/15501" + } + , { author = "Prentice, G." + , title = "CANCER AMONG NEGROES" + , journal = "BMJ" + , year = "1923" + , link = "https://doi.org/10.1136/bmj.2.3285.1181-a" + } + , { author = "Crawford, M. A." + , title = "Fatty-Acid Ratios in Free-Living and Domestic Animals. Possible Implications for Atheroma" + , journal = "Lancet (London, England)" + , year = "1968" + , link = "https://doi.org/10.1016/s0140-6736(68)92034-5" + } + , { author = "Schoenheimer, R., and D. Rittenberg" + , title = "DEUTERIUM AS AN INDICATOR IN THE STUDY OF INTERMEDIARY METABOLISM" + , journal = "Science (New York, N.Y.)" + , year = "1935" + , link = "https://doi.org/10.1126/science.82.2120.156" + } + , { author = "Keys, A." + , title = "Human Atherosclerosis and the Diet" + , journal = "Circulation" + , year = "1952" + , link = "https://doi.org/10.1161/01.CIR.5.1.115" + } + , { author = "Truswell, A. S." + , title = "Evolution of Dietary Recommendations, Goals, and Guidelines" + , journal = "The American Journal of Clinical Nutrition" + , year = "1987" + , link = "https://doi.org/10.1093/ajcn/45.5.1060" + } + , { author = "Hopkins, P. N." + , title = "Effects of Dietary Cholesterol on Serum Cholesterol: A Meta-Analysis and Review" + , journal = "The American Journal of Clinical Nutrition" + , year = "1992" + , link = "https://doi.org/10.1093/ajcn/55.6.1060" + } + , { author = "Mann, G. V." + , title = "The Epidemiology of Coronary Heart Disease" + , journal = "The American Journal of Medicine" + , year = "1957" + , link = "https://doi.org/10.1016/0002-9343(57)90325-x" + } + , { author = "Keys, A." + , title = "The Diet and the Development of Coronary Heart Disease" + , journal = "Journal of Chronic Diseases" + , year = "1956" + , link = "https://doi.org/10.1016/0021-9681(56)90040-6" + } + , { author = "Yerushalmy, J., and H. E. Hilleboe" + , title = "Fat in the Diet and Mortality from Heart Disease; a Methodologic Note" + , journal = "New York State Journal of Medicine" + , year = "1957" + , link = "https://pubmed.ncbi.nlm.nih.gov/13441073/" + } + , { author = "Keys, A." + , title = "Atherosclerosis: A Problem in Newer Public Health" + , journal = "Journal of the Mount Sinai Hospital, New York" + , year = "1953" + , link = "https://pubmed.ncbi.nlm.nih.gov/13085148/" + } + , { author = "" + , title = "Coronary Heart Disease in Seven Countries. I. The Study Program and Objectives" + , journal = "Circulation" + , year = "1970" + , link = "https://pubmed.ncbi.nlm.nih.gov/5442783/" + } + , { author = "Keys, Ancel" + , title = "EPIDEMIOLOGICAL STUDIES RELATED TO CORONARY HEART DISEASE: CHARACTERISTICS OF MEN AGED 40鈥59 IN SEVEN COUNTRIES*" + , journal = "Acta Medica Scandinavica" + , year = "1966" + , link = "https://doi.org/10.1111/j.0954-6820.1966.tb04737.x" + } + , { author = "Feinleib, Manning" + , title = "Seven Countries: A Multivariate Analysis of Death and Coronary Heart Disease" + , journal = "JAMA" + , year = "1981" + , link = "https://doi.org/10.1001/jama.1981.03310300063026" + } + , { author = "Menotti, Alessandro, and Henry Blackburn" + , title = "The Seven Countries Study: A Scientific Adventure in Cardiovascular Disease Epidemiology" + , journal = "" + , year = "1993" + , link = "https://books.google.ca/books/about/The_Seven_Countries_Study.html?id=hgWRAAAACAAJ&redir_esc=y" + } + , { author = "" + , title = "Lessons for Science from the Seven Countries Study" + , journal = "" + , year = "" + , link = "https://link.springer.com/book/10.1007/978-4-431-68269-1" + } + , { author = "Page, I. H., et al." + , title = "Atherosclerosis and the Fat Content of the Diet" + , journal = "Journal of the American Medical Association" + , year = "1957" + , link = "https://doi.org/10.1001/jama.1957.62980180004013" + } + , { author = "" + , title = "Dietary Fat and Its Relation to Heart Attacks and Strokes. Report by the Central Committee for Medical and Community Program of the American Heart Association" + , journal = "JAMA" + , year = "1961" + , link = "https://pubmed.ncbi.nlm.nih.gov/14447694/" + } + , { author = "Time" + , title = "Medicine: Fat in the Fire" + , journal = "Time" + , year = "1960" + , link = "https://content.time.com/time/subscriber/article/0,33009,895155,00.html" + } + , { author = "Time" + , title = "Medicine: The Fat of the Land" + , journal = "Time" + , year = "1961" + , link = "https://content.time.com/time/subscriber/article/0,33009,828721,00.html" + } + , { author = "Stout, C., et al." + , title = "UNUSUALLY LOW INCIDENCE OF DEATH FROM MYOCARDIAL INFARCTION. STUDY OF AN ITALIAN AMERICAN COMMUNITY IN PENNSYLVANIA" + , journal = "JAMA" + , year = "1964" + , link = "https://doi.org/10.1001/jama.1964.03060360005001" + } + , { author = "Keys, Ancel" + , title = "Arteriosclerotic Heart Disease in Roseto, Pennsylvania" + , journal = "JAMA: The Journal of the American Medical Association" + , year = "1966" + , link = "https://doi.org/10.1001/jama.1966.03100020081018" + } + , { author = "Lowenstein, F. W." + , title = "EPIDEMIOLOGICAL INVESTIGATIONS IN RELATION TO DIET IN GROUPS WHO SHOW LITTLE ATHEROSCLEROSIS AND ARE ALMOST FREE OF CORONARY ISCHAEMIC HEART DISEASE" + , journal = "Bibliotheca Nutritio Et Dieta" + , year = "1964" + , link = "https://doi.org/10.1159/000385025" + } + , { author = "Ahrens, E. H., et al." + , title = "Carbohydrate-Induced and Fat-Induced Lipemia" + , journal = "Transactions of the Association of American Physicians" + , year = "1961" + , link = "https://www.semanticscholar.org/paper/Carbohydrate-induced-and-fat-induced-lipemia.-Ahrens-Hirsch/e1e4cfdfe4d98afd5b711226cdc75bdb0c843cb9" + } + , { author = "Anderson, K. M., et al." + , title = "Cholesterol and Mortality. 30 Years of Follow-up from the Framingham Study" + , journal = "JAMA" + , year = "1987" + , link = "https://doi.org/10.1001/jama.257.16.2176" + } + , { author = "Unknown" + , title = "Coronary Heart Disease and Carbohydrate Metabolism" + , journal = "The Journal of the American Medical Association" + , year = "1967" + , link = "" + } + , { author = "Castelli, William P." + , title = "Concerning the Possibility of a Nut..." + , journal = "Archives of Internal Medicine" + , year = "1992" + , link = "https://doi.org/10.1001/archinte.1992.00400190013003" + } + , { author = "Christakis, George, et al." + , title = "Effect of the Anti-Coronary Club Program on Coronary Heart Disease Risk-Factor Status" + , journal = "JAMA" + , year = "1966" + , link = "https://doi.org/10.1001/jama.1966.03110190079022" + } + , { author = "Christakis, George, et al." + , title = "Summary of the Research Activities of the Anti-Coronary Club" + , journal = "Public Health Reports (1896-1970)" + , year = "1966" + , link = "https://doi.org/10.2307/4592649" + } + , { author = "Jolliffe, NORMAN, et al." + , title = "The Anti-Coronary Club; Including a Discussion of the Effects of a Prudent Diet on the Serum Cholesterol Level of Middle-Aged Men" + , journal = "The American Journal of Clinical Nutrition" + , year = "1959" + , link = "https://doi.org/10.1093/ajcn/7.4.451" + } + , { author = "Dayton, S., et al." + , title = "A Controlled Clinical Trial of a Diet High in Unsaturated Fat. Preliminary Observations" + , journal = "The New England Journal of Medicine" + , year = "1962" + , link = "https://doi.org/10.1056/NEJM196205172662001" + } + , { author = "Dayton, Seymour, and MortonLee Pearce" + , title = "DIET AND ATHEROSCLEROSIS" + , journal = "The Lancet" + , year = "1970" + , link = "https://doi.org/10.1016/S0140-6736(70)90868-8" + } + , { author = "Pearce, M. L., and S. Dayton" + , title = "Incidence of Cancer in Men on a Diet High in Polyunsaturated Fat" + , journal = "Lancet (London, England)" + , year = "1971" + , link = "https://doi.org/10.1016/s0140-6736(71)91086-5" + } + , { author = "Blasbalg, Tanya L., et al." + , title = "Changes in Consumption of Omega-3 and Omega-6 Fatty Acids in the United States during the 20th Century" + , journal = "The American Journal of Clinical Nutrition" + , year = "2011" + , link = "https://doi.org/10.3945/ajcn.110.006643" + } + , { author = "Cooper, Richard, et al." + , title = "Trends and Disparities in Coronary Heart Disease, Stroke, and Other Cardiovascular Diseases in the United States: Findings of the National Conference on Cardiovascular Disease Prevention" + , journal = "Circulation" + , year = "2000" + , link = "https://doi.org/10.1161/01.CIR.102.25.3137" + } + , { author = "Nydegger, Urs" + , title = "Serum Lipoprotein Levels in Patients with Cancer" + , journal = "Academia.edu" + , year = "Unknown" + , link = "https://www.academia.edu/98361249/Serum_lipoprotein_levels_in_patients_with_cancer" + } + , { author = "Unknown" + , title = "A Co-Operative Trial in the Primary Prevention of Ischaemic Heart Disease Using Clofibrate. Report from the Committee of Principal Investigators" + , journal = "British Heart Journal" + , year = "1978" + , link = "https://doi.org/10.1136/hrt.40.10.1069" + } + , { author = "Beaglehole, R., et al." + , title = "Cholesterol and Mortality in New Zealand Maoris" + , journal = "British Medical Journal" + , year = "1980" + , link = "https://doi.org/10.1136/bmj.280.6210.285" + } + , { author = "Kark, J. D., et al." + , title = "The Relationship of Serum Cholesterol to the Incidence of Cancer in Evans County, Georgia" + , journal = "Journal of Chronic Diseases" + , year = "1980" + , link = "https://doi.org/10.1016/0021-9681(80)90026-0" + } + , { author = "Garcia-Palmieri, M. R., et al." + , title = "An Apparent Inverse Relationship between Serum Cholesterol and Cancer Mortality in Puerto Rico" + , journal = "American Journal of Epidemiology" + , year = "1981" + , link = "https://doi.org/10.1093/oxfordjournals.aje.a113171" + } + , { author = "Stemmermann, G. N., et al." + , title = "Serum Cholesterol and Mortality among Japanese-American Men. The Honolulu (Hawaii) Heart Program" + , journal = "Archives of Internal Medicine" + , year = "1991" + , link = "" + } + , { author = "Miller, Seth R., et al." + , title = "Serum Cholesterol and Human Colon Cancer" + , journal = "Journal of the National Cancer Institute" + , year = "1981" + , link = "https://doi.org/10.1093/jnci/67.2.297" + } + , { author = "Kozarevic, Dj., et al." + , title = "SERUM CHOLESTEROL AND MORTALITY" + , journal = "American Journal of Epidemiology" + , year = "1981" + , link = "https://doi.org/10.1093/oxfordjournals.aje.a113170" + } + , { author = "Rose, Geoffrey, et al." + , title = "COLON CANCER AND BLOOD-CHOLESTEROL" + , journal = "The Lancet" + , year = "1974" + , link = "https://doi.org/10.1016/S0140-6736(74)92492-1" + } + , { author = "Williams, Roger R., et al." + , title = "Cancer Incidence by Levels of Cholesterol" + , journal = "JAMA" + , year = "1981" + , link = "https://doi.org/10.1001/jama.1981.03310280023021" + } + , { author = "Gammal, E., et al." + , title = "Effects of Dietary Fat on the Uptake and Clearance of 7,12-Dimethylbenz(Alpha)Anthracene by Rat Mammary Tissue" + , journal = "Cancer Research" + , year = "1968" + , link = "https://www.semanticscholar.org/paper/Effects-of-dietary-fat-on-the-uptake-and-clearance-Gammal-Carroll/c8c4012f8544114648842f1af6898b2ed197b0b7" + } + , { author = "Patek, A. J., et al." + , title = "Cirrhosis-Enhancing Effect of Corn Oil. Protection by Choline" + , journal = "Archives of Pathology" + , year = "1966" + , link = "" + } + , { author = "Ueshima, H., et al." + , title = "Is It Desirable to Reduce Total Serum Cholesterol Level as Low as Possible?" + , journal = "Preventive Medicine" + , year = "1979" + , link = "https://doi.org/10.1016/0091-7435(79)90033-1" + } + , { author = "Feinleib, Manning" + , title = "Summary of a Workshop on Cholesterol and Noncardiovascular Disease Mortality" + , journal = "Preventive Medicine" + , year = "1982" + , link = "https://doi.org/10.1016/0091-7435(82)90059-7" + } + , { author = "Feinleib, M." + , title = "On a Possible Inverse Relationship between Serum Cholesterol and Cancer Mortality" + , journal = "American Journal of Epidemiology" + , year = "1981" + , link = "https://doi.org/10.1093/oxfordjournals.aje.a113173" + } + , { author = "Jacobs, Eric J., et al." + , title = "Long-Term Use of Cholesterol-Lowering Drugs and Cancer Incidence in a Large United States Cohort" + , journal = "Cancer Research" + , year = "2011" + , link = "https://doi.org/10.1158/0008-5472.CAN-10-2953" + } + , { author = "Murai, Toshiyuki, et al." + , title = "Low Cholesterol Triggers Membrane Microdomain-Dependent CD44 Shedding and Suppresses Tumor Cell Migration" + , journal = "The Journal of Biological Chemistry" + , year = "2011" + , link = "https://doi.org/10.1074/jbc.M110.184010" + } + , { author = "Hu, J., et al." + , title = "Dietary Cholesterol Intake and Cancer" + , journal = "Annals of Oncology: Official Journal of the European Society for Medical Oncology" + , year = "2012" + , link = "https://doi.org/10.1093/annonc/mdr155" + } + , { author = "Bardou, Marc, et al." + , title = "Effect of Statin Therapy on Colorectal Cancer" + , journal = "Gut" + , year = "2010" + , link = "https://doi.org/10.1136/gut.2009.190900" + } + , { author = "Law, M. R., et al." + , title = "Assessing Possible Hazards of Reducing Serum Cholesterol" + , journal = "BMJ (Clinical Research Ed.)" + , year = "1994" + , link = "https://doi.org/10.1136/bmj.308.6925.373" + } + , { author = "Shekelle, R. B., et al." + , title = "Diet, Serum Cholesterol, and Death from Coronary Heart Disease. The Western Electric Study" + , journal = "The New England Journal of Medicine" + , year = "1981" + , link = "https://doi.org/10.1056/NEJM198101083040201" + } + , { author = "Tillotson, J. L., et al." + , title = "Epidemiology of Coronary Heart Disease and Stroke in Japanese Men Living in Japan, Hawaii, and California: Methodology for Comparison of Diet" + , journal = "The American Journal of Clinical Nutrition" + , year = "1973" + , link = "https://doi.org/10.1093/ajcn/26.2.177" + } + , { author = "Kagan, Abraham" + , title = "Honolulu Heart Program" + , journal = "" + , year = "1996" + , link = "" + } + , { author = "Tanaka, Taichiro, and Tomonori Okamura" + , title = "Blood Cholesterol Level and Risk of Stroke in Community-Based or Worksite Cohort Studies: A Review of Japanese Cohort Studies in the Past 20 Years" + , journal = "The Keio Journal of Medicine" + , year = "2012" + , link = "https://doi.org/10.2302/kjm.61.79" + } + , { author = "Steinberg, Daniel" + , title = "Thematic Review Series: The Pathogenesis of Atherosclerosis. An Interpretive History of the Cholesterol Controversy: Part II: The Early Evidence Linking Hypercholesterolemia to Coronary Disease in Humans" + , journal = "Journal of Lipid Research" + , year = "2005" + , link = "https://doi.org/10.1194/jlr.R400012-JLR200" + } + , { author = "Ahrens, E. H." + , title = "The Evidence Relating Six Dietary Factors to the Nation鈥檚 Health. Introduction" + , journal = "The American Journal of Clinical Nutrition" + , year = "1979" + , link = "https://doi.org/10.1093/ajcn/32.12.2627" + } + , { author = "Broad, William J." + , title = "NIH Deals Gingerly with Diet-Disease Link: Federal Dietary Guidelines for Disease Prevention Have Scant Support from NIH, but Pressure to Take a Stand Is Building" + , journal = "Science" + , year = "1979" + , link = "https://doi.org/10.1126/science.451563" + } + , { author = "Stamler, J., and F. H. Epstein" + , title = "Coronary Heart Disease: Risk Factors as Guides to Preventive Action" + , journal = "Preventive Medicine" + , year = "1972" + , link = "https://doi.org/10.1016/0091-7435(72)90076-x" + } + , { author = "Brody, Jane E." + , title = "Tending to Obesity, Inbred Tribe Aids Diabetes Study; Inbred Tribe Aids Research Into Obesity and Diabetes Samples Are Preserved 6,000 Involved in Study" + , journal = "The New York Times" + , year = "1980" + , link = "https://www.nytimes.com/1980/02/05/archives/tending-to-obesity-inbred-tribe-aids-diabetes-study-inbred-tribe.html" + } + , { author = "Glade, M. J." + , title = "Food, Nutrition, and the Prevention of Cancer: A Global Perspective. American Institute for Cancer Research/World Cancer Research Fund" + , journal = "Nutrition (Burbank, Los Angeles County, Calif.)" + , year = "1999" + , link = "https://doi.org/10.1016/s0899-9007(99)00021-0" + } + , { author = "Campbell, T. Colin, and Thomas M. Campbell II" + , title = "The China Study: Revised and Expanded Edition: The Most Comprehensive Study of Nutrition Ever Conducted and the Startling Implications for Diet, Weight Loss, and Long-Term Health" + , journal = "" + , year = "2016" + , link = "" + } + , { author = "China Study by T. Colin Campbell" + , title = "" + , journal = "" + , year = "" + , link = "https://www.westonaprice.org/book-reviews/the-china-study-by-t-colin-campbell/" + } + , { author = "Lichtenstein, Alice H., and Linda Van Horn" + , title = "Very Low Fat Diets" + , journal = "Circulation" + , year = "1998" + , link = "https://doi.org/10.1161/01.CIR.98.9.935" + } + , { author = "JAMA: The Journal of the American Medical Association" + , title = "1970: Vol 214 Index" + , journal = "American Medical Association" + , year = "1970" + , link = "http://archive.org/details/sim_jama_1970_214_index" + } + , { author = "McCollum, Elmer Verner" + , title = "The Newer Knowledge of Nutrition; the Use of Food for the Preservation of Vitality and Health" + , journal = "New York, The Macmillan company" + , year = "1919" + , link = "http://archive.org/details/newerknowledgeof00mcco_1" + } + , { author = "Kaplan, Robert M., and Michelle T. Toshima" + , title = "Does a Reduced Fat Diet Cause Retardation in Child Growth?" + , journal = "Preventive Medicine" + , year = "1992" + , link = "https://doi.org/10.1016/0091-7435(92)90004-2" + } + , { author = "Prentice, Andrew M., and Alison A. Paul" + , title = "Fat and Energy Needs of Children in Developing Countries123" + , journal = "The American Journal of Clinical Nutrition" + , year = "2000" + , link = "https://doi.org/10.1093/ajcn/72.5.1253s" + } + , { author = "Knopp, R. H., et al." + , title = "One-Year Effects of Increasingly Fat-Restricted, Carbohydrate-Enriched Diets on Lipoprotein Levels in Free-Living Subjects" + , journal = "Proceedings of the Society for Experimental Biology and Medicine. Society for Experimental Biology and Medicine (New York, N.Y.)" + , year = "2000" + , link = "https://doi.org/10.1046/j.1525-1373.2000.22524.x" + } + , { author = "Willett, W. C., et al." + , title = "Dietary Fat and the Risk of Breast Cancer" + , journal = "The New England Journal of Medicine" + , year = "1987" + , link = "https://doi.org/10.1056/NEJM198701013160105" + } + , { author = "Rogers, A. E., and M. P. Longnecker" + , title = "Dietary and Nutritional Influences on Cancer: A Review of Epidemiologic and Experimental Data" + , journal = "Laboratory Investigation; a Journal of Technical Methods and Pathology" + , year = "1988" + , link = "" + } + , { author = "Chlebowski, Rowan T., et al." + , title = "Dietary Fat Reduction and Breast Cancer Outcome: Interim Efficacy Results from the Women鈥檚 Intervention Nutrition Study" + , journal = "Journal of the National Cancer Institute" + , year = "2006" + , link = "https://doi.org/10.1093/jnci/djj494" + } + , { author = "Prentice, Ross L., et al." + , title = "Low-Fat Dietary Pattern and Cancer Incidence in the Women鈥檚 Health Initiative Dietary Modification Randomized Controlled Trial" + , journal = "Journal of the National Cancer Institute" + , year = "2007" + , link = "https://doi.org/10.1093/jnci/djm159" + } + , { author = "Barbara V. Howard, et al." + , title = "Low-Fat Dietary Pattern and Weight Change over 7 Years: The Women鈥檚 Health Initiative Dietary Modification Trial" + , journal = "JAMA" + , year = "2006" + , link = "https://doi.org/10.1001/jama.295.1.39" + } + , { author = "World Health Organization" + , title = "Fats and Fatty Acids in Human Nutrition" + , journal = "" + , year = "" + , link = "https://www.who.int/news-room/events/detail/2008/11/10/default-calendar/fats-and-fatty-acids-in-human-nutrition" + } + , { author = "American Heart Association Nutrition Committee, et al." + , title = "Diet and Lifestyle Recommendations Revision 2006: A Scientific Statement from the American Heart Association Nutrition Committee" + , journal = "Circulation" + , year = "2006" + , link = "https://doi.org/10.1161/CIRCULATIONAHA.106.176158" + } + , { author = "W. C. Willett, et al." + , title = "Mediterranean Diet Pyramid: A Cultural Model for Healthy Eating" + , journal = "The American Journal of Clinical Nutrition" + , year = "1995" + , link = "https://doi.org/10.1093/ajcn/61.6.1402S" + } + , { author = "A. Ferro-Luzzi, et al." + , title = "The High-Fat Greek Diet: A Recipe for All?" + , journal = "European Journal of Clinical Nutrition" + , year = "2002" + , link = "https://doi.org/10.1038/sj.ejcn.1601393" + } + , { author = "H. K. Biesalski" + , title = "Meat and Cancer: Meat as a Component of a Healthy Diet" + , journal = "European Journal of Clinical Nutrition" + , year = "2002" + , link = "https://doi.org/10.1038/sj.ejcn.1601347" + } + , { author = "N. D. Ernst, et al." + , title = "Consistency between US Dietary Fat Intake and Serum Total Cholesterol Concentrations: The National Health and Nutrition Examination Surveys" + , journal = "The American Journal of Clinical Nutrition" + , year = "1997" + , link = "https://doi.org/10.1093/ajcn/66.4.965S" + } + , { author = "H. Esterbauer" + , title = "Cytotoxicity and Genotoxicity of Lipid-Oxidation Products" + , journal = "The American Journal of Clinical Nutrition" + , year = "1993" + , link = "https://doi.org/10.1093/ajcn/57.5.779S" + } + , { author = "G. E. Fraser" + , title = "Determinants of Ischemic Heart Disease in Seventh-Day Adventists: A Review" + , journal = "The American Journal of Clinical Nutrition" + , year = "1988" + , link = "https://doi.org/10.1093/ajcn/48.3.833" + } + , { author = "K. C. Hayes and Expert Panel" + , title = "Fatty Acid Expert Roundtable: Key Statements about Fatty Acids" + , journal = "Journal of the American College of Nutrition" + , year = "2010" + , link = "https://doi.org/10.1080/07315724.2010.10719843" + } + , { author = "M. B. Katan" + , title = "High-Oil Compared with Low-Fat, High-Carbohydrate Diets in the Prevention of Ischemic Heart Disease" + , journal = "The American Journal of Clinical Nutrition" + , year = "1997" + , link = "https://doi.org/10.1093/ajcn/66.4.974S" + } + , { author = "K. Katsouyanni, et al." + , title = "Reproducibility and Relative Validity of an Extensive Semi-Quantitative Food Frequency Questionnaire Using Dietary Records and Biochemical Markers among Greek Schoolteachers" + , journal = "International Journal of Epidemiology" + , year = "1997" + , link = "https://doi.org/10.1093/ije/26.suppl_1.s118" + } + , { author = "Timothy J. Key, et al." + , title = "Mortality in British Vegetarians: Results from the European Prospective Investigation into Cancer and Nutrition (EPIC-Oxford)" + , journal = "The American Journal of Clinical Nutrition" + , year = "2009" + , link = "https://doi.org/10.3945/ajcn.2009.26736L" + } + , { author = "B. Koletzko, et al." + , title = "Dietary Fat Intakes in Infants and Primary School Children in Germany" + , journal = "The American Journal of Clinical Nutrition" + , year = "2000" + , link = "https://doi.org/10.1093/ajcn/72.5.1392s" + } + , { author = "L. A. Moreno, et al." + , title = "Dietary Fat Intake and Body Mass Index in Spanish Children" + , journal = "The American Journal of Clinical Nutrition" + , year = "2000" + , link = "https://doi.org/10.1093/ajcn/72.5.1399s" + } + , { author = "M. Murata" + , title = "Secular Trends in Growth and Changes in Eating Patterns of Japanese Children" + , journal = "The American Journal of Clinical Nutrition" + , year = "2000" + , link = "https://doi.org/10.1093/ajcn/72.5.1379s" + } + , { author = "R. Uauy, et al." + , title = "Fat Intake during Childhood: Metabolic Responses and Effects on Growth" + , journal = "The American Journal of Clinical Nutrition" + , year = "2000" + , link = "https://doi.org/10.1093/ajcn/72.5.1354s" + } + , { author = "R. M. Krauss, and D. M. Dreon" + , title = "Low-Density-Lipoprotein Subclasses and Response to a Low-Fat Diet in Healthy Men" + , journal = "The American Journal of Clinical Nutrition" + , year = "1995" + , link = "https://doi.org/10.1093/ajcn/62.2.478S" + } + , { author = "P. M. Kris-Etherton, et al." + , title = "Polyunsaturated Fatty Acids in the Food Chain in the United States" + , journal = "The American Journal of Clinical Nutrition" + , year = "2000" + , link = "https://doi.org/10.1093/ajcn/71.1.179S" + } + , { author = "M. R. L鈥橝bb茅, et al." + , title = "Approaches to Removing Trans Fats from the Food Supply in Industrialized and Developing Countries" + , journal = "European Journal of Clinical Nutrition" + , year = "2009" + , link = "https://doi.org/10.1038/ejcn.2009.14" + } + , { author = "Mills, P. K., et al." + , title = "Cancer Incidence among California Seventh-Day Adventists, 1976-1982" + , journal = "The American Journal of Clinical Nutrition" + , year = "1994" + , link = "https://doi.org/10.1093/ajcn/59.5.1136S" + } + , { author = "Oliver, M. F." + , title = "It Is More Important to Increase the Intake of Unsaturated Fats than to Decrease the Intake of Saturated Fats: Evidence from Clinical Trials Relating to Ischemic Heart Disease" + , journal = "The American Journal of Clinical Nutrition" + , year = "1997" + , link = "https://doi.org/10.1093/ajcn/66.4.980S" + } + , { author = "Serra-Majem, L., et al." + , title = "How Could Changes in Diet Explain Changes in Coronary Heart Disease Mortality in Spain? The Spanish Paradox" + , journal = "The American Journal of Clinical Nutrition" + , year = "1995" + , link = "https://doi.org/10.1093/ajcn/61.6.1351S" + } + , { author = "Simell, O., et al." + , title = "Special Turku Coronary Risk Factor Intervention Project for Babies (STRIP)" + , journal = "The American Journal of Clinical Nutrition" + , year = "2000" + , link = "https://doi.org/10.1093/ajcn/72.5.1316s" + } + , { author = "Troiano, R. P., et al." + , title = "Energy and Fat Intakes of Children and Adolescents in the United States: Data from the National Health and Nutrition Examination Surveys" + , journal = "The American Journal of Clinical Nutrition" + , year = "2000" + , link = "https://doi.org/10.1093/ajcn/72.5.1343s" + } + , { author = "Blackburn, H." + , title = "The Low Risk Coronary Male" + , journal = "The American Journal of Cardiology" + , year = "1986" + , link = "https://doi.org/10.1016/0002-9149(86)90262-6" + } + , { author = "Kushi, Lawrence, and Edward Giovannucci" + , title = "Dietary Fat and Cancer" + , journal = "The American Journal of Medicine" + , year = "2002" + , link = "https://doi.org/10.1016/s0002-9343(01)00994-9" + } + , { author = "Hooper, Lee, et al." + , title = "Flavonoids, Flavonoid-Rich Foods, and Cardiovascular Risk: A Meta-Analysis of Randomized Controlled Trials" + , journal = "The American Journal of Clinical Nutrition" + , year = "2008" + , link = "https://doi.org/10.1093/ajcn/88.1.38" + } + , { author = "Hui, Chang, et al." + , title = "Flavonoids, Flavonoid Subclasses and Breast Cancer Risk: A Meta-Analysis of Epidemiologic Studies" + , journal = "PloS One" + , year = "2013" + , link = "https://doi.org/10.1371/journal.pone.0054318" + } + , { author = "Liu, Yu-Jian, et al." + , title = "Dietary Flavonoids Intake and Risk of Type 2 Diabetes: A Meta-Analysis of Prospective Cohort Studies" + , journal = "Clinical Nutrition (Edinburgh, Scotland)" + , year = "2014" + , link = "https://doi.org/10.1016/j.clnu.2013.03.011" + } + , { author = "Woo, Hae Dong, and Jeongseon Kim" + , title = "Dietary Flavonoid Intake and Smoking-Related Cancer Risk: A Meta-Analysis" + , journal = "PloS One" + , year = "2013" + , link = "https://doi.org/10.1371/journal.pone.0075604" + } + , { author = "Baum, Seth J., et al." + , title = "Fatty Acids in Cardiovascular Health and Disease: A Comprehensive Update" + , journal = "Journal of Clinical Lipidology" + , year = "2012" + , link = "https://doi.org/10.1016/j.jacl.2012.04.077" + } + , { author = "Ruiz-Canela, Miguel, and Miguel A. Mart铆nez-Gonz谩lez" + , title = "Olive Oil in the Primary Prevention of Cardiovascular Disease" + , journal = "Maturitas" + , year = "2011" + , link = "https://doi.org/10.1016/j.maturitas.2010.12.002" + } + , { author = "de Lorgeril, M., et al." + , title = "Mediterranean Alpha-Linolenic Acid-Rich Diet in Secondary Prevention of Coronary Heart Disease" + , journal = "Lancet (London, England)" + , year = "1994" + , link = "https://doi.org/10.1016/s0140-6736(94)92580-1" + } + , { author = "Ness, A. R., et al." + , title = "The Long-Term Effect of Dietary Advice in Men with Coronary Disease: Follow-up of the Diet and Reinfarction Trial (DART)" + , journal = "European Journal of Clinical Nutrition" + , year = "2002" + , link = "https://doi.org/10.1038/sj.ejcn.1601342" + } + , { author = "Kris-Etherton, P., et al." + , title = "AHA Science Advisory: Lyon Diet Heart Study. Benefits of a Mediterranean-Style, National Cholesterol Education Program/American Heart Association Step I Dietary Pattern on Cardiovascular Disease" + , journal = "Circulation" + , year = "2001" + , link = "https://doi.org/10.1161/01.cir.103.13.1823" + } + , { author = "Singh, R. B., et al." + , title = "Randomised Controlled Trial of Cardioprotective Diet in Patients with Recent Acute Myocardial Infarction: Results of One Year Follow Up" + , journal = "BMJ (Clinical Research Ed.)" + , year = "1992" + , link = "https://doi.org/10.1136/bmj.304.6833.1015" + } + , { author = "Singh, R. B., et al." + , title = "An Indian Experiment with Nutritional Modulation in Acute Myocardial Infarction" + , journal = "The American Journal of Cardiology" + , year = "1992" + , link = "https://doi.org/10.1016/0002-9149(92)90786-x" + } + , { author = "White, Caroline" + , title = "Suspected Research Fraud: Difficulties of Getting at the Truth" + , journal = "BMJ" + , year = "2005" + , link = "https://doi.org/10.1136/bmj.331.7511.281" + } + , { author = "Soman, C. R." + , title = "Indo-Mediterranean Diet and Progression of Coronary Artery Disease" + , journal = "Lancet (London, England)" + , year = "2005" + , link = "https://doi.org/10.1016/S0140-6736(05)67014-6" + } + , { author = "Al-Marzouki, Sanaa, et al." + , title = "Are These Data Real? Statistical Methods for the Detection of Data Fabrication in Clinical Trials." + , journal = "BMJ (Clinical Research Ed.)" + , year = "2005" + , link = "https://doi.org/10.1136/bmj.331.7511.267" + } + , { author = "Smith, Jane, and Fiona Godlee" + , title = "Investigating Allegations of Scientific Misconduct." + , journal = "BMJ (Clinical Research Ed.)" + , year = "2005" + , link = "https://doi.org/10.1136/bmj.331.7511.245" + } + , { author = "Horton, Richard" + , title = "Expression of Concern: Indo-Mediterranean Diet Heart Study." + , journal = "Lancet (London, England)" + , year = "2005" + , link = "https://doi.org/10.1016/S0140-6736(05)67006-7" + } + , { author = "Serra-Majem, Llu铆s, et al." + , title = "Scientific Evidence of Interventions Using the Mediterranean Diet: A Systematic Review." + , journal = "Nutrition Reviews" + , year = "2006" + , link = "https://doi.org/10.1111/j.1753-4887.2006.tb00232.x" + } + , { author = "Singh, Ram B., et al." + , title = "Effect of an Indo-Mediterranean Diet on Progression of Coronary Artery Disease in High Risk Patients (Indo-Mediterranean Diet Heart Study): A Randomised Single-Blind Trial." + , journal = "Lancet (London, England)" + , year = "2002" + , link = "https://doi.org/10.1016/S0140-6736(02)11472-3" + } + , { author = "Nordmann, Alain J., et al." + , title = "Meta-Analysis Comparing Mediterranean to Low-Fat Diets for Modification of Cardiovascular Risk Factors." + , journal = "The American Journal of Medicine" + , year = "2011" + , link = "https://doi.org/10.1016/j.amjmed.2011.04.024" + } + , { author = "Ferro-Luzzi, A., and F. Branca" + , title = "Mediterranean Diet, Italian-Style: Prototype of a Healthy Diet." + , journal = "The American Journal of Clinical Nutrition" + , year = "1995" + , link = "https://doi.org/10.1093/ajcn/61.6.1338S" + } + , { author = "Guberan, E." + , title = "Surprising Decline of Cardiovascular Mortality in Switzerland: 1951-1976." + , journal = "Journal of Epidemiology and Community Health" + , year = "1979" + , link = "https://doi.org/10.1136/jech.33.2.114" + } + , { author = "Aravanis, C." + , title = "The Classic Risk Factors for Coronary Heart Disease: Experience in Europe." + , journal = "Preventive Medicine" + , year = "1983" + , link = "https://doi.org/10.1016/0091-7435(83)90163-9" + } + , { author = "\"Reforming Food: How Trans Fats Entered and Exited the American Food System.\"" + , title = "" + , journal = "" + , year = "" + , link = "https://www.proquest.com/openview/c28f798b1072ff71722cc83a3e7c3ea6/1?pq-origsite=gscholar&cbl=18750" + } + , { author = "Schleifer, David" + , title = "The Perfect Solution. How Trans Fats Became the Healthy Replacement for Saturated Fats." + , journal = "Technology and Culture" + , year = "2012" + , link = "https://doi.org/10.1353/tech.2012.0018" + } + , { author = "Schleifer, David" + , title = "Reforming Food: How Trans Fats Entered and Exited the American Food System" + , journal = "" + , year = "" + , link = "https://www.proquest.com/openview/c28f798b1072ff71722cc83a3e7c3ea6/" + } + , { author = "Hornstra, G., and A. Vendelmans-Starrenburg" + , title = "Induction of Experimental Arterial Occlusive Thrombi in Rats." + , journal = "Atherosclerosis" + , year = "1973" + , link = "https://doi.org/10.1016/0021-9150(73)90028-2" + } + , { author = "Khosla, Pramod, and Kalyana Sundram" + , title = "A Supplement on Palm Oil--Why?" + , journal = "Journal of the American College of Nutrition" + , year = "2010" + , link = "https://doi.org/10.1080/07315724.2010.10719839" + } + , { author = "Hibbeln, J. R., and N. Salem" + , title = "Dietary Polyunsaturated Fatty Acids and Depression: When Cholesterol Does Not Satisfy." + , journal = "The American Journal of Clinical Nutrition" + , year = "1995" + , link = "https://doi.org/10.1093/ajcn/62.1.1" + } + , { author = "Schaefer, O." + , title = "Glycosuria and Diabetes Mellitus in Canadian Eskimos." + , journal = "Canadian Medical Association Journal" + , year = "1968" + , link = "" + } + , { author = "Phinney, S. D., et al." + , title = "Capacity for Moderate Exercise in Obese Subjects after Adaptation to a Hypocaloric, Ketogenic Diet." + , journal = "The Journal of Clinical Investigation" + , year = "1980" + , link = "https://doi.org/10.1172/JCI109945" + } + , { author = "Gordon, R. S., and A. Cherkes" + , title = "Unesterified Fatty Acid in Human Blood Plasma." + , journal = "The Journal of Clinical Investigation" + , year = "1956" + , link = "https://doi.org/10.1172/JCI103265" + } + , { author = "Westman, Eric C., et al." + , title = "Carbohydrate Restriction Is Effective in Improving Atherogenic Dyslipidemia Even in the Absence of Weight Loss." + , journal = "The American Journal of Clinical Nutrition" + , year = "2006" + , link = "https://doi.org/10.1093/ajcn/84.6.1549" + } + , { author = "Krauss, Ronald M., et al." + , title = "Separate Effects of Reduced Carbohydrate Intake and Weight Loss on Atherogenic Dyslipidemia." + , journal = "The American Journal of Clinical Nutrition" + , year = "2006" + , link = "https://doi.org/10.1093/ajcn/83.5.1025" + } + , { author = "Bistrian, B. R., et al." + , title = "Nitrogen Metabolism and Insulin Requirements in Obese Diabetic Adults on a Protein-Sparing Modified Fast" + , journal = "Diabetes" + , year = "1976" + , link = "https://doi.org/10.2337/diab.25.6.494" + } + , { author = "American Diabetes Association, et al." + , title = "Nutrition Recommendations and Interventions for Diabetes: A Position Statement of the American Diabetes Association" + , journal = "Diabetes Care" + , year = "2008" + , link = "https://doi.org/10.2337/dc08-S061" + } + , { author = "Yancy, William S., et al." + , title = "A Low-Carbohydrate, Ketogenic Diet versus a Low-Fat Diet to Treat Obesity and Hyperlipidemia: A Randomized, Controlled Trial" + , journal = "Annals of Internal Medicine" + , year = "2004" + , link = "https://doi.org/10.7326/0003-4819-140-10-200405180-00006" + } + , { author = "Shai, Iris, et al." + , title = "Weight Loss with a Low-Carbohydrate, Mediterranean, or Low-Fat Diet" + , journal = "The New England Journal of Medicine" + , year = "2008" + , link = "https://doi.org/10.1056/NEJMoa0708681" + } + , { author = "Schwarzfuchs, Dan, et al." + , title = "Four-Year Follow-up after Two-Year Dietary Interventions" + , journal = "The New England Journal of Medicine" + , year = "2012" + , link = "https://doi.org/10.1056/NEJMc1204792" + } + , { author = "Tirosh, Amir, et al." + , title = "Renal Function Following Three Distinct Weight Loss Dietary Strategies during 2 Years of a Randomized Controlled Trial" + , journal = "Diabetes Care" + , year = "2013" + , link = "https://doi.org/10.2337/dc12-1846" + } + , { author = "Shai, Iris, et al." + , title = "Dietary Intervention to Reverse Carotid Atherosclerosis" + , journal = "Circulation" + , year = "2010" + , link = "https://doi.org/10.1161/CIRCULATIONAHA.109.879254" + } + , { author = "Ben-Avraham, Sivan, et al." + , title = "Dietary Strategies for Patients with Type 2 Diabetes in the Era of Multi-Approaches; Review and Results from the Dietary Intervention Randomized Controlled Trial (DIRECT)" + , journal = "Diabetes Research and Clinical Practice" + , year = "2009" + , link = "https://doi.org/10.1016/S0168-8227(09)70008-7" + } + , { author = "Astrup, Arne, et al." + , title = "The Role of Reducing Intakes of Saturated Fat in the Prevention of Cardiovascular Disease: Where Does the Evidence Stand in 2010?" + , journal = "The American Journal of Clinical Nutrition" + , year = "2011" + , link = "https://doi.org/10.3945/ajcn.110.004622" + } + , { author = "Despr茅s, Jean-Pierre" + , title = "Bringing JUPITER down to Earth" + , journal = "Lancet (London, England)" + , year = "2009" + , link = "https://doi.org/10.1016/S0140-6736(09)60448-7" + } + , { author = "LaRosa, John C., et al." + , title = "Intensive Lipid Lowering with Atorvastatin in Patients with Stable Coronary Disease" + , journal = "The New England Journal of Medicine" + , year = "2005" + , link = "https://doi.org/10.1056/NEJMoa050461" + } + , { author = "Ray, Kausik K., et al." + , title = "Statins and All-Cause Mortality in High-Risk Primary Prevention: A Meta-Analysis of 11 Randomized Controlled Trials Involving 65,229 Participants" + , journal = "Archives of Internal Medicine" + , year = "2010" + , link = "https://doi.org/10.1001/archinternmed.2010.182" + } + , { author = "Castelli, W. P., et al." + , title = "HDL Cholesterol and Other Lipids in Coronary Heart Disease. The Cooperative Lipoprotein Phenotyping Study" + , journal = "Circulation" + , year = "1977" + , link = "https://doi.org/10.1161/01.CIR.55.5.767" + } + , { author = "Siri-Tarino, Patty W., et al." + , title = "Saturated Fat, Carbohydrate, and Cardiovascular Disease" + , journal = "The American Journal of Clinical Nutrition" + , year = "2010" + , link = "https://doi.org/10.3945/ajcn.2008.26285" + } + , { author = "Mozaffarian, Dariush" + , title = "The Great Fat Debate: Taking the Focus off of Saturated Fat" + , journal = "Journal of the American Dietetic Association" + , year = "2011" + , link = "https://doi.org/10.1016/j.jada.2011.03.030" + } + , { author = "Zelman, Kathleen" + , title = "The Great Fat Debate: A Closer Look at the Controversy-Questioning the Validity of Age-Old Dietary Guidance" + , journal = "Journal of the American Dietetic Association" + , year = "2011" + , link = "https://doi.org/10.1016/j.jada.2011.03.026" + } + , { author = "Willett, Walter C., et al." + , title = "The Great Fat Debate: Q & A" + , journal = "Journal of the American Dietetic Association" + , year = "2011" + , link = "https://doi.org/10.1016/j.jada.2011.03.031" + } + , { author = "Kachan, Diana, et al." + , title = "Nutrient Intake and Adherence to Dietary Recommendations among US Workers" + , journal = "Journal of Occupational and Environmental Medicine" + , year = "2012" + , link = "https://doi.org/10.1097/JOM.0b013e31823ccafa" + } + , { author = "Report of the Dietary Guidelines Advisory Committee on the Dietary Guidelines for Americans" + , title = "Report of the Dietary Guidelines Advisory Committee on the Dietary Guidelines for Americans" + , journal = "U.S. Department of Agriculture, Advisory Committee on the Dietary Guidelines for Americans" + , year = "2010" + , link = "https://centerforinquiry.org/wp-content/uploads/sites/33/quackwatch/dga_advisory_2010.pdf" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/EverettVegans.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/EverettVegans.elm new file mode 100755 index 0000000..8467d99 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/EverettVegans.elm @@ -0,0 +1,1678 @@ +module Config.Pages.Blogs.MainBlog.EverettVegans exposing (articleEverettVegans) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleEverettVegans : BlogArticle +articleEverettVegans = + { articleName = "A Case Study of Joseph Everett's Reading Comprehension" + , articleLink = Path.toString Path.Blog_Everettvegans + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "everettvegans" + , articlePublished = "May 1, 2023" + , articleBody = """ +Firstly, I'd like to thank all of the people who volunteered days of their time in order to make this article possible! + +Some time ago, the YouTube channel, [What I've Learned](https://www.youtube.com/@WhatIveLearned), release the video called "[Vegan diets don't work. Here's why](https://www.youtube.com/watch?v=MpxgZGnEF7E)", wherein the channel's host, [Joseph Everett](https://twitter.com/JEverettLearned), tells a cautionary tale regarding the health-related pitfalls of so-called "vegan" diets. In this article, Joseph will be exposed as the shameless fabulist that he is. Most of the references are taken out of context or cherry-picked, while others actually directly contradict the claims that they were cited to support. + +In order to save on characters, I'm forced to truncate my introduction. So, I'll just take this time to say that you, Joseph, are a complete sophist, and you should be utterly ashamed for misleading the millions of people who consume your content. The effort that it took to write this article is more than you deserve, but its contents are more than deserved by your viewers. Your viewers deserve the truth鈥 not cringey narratives about maverick dentists and cave paintings. With that, let's begin. + +# NUTRIENTS THO + +**Claim #1 (**[**00:00**](https://youtu.be/MpxgZGnEF7E?t=1)**):** + +>_It鈥檚 well understood that each of these vitamins have many functions in the body, but what does this have to do with nice teeth or looking attractive? Well, research later confirmed that along with things like protein and calcium, these vitamins indeed work together to transport minerals to support proper formation of the bones. [[1](https://pubmed.ncbi.nlm.nih.gov/29138634/)][[2](https://pubmed.ncbi.nlm.nih.gov/33801011/)] And of course your facial structure which includes the dental arch depends on proper development of your facial bones._ + +This is incredibly unscientific evidence on this hypothesis. The potential for selection bias with this particular body of evidence is enormously high, and on multiple levels. Of course we do not want to assume bad faith on the part of the researcher himself, but no credible scientific establishment would consider this evidence to be anything above laughable on the hypothesis specified. The specified hypothesis is that vitamin K2 (presumably in conjunction with other fat soluble vitamins) is responsible for teeth being straight rather than crooked. + +It's not clear at all how the evidence presented even interacts with the hypothesis. These traditional peoples were not screened for vitamin K2 status or intake. There were no prospective analysis. No intake measurements. No biomarker measurements. Just storytelling. In fact, four years ago Joseph published a video that present a far more plausible hypothesis for the appearance of strong jaws and straight teeth in traditional populations eating traditional diets. In the video he cites [a researcher named Clark Spencer Larson from Ohio State University](https://youtu.be/zbzT00Cyq-g?t=591), who claims that stronger jaws and straighter teeth seen in ancestral populations are a consequence of the repetitive chewing of tough, fibrous plant material. + +There is also evidence that [straighter teeth tend to be more worn down in traditional populations](https://www.youtube.com/watch?v=ybRD4UPN3D4&t=505s), which supports the chewing hypothesis. [[3](https://www.aegisdentalnetwork.com/cced/2009/06/interdisciplinary-analysis-origins-of-dental-crowding-and-malocclusions-an-anthropological-perspective)] In fact, Joseph references the pictures from Weston A Price's Nutrition and Physical Degeneration as evidence for the chewing hypothesis. [He remarks that the straight teeth in the traditional populations appear more worn down](https://www.patreon.com/file?h=24534404&i=3265485). + +Has Joseph changed his view? It's unclear why, as this is a far more plausible hypothesis, and can actually subsume the vitamin K2 hypothesis. If vitamin K2 intake is a correlate for traditional diets, and traditional diets are more likely to be high in fibrous, tough plant foods, and straighter teeth tend to be more worn then crooked teeth, then the chewing hypothesis would appear to be more parsimonious. + +Also, if insufficiency of K2 and the other fat soluble vitamins are to blame for crowded teeth due to their role in bone formation, why is there no mention of any of these people have any other issues associated with those sorts of nutritional insufficiencies? Like rickets, blindness, poor skin, or even haemophilia? It doesn't make sense. + +**Claim #2 (**[**01:01**](https://youtu.be/MpxgZGnEF7E?t=61)**):** + +>_If eating zero animal foods improves health so much, why would a 2016 study find that 84% of vegans eventually quit their diet? [[4](https://faunalytics.org/a-summary-of-faunalytics-study-of-current-and-former-vegetarians-and-vegans/#:~:text=84%25%20of%20vegetarians%2Fvegans%20abandon,former%20vegetarians%2Fvegans%20was%20health)]_ + +First of all, the claim of 84% of vegans quitting is just blatantly incorrect according to his own citation, which found a 70% dropout rate for vegans. Second of all, this is a ridiculous question. People stop doing health promoting things for all sorts of reasons, and it probably would have been a good idea for him to read the goddamn reference instead of resorting to conspiracy theories. The study includes an inventory of explanations for participant recidivism, and [the craving of animal products only occurred in the minority of recidivists](https://faunalytics.org/wp-content/uploads/2016/02/Faunalytics-Study-of-Current-and-Former-Vegetarians-and-Vegans-%E2%80%93-Secondary-Findings-.pdf). + +![][image1] +[image1]: /blog/everettvegans/image1.png + +Furthermore the study includes a table of motivations for pursuing veganism. Only a measly 1-3% of participants had motivations that were purely ethical in nature. While most motivations were health related. So, it seems like people are generally going on plant-based diets for health related reasons, and abandoning the diets without generally suffering health related costs. This isn't the only reason the question is stupid. Plenty of health promoting behaviours have high recidivism rates, such as exercise. + +The Faunalytics study [from the previous year](https://faunalytics.org/wp-content/uploads/2015/06/Faunalytics_Current-Former-Vegetarians_Full-Report.pdf) actually explicitly stated that health did not present a noticeable difficulty for study participants, with the exception of vitamin B12 monitoring. Very few people actually reported any health issues at all, and it's not clear how many of them were actually supplementing B12. + +The study had 54 current vegans and 129 former vegans. Of those 129 former vegans, 123 gave reasons. Of those 123, 104 reported no health issues. Of the remaining 19, 7 had no health issues, but rather just "felt" like they weren't getting enough nutrients or were concerned for no particular reason. One seemed to quit because they doubted the benefits. Only 11 reported actual health issues. + +Of those 11, 6 were vague like "sick", "lightheaded", "not healthy", and "health issues", and doctors and/or dietitians were rarely, or never, involved to actually confirm that the diet was the issue. In conclusion, if we're being outrageously generous to his position, 6% of those who tried a vegan diet reported any health issues at all. But as we discussed above, it's unclear if this is just a result of poor supplementation practices. + +It's not clear why we should accept the implication that a diet is healthy if and only if it can be generally adhered to. There are many examples of diets with poor adherence rates that I don't think Joseph would sign off on being unhealthy, and there are plenty of examples of diets with high adherence rates that Joseph wouldn't consider healthy at all. + +![][argument1] +[argument1]: /blog/everettvegans/argument1.png + +**Claim #3 (**[**04:59**](https://youtu.be/MpxgZGnEF7E?t=299)**):** + +>_So it鈥檚 interesting to observe that the Dutch are competing with Montenegrins for the tallest people in the world title (animation source: USA data) and they happen to be 2nd and 3rd on the list for the most milk consumed per capita in the world. A study of 105 countries in the journal Economics & Human Biology noted that animal food, particularly dairy, most correlated with increases in height. [[5](https://pubmed.ncbi.nlm.nih.gov/26948573/)]_ + +This is actually the first claim where he actually starts citing peer reviewed research and not just the 1930s equivalent of a blog article with no citations. + +Firstly, this is an ecological fallacy. Essentially, Joseph is looking at two temporally concurrent variables and implying a causal relationship. Specially, the research that Joseph cites does not look at individuals, their animal food/dairy consumption in childhood, nor their attained height in adulthood. These heights aren't compared to height projections or heights of peers consuming different diets. + +Instead, this research is just looking at the average height of each entire country and the average intake of said foods. Such studies are susceptible to something called the [ecological fallacy](https://en.wikipedia.org/wiki/Ecological_fallacy), meaning what applies on a country average level may not apply on an individual level. + +![][image2] +[image2]: /blog/everettvegans/image2.png + +In this graph on average as X increases, so does Y. But if you look at each cluster separately, as X increases Y decreases. A real life example of this is the relationship between smoking and longevity. + +![][image3] +[image3]: /blog/everettvegans/image3.png + +If you plot each country's smoking rate and lifespan you'll see that [the more people smoke the longer they live](https://www.thefunctionalart.com/2018/07/visualizing-amalgamation-paradoxes-and.html). This correlation, of course, breaks at an individual level. + +I very much doubt that Joseph would approve of this ecological study. [[6](https://pubmed.ncbi.nlm.nih.gov/1140864/)] + +![][image4] +[image4]: /blog/everettvegans/image4.png + +The study makes no attempt to adjust for socioeconomic or genetic differences in the countries involved. Richer countries tend to have access to more expensive sources of calories, but also have fewer infections and cleaner water, among many other things conducive to better health. They also tend to eat meat. This doesn't tell us what's happening within each of those populations across the spectrum of meat consumption. + +Also it's likely that the reason animal protein correlates strongly with height in Joseph's reference is that it's the main source of protein calories in most diets around the world. For example, in Europe where they essentially consume no plant protein (most plant foods consumed lack significant protein), highly correlated protein (defined by the authors as milk, eggs, pork, beef and potatoes), as well as animal protein and total meat associate more with height than total calories and total protein. If you look at Asia where people eat more plants protein, you'll see total protein and total calories correlate better. Also, inequality adjusted human development index unsurprisingly was more strongly correlated with height than any food. + +**Claim #4 (**[**05:30**](https://youtu.be/MpxgZGnEF7E?t=330)**):** + +>_I recently interviewed Yovana Mendoza who had essentially made a career based around her vegan lifestyle when she had health issues she tried her best to solve them while staying on the diet, using all kinds of supplements and troubleshooting strategies but she eventually had to prioritize her health and quit the diet after 6 years 鈥 even though she had every motivation to keep being vegan. Reintroducing animal foods fixed her health issues. Yovana鈥檚 case is a peak at how complex it can be to replace animal foods in your diet._ + +Yovana Mendoza was a so-called "raw" vegan. As you can see from the picture he flashed, she was on a meme starvation diet of only raw food averaging an abysmal ~1000 calories a day. + +![][image5] +[image5]: /blog/everettvegans/image5.png + +Raw food diets are associated with many stupid beliefs revolving around self-purification, including extensive fasting periods (49% of study participants), not supplementing B12 (7% took any supplement at all), and enemas (16% of them). [[7](https://pubmed.ncbi.nlm.nih.gov/10436305/)] + +Some believe once you are "purified" you lose your period which is a sign you're clean, for example. As you approach 100% raw food, pretty much half of them complain of amenorrhea, probably due to insufficient calories. + +![][image6] +[image6]: /blog/everettvegans/image6.png + +As you can see, raw diets associate with considerably low BMI scores. + +![][image7] +[image7]: /blog/everettvegans/image7.png + +Rawvana also [made a video](https://youtu.be/hMO4m0rZAB8?t=27) telling us how since she's gotten healthier on her raw vegan diet her "eyes have become greener", so I don't know how much stock we should put in her health advice, Joseph. + +As illustrated by [Anna's analysis](https://youtu.be/iqDK_0iaVCE), this seems to be an extremely common pipeline. People go raw vegan, influenced by social media morons, they don't eat enough calories, because their diets aren't formulated correctly, and then they return to some omnivorous diet and claim that veganism failed them. No. Veganism didn't fail you. You played a stupid game and you won a stupid prize. + +**Claim #6 (**[**06:18**](https://youtu.be/MpxgZGnEF7E?t=378)**):** + +>_Take Vitamin A - you might think the average vegan has way more vitamin A because it comes from vegetables like carrots or sweet potatoes - but that鈥檚 not vitamin A, that鈥檚 beta carotene that has to be converted into vitamin A 鈥nd the conversion rate is very poor - about 12:1. [[8](https://pubmed.ncbi.nlm.nih.gov/20237064/)] Though it鈥檚 more like 21:1 when you account for the hampering effect of fiber in the diet. [[9](https://pubmed.ncbi.nlm.nih.gov/12221270/)] Not only that, the more you eat, the worse the conversion rate becomes. Further, depending on your genes, your conversion rate could be even lower - [this is the case for me](https://www.youtube.com/watch?v=gWiC4ZCS55Y&t=421s) and for potentially as much as 37% of people of European descent (See also, 57% lower. [[101](https://pubmed.ncbi.nlm.nih.gov/35571879/)][[1](https://pubmed.ncbi.nlm.nih.gov/35571879/)[12](https://pubmed.ncbi.nlm.nih.gov/19103647/)] Actual vitamin A only comes from animal foods or synthetic supplements._ + +Firstly, let's cut to the chase. Is there a risk of vitamin A deficiency among those only relying on non-retinol sources of vitamin A? That's the question. We'll get to the mechanistic speculation, and why it's so dumb, but for now let's focus on actual outcomes. To my knowledge there are two studies assessing retinol status in vegans after excluding those who supplement. [[13](https://pubmed.ncbi.nlm.nih.gov/24394311/)][[14](https://pubmed.ncbi.nlm.nih.gov/26502280/)] + +Both studies showed that vegans had statistically significantly lower retinol status than omnivores, but the differences were not clinically significant. We're free to speculate all we want, but at the end of the day there is no reason to believe that the differences in status actually amount to any differences in expected health outcomes between the two groups. + +Now, let's get to the mechanistic fuckery. Joseph claims that there are genetic differences in carotenoid to retinol conversion capacity that could lead to deficiency in some who are relying on carotenoids over retinol. Right off the bat, Joseph's own reference contradicts his claim, as the entire variance in the population sample had fasting plasma retinol within the reference range. + +![][image8] +[image8]: /blog/everettvegans/image8.png + +> _...the lowest plasma concentration was 963.8 nM, indicating that all volunteers had adequate serum vitamin A concentrations._ + +Even the people with the worst impairments maintain adequate retinol status, despite only getting an average of a measly 133mcg/day of retinol. The only thing that changes is that the ratio of beta-carotene to retinol is increased based on the severity of the impairment in conversion rates. That's all. + +But, we can take this a step further and actually see what happens when we try to correct vitamin A deficiency using dietary carotenoids in human subjects. [[15](https://pubmed.ncbi.nlm.nih.gov/15883432/)][[16](https://pubmed.ncbi.nlm.nih.gov/17413103/)][[17](https://pubmed.ncbi.nlm.nih.gov/9808223/)][[18](https://pubmed.ncbi.nlm.nih.gov/10584052/)][[19](https://pubmed.ncbi.nlm.nih.gov/15321812/)][[20](https://pubmed.ncbi.nlm.nih.gov/16210712/)] On the whole, eating foods rich in carotenoids reliably improves and/or normalizes vitamin A status. Even foods that have been genetically engineered to have higher levels of carotenoids reliably improve vitamin A status in humans. [[21](https://pubmed.ncbi.nlm.nih.gov/19369372/)] In fact, a newer study published in 2020 found no differences in retinol status between BCO1 genotypes in a population consuming low amounts of preformed retinol. [[22](https://pubmed.ncbi.nlm.nih.gov/32560166/)] + +Let me explain what's happening here. These genetic variants likely aren't changing the total amount of retinol converted from carotenoids. Likely the only thing that's happening here is that the conversion curve is changing shape without a change to the area under that curve. Meaning that across these genetic variants, people are capable of converting the same amount of retinol from carotenoids, but the rate at which they make that conversion is slightly longer in those with the so-called impairments. In my opinion, this is the most parsimonious way to reconcile the data. + +As a side note, the only cases of vitamin A toxicity (hypervitaminosis A) from whole foods that I could find in the literature involved the consumption of preformed retinol from liver. [[23](https://pubmed.ncbi.nlm.nih.gov/25850632/)][[24](https://pubmed.ncbi.nlm.nih.gov/21902932/)][[25](https://pubmed.ncbi.nlm.nih.gov/10424294/)][[26](https://pubmed.ncbi.nlm.nih.gov/31089689/)][[27](https://pubmed.ncbi.nlm.nih.gov/3655980/)] In one case, a child died from consuming chicken liver pate sandwiches. I could find no case reports of such vitamin A toxicity related to carotenoids. + +**Claim #7 (**[**06:58**](https://youtu.be/MpxgZGnEF7E?t=418)**):** + +>_A 2021 study found vegan Finnish children had insufficient vitamin A and a 2020 German study found vegans to have a lower vitamin A level than omnivores. [[28](https://pubmed.ncbi.nlm.nih.gov/33471422/)][[29](https://pubmed.ncbi.nlm.nih.gov/33161940/)]_ + +In both studies, vegan participants had lower vitamin A status, but again, this seemed to be clinically irrelevant. With the authors of the Finnish study concluding that none of the vegans could be classified as deficient, and the the authors of the German study reporting that Vitamin A status among vegans was still well within the reference range. + +We should be starting to see a pattern here, and this should lead us to question the utility of having higher vitamin A status as a consequence of consuming preformed retinol. Even if we granted that you will boast a higher vitamin A status as an omnivore, it's not clear that possessing a higher status actually has any clinical benefit or advantage. I don't know why it would be desirable. Is Joseph prepared to resign himself to affirming that more is simply better? Shall we coin this the Everett Fallacy? + +**Claim #8 (**[**07:26**](https://youtu.be/MpxgZGnEF7E?t=446)**):** + +>_Vitamin D is pretty much only found in animal foods with some exceptions like some mushrooms and some algae. Some people can get enough vitamin D from the sun, but if you live at latitudes above 37 degrees, your skin barely makes any vitamin D from the sun except for in summer. [[30](https://www.health.harvard.edu/staying-healthy/time-for-more-vitamin-d#:~:text=Except%20during%20the%20summer%20months,risk%20for%20vitamin%20D%20deficiency)]_ + +This is one of those times where I won't say anything I will just let his citation speak for itself. + +>_Lack of sun exposure would be less of a problem if diet provided adequate vitamin D. But there aren't many vitamin D鈥搑ich foods (see chart, below), and you need to eat a lot of them to get 800 to 1,000 IU per day...For these and other reasons, a surprising number of Americans 鈥 more than 50% of women and men ages 65 and older in North America 鈥 are vitamin D鈥揹eficient, according to a consensus workshop held in 2006._ + +His own citation notes that a massive portion of the population is deficient and the treatment for that is sun exposure or supplementation, not goose liver. + +**Claim #9 (**[**07:40**](https://youtu.be/MpxgZGnEF7E?t=460)**)** + +>_A 2016 Finnish study found vegans鈥 levels of vitamin D to be 34% lower than omnivores. [[31](https://pubmed.ncbi.nlm.nih.gov/26840251/)]_ + +They had lower intake and therefore lower levels. According to Joseph's previous reference, they should probably be supplementing more. + +**Claim #10 (**[**07:52**](https://youtu.be/MpxgZGnEF7E?t=472)**):** + +>_Unless you鈥檙e eating fermented foods, you鈥檒l only find vitamin K2 in animal foods. The richest sources of K2 are going to be animal livers (especially goose liver), egg-yolks, hard cheese and full-fat dairy. Unfortunately New York City made it illegal for schools to serve whole milk in 2006. [[32](https://www.politifact.com/factchecks/2021/jun/07/lorraine-lewandrowski/whole-milk-prohibited-being-offered-new-york-schoo/)] The fermented soybean dish natto does in fact have a ton of K2 and sauerkraut has some too. Vitamin K2 helps put calcium into the right places like your bones and keeps it out of your heart which is thought to be one reason higher vitamin K2 strongly correlated with reduced risk of heart disease. [[33](https://pubmed.ncbi.nlm.nih.gov/34785587/)][[34](https://pubmed.ncbi.nlm.nih.gov/28639365/)]_ + +Here's a quick intro for vitamin K2. There are many different vitamin K isomers (or vitamers). We have vitamin K1 from plants and vitamin K2, primarily from fermented foods or animal products. There is only one vitamin K1, but vitamin K2 has many forms, including MK4 and MK7, which have been studied most. The form of K2 you can not obtain from fermented foods is MK4, but it doesn't appear to be bioavailable at nutritional doses. + +First, we'll look at bioavailability of MK4. He mentions animal livers (especially goose liver), egg-yolks, hard cheese and full-fat dairy. I couldn鈥檛 find any study on bioavailability of MK4 from foods rather than supplements. But, we can look at studies with doses one could plausibly obtain from diet alone. In probably the best study on this subject, researchers assessed **420 渭g of MK-4 compared to 420 渭g of MK-7**. [[35](https://pubmed.ncbi.nlm.nih.gov/23140417/)] As you can see from this chart, the only reasonable way to obtain this is with goose liver. [[36](https://pubmed.ncbi.nlm.nih.gov/11356998/)] + +![][image9] +[image9]: /blog/everettvegans/image9.png + +The other things he recommended simply don鈥檛 have enough. To get this amount it would take **8.9 kilograms of hard cheese, 52.5 liters of whole milk, or 52.4 average eggs.** The amount of goose liver it would take to get this dose of MK-4 is roughly **115g of liver,** however this has **over 10,000渭g of retinol, the upper limit is 3000渭g** and hypervitaminosis A is no joke. + +But regardless, let鈥檚 say someone managed to eat this amount of MK-4 regularly. Is it actually absorbed? It wouldn't appear so. + +![][image10] +[image10]: /blog/everettvegans/image10.png + +At no time point after the oral administration of 420渭g of MK4 is it actually detectable in the blood. + +In summary, Joseph suggests food items like hard cheese and whole milk for vitamin K2 when they have abysmal amounts that probably aren't even absorbed. Worth noting that the natto he dismissed contains MK7 which is actually bioavailable, as evidenced by the same reference. Natto also contains it in concentrations over **700 times that of hard cheese**, which is the richest source of MK7 out of the foods he listed. + +**Claim #11 (**[**08:25**](https://youtu.be/MpxgZGnEF7E?t=505)**):** + +>_Speaking of all these nutrients for the skeleton, a 2021 polish study found vegan children to have weaker bones and were 3cm shorter than their meat eating counterparts. [[37](https://pubmed.ncbi.nlm.nih.gov/33740036/)]_ + +What Joseph didn't mention was that 29% of the vegan children did not consume vitamin B12 supplements or fortified foods, and only 32.7% used vitamin D supplements. Those who did actually consume vitamins B12 and D had comparable B12 and D status to omnivores. It's entirely plausible, if not probable, that this high percentage of non-supplementing participants was enough to drag down the average for the entire group. + +I mention this because it's clear that a large chunk of the cohort was not actually supplementing vitamin B12 and vitamin D. Both of which are nutrients that are strongly associated with normal growth. There was also little to no consideration for other dietary variables, and the analysis itself is cross-sectional with extremely small sample-sizes. + +![][image11] +[image11]: /blog/everettvegans/image11.png + +![][image12] +[image12]: /blog/everettvegans/image12.png + +Perhaps also worth noting are the similar lean mass, lower fat mass, and preferable LDL-C and hs-CRP values of the vegans. But he didn't mention that. + +**Claim #12 (**[**08:27**](https://youtu.be/MpxgZGnEF7E?t=507)**):** + +>_A British study and a Dutch study also found vegan children to be shorter. [[38](https://pubmed.ncbi.nlm.nih.gov/3414589/)]_ + +Let's start with the British study. These results are trivially explainable by the lower caloric intakes for vegans in his reference. + +![][image13] +[image13]: /blog/everettvegans/image13.png + +Also, while the vegans tended to fall below the 50th percentile for weight, the vast majority experienced normal growth, and the lower weight (and in some cases height) may be attributable to the lower caloric intake. The authors actually take note of this, but Joseph didn't mention it. + +The authors also suggest that the lower fat intake may be the reason they had a lower caloric intake, and go on to state that dense fat sources can be important for children for that reason (eat your avocados, kids). They concluded that children can grow up to be "normal" and that there's no evidence of impairment to cognitive development. + +Just as a side note, it's also funny to mention that the vegan diets were more nutrient dense than the average omnivorous UK diet. Even more hilariously, they explicitly state that there are healthy and unhealthy versions of vegan diets and that clowns will run with the occasional case reports on unhealthy vegan kids fed **inappropriate** diets. These authors were calling out Joseph in 1988. + +On to the Dutch study. Firstly, the so-called "vegan" diet was actually a type of meme "vegan" diet called the macrobiotic diet. This diet is highly restrictive and often very low in protein. This is not representative of what a well-balanced "vegan" diet would look like. + +Thus far, the studies he cited either haven't supported his claim or provide clear reasons for why there may be differences in growth. With the reasons provided not being intractable characteristics of vegan diets themselves. He also left out the studies where we do see similar growth between vegan and omnivorous kids with adequate diets. + +In the Farm Study was a 1989 study involving children ages four months to ten years residing in a community in Tennessee. [[39](https://pubmed.ncbi.nlm.nih.gov/2771551/)] 75% of mothers were vegan through pregnancy and 73% of children were vegan since birth. These mothers consumed well balanced diets with fortified foods (soy milk and nutritional yeast), which they fortified themselves! + +> The Farm community was generally well informed regarding issues related to vegetarianism, including complementing different protein sources, for example, grains and legumes and nonanimal sources of vitamins and minerals. Until 1983, the population followed a vegan diet, with soybeans being their primary source of protein. Supplements of vitamins A, D, and B12 were added to the soy milk produced on The Farm. Nutritional yeast (containing vitamin B12) and other vitamin and mineral supplements were also used. In the fall of 1983, some members of the community introduced eggs and dairy products into their diets. + +Across vegan children, growth was skirting the 50th percentile on average. This is exactly where these growth trajectories should be. + +![][image14] +[image14]: /blog/everettvegans/image14.png + +Same for weight. + +![][image15] +[image15]: /blog/everettvegans/image15.png + +We also have the VeChi Diet Study. [[40](https://pubmed.ncbi.nlm.nih.gov/31013738/)] Vegan and omnivorous children had similar caloric intakes. Omnivores had the highest protein, fat, and added sugar intake, while vegans had the highest total carb and fibre intake. In fact, the vegans were still able to consume a median of 2.25g of protein per kg bodyweight. While there were a few outliers in each group, growth was generally very similar overall. + +![][image16] +[image16]: /blog/everettvegans/image16.png + +There are explanations for the children who may have been stunted or wasted, and they're nothing that is necessarily inherent to vegan diets themselves. These reasons include: short parents, inadequate caloric intake, exclusively breastfeeding longer than recommended (probably due to hippie vegan parents doing dumb hippie things). + +>_Regarding these eight children classified as stunted, two had very low reported energy intakes (534 kcal/day and 598 kcal/day, respectively), and both were exclusively breastfed >6 months (7 and 9 months, respectively). An overly long period of exclusively breastfeeding can result in an insufficient intake of complementary foods and inadequate low TEI because, after a certain age, human milk alone cannot supply energy and all nutrients in adequate amounts to meet a child鈥檚 requirements [71]. Furthermore, one of the two children as well as three other children classified as stunted had parents with a BH (mother: 161 cm, father: 170 cm) below the German average (167 cm and 180鈥181 cm of 25鈥55-year-old women or men, respectively) that might have influenced the child鈥檚 BH. The other child with low energy intake was also categorized as SGA, which is considered a risk factor for stunting [72]. Another stunted child was categorized as SGA, and its birthweight was only slightly above 2500 g (2545 g). The seventh child was exclusively breastfed for twelve months (the eighth child was breastfed for eight months), and it had parents with BHs (mother: 160 cm, father: 178 cm) below the German average._ + +We also have data on intake of micronutrients and fatty acids in the 1-3 year olds in this cohort. [[41](https://pubmed.ncbi.nlm.nih.gov/34855006/)] All diet groups had low iodine intake, and the vegans had the lowest intakes of saturated fat, cholesterol, and DHA (although omnivores had low intakes too), but higher intakes of ALA and LA. They also mention that vegan and vegetarian children had the more favourable intakes of several micronutrients and fatty acids. + +In addition to evaluating nutrient intake, they also measured status in 6-18 year olds. [[42](https://pubmed.ncbi.nlm.nih.gov/34069944/)] Ultimately, the results are very similar to the those of the VeChi Diet Study that was previously mentioned, with preferable blood lipids in the vegans. + +A further study on mothers consuming various dietary patterns supports that a vegan diet can support "normal and physiological growth" through pregnancy and the first year of life. Also of note, 95.2% (20/21) of the vegan mothers took supplements through pregnancy. [[43](https://www.minervamedica.it/en/journals/minerva-pediatrics/article.php?cod=R15Y9999N00A21041604)] + +So some of Joseph's own references suggest vegan diets can support growth and development, and that is consistent with other research where vegans are consuming a balanced and appropriately supplemented diet. + +**Claim #13 (**[**09:34**](https://youtu.be/MpxgZGnEF7E?t=574)**):** + +>_Most vegans know they need to supplement B12 which is very important for proper brain function. Yet, one study looking at B12 status in vegetarians and vegans found that 7% of vegetarians and 52% of vegans were not getting enough B12. [[44](https://pubmed.ncbi.nlm.nih.gov/20648045/)] However, in another study with a more sensitive testing method - they found a whopping 77% of vegetarians and 92% of vegans had insufficient B12 whereas only 11% of omnivores did. [[45](https://pubmed.ncbi.nlm.nih.gov/12816782/)] Perhaps these B12 supplements don鈥檛 work exactly like animal foods do. Also it can take years to deplete the body鈥檚 B12 store, so people can be lacking B12 for a while without realizing it._ + +Right off the bat, 81% of vegans did not supplement in the first study. In the second, the authors did not assess how many of them were supplementing, but we know 59% supplemented "B vitamins". + +Joseph then concludes (from two studies were the majority did not supplement B12) that B12 supplements "don鈥檛 work exactly like animal foods do". If Joseph wanted to know if B12 supplements work at all he could've simply read his previous reference, Elorinne, et al. (2016). [[31](https://pubmed.ncbi.nlm.nih.gov/26840251/)] Had he done so, he would have noticed that 91% of that cohort took B12 supplements, and as you'd expect they were not B12 deficient. + +If Joseph wanted to know if B12 supplements work differently than animal foods, he could turn his attention to this interventional study that found that fortified cereal was more effective at raising B12 than pork. [[46](https://pubmed.ncbi.nlm.nih.gov/31519167/)] + +![][image17] +[image17]: /blog/everettvegans/image17.png + +Also, various doses of cheapo, vanilla-ass cyanocobalamin rescue vitamin B12 deficiency in clinically deficient vegans. [[47](https://pubmed.ncbi.nlm.nih.gov/29499976/)] This is confirmed by clinically meaningful reductions in both methylmalonic acid and total homocysteine. If Joseph knows of any better biological correlates for B12 absorption and utilization, as well as evidence that they're uniquely affected by animal foods, I'd love to hear from him about it. + +![][image18] +[image18]: /blog/everettvegans/image18.png + +**Claim #14 (**[**11:38**](https://youtu.be/MpxgZGnEF7E?t=698)**):** + +>_...another possibility is the vegan diet has impaired digestion._ + +The term "digestion" here is so unclear and nebulous, that it is uncertain what exactly to look for in the literature in order to test the hypothesis. However, if we assume that the hypothesis is referring to any symptoms related to digestion, we should expect to see increased rates of digestion-related symptoms, as reported as adverse events, in any of the randomized controlled trials that have been done on so-called "vegan" diets. But we can find close to none, which calls into question whether or not this is even an effect, let alone a generalizable effect. + +**Claim #15 (**[**12:25**](https://youtu.be/MpxgZGnEF7E?t=745)**):** + +>_...many [vegans] do quit the diet because of health issues._ + +If "many" is meant to be some sort of generalization, then his claim is straightforwardly contradicted by a study discussed in one of his own references on vegan recidivism rates, the 2015 Faunalytics study. + +> Interestingly, health did not present a noticeable difficulty for study participants, with the exception of vitamin B12 monitoring. 2) Consider increasing awareness about the importance of B12: a far greater percentage of former (76%) than current (42%) vegetarians/vegans never had their B12 levels checked while they were adhering to the diet. + +His only evidence for this claim is a montage of ex-vegan YouTubers who already have a demonstrable history of lying to people's faces. What the fuck are we even doing here, Joseph? These people were telling their audiences that they had newfound health on a vegan diet, and now they are once again telling their audiences that they have newfound health, but on a non-vegan diet. Joseph expects us to believe them. I can only guess that's because he is an idiot and doesn't understand what evidence is. + +**Claim #16 (**[**13:21**](https://youtu.be/MpxgZGnEF7E?t=801)**):** + +>_A 2012 study found in 63 patients with constipation, reducing fiber intake improved symptoms but eating a zero fiber diet completely eliminated all symptoms. [[48](https://pubmed.ncbi.nlm.nih.gov/22969234/)]_ + +This is a category mistake. Constipation isn't indigestion. Digestion precedes stool formation and colonic transit. Also, there is no mention of vitamin B12 deficiency or its related symptoms among the subjects in the reference Joseph provided. It's not clear how this is interacting with the claim. + +I'll briefly entertain the tangent, though. The trial that Joseph references is not easily generalizable, because the subjects had idiopathic constipation. It's also not clear at all what this has to do with "vegan" diets. Additionally the researchers did not actually assess fibre intake. Fibre intake was assumed based on the researchers instructions to the subjects, which naturally is a very poor measurement to fibre intake. + +Meanwhile, we see very consistently that increased consumption of fibre associates with a decrease in bowel transit time and improving symptoms of constipation. [[49](https://pubmed.ncbi.nlm.nih.gov/26950143/)][[50](https://pubmed.ncbi.nlm.nih.gov/35816465/)] + +**Claim #17 (**[**13:46**](https://youtu.be/MpxgZGnEF7E?t=826)**):** + +>_As for B12, you need to have strong enough stomach acid to properly absorb it and dietary fiber is known to weaken the stomach acid. [[51](https://pubmed.ncbi.nlm.nih.gov/2823869/)][[52](https://www.tandfonline.com/doi/abs/10.3109/00365528709095891)][[53](https://pubmed.ncbi.nlm.nih.gov/6095709/)]_ + +For the former claim, there is no reference. But what Joseph is probably referring to here is the requirement for a lower stomach pH in digesting food normally in general. Without a sufficiently acidic stomach acid, it is true that vitamin B12 may not be adequately liberated from a given food matrix. + +However, this doesn't apply to supplements (as supplements do not have a food matrix that requires a particularly low pH stomach acid to digest), and therefore doesn't apply to "vegan" diets. Also, we can easily see from previously cited research that vegans can achieve and maintain normal B12 status on high fibre diets. + +In fact, you can even absorb B12 adequately and rescue frank B12 deficiency syndromes by shoving it directly up your ass. [[54](https://pubmed.ncbi.nlm.nih.gov/5924495/)] Sublingual B12 supplements are effective in rescuing B12 deficiency. [[55](https://pubmed.ncbi.nlm.nih.gov/14749150/)] Both of these methods bypass the stomach completely. + +**Claim #18 (**[**13:56**](https://youtu.be/MpxgZGnEF7E?t=836)**):** + +>_So the context matters - what else are you getting with the nutrients? For example, there are plenty of plant sources of iron, but plant foods like whole grains, legumes and nuts contain phytic acid that impairs iron absorption. [[56](https://pubmed.ncbi.nlm.nih.gov/12936958/)] Spinach is thought to be a great source of iron but you can only absorb 2% of it because of the oxalate in it. [[57](https://pubmed.ncbi.nlm.nih.gov/1745900/)]_ + +Once again, Joseph shows that he either doesn't read the studies he cites or ignores where they contradict him. From the first study: + +>_Iron deficiency anemia appears to be no more prevalent among vegetarian women than among nonvegetarian women...Thus, although several reports indicate that vegetarians in Western societies have lower iron stores and may have lower hemoglobin concentrations, they do not indicate a greater incidence of iron deficiency anemia...Lowering iron stores without increasing the risk of iron deficiency anemia may confer a health advantage when vegetarian diets are chosen from an abundant food supply._ + +Joseph further shows that he is really good at constructing strawmen. What official public health authority in any developed country actually recommends spinach as a significant source of iron? Regardless, it's also a non-sequitur that just because spinach has a particularly poor bioavailability of iron that there exist no vegan sources of iron with good bioavailability. There even exist other green vegetables with good bioavailability, such as broccoli and cabbage. [[58](https://pubmed.ncbi.nlm.nih.gov/31394334/)] + +**Claim #19 (**[**14:00**](https://youtu.be/MpxgZGnEF7E?t=840)**)** + +>_Then, where the heme-iron in animal foods is very easily absorbed, the non heme iron in plants and supplements is quite poorly absorbed. Two different literature reviews suggest that vegans are at greater risk for iron deficiency than omnivores [[59](https://pubmed.ncbi.nlm.nih.gov/28319940/)][[60](https://pubmed.ncbi.nlm.nih.gov/30783404/)]._ + +No citation was provided for this claim and he says it as if it follows logically from what he said beforehand. Which it doesn't. Phytic acid in isolation impairing iron absorption in some plant foods high in phytic acid having low bioavailability of iron also doesn't imply that iron is poorly absorbed from all plant sources. + +Firstly, despite whole wheat flour being higher in phytic acid than white wheat flour, it has better bioavailability of iron. [[61](https://pubmed.ncbi.nlm.nih.gov/10655952/)] Granted this is in animal models, but this is evidence Joseph has been known to accept in the past. + +Secondly, other compounds that are common in plant foods but are absent (or virtually absent) from animal foods may have pleiotropic effects that mitigate or even overcome the effect of phytates on iron absorption, with vitamin C probably being the most prominent example. In regards of counteracting phytic acid, 50mg (less than an orange worth) does more than 50g of meat. [[62](https://pubmed.ncbi.nlm.nih.gov/2911999/)] + +![][image19] +[image19]: /blog/everettvegans/image19.png + +It also doesn't follow that one needs to consume animal products to meet iron needs, which Joseph heavily implies. Increased intake through diet and/or supplementation are clearly possible. + +First of all, both the literature reviews Joseph cites are looking at vegetarians, not vegans. I thought his video was on so-called "vegan" diets, not vegetarianism. Even the authors of his own references disagree with his interpretation. Here's a quote from Pawlak, et al. (2017): + +>_Findings regarding individuals who adhere to specific vegetarian diet type, such as vegans, were underrepresented and thus, conclusions regarding iron status among such individuals were not possible._ + +And from another of Joseph's references, Pawlak, et al. (2018): + +>_Considering the limitations, it is reasonable to conclude that the findings are most likely not representative of the entire vegetarian populations nor are they representative of any one specific vegetarian subgroup. 3 of the studies were published in the 1990s and one in 1982. It is reasonable to assume that iron fortification practices have changed since the time of food availability has improved due to globalization. Consequently, this makes the generalization of the findings difficult._ + +So, what is the point in wrongly applying or generalizing these findings with already questionable external validity from vegetarians onto vegans? That being said, just because the studies Joseph cites don't appropriately support his claim does not imply that his claim is wrong. For that, we need to go deeper. + +There are three studies that were published before the two reviews that Joseph cited that differentiate between vegans and vegetarians, while also comparing them to omnivores with measurements of plasma ferritin. There are four that were published afterward. It would be valuable to go through them one by one. + +In Sch眉pbach, et al. (2017), omnivores had higher plasma ferritin, but there was a lower percentage of vegans than omnivores in the range of deficiency, while vegans had almost double the iron intake of omnivores. [[14](https://pubmed.ncbi.nlm.nih.gov/26502280/)] + +The more curious finding with respect to iron was that for omnivores and vegetarians, the correlation between iron intake and plasma ferritin was fairly strong and statistically significant (r = 0.247, p = 0.030; r = 0.331, p = 0.030, respectively), but not so for vegans (r = 0.168, p = 0.281). + +The more concerning finding outside of iron was that despite a similar zinc intake across groups almost half of vegans were below the normal range compared to just 10% of omnivores. However, almost 60% of omnivores had folate levels below the normal range as well. + +Vegans in Elorinne, et al. (2016) had much lower plasma ferritin than non-vegetarians despite higher intake. [[31](https://pubmed.ncbi.nlm.nih.gov/26840251/)] It's unclear whether there was a single subject with low ferritin and this result was not discussed anywhere in the text. However, there were funny sections about selenium in fertilizers and how a low LA intake might help vegans convert LNA to DHA. + +Less than half the vegan children in Desmond, et al. (2021) used B12 supplements, almost a third got neither B12 supplements nor B12 fortified foods. [[37](https://pubmed.ncbi.nlm.nih.gov/33740036/)] Under their second adjustment model, the vegan children had 25% lower ferritin levels. 30% of the vegan children had ferritin levels below the cut-off, compared to 13% of the omnivore children. 2% and 6% of vegan children had moderate and mild iron deficiency anemia, respectively, compared to none of the omnivore children. The authors were (rightfully) much more concerned about the differences in bone mineral content and B12 deficiency. They also get props for looking at cardiovascular risk factors in children. + +Another study, by Slywitch, et al. (2021), gets props for a 10 year long recruitment period and for differentiating between menstruating and non-menstruating women. [[63](https://pubmed.ncbi.nlm.nih.gov/34578841/)] However, for unknown reasons, these authors only differentiated between vegans and vegetarians for the analysis on BMI but not for ferritin. To be fair, they were more interested in how inflammation may mask iron deficiency, but still. It would have been nice to have that data. + +Weikert, et al. (2020) represents one of the better studies on the subject, because the groups were similar in their characteristics and all but one vegan were actually using supplements. [[29](https://pubmed.ncbi.nlm.nih.gov/33161940/)] Plasma iron and ferritin levels were on average lower in vegans than omnivores, but not statistically significantly so, with the vegans having a 50% higher iron intake. 11% of vegans showed signs of iron deficiency compared to 8% of omnivores. Vegans who substituted iron had higher average ferritin than omnivores who did not substitute iron. + +Another study by Alexy, et al. (2021) found statistically significantly lower plasma ferritin than omnivores despite 50% higher iron intake, but prevalence below the cut-off was called "low" by the authors and thrown into the supplemental. [[42](https://pubmed.ncbi.nlm.nih.gov/34069944/)] Weirdly, the authors were concerned about the high prevalence of B2 deficiency in all groups, using a cut-off of 199 碌g/l. + +In Wilsen, et al. (1999), despite the 50% higher iron intake, the vegans had almost 50% lower serum ferritin than omnivores, with 20% falling below 12 ng/ml. [[64](https://pubmed.ncbi.nlm.nih.gov/10201799/)] The difference in hemoglobin between vegans and omnivores was also statistically significant. On the other hand, 20% of omnivores had ferritin levels elevated above 200 ng/ml, which is indicative of inflammation. + +In conclusion, even though Josephs citations don't support his claim, there is some truth to the matter. The literature is in unanimous agreement that iron in vegan diets has much lower bioavailability, but this is not due to phytates alone. Dietary fiber and polyphenols are important as well. Of course this is not enough to infer an outcome such as iron deficiency, let alone iron deficiency anemia, since vegans also have a much higher iron intake than omnivores. Furthermore, in many of the studies lower iron status is observed without a particularly increased risk of deficiency. + +Vegans, especially those who menstruate, might want to err on the side of caution by regularly getting their ferritin checked whenever they get their B12 checked, and then supplementing accordingly. Pretty much the same is true for vegetarians, or even omnivores for that matter. But what these studies show overall is that no matter their diet, people kind of suck at hitting reference ranges of biomarkers for all nutrients. + +# ANCESTRAL DIETS THO + +**Claim #20 (**[**14:30**](https://youtu.be/MpxgZGnEF7E?t=870)**):** + +>_Now before we continue, why should we assume a meat containing diet was the natural default for humans rather than a plant-based diet? Well, to get a wide variety of nutrients, vegans have to eat a huge variety of modern fruits and vegetables, but the fruits and vegetables early humans had access to were nothing like modern ones. Before cultivation, they had far less actually edible material and far more fiber and seeds. Paleoanthropologist Daniel Lieberman has said that the sweetest fruit available would have been no sweeter than a modern day carrot._ + +Previously having less edible material is trivially true of animal foods produced from modern animal agriculture. + +![][image20] +[image20]: /blog/everettvegans/image20.png + +**Claim #21 (**[**14:58**](https://youtu.be/MpxgZGnEF7E?t=898)**):** + +>_We have stable isotope studies finding we ate pretty much whatever meat we could get our hands on鈥 our earliest art is cave paintings of hunts. Lastly, the brain is a disproportionately energy expensive organ, hogging 20% of our oxygen and calories. [[65](https://pubmed.ncbi.nlm.nih.gov/30872714/)][[66](https://pubmed.ncbi.nlm.nih.gov/12149485/)] Our guts (also energy expensive) shrank in size to allocate more resources to the brain. [[67](https://pubmed.ncbi.nlm.nih.gov/22174868/)] Thus, to fuel our big brains, the more energy efficient animal fat became favored over fibrous plants that took time and energy to chew and digest._ + +What point is Joseph trying to make here? We could try to formalize it, perhaps. + +![][argument2] +[argument2]: /blog/everettvegans/argument2.png + +**Claim #22 (**[**15:34**](https://youtu.be/MpxgZGnEF7E?t=934)**):** + +>_Most people are not aware that animal foods are packed with far more of a huge variety of nutrients, especially ones critical for brain function. This may have a role in why a 2021 study found people who don鈥檛 eat meat to have significantly higher risk of depression and anxiety. [[68](https://www.tandfonline.com/doi/full/10.1080/10408398.2020.1741505)]_ + +Again, in his typical style, the review Joseph linked contained only one randomized controlled trial and guess what that one trial showed. I'll quote the authors directly. + +>_Restricting meat, fish, and poultry improved some domains of short-term mood state in modern omnivores. To our knowledge, this is the first trial to examine the impact of restricting meat, fish, and poultry on mood state in omnivores._ + +Also, the authors overlooked a couple more trials, and didn't even mention them. I personally don't really see a reason for their exclusion. [[69](https://pubmed.ncbi.nlm.nih.gov/24524383/)][[70](https://pubmed.ncbi.nlm.nih.gov/20389060/)] They also rated the one RCT that they did include as "low quality" without providing a decent justification. In both trials, a benefit of so-called "vegan" diets was observed. + +Not only that, but in a 2022 systematic review including more studies, they note that higher quality studies and studies that can distinguish temporal relationships (such as RCTs and cohort studies) the effects of plant-based diets on mental health are either positive or non-significant. This review contained two RCTs, one on vegetarians (which can be interpretated as a meat-restriction intervention, so it is still relevant) which showed improved confusion and stress and one on vegans which showed improvements in depression indicators. + +Lastly, one of the two "high quality" studies in the review that Joseph cited evaluated the temporal relationship and suggests that the so-called vegan diet came **after** the development of mental health issues. [[71](https://pubmed.ncbi.nlm.nih.gov/22676203/)] When vegan, vegetarian, and semi-vegetarian diets are separated, meta-analyses suggest that semi-vegetarian diets are associated with higher prevalence of depression, while there is no statistically significant relationship between "vegan" or vegetarian diets and depression. [[72](https://pubmed.ncbi.nlm.nih.gov/33822140/)] + +Here is the prevalence of depression forest plot from that meta-analysis. + +![][image21] +[image21]: /blog/everettvegans/image21.png + +And mean depression scores. + +![][image22] +[image22]: /blog/everettvegans/image22.png + +Also, just for flavour, I'll point out that Joseph's reference was funded by the beef industry. + +>_This study was funded in part via an unrestricted research grant from the Beef Checkoff, through the National Cattlemen鈥檚 Beef Association. The sponsor of the study had no role in the study design, data collection, data analysis, data interpretation, or writing of the report._ + +**Claim #23 (**[**17:17**](https://youtu.be/MpxgZGnEF7E?t=1037)**):** + +>_The peoples Weston price studied had an intuitive understanding of the importance of nutrient dense foods - especially in pregnancy and childhood. Even without a nutrition label, they knew that certain animal foods encouraged proper robust growth._ + +There is an implicit claim here that animal foods have some kind of special importance for pregnancy and childhood. Ultimately, this is just an anecdote, barely distinguishable from an appeal to authority. So, let's throw one back from the American Dietetic Association: + +>_...appropriately planned vegetarian, including vegan, diets are appropriate for all stages of the life cycle, including pregnancy, lactation, infancy, and childhood._ + +To be clear, I think hinging the truth value of any claims about the health value of either co-called "vegan" diets or omnivorous diets on either of these opinions is incredibly cringe. It's just not clear to me why we can't just counter anecdotes with anecdotes. + +**Claim #24 (**[**18:12**](https://youtu.be/MpxgZGnEF7E?t=1092)**):** + +>_As Michael Pollan has argued in his book In Defense of Food - we frequently fall victim to this concept of 'nutritionism' that we don鈥檛 necessarily need whole foods, we just need their components._ + +Joseph, what does it mean to fall victim to a concept that is arguably true? Also, what do you mean by need? Is there some sort of necessity relation between whole foods and human health that you'd like to tell me about? + +# MOAR NUTRIENTS THO + +**Claim #25 (**[**18:34**](https://youtu.be/MpxgZGnEF7E?t=1114)**):** + +>_According to a 2012 study, despite taking prenatal supplements, 58% of pregnant woman had iron levels below normal. [[73](https://pubmed.ncbi.nlm.nih.gov/22113871/)]_ + +Joseph makes this claim to vaguely support the notion that we should not rely on supplements. However, the study cited to support this claim is a study of 19 pregnant women who were given labelled iron supplements in order to better characterise placental iron transport. It is not a large scale study of prevalence of iron deficiency in pregnant women who take prenatal supplements and therefore does not support the claim. + +On the contrary, a meta-analysis involving 43274 women shows that preventative daily oral iron supplementation reduces iron deficiency and iron deficiency anemia at term by 57% and 70%, respectively. [[74](https://pubmed.ncbi.nlm.nih.gov/26198451/)] + +**Claim #26 (**[**18:40**](https://youtu.be/MpxgZGnEF7E?t=1120)**):** + +>_90% of Americans are not getting enough [choline]. [[75](https://pubmed.ncbi.nlm.nih.gov/30853718/)]_ + +While it is clear that choline is an essential nutrient for proper liver, muscle, and brain function, and this study does estimate 90% of Americans to fall short of the adequate intake, the same study caveats that: + +>_Current intakes cannot be deemed inadequate based upon the [adequate intake] value alone. Although [adequate intakes] may be useful in guiding individual dietary plans, by definition, they are established when the evidence is insufficient to calculate an [estimated average requirement]. Therefore it is not possible to conclusively assess the risk of inadequacy in a population._ + +In short, the way Joseph presents this study is essentially fear-mongering. + +**Claim #27 (**[**18:47**](https://youtu.be/MpxgZGnEF7E?t=1127)**):** + +>_Choline from egg-yolk is better absorbed than choline from the common supplement, choline bitartrate. 150 calories of egg yolk (a little over 2 eggs) are enough to meet ones adequate choline intake._ + +While choline absorption from eggs is particularly high, choline intake in the American population is driven by egg intake and vegetarians have the lowest intakes among the US population, this does not support the notion that choline requirements cannot be met with proper supplementation. + +On the other hand, the same authors as from the paper before state that choline is a precursor to betaine, another 'methyl donor' largely present in plant foods such as wheat bran, beets and spinach. Higher intakes of betaine may spare some of the potential negative consequences of low choline intake among vegetarian populations. [[76](https://pubmed.ncbi.nlm.nih.gov/31385730/)] + +The main concern with choline deficiency is non-alcoholic fatty liver disease (NAFLD). If choline deficiency was an issue among vegans we'd expect a positive correlation between higher adherence to so-called "vegan" diets and NAFLD, an inverse correlation between consumption of animal foods and NAFLD, no change or an increase in liver enzymes for NAFLD patients being told to eat a "vegan" diet, and lower odds of NAFLD in people who eat more than 2 eggs per day (calculated from the calories from egg yolk needed to achieve adequate choline intake as given by Joseph (keep this number in mind). + +However, we see the opposite. Higher adherence to plant-based diets, especially healthful plant-based diets is associated with lower likelihood of fatty liver. [[77](https://pubmed.ncbi.nlm.nih.gov/30578029/)][[78](https://pubmed.ncbi.nlm.nih.gov/36235752/)] Higher consumption of animal foods correlated with a higher prevalence of NAFLD, while a higher consumption of grains and vegetables was correlated with a lower prevalence of NAFLD in Chinese Adults. [[79](https://pubmed.ncbi.nlm.nih.gov/26083112/)] Also, in a pilot study with 26 NAFLD patients who agreed to eat a vegan diet for six months 20 normalised their liver function tests, independently of their improvements in body weight. [[80](https://pubmed.ncbi.nlm.nih.gov/33548123/)] Meanwhile, in a case-control study of 951 patients who had been referred to hepatology clinics, those participants who consumed 2-3 eggs per week (not per day) had over 3-times higher odds of having NAFLD than those who consumed less than 2 eggs. [[81](https://pubmed.ncbi.nlm.nih.gov/28443155/)] + +It doesn't actually seem like consuming choline from animal products, particularly eggs, is even an effective means of avoiding NAFLD. This may be because animal-derived sources of choline are also typically high in fat, which would likely increase the choline requirement. + +Consuming more fats means activating the bodies lipid transport system, such as lipoproteins, to a greater degree. Phosphatidylcholine is one of the primary phospholipids that make up the membranes of lipoproteins. The more fat you eat, the more choline you require. This is basically why choline deficiency can cause fatty liver. + +So, even from a mechanistic standpoint, it would be unclear whether or not high fat animal-based diets would have an advantage over low fat plant-based diets. + +**Claim #28 (**[**19:02**](https://youtu.be/MpxgZGnEF7E?t=1142)**):** + +>_Dietary calcium reduces risk of heart attack, calcium supplements increase the risk of heart attack._ + +This claim, which Joseph bases off of a single study that he fails to cite in his substack document, is not supported by the larger literature. A multitude of meta-analyses of prospective cohort studies with combined sample sizes of hundreds of thousands of patients show an inverse correlation of total calcium intake and all-cause mortality in the short term (鈮 10 years), but no statistically significant correlation in the long term (> 10 years). This difference is likely explained by the positive correlation between both dietary and supplemental calcium with cardiovascular mortality, following a U-shaped dose response curve that becomes statistically significant for intakes exceeding ~1200 mg/day. [[82](https://pubmed.ncbi.nlm.nih.gov/25912278/)][[83](https://pubmed.ncbi.nlm.nih.gov/33382441/)][[84](https://pubmed.ncbi.nlm.nih.gov/25252963/)] + + +The only statistically significant finding of the only meta-analysis of RCTs of calcium supplementation was a 9% increased risk of coronary heart disease incidence, driven by dosages exceeding 1000 mg/day in men, but no statistically significant difference in all-cause mortality. [[85](https://www.tandfonline.com/doi/full/10.1080/07315724.2019.1649219)] + + +Therefore, calcium supplementation in a range similar to reasonable dietary intakes should be regarded as safe. It is also effective at improving bone mineral density in both preadolescent children and adults with osteoporosis. [[86](https://pubmed.ncbi.nlm.nih.gov/36808216/)][[87](https://pubmed.ncbi.nlm.nih.gov/36810543/)] + +**Claim #29 (**[**19:12**](https://youtu.be/MpxgZGnEF7E?t=1152)**):** + +>_Vegans have weaker bones and a 43% higher risk for fractures than omnivores. [[88](https://pubmed.ncbi.nlm.nih.gov/33222682/)]_ + +On average, vegans do in fact tend to have a lower bone mineral density and higher hip fracture risk compared to non-vegans. This alone is uninteresting, though. We know that, on average, omnivores have a higher BMI than vegans. In this study the difference in BMI between the groups was 2.4 points, in the general population it is more than double that. + +BMI has been shown to causally increase bone mineral density, which in turn has been shown to causally decrease risk of fracture. This effect mediation has been found independently in observational studies, and the differences in bone mineral density seem to align with what we would expect based on the differences in BMI. [[89](https://pubmed.ncbi.nlm.nih.gov/33784428/)][[90](https://pubmed.ncbi.nlm.nih.gov/36260985/)][[91](https://pubmed.ncbi.nlm.nih.gov/24862213/)][[92](https://pubmed.ncbi.nlm.nih.gov/15817133/)] + +![][image23] +[image23]: /blog/everettvegans/image23.png + +So the question that is interesting here, from a causal perspective, is whether vegans have weaker bones and higher risk of fracture independently of BMI and other important confounders such as calcium and vitamin D. Vitamin D has not been taken into account at all in the EPIC-Oxford study. BMI and dietary calcium were adjusted for, but only via categorisation, which is known to bias results when examining continuous variables with non-linear responses. [[93](https://pubmed.ncbi.nlm.nih.gov/17938055/)] + +In the Adventist Health Study 2, a better prospective cohort study (more recent, bigger sample size, higher proportion of vegans, longer follow-up, etc), the same question was investigated. When adjusting for all known confounders (and unlike EPIC-Oxford using a proper adjustment model), only female vegans who did not supplement calcium and vitamin D were at a higher risk of hip fractures. [[94](https://pubmed.ncbi.nlm.nih.gov/33964850/)] + +On the other hand, in another prospective cohort study, a higher ratio of animal protein to plant protein was found to increase rates of bone loss and fracture risk in postmenopausal women. [[95](https://pubmed.ncbi.nlm.nih.gov/11124760/)] + +# LABORATORY CATS THO + +**Claim #30 (**[**19:52**](https://youtu.be/MpxgZGnEF7E?t=1192)**):** + +>_Dr. Francis Pottenger had been trying to formulate a healthy diet for his laboratory cats ... This had Dr. Pottenger conduct a 10 year study to puzzle out the effects of cooked meat versus raw meat on hundreds of cats. He found that the cooked meat cats consistently had health problems but the problems were even worse for their kittens._ + +This might be interesting if we continued to have an incomplete understanding of feline nutrition. But this isn't 1932. In fact we have such a strong understanding of feline nutrition these days, that we can even formulate nutritionally complete animal-free diets for cats. + +There are plenty of plausible explanations for what happened to the cats. One plausible explanation is that cooking the meat destroyed the taurine content, as we understand that even mild temperatures can significantly reduce the taurine content of meat. [[96](https://pubmed.ncbi.nlm.nih.gov/22060873/)] Taurine is an essential nutrient in cats, and most of the symptoms described can be explained by a taurine deficiency. + +At present, our understanding of human nutrition is such that many can live for years on total parenteral nutrition (TPN), which is a type of intravenous total dietary replacement. There has been plenty of literature pointing out that TPN is associated with a wide range of negative health outcomes. But, it's difficult enough to disambiguate the effects of the TPN and the effects of whatever led to the patient requiring TPN to begin with, let alone the ostensible effects of unknown, spooky mystery meat nutrients. + +# JACC PAPER THO + +**Claim #31 (**[**25:05**](https://youtu.be/MpxgZGnEF7E?t=1505)**):** + +>_A huge 2020 review explained that saturated fat rich foods like whole-fat dairy or unprocessed meat themselves are not associated with an increase risk of heart disease and a 2022 systematic review found the previous evidence that shows unprocessed meat is linked to chronic diseases like cancer or heart disease to be far too weak to make the recommendation to reduce meat consumption._ + +The evidence used to buttress the JACC paper is the same sort of evidence that the BOP paper authors considers too weak to be reliable. Why even point it out if the evidence is shit? + +But, just for clarification, it is understood that whole fat dairy blunts the effect of saturated fats on blood lipids, due to its unique food matrix and the presence of something called the milk fat globule membrane. [[97](https://pubmed.ncbi.nlm.nih.gov/26016870/)] It is also understood that chocolate, while high in saturated fat, is high in a particular type of saturated fat called stearic acid. This particular saturated fat does not have a significant effect on blood lipids. [[98](https://pubmed.ncbi.nlm.nih.gov/32998517/)] + +This is just Joseph using these exceptions to the rule to obfuscate the effect that meat itself has on blood lipids, which is significant and replicable. [[99](https://pubmed.ncbi.nlm.nih.gov/31161217/)] Overall, we understand that the relationship between meat and heart disease is likely mediated by blood lipids, particularly LDL. Meat has a tendency to raise LDL, which just straightforwardly explains its strong association with heart disease. + +# NINA THEICHOLZ THO + +**Claim #32 (**[**25:44**](https://youtu.be/MpxgZGnEF7E?t=1544)**):** + +>_Yet, the anti-meat push has gotten so strong that as investigative journalist Nina Teicholz reveals, a recent Tufts University ranking system bogusly ranks Reese鈥檚 Peanut Butter Cups as healthier than Eggs, Cheese or Ground Beef._ + +These data don't represent any official guidelines. And I'm not sure how shitty input data and shitty methodology constitutes an "anti-meat push", honestly. But Joseph is not even representing the results of the Food Compass accurately. While it's true that on average animal products get a mediocre score, it's not true that they rank lower than snacks and desserts on average. [[100](https://pubmed.ncbi.nlm.nih.gov/37117986/)] What he presented in his video is an example of cherry picking. + +In fact, some animal foods rank higher than some plant foods, and in the aggregate there is non-inferiority between some animal foods and some plant foods. For example, seafood ranks particularly high, and is non-inferior to both fruits and vegetables. Both meat and dairy are also non-inferior to grains. If Joseph wants to make some kind of claim about a vegan conspiracy to suppress the health value of animal foods, he'll have to explain why seafood gets such a remarkable score here. + +![][image24] +[image24]: /blog/everettvegans/image24.png + +# EVEN MOAR NUTRIENTS THO + +**Claim #33 (**[**26:04**](https://youtu.be/MpxgZGnEF7E?t=1564)**):** + +>_It鈥檚 easy to assume that our understanding of individual nutrients is so advanced that we don鈥檛 need to rely on outdated meat-based diets - we can make replacements. But, while the amount of knowledge on nutrition that鈥檚 been accumulated is incredible, is it as complete as we assume?_ + +While this has the appearance of being a sound inductive sort of argument, it ultimately seems to be an argument that is halfway between an appeal to ignorance and some nutrition-focused flavour of Pascal's wager. I'm not sure why we should find this persuasive. If we don't know if there are any nutrients in meat that currently render meat indispensable, I would just be agnostic about the existence of those nutrients. + +**Claim #34 (**[**27:26**](https://youtu.be/MpxgZGnEF7E?t=1646)**):** + +>_It wasn鈥檛 even until 1998 that the nutrient Choline was recognized to be essential. Liver disease, atherosclerosis and neurological dysfunction taught us that Choline is pretty important. [[101](https://pubmed.ncbi.nlm.nih.gov/19906248/)]_ +> +>_A paper from just last year in 2022, suggests we underestimate the optimal intake of choline. [[102](https://pubmed.ncbi.nlm.nih.gov/34962672/)] This Cornell study found that seven-year-old children had better attention span if their mothers consumed twice the recommended amount of choline during their pregnancy._ + +It is known that prenatal DHA supplementation positively influences attention of infants and preschool children in a similar manner as found for choline in the Cornell study. [[103](https://pubmed.ncbi.nlm.nih.gov/27362506/)][[104](https://pubmed.ncbi.nlm.nih.gov/27604770/)] Additionally, there is high-quality emerging evidence that prenatal choline supplementation improves DHA status in pregnant women but not in lactating women (also no statistically significant difference for DHA concentration in breast milk) making it likely that the beneficial effect of prenatal choline supplementation on sustained attention is mediated through DHA. [[105](https://pubmed.ncbi.nlm.nih.gov/35575618/)][[106](https://pubmed.ncbi.nlm.nih.gov/33516092/)] + +Therefore, it may be prudent for both vegan and non-vegan women, especially those with certain PEMT genotypes, to supplement choline in addition to DHA during the second and third trimester of their pregnancies. [[107](https://pubmed.ncbi.nlm.nih.gov/36145177/)] + +**Claim #35 (**[**28:33**](https://youtu.be/MpxgZGnEF7E?t=1713)**):** + +>_If a mother can鈥檛 breastfeed or get donor milk, of course modern infant formula is basically a miracle. But even as a representative of Abbott, a leading infant formula manufacturer admits: 鈥渢o mimic and replicate breast milk is not possible.鈥 Yes, a newborn will have far more sensitive nutrient requirements than an adult or even a child, but it鈥檚 an example the difficulty of trying to make a complete replacement of a natural food._ + +The two scenarios are not analogous. In the case of vegan replacements for animal based foods, we generally don't see people on properly planned "vegan" diets experiencing negative health outcomes as a consequence. So, even if the association between formula feeding and negative health outcomes was strong, it's not clear how one functions as a plausible analogy for the other. + +**Claim #36 (**[**29:28**](https://youtu.be/MpxgZGnEF7E?t=1768)**):** + +>_...there is evidence that [insert non-essential animal nutrient here] has beneficial effects. [[108](https://pubmed.ncbi.nlm.nih.gov/32072297/)]_ + +In most studies wherein a benefit of these animal-derived compounds is found, supranutritional doses are given to subjects. Not only that, but the minimum doses required to achieve maximum benefits (when benefits are even present) is often well above and beyond what we could reasonably obtain from diet alone. This just leaves us asking why omnivore shouldn't be relying on supplements too. + +**Claim #37 (**[**29:38**](https://youtu.be/MpxgZGnEF7E?t=1778)**):** + +>_Just to look at two This 2002 paper argues that taurine may be essential in certain circumstances, and creatine supplementation has benefits for brain function in adults like improving memory, intelligence and mood and it reduces the negative effects of sleep deprivation. [[109](https://pubmed.ncbi.nlm.nih.gov/12514918/)][[110](https://pubmed.ncbi.nlm.nih.gov/29704637/)][[111](https://pubmed.ncbi.nlm.nih.gov/16416332/)] Further, creatine is transferred from the mother to her baby during pregnancy providing several benefits to the baby. [[112](https://pubmed.ncbi.nlm.nih.gov/24766646/)]_ + +The "certain circumstances" here were premature infants on total parenteral nutrition. The authors say this is due to them being unable to synthesize their own taurine at this stage and depending on breast milk. How is this related to vegan diets or even animal foods? + +Regarding creatine, all studies he cited were on supplemental creatine with doses that would require over 1kg of beef a day to get. For most individuals, beyond their caloric needs. + +**Claim #38 (**[**30:14**](https://youtu.be/MpxgZGnEF7E?t=1814)**):** + +>_You could take substantial amounts of soy or pea protein powders to make up for the fact that most plant proteins are poorly absorbed and have lower amounts of amino acids and so on and so on._ + +I'm sorry, Joseph. But tracer studies disagree. [[113](https://pubmed.ncbi.nlm.nih.gov/33693735/)] In fact, tofu appears to be on par with pork, and better than eggs, in terms of its contribution to total positive protein balance in the human body. + +![][image25] +[image25]: /blog/everettvegans/image25.png + +If you're going to try to make this point to shit on tofu, would you please be consistent and also shit on pork and eggs? + +**Claim #39 (**[**30:28**](https://youtu.be/MpxgZGnEF7E?t=1828)**):** + +>_Again, meat is so nutrient dense that you can get a decent amount of well absorbed zinc, iron, selenium, choline, various B-vitamins, vitamin A, calcium and other nutrients just eating a crappy cheeseburger._ + +Here, in another certified bruh moment, Joseph relies on vague language to make a point that nobody should care about. You can only eat around three Burger King Whopper cheese burgers before exceeding 2200 Kcal, but you'd also be deficient in most nutrients. + +While it's true that you would get the RDA of a number of nutrients, you would also exceed your sodium RDA by 268%, the AI for potassium would be undershot by 50%, and only 50% of the conservative 600 IU of vitamin D would be obtained. Additionally, you would only get about 40% of the RDA of vitamin A, in exchange for over 40g of saturated fat. + +While I am aware that Joseph is not advocating for cheeseburger consumption, it's just an incredibly stupid point to make. Which leads me to the next claim. + +**Claim #40 (**[**30:40**](https://youtu.be/MpxgZGnEF7E?t=1840)**):** + +>_Ideally people shouldn鈥檛 eat crappy cheeseburgers鈥 but the average busy person doesn鈥檛 have time to craft the perfect meal - convenience is important. This is evidenced by the fact that a 2021 paper found that the more people avoided animal products in their diet - the more they ate convenient ultra-processed foods with vegans eating the most processed foods. [[114](https://pubmed.ncbi.nlm.nih.gov/32692345/)]_ + +In yet another instance of Joseph failing to read his own references, possibly because he's rushing for that confirmation bias induced YouTube money, he mentions convenience ultra-processed foods (UPF) but links a paper where the reason vegans seemingly ate more UPF (not convenience foods) was that the authors classified meat alternatives and plant based milks like soy milk as UPF. + +>_Concomitantly with the increased numbers of vegetarians or vegans, the offer of industrial plant-based meat and dairy substitutes on the market has been growing during the past decade in Western countries (e.g., tofu, textured vegetable foods such as vegetarian sausages or patties, and plant-based drinks such as soy 鈥渕ilk鈥) (9, 10). Most of these substitutes are ultra-processed foods (UPFs). The development of this industrial plant-based meat and dairy substitutes market (11, 12, 13, 14) may have contributed to the growing consumption of UPFs in countries such as France (15) by specific populations. For example, persons avoiding most animal-based foods may have high intakes of UPFs, driven by higher consumptions of plant-based meat and dairy substitutes._ + +The difference was so tiny as to be entirely explained by that classification. + +>_The proportion of energy from UPFs was significantly higher for vegetarians (37.0% of the total energy intake) and vegans (39.5%) than for meat eaters (33.0%) (Figure 1A). Comparing vegans to meat eaters, for example, vegans consumed a greater proportion of UPFs (+6.41%) (Figure 1B)._ + +In addition, Joseph failed to mention that vegans eat more unprocessed foods than omnivores. + +>_The proportion of energy from unprocessed foods was significantly higher for vegans (31.2% of the total energy intake) than for meat eaters (29.0%) (Figure 1A and B)._ + +**Claim #41 (**[**31:13**](https://youtu.be/MpxgZGnEF7E?t=1873)**):** + +>_Eating tons of processed soy protein and vegetable oils like sunflower oil is quite new to the human stomach. Sunflower oil seems like a simple swap for animal fat 鈥 but they are totally different. Many animal fats can be a good source of vitamin K2, but vegetable oil in fact hampers the activity of vitamin K, increasing your need for it. [[115](https://pubmed.ncbi.nlm.nih.gov/12032162/)][[116](https://pubmed.ncbi.nlm.nih.gov/27251151/)][[117](https://pubmed.ncbi.nlm.nih.gov/28962307/)][[118](https://pubmed.ncbi.nlm.nih.gov/29353277/)] It also oxidizes very easily so it will increase your need for the antioxidant vitamin E. [[119](https://pubmed.ncbi.nlm.nih.gov/26291567/)] Vegetable oil has several other negative effects which I have talked about in another video._ + +We already discussed vitamin K2 earlier, and touched on how animal foods are generally a pathetic source, but even if they weren't, it's not clear that animal-derived vitamin K2 is even bioavailable. Additionally, vegetable oil consumption is not an entailment of veganism, so I'm not entirely sure why it's being discussed here. Nor is UPF consumption, unless you're dense enough to categorize B12 and D3 supplements as UPFs. At best this is a red herring, at worst this is a non sequitur. + +# SOY SHRANK MY COCK THO +1 +**Claim #42 (**[**31:47**](https://youtu.be/MpxgZGnEF7E?t=1907)**):** + +>_Vegans and vegetarians tend to rely on soy for protein a lot. The hormone disrupting effects of increased soy consumption is somewhat controversial, but it may explain why a study on almost 8000 boys found boys born to vegetarian mothers had a higher risk for a specific deformity in the genitals called hypospadias. [[120](https://pubmed.ncbi.nlm.nih.gov/10619956/)]_ + +Risk is not exactly what is being assessed in this study. This is a case-control study, which means we're looking at odds ratios. This is the ratio of the odds of the outcome of interest between two groups at varying levels of exposure. Case-control studies are also missing a temporal component, which is often considered critical for making sound causal inferences. With case-control studies, the direction of causality is extremely difficult to ascertain. Additionally, the study did not even measure or assess soy intake. + +In this case, the odds ratio for hypospadias from low to high soy exposure was actually non-significant. However, in a similar case-control study from 2013, phytoestrogen consumption was inversely associated with hypospadias incidence. [[121](https://pubmed.ncbi.nlm.nih.gov/23752918/)] At best I think we can say that the literature on soy is pretty mixed, ranging from non-significant increases in the odds of hypospadias to statistically significant decreases in the odds of hypospadias. + +**Claim #43 (**[**32:09**](https://youtu.be/MpxgZGnEF7E?t=1929)**):** + +>_Soy contains the isoflavonoid genistein, which studies show has 鈥渄etrimental effects on the male reproductive system鈥︹ [[122](https://pubmed.ncbi.nlm.nih.gov/35760341/)]_ + +Bruh, this is a meta-analysis of rodent studies with a blurb about how the results may or may not translate to humans. + +**Claim #44 (**[**32:17**](https://youtu.be/MpxgZGnEF7E?t=1937)**):** + +>_Lastly, impossible burger has tried to make their product taste meatier with something called leghemoglobin from the roots of genetically modified soy plants. [[123](https://www.canada.ca/en/health-canada/services/food-nutrition/genetically-modified-foods-other-novel-foods/approved-products/soy-leghemoglobin/document.html)]_ +> +>_GMOscience.org writes that:_ +> +>_A 28-day study commissioned by Impossible Foods in 2017 on soy leghemoglobin found that soy leghemoglobin caused statistically significant changes in weight gain, changes in the blood that can indicate the onset of inflammation or kidney disease, and possible signs of anaemia in the rats._ + +In isolation, leghemoglobin actually had better bioavailability than iron(II)-sulfate, and when part of a food matrix, here as fortification for corn tortillas, had similar (ie non stat sig different) bioavailability compared to bovine heme iron. [[124](https://pubmed.ncbi.nlm.nih.gov/16478282/)] + +![][image26] +[image26]: /blog/everettvegans/image26.png + +As an added fun fact that may blow up the brains of Joseph's audience, leghemoglobin is actually evolutionarily just as old as hemoglobin. See the following figure from Biochemistry 6th edition by Berg, Tymoczko and Styer. + +**Claim #45 (**[**32:43**](https://youtu.be/MpxgZGnEF7E?t=1963)**):** + +>_Further studies did eventually persuade the FDA to designate leghemoglobin as safe, but Impossible Foods admitted that a quarter their new ingredient was composed of 46 鈥渦nexpected鈥 additional proteins, none of which were assessed for safety in the dossier. [[125](https://twitter.com/ImpossibleFoods/status/1000397509196505089?s=20)]_ + +These "unexpected additional" proteins are just unknown proteins, which in this context simply means that their biological behaviour is not yet known. If you analyse any food, including beef, there will be many, many such "unknown" proteins. It's not spooky. This characteristic likely quantifies over all foods, and as such we have no good reason to consider this a cause for any concern. + +# ANTI-NUTRIENTS THO + +**Claim #46 (**[**33:27**](https://youtu.be/MpxgZGnEF7E?t=2007)**):** + +>_This is another big issue with trying to replace animal foods. The replacement almost always comes with plenty of other stuff. Kidney beans are a good source of protein need to be soaked and cooked to reduce the lectin content. Some boys in the UK showed up in the hospital with profuse diarrhea and vomiting because they ate 4 kidney beans that were soaked, but not cooked. [[126](https://pubmed.ncbi.nlm.nih.gov/2249712/)]_ + +Okay, Joseph. Either you're not reading your references at all or you're just memeing at this point. The results are relevant to raw beans, which everyone agrees shouldn't be eaten. This isn't revelatory. Soaking your legumes is some level-zero Weston A Price bullshit. They need to be cooked, dude. **COOKED**. + +Even without soaking, and instead pressure cooking, the time required to deactivate the lectins was well below the time required to make them edible. [[127](https://www.researchgate.net/publication/229968837_Effect_of_Heat_Processing_on_Hemagglutinin_Activity_in_Red_Kidney_Beans)] + +Additionally, in the years between 1976 and 1989, the UK only saw 50 suspected incidents related to un- or under-cooked legumes were registered. Meanwhile, [according to the USDA](https://www.fsis.usda.gov/inspection/inspection-programs/inspection-poultry-products/reducing-salmonella-poultry/salmonella), poor meat preparation can account for approximately 1.35 million salmonella-related infections, 26,500 salmonella-related hospitalizations, and 420 salmonella-related deaths every year just in the United States. + +Joseph also tries to address those who react to lectins in cooked kidney beans too. News flash. There are no fucking lectins in cooked kidney beans. [[128](https://pubmed.ncbi.nlm.nih.gov/34829077/)] + +**Claim #47 (**[**33:56**](https://youtu.be/MpxgZGnEF7E?t=2036)**):** + +>_Phytic acid found in beans, seeds, nuts and grains inhibits fat digestion and the absorption of calcium, magnesium, phosphorus and Zinc. How much? Well, this study found about 35% less Zinc is absorbed in a vegetarian diet. [[129](https://pubmed.ncbi.nlm.nih.gov/31095149/)][[130](https://pubmed.ncbi.nlm.nih.gov/16401188/)][[56](https://pubmed.ncbi.nlm.nih.gov/12936958/)] Fiber itself worsens the activity of pancreatic lipase which is important for the absorption of fat soluble vitamins like A, D and K2. [[131](https://pubmed.ncbi.nlm.nih.gov/2819858/)]_ + +Joseph's reference for this claim is the same paper that he cited for his claim about phytate-mediated inhibition of iron absorption. However, straight from the author's conclusions, we can read: + +>_The iron and zinc from vegetarian diets are generally less bioavailable than from nonvegetarian diets because of reduced meat intake as well as the tendency to consume more phytic acid and other plant-based inhibitors of iron and zinc absorption. However, in Western countries with varied and abundant food supplies, it is not clear that this reduced bioavailability has any functional consequences._ + +What's worse, Joseph's reference for phytate-mediated inhibition of hepatic lipase activity is an in vitro study. It's not clear why we should care. + +# KALE FUCKED MY THYROID THO + +**Claim #48 (**[**34:19**](https://youtu.be/MpxgZGnEF7E?t=2059)**):** + +>_A high intake of goitrogenic foods like cabbage, kale and turnips can interfere with iodine functioning._ + +Show me the study that actually divulges that any of these sorts of foods have any goitrogenic effects, please. We've tried to look for this effect in foods that are highest in these so-called goitrogens, such as broccoli sprouts, and we so far haven't found any generalizable effect. [[132](https://pubmed.ncbi.nlm.nih.gov/30735751/)] In fact, the number of subjects with subclinical hypothyroidism actually went down in the broccoli sprout group, compared to baseline. + +**Claim #49 (**[**34:25**](https://youtu.be/MpxgZGnEF7E?t=2065)**):** + +>_Food Scientist Dr. Frederic Leroy has written an extensive article on the various examples of why it鈥檚 a challenge to acquire enough of certain nutrients just from plants due to inhibiting compounds like these. [[133](https://aleph-2020.blogspot.com/2019/05/animal-source-foods-provide-nutrients.html)] This nutrient challenge is part of the reason why The German Nutrition Society in 2016 and the French-speaking Pediatric HGN Group in 2019 recommend against a vegan diet for adolescents, children or mothers. [[134](https://www.ernaehrungs-umschau.de/english-articles/15-06-2016-vegan-diet/)][[135](https://pubmed.ncbi.nlm.nih.gov/31615715/)]_ + +Well, as long as we're appealing to authorities, we should point out that both the French and German governments recommend limiting meat intake to no more than 500g per week and 600g per week, respectively. + +![][image27] +[image27]: /blog/everettvegans/image27.png + +![][image28] +[image28]: /blog/everettvegans/image28.png + +# VEGAN MIDGET BABIES THO + +**Claim #50 (**[**34:49**](https://youtu.be/MpxgZGnEF7E?t=2089)**):** + +>_Several studies have found babies born to vegan mothers to have a lower birth weight than babies of omnivore mothers. [[136](https://pubmed.ncbi.nlm.nih.gov/30909771/)][[137](https://journals.lww.com/ijcm/Abstract/1999/24020/A_STUDY_OF_EFFECT_OF_MATERNAL_NUTRITION_ON.4.aspx)][[138](https://pubmed.ncbi.nlm.nih.gov/32776295/)][[139](https://pubmed.ncbi.nlm.nih.gov/8172120/)][[140](https://pubmed.ncbi.nlm.nih.gov/33232446/)][[141](https://www.nichd.nih.gov/newsroom/news/122120-vegetarian-diets)][[142](https://pubmed.ncbi.nlm.nih.gov/28745335/)][[143](https://sciendo.com/article/10.5604/01.3001.0014.9343)] +>_Birth weight can be a predictor of infant health and growth. [[144](https://pubmed.ncbi.nlm.nih.gov/15703531/)][[145](https://pubmed.ncbi.nlm.nih.gov/32928144/)][[146](https://pubmed.ncbi.nlm.nih.gov/26288495/)][[147](https://pubmed.ncbi.nlm.nih.gov/28840655/)] In fact, one study that meticulously analyzed the records of 4,300 adults who were in the Danish Medical Birth Register found that the lower their weight at birth, the shorter they would be as adults. [[148](https://pubmed.ncbi.nlm.nih.gov/10206622/)]_ +>_This study points out that the growth of vegetarian children was adequate, but less than average. [[39](https://pubmed.ncbi.nlm.nih.gov/2771551/)] I wonder how people would react to a doctor saying 鈥測our son won鈥檛 be as tall as he could be, but don鈥檛 worry his height will be adequate.鈥漘 + +Firstly, it's probably not actually birth weights we should be caring about necessarily. It's whether or not the infants are considered small for gestational age. Secondly, Joseph's references don't actually provide very persuasive evidence to support the notion that vegan diets increase the risk of small for gestational age. One particularly strong reason for this is poor B12 supplementation practices, which is a known risk factor among vegans that has not been adequately accounted for. + +For instance, Ferrara et al. found that only 15% of the vegan cohort supplemented B12, while only 5% supplemented D3. Similarly, Yisahak et al. conducted a tangential study on vegetarians, but even then no assessment for B12 or D3 supplementation was made. + +In addition, the study by R.K. Sharma et al. was done in 1999 before fortification and supplementation standards were established. Although they found that low birth weights were largely explained by the height and weight of the mother and that anemia was a risk factor for small for gestational age. These authors also did not account for B12 supplementation. + +Kesary et al. lumped B12, iron, folate, and multivitamins together, and participants were said to be taking supplements if they took supplements more than once per week. However, the odds of small for gestational age between vegans and omnivores was not significant after an adjustment for BMI. Therefore, it is difficult to draw a definitive conclusion about the relationship between "vegan" diets and small for gestational age from this study. + +Basically if vegans tend to have lower baseline BMI and tend to gain less weight during pregnancy, normally they will give birth to smaller babies. By definition, since you shifted the distribution curve, more of them will fall bellow the 10th percentile. Any unique effect of vegan diets here are probably with respect to more powerfully resisting weight gain and than typical omnivorous diets. + +Finally, two cautionary narrative review articles by Miedziaszczyk et al. and Pawlak et al. highlighted that most of the vegan populations mentioned had either high MMA, low B12 intake or status, or poor supplementation practices. These observations further emphasize the importance of adequate B12 supplementation when considering the risks associated with vegan diets during pregnancy. Here's a quote from one of the authors: + +>_It should be thus concluded that vegan diets are appropriate for pregnant and lactating women only if these women habitually use reliable B12 sources, preferably oral supplements._ + +**Claim #51 (**[**38:18**](https://youtu.be/MpxgZGnEF7E?t=2118)**):** + +>_What is the difference between enough nutrients and the optimal amount of nutrients...cutting out nutrient dense animal foods doesn鈥檛 seem like a move in the right direction for health._ + +This just seems like pure speculation. Maybe optimal is not achievable without a supplement on any natural diet. I mean, think about it. What's the argument for omnivorous diets necessarily providing optimal amounts of all nutrients? If there's no argument for that, then it's possible that even the diet that he's recommending is horribly insufficient in some way. + +![][image29] +[image29]: /blog/everettvegans/image29.png + +How has Joseph determined that the optimal range for nutrient intakes aren't above what could be obtained from omnivorous diets? Seems like his argument here is begging the question. If it's the case that optimal levels of nutrients are only practical to obtain from supplements, then we'd all benefit鈥 not just vegans. + +It's also true that this works in reverse. If Joseph is arguing that we should eat more meat to hit some nebulous "optimal" ranges for all nutrients, what's the argument that this is not true for plant foods? Perhaps eating more meat displaces plant foods and keeps us from achieving an optimal intake of some other plant-derived nutrients as well, notably vitamin C, folate, fibre, potassium, manganese, or polyphenols. Yes, Joseph, I live in the real world where getting ample fibre intake is actually beneficial for the vast majority of people. + +So perhaps the optimal intake of many of plant-derived nutrients cannot be achieved if you are eating a significant amount of meat. Since Joseph insists on discussing non-essential, animal-derived nutrients for which the evidence for benefit is paltry at best. There is literally more evidence of benefit for polyphenols than there is for carnitine, anserine, taurine, and perhaps even creatine. + +# MOAR ANCESTRAL DIETS THO + +**Claim #52 (**[**36:44**](https://youtu.be/MpxgZGnEF7E?t=2204)**):** + +>_For 99% of human history we relied on animal foods for nutrients - the an animal food containing diet has a strong track record that spans arguably over 1.7 million years. [[149](https://pubmed.ncbi.nlm.nih.gov/32508752/)][[150](https://bigthink.com/the-past/brain-evolution/)] Various cultures viewed animal foods as important to growth and despite the challenging circumstances they lived in, they were protected from infectious diseases, they didn鈥檛 have the modern diseases of civilization, and they enjoyed proper growth in their body, faces and mouths._ + +There is no source provided for Joseph's claim that "various cultures" do not suffer from the modern diseases of civilization. Joseph characterizes these diseases as "heart disease, cancer, osteoporosis, diabetes, and so on", but there is plenty of evidence against the notion that these diseases are somehow modern. + +Cancer in humans is a phenomenon that is over a million and a half years old, for example. [[151](https://carta.anthropogeny.org/libraries/bibliography/earliest-hominin-cancer-17-million-year-old-osteosarcoma-swartkrans-cave)] Heart disease is prevalent in nearly every population we study, whether traditional, ancient, or modern. [[152](https://pubmed.ncbi.nlm.nih.gov/23489753/)] Even the Tsimane have advanced atherosclerosis. [[153](https://pubmed.ncbi.nlm.nih.gov/28320601/)] Even diabetes dates back millennia. [[154](https://pubmed.ncbi.nlm.nih.gov/26788261/)] + +**Claim #53 (**[**37:07**](https://youtu.be/MpxgZGnEF7E?t=2227)**):** + +>_With that in mind, a plant-based diet is an experiment without any meaningful track record. It鈥檚 been a couple decades at best that people have been doing vegan diets, yet already many people quit for health reasons. Research is a promising story of progress - maybe one day we鈥檒l learn enough to make sufficient plant-based replacements for animal foods. But it鈥檚 probably not happening any time soon._ + +It seems like the word "experiment" is being used in a strange way here. From what I can gather, Joseph is either trying to convey that there is significant risk entailed by being on a "vegan" diet OR that there is no historical precedent for animal-free diets and that we should apply some precautionary principle OR veganism is being used to test a hypothesis. + +Either of these three propositions requires an argument. If "experiment" is just being used as it is commonly used, as something done to test a hypothesis, then it is not clear that veganism is an experiment on that construal. If "experiment" just means that there is a possibility of some undesirable outcome actualizing, then it seems trivially true and misleading to refer to veganism as an experiment. If "experiment" means that there is some demonstrably entailment to a poor outcome, then he would actually need to provide decent evidence for that. + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting! + +# BIBLIOGRAPHY""" + , articleReferences = + [ { author = "van Ballegooijen, Adriana J., et al." + , title = "The Synergistic Interplay between Vitamins D and K for Bone and Cardiovascular Health: A Narrative Review" + , journal = "International Journal of Endocrinology" + , year = "2017" + , link = "https://doi.org/10.1155/2017/7454376" + } + , { author = "Yee, Michelle Min Fang, et al." + , title = "Vitamin A and Bone Health: A Review on Current Evidence" + , journal = "Molecules (Basel, Switzerland)" + , year = "2021" + , link = "https://doi.org/10.3390/molecules26061757" + } + , { author = "MS, AEGIS Communications, By Jerome C. Rose, PhD, Richard D. Roblee, DDS" + , title = "Interdisciplinary Analysis: Origins of Dental Crowding and Malocclusions - An Anthropological Perspective" + , journal = "" + , year = "" + , link = "https://www.aegisdentalnetwork.com/cced/2009/06/interdisciplinary-analysis-origins-of-dental-crowding-and-malocclusions-an-anthropological-perspective" + } + , { author = "Faunalytics" + , title = "A Summary Of Faunalytics鈥 Study Of Current And Former Vegetarians And Vegans" + , journal = "Faunalytics" + , year = "2016" + , link = "https://faunalytics.org/a-summary-of-faunalytics-study-of-current-and-former-vegetarians-and-vegans/" + } + , { author = "Grasgruber, P., et al." + , title = "Major Correlates of Male Height: A Study of 105 Countries" + , journal = "Economics and Human Biology" + , year = "2016" + , link = "https://doi.org/10.1016/j.ehb.2016.01.005" + } + , { author = "Armstrong, B., and R. Doll" + , title = "Environmental Factors and Cancer Incidence and Mortality in Different Countries, with Special Reference to Dietary Practices" + , journal = "International Journal of Cancer" + , year = "1975" + , link = "https://doi.org/10.1002/ijc.2910150411" + } + , { author = "Koebnick, C., et al." + , title = "Consequences of a Long-Term Raw Food Diet on Body Weight and Menstruation: Results of a Questionnaire Survey" + , journal = "Annals of Nutrition & Metabolism" + , year = "1999" + , link = "https://doi.org/10.1159/000012770" + } + , { author = "Novotny, Janet A., et al." + , title = "Beta-Carotene Conversion to Vitamin A Decreases as the Dietary Dose Increases in Humans" + , journal = "The Journal of Nutrition" + , year = "2010" + , link = "https://doi.org/10.3945/jn.109.116947" + } + , { author = "West, Clive E., et al." + , title = "Consequences of Revised Estimates of Carotenoid Bioefficacy for Dietary Control of Vitamin A Deficiency in Developing Countries" + , journal = "The Journal of Nutrition" + , year = "2002" + , link = "https://doi.org/10.1093/jn/132.9.2920S" + } + , { author = "Novotny, Janet A., et al." + , title = "Beta-Carotene Conversion to Vitamin A Decreases as the Dietary Dose Increases in Humans" + , journal = "The Journal of Nutrition" + , year = "2010" + , link = "https://doi.org/10.3945/jn.109.116947" + } + , { author = "Suzuki, Masako, and Meika Tomita" + , title = "Genetic Variations of Vitamin A-Absorption and Storage-Related Genes, and Their Potential Contribution to Vitamin A Deficiency Risks Among Different Ethnic Groups" + , journal = "Frontiers in Nutrition" + , year = "2022" + , link = "https://www.frontiersin.org/articles/10.3389/fnut.2022.861619" + } + , { author = "Leung, W. C., et al." + , title = "Two Common Single Nucleotide Polymorphisms in the Gene Encoding Beta-Carotene 15,15鈥-Monoxygenase Alter Beta-Carotene Metabolism in Female Volunteers" + , journal = "FASEB Journal: Official Publication of the Federation of American Societies for Experimental Biology" + , year = "2009" + , link = "https://doi.org/10.1096/fj.08-121962" + } + , { author = "Li, D., et al." + , title = "Selected Micronutrient Intake and Status in Men with Differing Meat Intakes, Vegetarians and Vegans" + , journal = "Asia Pacific Journal of Clinical Nutrition" + , year = "2000" + , link = "https://doi.org/10.1046/j.1440-6047.2000.00129.x" + } + , { author = "Sch眉pbach, R., et al." + , title = "Micronutrient Status and Intake in Omnivores, Vegetarians and Vegans in Switzerland" + , journal = "European Journal of Nutrition" + , year = "2017" + , link = "https://doi.org/10.1007/s00394-015-1079-7" + } + , { author = "van Jaarsveld, Paul J., et al." + , title = "Beta-Carotene-Rich Orange-Fleshed Sweet Potato Improves the Vitamin A Status of Primary School Children Assessed with the Modified-Relative-Dose-Response Test" + , journal = "The American Journal of Clinical Nutrition" + , year = "2005" + , link = "https://doi.org/10.1093/ajcn/81.5.1080" + } + , { author = "Ribaya-Mercado, Judy D., et al." + , title = "Carotene-Rich Plant Foods Ingested with Minimal Dietary Fat Enhance the Total-Body Vitamin A Pool Size in Filipino Schoolchildren as Assessed by Stable-Isotope-Dilution Methodology" + , journal = "The American Journal of Clinical Nutrition" + , year = "2007" + , link = "https://doi.org/10.1093/ajcn/85.4.1041" + } + , { author = "de Pee, S., et al." + , title = "Orange Fruit Is More Effective than Are Dark-Green, Leafy Vegetables in Increasing Serum Concentrations of Retinol and Beta-Carotene in Schoolchildren in Indonesia" + , journal = "The American Journal of Clinical Nutrition" + , year = "1998" + , link = "https://doi.org/10.1093/ajcn/68.5.1058" + } + , { author = "Tang, G., et al." + , title = "Green and Yellow Vegetables Can Maintain Body Stores of Vitamin A in Chinese Children" + , journal = "The American Journal of Clinical Nutrition" + , year = "1999" + , link = "https://doi.org/10.1093/ajcn/70.6.1069" + } + , { author = "Haskell, Marjorie J., et al." + , title = "Daily Consumption of Indian Spinach (Basella Alba) or Sweet Potatoes Has a Positive Effect on Total-Body Vitamin A Stores in Bangladeshi Men" + , journal = "The American Journal of Clinical Nutrition" + , year = "2004" + , link = "https://doi.org/10.1093/ajcn/80.3.705" + } + , { author = "Tang, Guangwen, et al." + , title = "Spinach or Carrots Can Supply Significant Amounts of Vitamin A as Assessed by Feeding with Intrinsically Deuterated Vegetables" + , journal = "The American Journal of Clinical Nutrition" + , year = "2005" + , link = "https://doi.org/10.1093/ajcn/82.4.821" + } + , { author = "Tang, Guangwen, et al." + , title = "Golden Rice Is an Effective Source of Vitamin A" + , journal = "The American Journal of Clinical Nutrition" + , year = "2009" + , link = "https://doi.org/10.3945/ajcn.2008.27119" + } + , { author = "Gra脽mann, Sophie, et al." + , title = "SNP Rs6564851 in the BCO1 Gene Is Associated with Varying Provitamin a Plasma Concentrations but Not with Retinol Concentrations among Adolescents from Rural Ghana" + , journal = "Nutrients" + , year = "2020" + , link = "https://doi.org/10.3390/nu12061786" + } + , { author = "Homma, Yosuke, et al." + , title = "A Case Report of Acute Vitamin A Intoxication Due to Ocean Perch Liver Ingestion" + , journal = "The Journal of Emergency Medicine" + , year = "2015" + , link = "https://doi.org/10.1016/j.jemermed.2014.12.056" + } + , { author = "Dewailly, E., et al." + , title = "Vitamin A Intoxication from Reef Fish Liver Consumption in Bermuda" + , journal = "Journal of Food Protection" + , year = "2011" + , link = "https://doi.org/10.4315/0362-028X.JFP-10-566" + } + , { author = "Nagai, K., et al." + , title = "Vitamin A Toxicity Secondary to Excessive Intake of Yellow-Green Vegetables, Liver and Laver" + , journal = "Journal of Hepatology" + , year = "1999" + , link = "https://doi.org/10.1016/s0168-8278(99)80174-3" + } + , { author = "van Stuijvenberg, Martha E., et al." + , title = "South African Preschool Children Habitually Consuming Sheep Liver and Exposed to Vitamin A Supplementation and Fortification Have Hypervitaminotic A Liver Stores: A Cohort Study" + , journal = "The American Journal of Clinical Nutrition" + , year = "2019" + , link = "https://doi.org/10.1093/ajcn/nqy382" + } + , { author = "Carpenter, T. O., et al." + , title = "Severe Hypervitaminosis A in Siblings: Evidence of Variable Tolerance to Retinol Intake" + , journal = "The Journal of Pediatrics" + , year = "1987" + , link = "https://doi.org/10.1016/s0022-3476(87)80109-9" + } + , { author = "Hovinen, Topi, et al." + , title = "Vegan Diet in Young Children Remodels Metabolism and Challenges the Statuses of Essential Nutrients" + , journal = "EMBO Molecular Medicine" + , year = "2021" + , link = "https://doi.org/10.15252/emmm.202013492" + } + , { author = "Weikert, Cornelia, et al." + , title = "Vitamin and Mineral Status in a Vegan Diet" + , journal = "Deutsches Arzteblatt International" + , year = "2020" + , link = "https://doi.org/10.3238/arztebl.2020.0575" + } + , { author = "Time for More Vitamin D" + , title = "Time for More Vitamin D" + , journal = "Harvard Health" + , year = "2008" + , link = "https://www.health.harvard.edu/staying-healthy/time-for-more-vitamin-d" + } + , { author = "Elorinne, Anna-Liisa, et al." + , title = "Food and Nutrient Intake and Nutritional Status of Finnish Vegans and Non-Vegetarians" + , journal = "PloS One" + , year = "2016" + , link = "https://doi.org/10.1371/journal.pone.0148235" + } + , { author = "Washington, District of Columbia 1800 I. Street NW and Dc 20006" + , title = "PolitiFact - Is Whole Milk Prohibited from Being Offered in New York Schools? Yes" + , journal = "@politifact" + , year = "2021" + , link = "https://www.politifact.com/factchecks/2021/jun/07/lorraine-lewandrowski/whole-milk-prohibited-being-offered-new-york-schoo/" + } + , { author = "Hariri, Essa, et al." + , title = "Vitamin K2-a Neglected Player in Cardiovascular Health: A Narrative Review" + , journal = "Open Heart" + , year = "2021" + , link = "https://doi.org/10.1136/openhrt-2021-001715" + } + , { author = "Siltari, Aino, and Heikki Vapaatalo" + , title = "Vascular Calcification, Vitamin K and Warfarin Therapy - Possible or Plausible Connection?" + , journal = "Basic & Clinical Pharmacology & Toxicology" + , year = "2018" + , link = "https://doi.org/10.1111/bcpt.12834" + } + , { author = "Sato, Toshiro, et al." + , title = "Comparison of Menaquinone-4 and Menaquinone-7 Bioavailability in Healthy Women" + , journal = "Nutrition Journal" + , year = "2012" + , link = "https://doi.org/10.1186/1475-2891-11-93" + } + , { author = "Schurgers, L. J., and C. Vermeer" + , title = "Determination of Phylloquinone and Menaquinones in Food. Effect of Food Matrix on Circulating Vitamin K Concentrations" + , journal = "Haemostasis" + , year = "2000" + , link = "https://doi.org/10.1159/000054147" + } + , { author = "Desmond, Ma艂gorzata A., et al." + , title = "Growth, Body Composition, and Cardiovascular and Nutritional Risk of 5- to 10-y-Old Children Consuming Vegetarian, Vegan, or Omnivore Diets" + , journal = "The American Journal of Clinical Nutrition" + , year = "2021" + , link = "https://doi.org/10.1093/ajcn/nqaa445" + } + , { author = "Sanders, T. A." + , title = "Growth and Development of British Vegan Children" + , journal = "The American Journal of Clinical Nutrition" + , year = "1988" + , link = "https://doi.org/10.1093/ajcn/48.3.822" + } + , { author = "O鈥機onnell, J. M., et al." + , title = "Growth of Vegetarian Children: The Farm Study" + , journal = "Pediatrics" + , year = "1989" + , link = "" + } + , { author = "Weder, Stine, et al." + , title = "Energy, Macronutrient Intake, and Anthropometrics of Vegetarian, Vegan, and Omnivorous Children (1鈭3 Years) in Germany (VeChi Diet Study)" + , journal = "Nutrients" + , year = "2019" + , link = "https://doi.org/10.3390/nu11040832" + } + , { author = "Weder, Stine, et al." + , title = "Intake of Micronutrients and Fatty Acids of Vegetarian, Vegan, and Omnivorous Children (1-3 Years) in Germany (VeChi Diet Study)" + , journal = "European Journal of Nutrition" + , year = "2022" + , link = "https://doi.org/10.1007/s00394-021-02753-3" + } + , { author = "Alexy, Ute, et al." + , title = "Nutrient Intake and Status of German Children and Adolescents Consuming Vegetarian, Vegan or Omnivore Diets: Results of the VeChi Youth Study" + , journal = "Nutrients" + , year = "2021" + , link = "https://doi.org/10.3390/nu13051707" + } + , { author = "" + , title = "Length-Weight Growth Analysis up to 12 Months of Age in Three Groups According to the Dietary Pattern Followed from Pregnant Mothers and Children during the First Year of Life" + , journal = "Minerva Pediatrics" + , year = "2021" + , link = "https://www.minervamedica.it/en/journals/minerva-pediatrics/article.php?cod=R15Y9999N00A21041604" + } + , { author = "Gilsing, A. M. J., et al." + , title = "Serum Concentrations of Vitamin B12 and Folate in British Male Omnivores, Vegetarians and Vegans: Results from a Cross-Sectional Analysis of the EPIC-Oxford Cohort Study" + , journal = "European Journal of Clinical Nutrition" + , year = "2010" + , link = "https://doi.org/10.1038/ejcn.2010.142" + } + , { author = "Herrmann, Wolfgang, et al." + , title = "Vitamin B-12 Status, Particularly Holotranscobalamin II and Methylmalonic Acid Concentrations, and Hyperhomocysteinemia in Vegetarians" + , journal = "The American Journal of Clinical Nutrition" + , year = "2003" + , link = "https://doi.org/10.1093/ajcn/78.1.131" + } + , { author = "Sheng, Xiaoyang, et al." + , title = "Effects of Dietary Intervention on Vitamin B12 Status and Cognitive Level of 18-Month-Old Toddlers in High-Poverty Areas: A Cluster-Randomized Controlled Trial" + , journal = "BMC Pediatrics" + , year = "2019" + , link = "https://doi.org/10.1186/s12887-019-1716-z" + } + , { author = "Del Bo鈥, Cristian, et al." + , title = "Effect of Two Different Sublingual Dosages of Vitamin B12 on Cobalamin Nutritional Status in Vegans and Vegetarians with a Marginal Deficiency: A Randomized Controlled Trial" + , journal = "Clinical Nutrition (Edinburgh, Scotland)" + , year = "2019" + , link = "https://doi.org/10.1016/j.clnu.2018.02.008" + } + , { author = "Ho, Kok-Sun, et al." + , title = "Stopping or Reducing Dietary Fiber Intake Reduces Constipation and Its Associated Symptoms" + , journal = "World Journal of Gastroenterology" + , year = "2012" + , link = "https://doi.org/10.3748/wjg.v18.i33.4593" + } + , { author = "de Vries, Jan, et al." + , title = "Effects of Cereal, Fruit and Vegetable Fibers on Human Fecal Weight and Transit Time: A Comprehensive Review of Intervention Trials" + , journal = "Nutrients" + , year = "2016" + , link = "https://doi.org/10.3390/nu8030130" + } + , { author = "van der Schoot, Alice, et al." + , title = "The Effect of Fiber Supplementation on Chronic Constipation in Adults: An Updated Systematic Review and Meta-Analysis of Randomized Controlled Trials" + , journal = "The American Journal of Clinical Nutrition" + , year = "2022" + , link = "https://doi.org/10.1093/ajcn/nqac184" + } + , { author = "Tadesse, K." + , title = "The Effect of Dietary Fibre Isolates on Gastric Secretion, Acidity and Emptying" + , journal = "The British Journal of Nutrition" + , year = "1986" + , link = "https://doi.org/10.1079/bjn19860058" + } + , { author = "Rydning, Andreas, and Arnold Berstad" + , title = "Dietary Fibre and Peptic Ulcer" + , journal = "Scandinavian Journal of Gastroenterology" + , year = "1987" + , link = "https://doi.org/10.3109/00365528709095891" + } + , { author = "Harju, E." + , title = "Guar Gum Benefits Duodenal Ulcer Patients by Decreasing Gastric Acidity and Rate of Emptying of Gastric Contents 60 to 120 Minutes Postprandially" + , journal = "The American Surgeon" + , year = "1984" + , link = "" + } + , { author = "Okuda, K., and H. Takedatsu" + , title = "Absorption of Vitamin B12 in a Rectal Suppository" + , journal = "Proceedings of the Society for Experimental Biology and Medicine" + , year = "1966" + , link = "https://doi.org/10.3181/00379727-123-31527" + } + , { author = "Bolaman, Zahit, et al." + , title = "Oral versus Intramuscular Cobalamin Treatment in Megaloblastic Anemia: A Single-Center, Prospective, Randomized, Open-Label Study" + , journal = "Clinical Therapeutics" + , year = "2003" + , link = "https://doi.org/10.1016/s0149-2918(03)90096-8" + } + , { author = "Hunt, Janet R." + , title = "Bioavailability of Iron, Zinc, and Other Trace Minerals from Vegetarian Diets" + , journal = "The American Journal of Clinical Nutrition" + , year = "2003" + , link = "https://doi.org/10.1093/ajcn/78.3.633S" + } + , { author = "Scrimshaw, N. S." + , title = "Iron Deficiency" + , journal = "Scientific American" + , year = "1991" + , link = "https://doi.org/10.1038/scientificamerican1091-46" + } + , { author = "Rodriguez-Ramiro, I., et al." + , title = "Estimation of the Iron Bioavailability in Green Vegetables Using an in Vitro Digestion/Caco-2 Cell Model" + , journal = "Food Chemistry" + , year = "2019" + , link = "https://doi.org/10.1016/j.foodchem.2019.125292" + } + , { author = "Pawlak, Roman, and Kami Bell" + , title = "Iron Status of Vegetarian Children: A Review of Literature" + , journal = "Annals of Nutrition & Metabolism" + , year = "2017" + , link = "https://doi.org/10.1159/000466706" + } + , { author = "Pawlak, Roman, et al." + , title = "Iron Status of Vegetarian Adults: A Review of Literature" + , journal = "American Journal of Lifestyle Medicine" + , year = "2018" + , link = "https://doi.org/10.1177/1559827616682933" + } + , { author = "Levrat-Verny, M. A., et al." + , title = "Wholewheat Flour Ensures Higher Mineral Absorption and Bioavailability than White Wheat Flour in Rats" + , journal = "The British Journal of Nutrition" + , year = "1999" + , link = "https://doi.org/10.1017/s0007114599001075" + } + , { author = "Hallberg, L., et al." + , title = "Iron Absorption in Man: Ascorbic Acid and Dose-Dependent Inhibition by Phytate" + , journal = "The American Journal of Clinical Nutrition" + , year = "1989" + , link = "https://doi.org/10.1093/ajcn/49.1.140" + } + , { author = "Slywitch, Eric, et al." + , title = "Iron Deficiency in Vegetarian and Omnivorous Individuals: Analysis of 1340 Individuals" + , journal = "Nutrients" + , year = "2021" + , link = "https://doi.org/10.3390/nu13092964" + } + , { author = "Wilson, A. K., and M. J. Ball" + , title = "Nutrient Intake and Iron Status of Australian Male Vegetarians" + , journal = "European Journal of Clinical Nutrition" + , year = "1999" + , link = "https://doi.org/10.1038/sj.ejcn.1600696" + } + , { author = "Wi脽ing, Christoph, et al." + , title = "Stable Isotopes Reveal Patterns of Diet and Mobility in the Last Neandertals and First Modern Humans in Europe" + , journal = "Scientific Reports" + , year = "2019" + , link = "https://doi.org/10.1038/s41598-019-41033-3" + } + , { author = "Raichle, Marcus E., and Debra A. Gusnard" + , title = "Appraising the Brain鈥檚 Energy Budget" + , journal = "Proceedings of the National Academy of Sciences of the United States of America" + , year = "2002" + , link = "https://doi.org/10.1073/pnas.172399499" + } + , { author = "Ben-Dor, Miki, et al." + , title = "Man the Fat Hunter: The Demise of Homo Erectus and the Emergence of a New Hominin Lineage in the Middle Pleistocene (ca. 400 Kyr) Levant" + , journal = "PloS One" + , year = "2011" + , link = "https://doi.org/10.1371/journal.pone.0028689" + } + , { author = "Dobersek, Urska, et al." + , title = "Meat and Mental Health: A Systematic Review of Meat Abstention and Depression, Anxiety, and Related Phenomena" + , journal = "Critical Reviews in Food Science and Nutrition" + , year = "2021" + , link = "https://doi.org/10.1080/10408398.2020.1741505" + } + , { author = "Agarwal, Ulka, et al." + , title = "A Multicenter Randomized Controlled Trial of a Nutrition Intervention Program in a Multiethnic Adult Population in the Corporate Setting Reduces Depression and Anxiety and Improves Quality of Life: The GEICO Study" + , journal = "American Journal of Health Promotion: AJHP" + , year = "2015" + , link = "https://doi.org/10.4278/ajhp.130218-QUAN-72" + } + , { author = "Katcher, Heather I., et al." + , title = "A Worksite Vegan Nutrition Program Is Well-Accepted and Improves Health-Related Quality of Life and Work Productivity" + , journal = "Annals of Nutrition & Metabolism" + , year = "2010" + , link = "https://doi.org/10.1159/000288281" + } + , { author = "Michalak, Johannes, et al." + , title = "Vegetarian Diet and Mental Disorders: Results from a Representative Community Survey" + , journal = "The International Journal of Behavioral Nutrition and Physical Activity" + , year = "2012" + , link = "https://doi.org/10.1186/1479-5868-9-67" + } + , { author = "Fazelian, Siavash, et al." + , title = "Adherence to the Vegetarian Diet May Increase the Risk of Depression: A Systematic Review and Meta-Analysis of Observational Studies" + , journal = "Nutrition Reviews" + , year = "2022" + , link = "https://doi.org/10.1093/nutrit/nuab013" + } + , { author = "Young, Melissa F., et al." + , title = "Maternal Hepcidin Is Associated with Placental Transfer of Iron Derived from Dietary Heme and Nonheme Sources" + , journal = "The Journal of Nutrition" + , year = "2012" + , link = "https://doi.org/10.3945/jn.111.145961" + } + , { author = "Pe帽a-Rosas, Juan Pablo, et al." + , title = "Daily Oral Iron Supplementation during Pregnancy" + , journal = "The Cochrane Database of Systematic Reviews" + , year = "2015" + , link = "https://doi.org/10.1002/14651858.CD004736.pub5" + } + , { author = "Wallace, Taylor C., et al." + , title = "Choline: The Underconsumed and Underappreciated Essential Nutrient" + , journal = "Nutrition Today" + , year = "2018" + , link = "https://doi.org/10.1097/NT.0000000000000302" + } + , { author = "Wallace, Taylor C., et al." + , title = "Choline: The Neurocognitive Essential Nutrient of Interest to Obstetricians and Gynecologists" + , journal = "Journal of Dietary Supplements" + , year = "2020" + , link = "https://doi.org/10.1080/19390211.2019.1639875" + } + , { author = "Mazidi, Mohsen, and Andre Pascal Kengne" + , title = "Higher Adherence to Plant-Based Diets Are Associated with Lower Likelihood of Fatty Liver" + , journal = "Clinical Nutrition (Edinburgh, Scotland)" + , year = "2019" + , link = "https://doi.org/10.1016/j.clnu.2018.08.010" + } + , { author = "Li, Xiude, et al." + , title = "A Healthful Plant-Based Diet Is Associated with Lower Odds of Nonalcoholic Fatty Liver Disease" + , journal = "Nutrients" + , year = "2022" + , link = "https://doi.org/10.3390/nu14194099" + } + , { author = "Yang, Chao-Qun, et al." + , title = "Dietary Patterns Modulate the Risk of Non-Alcoholic Fatty Liver Disease in Chinese Adults" + , journal = "Nutrients" + , year = "2015" + , link = "https://doi.org/10.3390/nu7064778" + } + , { author = "Chiarioni, Giuseppe, et al." + , title = "Vegan Diet Advice Might Benefit Liver Enzymes in Nonalcoholic Fatty Liver Disease: An Open Observational Pilot Study" + , journal = "Journal of Gastrointestinal and Liver Diseases: JGLD" + , year = "2021" + , link = "https://doi.org/10.15403/jgld-3064" + } + , { author = "Mokhtari, Zeinab, et al." + , title = "Egg Consumption and Risk of Non-Alcoholic Fatty Liver Disease" + , journal = "World Journal of Hepatology" + , year = "2017" + , link = "https://doi.org/10.4254/wjh.v9.i10.503" + } + , { author = "Asemi, Z., et al." + , title = "Total, Dietary, and Supplemental Calcium Intake and Mortality from All-Causes, Cardiovascular Disease, and Cancer: A Meta-Analysis of Observational Studies" + , journal = "Nutrition, Metabolism, and Cardiovascular Diseases: NMCD" + , year = "2015" + , link = "https://doi.org/10.1016/j.numecd.2015.03.008" + } + , { author = "Pana, Tiberiu A., et al." + , title = "Calcium Intake, Calcium Supplementation and Cardiovascular Disease and Mortality in the British Population: EPIC-Norfolk Prospective Cohort Study and Meta-Analysis" + , journal = "European Journal of Epidemiology" + , year = "2021" + , link = "https://doi.org/10.1007/s10654-020-00710-8" + } + , { author = "Wang, Xia, et al." + , title = "Dietary Calcium Intake and Mortality Risk from Cardiovascular Disease and All Causes: A Meta-Analysis of Prospective Cohort Studies" + , journal = "BMC Medicine" + , year = "2014" + , link = "https://doi.org/10.1186/s12916-014-0158-6" + } + , { author = "Yang, Chao, et al." + , title = "The Evidence and Controversy Between Dietary Calcium Intake and Calcium Supplementation and the Risk of Cardiovascular Disease: A Systematic Review and Meta-Analysis of Cohort Studies and Randomized Controlled Trials" + , journal = "Journal of the American College of Nutrition" + , year = "2020" + , link = "https://doi.org/10.1080/07315724.2019.1649219" + } + , { author = "Arasu, Kanimolli, et al." + , title = "Effect of Soluble Corn Fibre and Calcium Supplementation on Bone Mineral Content and Bone Mineral Density in Preadolescent Malaysian Children-a Double-Blind Randomised Controlled Trial (PREBONE-Kids Study)" + , journal = "Osteoporosis International: A Journal Established as Result of Cooperation between the European Foundation for Osteoporosis and the National Osteoporosis Foundation of the USA" + , year = "2023" + , link = "https://doi.org/10.1007/s00198-023-06702-0" + } + , { author = "Voulgaridou, Gavriela, et al." + , title = "Vitamin D and Calcium in Osteoporosis, and the Role of Bone Turnover Markers: A Narrative Review of Recent Data from RCTs" + , journal = "Diseases (Basel, Switzerland)" + , year = "2023" + , link = "https://doi.org/10.3390/diseases11010029" + } + , { author = "Tong, Tammy Y. N., et al." + , title = "Vegetarian and Vegan Diets and Risks of Total and Site-Specific Fractures: Results from the Prospective EPIC-Oxford Study" + , journal = "BMC Medicine" + , year = "2020" + , link = "https://doi.org/10.1186/s12916-020-01815-3" + } + , { author = "Ma, Baoshan, et al." + , title = "Causal Associations of Anthropometric Measurements With Fracture Risk and Bone Mineral Density: A Mendelian Randomization Study" + , journal = "Journal of Bone and Mineral Research: The Official Journal of the American Society for Bone and Mineral Research" + , year = "2021" + , link = "https://doi.org/10.1002/jbmr.4296" + } + , { author = "Nethander, Maria, et al." + , title = "Assessment of the Genetic and Clinical Determinants of Hip Fracture Risk: Genome-Wide Association and Mendelian Randomization Study" + , journal = "Cell Reports. Medicine" + , year = "2022" + , link = "https://doi.org/10.1016/j.xcrm.2022.100776" + } + , { author = "Chan, Mei Y., et al." + , title = "Relationship between Body Mass Index and Fracture Risk Is Mediated by Bone Mineral Density" + , journal = "Journal of Bone and Mineral Research: The Official Journal of the American Society for Bone and Mineral Research" + , year = "2014" + , link = "https://doi.org/10.1002/jbmr.2288" + } + , { author = "Castro, Jonathan P., et al." + , title = "Differential Effect of Obesity on Bone Mineral Density in White, Hispanic and African American Women: A Cross Sectional Study" + , journal = "Nutrition & Metabolism" + , year = "2005" + , link = "https://doi.org/10.1186/1743-7075-2-9" + } + , { author = "Filardo, Giovanni, et al." + , title = "Categorizing BMI May Lead to Biased Results in Studies Investigating In-Hospital Mortality after Isolated CABG" + , journal = "Journal of Clinical Epidemiology" + , year = "2007" + , link = "https://doi.org/10.1016/j.jclinepi.2007.01.008" + } + , { author = "Thorpe, Donna L., et al." + , title = "Dietary Patterns and Hip Fracture in the Adventist Health Study 2: Combined Vitamin D and Calcium Supplementation Mitigate Increased Hip Fracture Risk among Vegans" + , journal = "The American Journal of Clinical Nutrition" + , year = "2021" + , link = "https://doi.org/10.1093/ajcn/nqab095" + } + , { author = "Sellmeyer, D. E., et al." + , title = "A High Ratio of Dietary Animal to Vegetable Protein Increases the Rate of Bone Loss and the Risk of Fracture in Postmenopausal Women. Study of Osteoporotic Fractures Research Group" + , journal = "The American Journal of Clinical Nutrition" + , year = "2001" + , link = "https://doi.org/10.1093/ajcn/73.1.118" + } + , { author = "Purchas, R. W., et al." + , title = "Concentrations in Beef and Lamb of Taurine, Carnosine, Coenzyme Q(10), and Creatine" + , journal = "Meat Science" + , year = "2004" + , link = "https://doi.org/10.1016/S0309-1740(03)00181-5" + } + , { author = "Rosqvist, Fredrik, et al." + , title = "Potential Role of Milk Fat Globule Membrane in Modulating Plasma Lipoproteins, Gene Expression, and Cholesterol Metabolism in Humans: A Randomized Study" + , journal = "The American Journal of Clinical Nutrition" + , year = "2015" + , link = "https://doi.org/10.3945/ajcn.115.107045" + } + , { author = "Rodr铆guez-Morat贸, Jose, et al." + , title = "Comparison of the Postprandial Metabolic Fate of U-13C Stearic Acid and U-13C Oleic Acid in Postmenopausal Women" + , journal = "Arteriosclerosis, Thrombosis, and Vascular Biology" + , year = "2020" + , link = "https://doi.org/10.1161/ATVBAHA.120.315260" + } + , { author = "Bergeron, Nathalie, et al." + , title = "Effects of Red Meat, White Meat, and Nonmeat Protein Sources on Atherogenic Lipoprotein Measures in the Context of Low Compared with High Saturated Fat Intake: A Randomized Controlled Trial" + , journal = "The American Journal of Clinical Nutrition" + , year = "2019" + , link = "https://doi.org/10.1093/ajcn/nqz035" + } + , { author = "Mozaffarian, Dariush, et al." + , title = "Food Compass Is a Nutrient Profiling System Using Expanded Characteristics for Assessing Healthfulness of Foods" + , journal = "Nature Food" + , year = "2021" + , link = "https://doi.org/10.1038/s43016-021-00381-y" + } + , { author = "Zeisel, Steven H., and Kerry-Ann da Costa" + , title = "Choline: An Essential Nutrient for Public Health" + , journal = "Nutrition Reviews" + , year = "2009" + , link = "https://doi.org/10.1111/j.1753-4887.2009.00246.x" + } + , { author = "Bahnfleth, Charlotte L., et al." + , title = "Prenatal Choline Supplementation Improves Child Sustained Attention: A 7-Year Follow-up of a Randomized Controlled Feeding Trial" + , journal = "FASEB Journal: Official Publication of the Federation of American Societies for Experimental Biology" + , year = "2022" + , link = "https://doi.org/10.1096/fj.202101217R" + } + , { author = "Colombo, John, et al." + , title = "Prenatal DHA Supplementation and Infant Attention" + , journal = "Pediatric Research" + , year = "2016" + , link = "https://doi.org/10.1038/pr.2016.134" + } + , { author = "Ramakrishnan, Usha, et al." + , title = "Prenatal Supplementation with DHA Improves Attention at 5 y of Age: A Randomized Controlled Trial" + , journal = "The American Journal of Clinical Nutrition" + , year = "2016" + , link = "https://doi.org/10.3945/ajcn.114.101071" + } + , { author = "Klatt, Kevin C., et al." + , title = "Prenatal Choline Supplementation Improves Biomarkers of Maternal Docosahexaenoic Acid (DHA) Status among Pregnant Participants Consuming Supplemental DHA: A Randomized Controlled Trial" + , journal = "The American Journal of Clinical Nutrition" + , year = "2022" + , link = "https://doi.org/10.1093/ajcn/nqac147" + } + , { author = "Jackson, Kristina Harris, et al." + , title = "Baseline Red Blood Cell and Breast Milk DHA Levels Affect Responses to Standard Dose of DHA in Lactating Women on a Controlled Feeding Diet" + , journal = "Prostaglandins, Leukotrienes, and Essential Fatty Acids" + , year = "2021" + , link = "https://doi.org/10.1016/j.plefa.2021.102248" + } + , { author = "Loinard-Gonz谩lez, Aura Alex P., et al." + , title = "Genetic Variants in One-Carbon Metabolism and Their Effects on DHA Biomarkers in Pregnant Women: A Post-Hoc Analysis" + , journal = "Nutrients" + , year = "2022" + , link = "https://doi.org/10.3390/nu14183801" + } + , { author = "Wu, Guoyao" + , title = "Important Roles of Dietary Taurine, Creatine, Carnosine, Anserine and 4-Hydroxyproline in Human Nutrition and Health" + , journal = "Amino Acids" + , year = "2020" + , link = "https://doi.org/10.1007/s00726-020-02823-6" + } + , { author = "Louren莽o, R., and M. E. Camilo" + , title = "Taurine: A Conditionally Essential Amino Acid in Humans? An Overview in Health and Disease" + , journal = "Nutricion Hospitalaria" + , year = "2002" + , link = "" + } + , { author = "Avgerinos, Konstantinos I., et al." + , title = "Effects of Creatine Supplementation on Cognitive Function of Healthy Individuals: A Systematic Review of Randomized Controlled Trials" + , journal = "Experimental Gerontology" + , year = "2018" + , link = "https://doi.org/10.1016/j.exger.2018.04.013" + } + , { author = "McMorris, T., et al." + , title = "Effect of Creatine Supplementation and Sleep Deprivation, with Mild Exercise, on Cognitive and Psychomotor Performance, Mood State, and Plasma Concentrations of Catecholamines and Cortisol" + , journal = "Psychopharmacology" + , year = "2006" + , link = "https://doi.org/10.1007/s00213-005-0269-z" + } + , { author = "Dickinson, Hayley, et al." + , title = "Creatine Supplementation during Pregnancy: Summary of Experimental Studies Suggesting a Treatment to Improve Fetal and Neonatal Morbidity and Reduce Mortality in High-Risk Human Pregnancy" + , journal = "BMC Pregnancy and Childbirth" + , year = "2014" + , link = "https://doi.org/10.1186/1471-2393-14-150" + } + , { author = "Park, Sanghee, et al." + , title = "Metabolic Evaluation of the Dietary Guidelines鈥 Ounce Equivalents of Protein Food Sources in Young Adults: A Randomized Controlled Trial" + , journal = "The Journal of Nutrition" + , year = "2021" + , link = "https://doi.org/10.1093/jn/nxaa401" + } + , { author = "Gehring, Jos茅phine, et al." + , title = "Consumption of Ultra-Processed Foods by Pesco-Vegetarians, Vegetarians, and Vegans: Associations with Duration and Age at Diet Initiation" + , journal = "The Journal of Nutrition" + , year = "2021" + , link = "https://doi.org/10.1093/jn/nxaa196" + } + , { author = "Schurgers, Leon J., et al." + , title = "Novel Effects of Diets Enriched with Corn Oil or with an Olive Oil/Sunflower Oil Mixture on Vitamin K Metabolism and Vitamin K-Dependent Proteins in Young Men" + , journal = "Journal of Lipid Research" + , year = "2002" + , link = "" + } + , { author = "Okuyama, Harumi, et al." + , title = "Medicines and Vegetable Oils as Hidden Causes of Cardiovascular Disease and Diabetes" + , journal = "Pharmacology" + , year = "2016" + , link = "https://doi.org/10.1159/000446704" + } + , { author = "Hashimoto, Yoko, et al." + , title = "Canola and Hydrogenated Soybean Oils Accelerate Ectopic Bone Formation Induced by Implantation of Bone Morphogenetic Protein in Mice" + , journal = "Toxicology Reports" + , year = "2014" + , link = "https://doi.org/10.1016/j.toxrep.2014.10.021" + } + , { author = "Okuyama, Harumi, et al." + , title = "A Critical Review of the Consensus Statement from the European Atherosclerosis Society Consensus Panel 2017" + , journal = "Pharmacology" + , year = "2018" + , link = "https://doi.org/10.1159/000486374" + } + , { author = "Raederstorff, Daniel, et al." + , title = "Vitamin E Function and Requirements in Relation to PUFA" + , journal = "The British Journal of Nutrition" + , year = "2015" + , link = "https://doi.org/10.1017/S000711451500272X" + } + , { author = "North, K., and J. Golding" + , title = "A Maternal Vegetarian Diet in Pregnancy Is Associated with Hypospadias. The ALSPAC Study Team. Avon Longitudinal Study of Pregnancy and Childhood" + , journal = "BJU International" + , year = "2000" + , link = "https://doi.org/10.1046/j.1464-410x.2000.00436.x" + } + , { author = "Carmichael, Suzan L., et al." + , title = "Hypospadias and Maternal Intake of Phytoestrogens" + , journal = "American Journal of Epidemiology" + , year = "2013" + , link = "https://doi.org/10.1093/aje/kws591" + } + , { author = "Rashid, Rumaisa, et al." + , title = "Genistein Lowers Fertility with Pronounced Effect in Males: Meta-Analyses on Pre-Clinical Studies" + , journal = "Andrologia" + , year = "2022" + , link = "https://doi.org/10.1111/and.14511" + } + , { author = "Canada, Health" + , title = "Soy Leghemoglobin (LegH) Preparation as an Ingredient in a Simulated Meat Product and Other Ground Beef Analogues" + , journal = "" + , year = "2021" + , link = "https://www.canada.ca/en/health-canada/services/food-nutrition/genetically-modified-foods-other-novel-foods/approved-products/soy-leghemoglobin/document.html" + } + , { author = "Proulx, Amy K., and Manju B. Reddy" + , title = "Iron Bioavailability of Hemoglobin from Soy Root Nodules Using a Caco-2 Cell Culture Model" + , journal = "Journal of Agricultural and Food Chemistry" + , year = "2006" + , link = "https://doi.org/10.1021/jf052268l" + } + , { author = "ImpossibleFoods" + , title = "Twitter" + , journal = "" + , year = "2018" + , link = "https://twitter.com/ImpossibleFoods/status/1000397509196505089?s=20" + } + , { author = "Rodhouse, J. C., et al." + , title = "Red Kidney Bean Poisoning in the UK: An Analysis of 50 Suspected Incidents between 1976 and 1989" + , journal = "Epidemiology and Infection" + , year = "1990" + , link = "https://doi.org/10.1017/s095026880004810x" + } + , { author = "Thompson, Lilian U., et al." + , title = "Effect of Heat Processing on Hemagglutinin Activity in Red Kidney Beans" + , journal = "Journal of Food Science" + , year = "1983" + , link = "https://doi.org/10.1111/j.1365-2621.1983.tb14831.x" + } + , { author = "Adamcov谩, Ane啪ka, et al." + , title = "Lectin Activity in Commonly Consumed Plant-Based Foods: Calling for Method Harmonization and Risk Assessment" + , journal = "Foods (Basel, Switzerland)" + , year = "2021" + , link = "https://doi.org/10.3390/foods10112796" + } + , { author = "Pei, Yaqiong, et al." + , title = "Impact of Plant Extract on the Gastrointestinal Fate of Nutraceutical-Loaded Nanoemulsions: Phytic Acid Inhibits Lipid Digestion but Enhances Curcumin Bioaccessibility" + , journal = "Food & Function" + , year = "2019" + , link = "https://doi.org/10.1039/c9fo00545e" + } + , { author = "Yuangklang, C., et al." + , title = "Effect of Sodium Phytate Supplementation on Fat Digestion and Cholesterol Metabolism in Female Rats" + , journal = "Journal of Animal Physiology and Animal Nutrition" + , year = "2005" + , link = "https://doi.org/10.1111/j.1439-0396.2005.00525.x" + } + , { author = "Hansen, W. E." + , title = "Effect of Dietary Fiber on Pancreatic Lipase Activity in Vitro" + , journal = "Pancreas" + , year = "1987" + , link = "https://doi.org/10.1097/00006676-198703000-00012" + } + , { author = "Chartoumpekis, Dionysios V., et al." + , title = "Broccoli Sprout Beverage Is Safe for Thyroid Hormonal and Autoimmune Status: Results of a 12-Week Randomized Trial" + , journal = "Food and Chemical Toxicology: An International Journal Published for the British Industrial Biological Research Association" + , year = "2019" + , link = "https://doi.org/10.1016/j.fct.2019.02.004" + } + , { author = "Animal Source Foods in Ethical, Sustainable & Healthy Diets" + , title = "Animal Source Foods in Ethical, Sustainable & Healthy Diets: Nutrients Are Not Always Easily Obtained from Plants Only" + , journal = "" + , year = "" + , link = "https://aleph-2020.blogspot.com/2019/05/animal-source-foods-provide-nutrients.html" + } + , { author = "Watzl, Margrit Richter, Heiner Boeing, Dorle Gr眉newald-Funk, Helmut Heseker, Anja Kroke, Eva Leschik-Bonnet, Helmut Oberritter, Daniela Strohm, Bernhard" + , title = "Vegan Diet" + , journal = "" + , year = "2016" + , link = "https://www.ernaehrungs-umschau.de/english-articles/15-06-2016-vegan-diet/" + } + , { author = "Lemale, J., et al." + , title = "Vegan Diet in Children and Adolescents. Recommendations from the French-Speaking Pediatric Hepatology, Gastroenterology and Nutrition Group (GFHGNP)" + , journal = "Archives De Pediatrie: Organe Officiel De La Societe Francaise De Pediatrie" + , year = "2019" + , link = "https://doi.org/10.1016/j.arcped.2019.09.001" + } + , { author = "Ferrara, Pietro, et al." + , title = "The Impact of Lacto-Ovo-/Lacto-Vegetarian and Vegan Diets during Pregnancy on the Birth Anthropometric Parameters of the Newborn" + , journal = "The Journal of Maternal-Fetal & Neonatal Medicine: The Official Journal of the European Association of Perinatal Medicine, the Federation of Asia and Oceania Perinatal Societies, the International Society of Perinatal Obstetricians" + , year = "2020" + , link = "https://doi.org/10.1080/14767058.2019.1590330" + } + , { author = "Sharma, R. K., et al." + , title = "A STUDY OF EFFECT OF MATERNAL NUTRITION ON INCIDENCE OF LOW BIRTH WEIGHT" + , journal = "Indian Journal of Community Medicine" + , year = "1999" + , link = "https://journals.lww.com/ijcm/Abstract/1999/24020/A_STUDY_OF_EFFECT_OF_MATERNAL_NUTRITION_ON.4.aspx" + } + , { author = "Kesary, Yuval, et al." + , title = "Maternal Plant-Based Diet during Gestation and Pregnancy Outcomes" + , journal = "Archives of Gynecology and Obstetrics" + , year = "2020" + , link = "https://doi.org/10.1007/s00404-020-05689-x" + } + , { author = "Sanders, T. A., and S. Reddy" + , title = "Vegetarian Diets and Children" + , journal = "The American Journal of Clinical Nutrition" + , year = "1994" + , link = "https://doi.org/10.1093/ajcn/59.5.1176S" + } + , { author = "Yisahak, Samrawit F., et al." + , title = "Vegetarian Diets during Pregnancy, and Maternal and Neonatal Outcomes" + , journal = "International Journal of Epidemiology" + , year = "2021" + , link = "https://doi.org/10.1093/ije/dyaa200" + } + , { author = "NIH" + , title = "Science Update: Vegetarian Diets during Pregnancy Associated with Small Infant Birth Weight" + , journal = "Https://Www.Nichd.Nih.Gov" + , year = "2020" + , link = "https://www.nichd.nih.gov/newsroom/news/122120-vegetarian-diets" + } + , { author = "Pawlak, R." + , title = "To Vegan or Not to Vegan When Pregnant, Lactating or Feeding Young Children" + , journal = "European Journal of Clinical Nutrition" + , year = "2017" + , link = "https://doi.org/10.1038/ejcn.2017.111" + } + , { author = "Miedziaszczyk, Mi艂osz, et al." + , title = "The Safety of a Vegan Diet During Pregnancy" + , journal = "Post臋py Higieny i Medycyny Do艣wiadczalnej" + , year = "2021" + , link = "https://doi.org/10.5604/01.3001.0014.9343" + } + , { author = "Islam, M. Mazharul" + , title = "The Effects of Low Birth Weight on School Performance and Behavioral Outcomes of Elementary School Children in Oman" + , journal = "Oman Medical Journal" + , year = "2015" + , link = "https://doi.org/10.5001/omj.2015.50" + } + , { author = "Falc茫o, Ila R., et al." + , title = "Factors Associated with Low Birth Weight at Term: A Population-Based Linkage Study of the 100 Million Brazilian Cohort" + , journal = "BMC Pregnancy and Childbirth" + , year = "2020" + , link = "https://doi.org/10.1186/s12884-020-03226-x" + } + , { author = "Misra, Akshay, et al." + , title = "A Longitudinal Study to Determine Association of Various Maternal Factors with Neonatal Birth Weight at a Tertiary Care Hospital" + , journal = "Medical Journal, Armed Forces India" + , year = "2015" + , link = "https://doi.org/10.1016/j.mjafi.2015.03.001" + } + , { author = "Sinha, Bireshwar, et al." + , title = "Low-Birthweight Infants Born to Short-Stature Mothers Are at Additional Risk of Stunting and Poor Growth Velocity: Evidence from Secondary Data Analyses" + , journal = "Maternal & Child Nutrition" + , year = "2018" + , link = "https://doi.org/10.1111/mcn.12504" + } + , { author = "S酶rensen, H. T., et al." + , title = "Birth Weight and Length as Predictors for Adult Height" + , journal = "American Journal of Epidemiology" + , year = "1999" + , link = "https://doi.org/10.1093/oxfordjournals.aje.a009881" + } + , { author = "Wells, Jonathan C. K., and Jay T. Stock" + , title = "Life History Transitions at the Origins of Agriculture: A Model for Understanding How Niche Construction Impacts Human Growth, Demography and Health" + , journal = "Frontiers in Endocrinology" + , year = "2020" + , link = "https://doi.org/10.3389/fendo.2020.00325" + } + , { author = "Big Think" + , title = "Our Ancestors First Developed Humanlike Brains 1.7 Million Years Ago" + , journal = "Big Think" + , year = "2021" + , link = "https://bigthink.com/the-past/brain-evolution/" + } + , { author = "Odes, E., et al." + , title = "Earliest Hominin Cancer: 1.7-Million-Year-Old Osteosarcoma from Swartkrans Cave, South Africa" + , journal = "South African Journal of Science" + , year = "2016" + , link = "https://doi.org/http://dx.doi.org/10.17159/sajs.2016/20150471" + } + , { author = "Thompson, Randall C., et al." + , title = "Atherosclerosis across 4000 Years of Human History: The Horus Study of Four Ancient Populations" + , journal = "Lancet (London, England)" + , year = "2013" + , link = "https://doi.org/10.1016/S0140-6736(13)60598-X" + } + , { author = "Kaplan, Hillard, et al." + , title = "Coronary Atherosclerosis in Indigenous South American Tsimane: A Cross-Sectional Cohort Study" + , journal = "Lancet (London, England)" + , year = "2017" + , link = "https://doi.org/10.1016/S0140-6736(17)30752-3" + } + , { author = "Karamanou, Marianna, et al." + , title = "Milestones in the History of Diabetes Mellitus: The Main Contributors" + , journal = "World Journal of Diabetes" + , year = "2016" + , link = "https://doi.org/10.4239/wjd.v7.i1.1" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/FeldwitzFuckery.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/FeldwitzFuckery.elm new file mode 100755 index 0000000..ec6e54b --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/FeldwitzFuckery.elm @@ -0,0 +1,33 @@ +module Config.Pages.Blogs.MainBlog.FeldwitzFuckery exposing (..) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleFeldwitzFuckery : BlogArticle +articleFeldwitzFuckery = + { articleName = "" + , articleLink = Path.toString Path.Blog_Feldwitzfuckery + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "" + , articlePublished = "" + , articleBody = """ + + + +![][image1] +[image1]: /blog/feldwitzfuckery/image1.png + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting!""" + , articleReferences = + [ { author = "" + , title = "" + , journal = "" + , year = "" + , link = "" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/HunterGatherers.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/HunterGatherers.elm new file mode 100755 index 0000000..0c31d61 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/HunterGatherers.elm @@ -0,0 +1,246 @@ +module Config.Pages.Blogs.MainBlog.HunterGatherers exposing (articleHunterGatherers) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleHunterGatherers : BlogArticle +articleHunterGatherers = + { articleName = "Should Modern Humans Eat Like Hunter-Gatherers?" + , articleLink = Path.toString Path.Blog_Huntergatherers + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "huntergatherers" + , articlePublished = "May 14, 2021" + , articleBody = """ +Many Paleo diet advocates claim that hunter-gatherer diets optimally promote the long-term health of human beings. There are typically two primary justifications for this claim鈥 firstly, the fact that hunter-gatherer populations typically appear to be robustly healthy, and secondly, the fact that humans evolved eating these types of diets. While these are technically statements of fact, I find myself forced to take a page out of the Paleo-dieter's playbook, as I remind them that correlation doesn't equal causation. So, let's dig into why their reasoning is flawed. + +Firstly, let me hit you with a thought experiment for a moment. Do you think that the elderly people within a given population would appear either more healthy or less healthy if that population _never_ had access to modern medical technology? Think about this for a moment. You may understandably intuit that their health would probably be worse, correct? But that probably isn't what would happen. They would probably appear healthier, and I'll explain why. + +# SURVIVORSHIP BIAS + +If a population never had access to modern medical technology, one of the things you couldn't reliably do is save sick or injured children. No matter what culture you observe, a sizable proportion of children will develop infectious illnesses. These illnesses, like bacterial or viral infections, are generally mundane by modern standards. However, without modern medicine many children who developed these types of illnesses would likely not survive them. + +Those who are more prone to illness likely do not have the same chances of survival as those who are less prone to illness. As such, why wouldn't the elderly in this hypothetical population present with more robust health as a result? Without medical intervention, the environment is essentially selecting for the fittest possible individuals in our hypothetical population. This would likely generate the appearance of more robust health in the elderly. Consider this carefully for a moment. If you weed out all of the weaker people, of course the remaining population is going to appear stronger. + +This presents a significant problem for Paleo diet advocates who choose to cite the robust health of hunter-gatherer populations as a justification for the Paleo diet, or as a justification for recommending the diet to others. Most Paleo-dieters do seem to be aware of the environmental adversity faced by hunter-gatherer populations. But they often don't seem to appreciate how this also produces significant challenges for their narrative. + +For example, if you remind a Paleo-dieter that hunter-gatherers typically had an average life expectancy of around 30 years, they will often immediately retort by stating that those estimates are confounded by infant and child mortality. But therein lies the problem鈥 they can't have it both ways. A Paleo diet advocate cannot use that argument without tacitly admitting that infant and child mortality is typically enormously high among hunter-gatherer populations. Which it most certainly is [[1](https://www.sciencedirect.com/science/article/abs/pii/S1090513812001237)]. + +![][image1] +[image1]: /blog/huntergatherers/image1.png + +Approximately 26.8% of infants and 48.8% of prepubescent children die in hunter-gatherer populations. With such a high proportion of children dying, how could it be the case that the apparent health of elderly hunter-gatherers is **not** coloured by this? Remember, hunter-gatherer populations likely appear healthier because the least resilient members of those populations are already dead. Paleo diet advocates cannot admit that hunter-gatherer populations had high rates of infant and child mortality without also admitting that the resulting population is a heavily biased sample. + +This type of confounding is known as survivorship bias. Basically, survivorship bias is a type of selection bias that can occur when those who did not survive a selection event or process are overlooked in favour of those who did survive. For example, let's say we were trying to construct better body armour for soldiers to wear in combat. Perhaps we might conduct a study of the soldiers who returned from battle. We could collect bullet wound distribution pattern data to help ascertain where soldiers were most likely to get shot. + +![][image2] +[image2]: /blog/huntergatherers/image2.png + +However, as we see in the graphic above, this sort of analysis would exclude all those who were shot and did **not** survive. It would also overlook the sorts of bullet wound distribution patterns that tended to lead to death, which would actually have given us a significantly clearer picture of how we might construct better body armour. + +Likewise, when Paleo diet advocates claim that we should eat like hunter-gatherers because hunter-gatherers are robustly healthy, they're not appreciating how survivorship bias is confounding their appraisal of hunter-gatherer health. They are essentially overlooking the other fifty percent of the hunter-gatherer population that didn't survive. + +For this reason, it is dubious to use the apparent good health of hunter-gatherers as the basis for the assumption that their diets are appropriate for modern humans. Until Paleo diet advocates can figure out a way to explain why survivorship bias would not be confounding in an evaluation of hunter-gatherer health, they cannot rely on the apparent good health of hunter-gatherer populations to determine the applicability of hunter-gatherer diets to modern humans. In reality, the degree to which hunter-gatherer diets are appropriate for modern humans remains unclear. + +But this isn't the only erroneous argument that Paleo-dieters will use to justify their claims. Often times Paleo diet advocates will also suggest that since we evolved eating certain foods, it is absurd to believe that any of the foods that we evolved eating could pose a long-term health risk to the average person. This reasoning has been used to dismiss robust and well-studied diet-disease relationships, such as saturated fat and cardiovascular disease, red meat and cancer, or even sodium and hypertension [[2](https://pubmed.ncbi.nlm.nih.gov/32428300/)][[3](https://pubmed.ncbi.nlm.nih.gov/28487287/)][[4](https://pubmed.ncbi.nlm.nih.gov/27216139/)][[5](https://pubmed.ncbi.nlm.nih.gov/28655835/)]. + +Right off the bat it is quite easy to identify that this is a blatant appeal to nature fallacy, and can be outright dismissed on that basis alone. However, it is important to describe precisely why this line of reasoning fails. What we really want to know is whether or not foods are necessarily beneficial (or neutral) for long-term health merely because we evolved eating them. + +To explore this question, let's first briefly consider how Darwinian natural selection works. Essentially, it is the process by which random gene mutations are selected for by different environmental challenges. Some mutations are better at dealing with certain environmental challenges than other mutations. As a result, these more adaptive mutations increase an organism's chances of producing offspring. These organisms subsequently pass on these adaptive mutations to their offspring as well. + +![][image3] +[image3]: /blog/huntergatherers/image3.png + +In this image we see that black mice are less likely to get eaten by the bird than tan mice. For this reason, the random mutations that produces black mice rather than tan mice ends up being naturally selected for by the environment. However, environmental challenges like getting eaten aren't quite the same as environmental challenges that affect the long-term health of an organism. + +# SELECTION SHADOW + +Getting eaten when you're young is an acute event. Developing a life-threatening chronic disease in old-age, as a result of a life-long environmental exposure (like a food or nutrient), is a long, protracted event. It is unlikely that selection pressure applies to these two events symmetrically, because adaptations occur as a function of successful reproduction. As a result, the probability that _deleterious_ traits will be successfully selected against likely diminishes with age. + +So, the question ends up being: how long after reproductive age does natural selection still robustly apply to human beings? Surely selection pressure doesn't end at reproductive age, because human children need human adults to raise them and care for them. But does selective pressure exist to a meaningful degree for those in the age ranges that typically associate with life-threatening chronic disease? Some scholars have attempted to estimate the force of natural selection as a function of age [[6](https://pubmed.ncbi.nlm.nih.gov/30124168/)]. + +![][image4] +[image4]: /blog/huntergatherers/image4.png + +Applying the above graph to human beings, our best estimations suggest that the forces of natural selection rapidly wane down to nil shortly after sexual maturity, which would be approximately 16 to 17 years of age. Around the ages of 30 to 40 is when humans likely enter the "selection shadow", which is the zone wherein natural selection no longer robustly applies. + +It seems highly unlikely that the fate of a population could ever hinge on the fitness of middle-aged people who are past their prime. For fun, let's estimate the age range wherein peak human performance is likely to occur. Perhaps we could look at the average age range of Olympic athletes [[7](https://venngage.com/blog/olympics/)]. + +![][image5] +[image5]: /blog/huntergatherers/image5.png + +The average age range of Olympic athletes is between ~22.5 and ~25.5, which is well before the age range seen within the selection shadow. Which honestly makes sense if you think about it. As you age it becomes less likely that natural selection will select against deleterious traits, like losing athletic performance. Once inside the selection shadow, there is likely insufficient selective pressure to extend peak physical performance into higher and higher age ranges. + +The selection shadow may actually be observable in some existing traditional populations as well, such as the Tsiman茅 people of Bolivia. While they are technically hunter/forager-horticulturalists and not strictly hunter-gatherers, they are one of the only traditional populations for which we have decent data regarding the progression of chronic disease. + +Using a measurement of atherosclerotic cardiovascular disease (ASCVD) progression known as coronary artery calcification (CAC) scoring, researchers were able to quantify the prevalence of ASCVD by age group among the Tsiman茅 [[8](https://pubmed.ncbi.nlm.nih.gov/28320601/)]. + +![][image6] +[image6]: /blog/huntergatherers/image6.png + +It should also be noted that CAC scores are indicative of advanced ASCVD [[9](https://pubmed.ncbi.nlm.nih.gov/24530667/)]. The exclusive use of CAC scoring in this study of the Tsiman茅 leaves us with many interpretive challenges. For example, if CAC scores are representative of advanced ASCVD (so called "hard plaques"), what proportion of less advanced ASCVD (so-called "soft plaque") might have been overlooked? It is difficult to say for sure. But the bottom line is that the Tsiman茅 experience increases in chronic disease at approximately the same time as modern populations鈥 well inside the selection shadow. + +Granted, the prevalence of chronic disease in the Tsiman茅 is overall lower than that of Western cultures. But, this could be expected given the fact that their diets and lifestyles are likely preferable to that of Western cultures as well. Not to mention the possible confounding due to survivorship bias, to which they are also not immune [[10](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3502712/)]. The Tsiman茅 have infant mortality rates that are many fold higher than in Western cultures. This means that the Tsiman茅 are vulnerable to the same type of confounding via survivorship bias that we discussed earlier, thus adding more layers of interpretive challenges. + +The methods used to determine the age-ranges of the Tsiman茅 were also questionable, and relied mostly on anecdote and personal judgement rather than objective measurements. + +>_鈥淏irth years were assigned based on a combination of methods including using known ages from written records, relative age lists, dated events, photo comparisons of people with known ages, and cross-validation of information from independent interviews of kin.鈥漘 + +When compared to more objective measures of age, the methods described above would appear to overestimate ages as the age of the subjects increases [[11](https://pubmed.ncbi.nlm.nih.gov/27511193/)]. Below the age of 40, estimates appear to be rather accurate. However, the age estimations used by Kaplan et al. (2017) would seem to overestimate ages by approximately 15 years above the age of 60. After adjusting for this, it is unlikely that CAC prevalence among the Tsiman茅 differs significantly from Western populations. In fact, it might actually be higher. + +# ANTAGONISTIC PLEIOTROPY + +It is also imperative to mention that foods to which we are adapted might actually be more likely to be harmful for us as we age. This is because of a concept in evolutionary biology called antagonistic pleiotropy, which is the most widely accepted explanation for the evolutionary origin of aging [[12](https://pubmed.ncbi.nlm.nih.gov/31870250/)][[13](https://pubmed.ncbi.nlm.nih.gov/30524730/)]. The theory of antagonistic pleiotropy essentially posits some genetic adaptations can trade long-term health for short-term reproductive success. However, it can be inferred that most genetic adaptations are antagonistically pleiotropic. + +Essentially, human DNA tends to degrade over time when it doesn't rightfully need to, as evidenced by the existence of biologically immortal organisms. Human DNA repair is also regulated and gene-specific. Given these facts, the interaction between gene degradation and gene repair is likely to be adaptive. This assigns every gene in our DNA that tends to degrade more with time a single antagonistically pleiotropic trait. Since most DNA in the human genome degrades over time, we can infer that over 50% of genes are antagonistically pleiotropic. + +Since adaptations to foods are no more or less genetic than any other adaptations, we can infer that most adaptations to food are also likely to be antagonistic pleiotropic as well. From here we just infer that antagonistic pleiotropy applies more to ancestral foods than it does to novel foods. Which would suggest that the foods to which we are most strongly adapted would tend to be most antagonistically pleiotropic. This increases the likelihood that ancestral foods trade long-term fitness for short-term reproductive success. + +For example, perhaps adaptations to sodium and saturated fat consumption, like regulated changes in blood pressure or lipoprotein secretion from the liver, may help to carry people to reproductive age without incident. However, those adaptations might actually increase the risk of poorer health later in life if those dietary exposures persist too long. This is why we cannot assume that natural diets are actually appropriate for maintaining the long-term health of modern humans. These adaptations to diet are likely to be antagonistic pleiotropic. + +Without scientific evidence to help inform our attitudes toward the relative health value of novel foods, the health value of those foods remains is a black box. Due to the principle of indifference, we have no particular reason to suspect that truly novel foods will be either beneficial or detrimental. However, if it can be demonstrated that both an ancestral food and a novel food have the same thriving potential during the reproductive years, we can actually infer that the novel food is to be favoured. + +Novel foods do not belong to the domain of foods that have the potential to be antagonistic pleiotropic, since we did not evolve consuming them. Conversely, the ancestral food in our scenario is likely to be antagonistically pleiotropic. Thus, the novel food is to be favoured over the ancestral food in this case. This concept can be illustrated clearly with a couple of simple tables. + +![][image7] +[image7]: /blog/huntergatherers/image7.png + +To summarize, we can infer that ancestral foods are likely to have both positive short-term health value, as well as negative long-term health value. However, in the absence of empirical data, our doxastic attitude toward the health value of novel foods should be one of agnosticism. When the thriving potential of novel foods and ancestral foods show non-inferiority, we infer that the novel foods is less likely to be detrimental for long-term health. Altogether, the argument can be summarized like this: + +![][argument1] +[argument1]: /blog/huntergatherers/argument1.png + +Essentially, once you equalize advantages across a given novel food and a given ancestral food, the inherent disadvantages of antagonistic pleiotropy would leave us favouring the novel food over the ancestral food for long-term health. From here we can infer a priori that a diet that maximizes benefits and minimizes risks for the most amount of people is likely to be a diet that is on some level unnatural or non-ancestral. It is also important to discuss what this position is **not** arguing. It is **not** being argued that every novel food is going to be superior to every ancestral food, and it is **not** being argued that all ancestral foods are bad. + +As an aside, one might point out that while ancestral foods like meat seem to increase the risk of many diseases, while other ancestral foods like fruit seem to decrease the risk of many diseases. So what gives? My arguments apply equally to fruit, and adaptations of fruit are also likely to be antagonistically pleiotropic. However, it is likely the case that the antagonistically pleiotropic pathways that are influenced by foods like fruit are less impactful than those influenced by foods like meat. + +Diet is about substitutions. Replacing meat with fruit lowers risk, but that doesn't mean that fruit is without long-term harms or risks as well. Bearing this in mind, I posit that if we truly want to maximize the thriving potential of food, we must engineer our own food. Assuming that no diet of natural foods will actually lower risk to zero, if we wanted to improve the health value of food even more, how would we accomplish this without artificially manipulating those foods? In fact, we have evidence that the health value of natural foods can be improved, with examples like Golden rice. + +# OPTIMAL DIETS + +Lastly, it has also been suggested by some Paleo diet advocates that certain hunter-gatherer migrant studies provide us with a justification for why hunter-gatherer diets are appropriate for modern humans. This is due to the fact that these studies demonstrate that when certain hunter-gatherer populations transition from their traditional diets to more Westernized diets, they experience increases in chronic disease risk [[14](https://pubmed.ncbi.nlm.nih.gov/6937778/)][[15](https://pubmed.ncbi.nlm.nih.gov/7462380/)]. However, this is ultimately irrelevant to my point. + +The fact that Western diets increase disease risk relative to certain hunter-gatherer diets does not actually lend any credibility to the notion that modern humans can achieve robust health that is equal to that of hunter-gatherers merely by emulating their diets. Perhaps the Western diet is so bad that it would negatively impact the health of any human population who ate it over the long-term. But, it could also be the case that hunter-gatherer diets are still inappropriate for modern humans in many ways鈥 ways that may not be obvious for the reasons I've discussed throughout this article. These are not incompatible concepts. + +The most I would have to grant is that a hunter-gatherer diet is likely an improvement over a Western diet. But that is a far cry from ascertaining that a hunter-gatherer diet is optimal for the long-term health of modern humans. This is just a gross overextrapolation from altogether irrelevant data. + +The last inference is the icing on the cake, and a bit more convoluted, but it is necessary to argue it to an ancestral diet advocate. This is next argument cuts to the core of their epistemology regarding ancestral diets and health. All we need to do is prime the ancestral diet advocate for the inference by asking them if they identify as "**F**" (as defined below). If they do, then we proceed. If they don't, then their motivations for advocating for ancestral diets diets isn't clear at all. + +![][argument2] +[argument2]: /blog/huntergatherers/argument2.png + +Essentially, if our interlocutor identifies as "**F**", then all we need to do is demonstrate to them that "**N**" exists, and we're essentially home free. If they accept that "**N**" exists and they also identify as "**F**", then they should be in favour of substituting such a novel food for such an ancestral food. If they don't, then they have a contradiction. This is where the ancestral diet advocate could face quite a dilemma. + +However, there is a way around this for them, but it's absurd. They can simply reject the evidence for "**N**" existing. Which would be a hilarious move for them to make, but they can make it if they want. However, implicit in this move is the rejection of all evidence that supports "**N**" existing, regardless of the quality. + +For example, if they maintain that animal fat consumption is more supportive of health than vegetable fat consumption, they'd need to reject the multiple meta-analyses and meta-regression analyses of randomized controlled trials on the subject, as well as the consistency of effect in seen in high internal validity epidemiology. The implications of taking such a position are hilarious, because they could very easily have to also reject many other diet/lifestyle-disease relationships that they likely take for granted on much weaker evidence. Such as exercise and alcohol consumption affecting cardiovascular disease risk. + +It is likely that the vaunted "optimal human diet", which is to say a diet that maximizes long-term health for the greatest number of people, has actually yet to be discovered. Ultimately, to answer the question of what foods are healthy, we need science. We need robust outcome data on modern human beings, not speculation and appeal to nature fallacies. We need this science to teach us how to eat. + +# UPDATE + +Chris Masterjohn has apparently written a [lengthy response](https://chrismasterjohnphd.substack.com/p/ancestral-health-vs-antagonistic) to my position on antagonistic pleiotropy and how it relates to the long-term health value of ancestral foods. Many have asked me to rebut the article, but it's not clear to me why I should. He's not interacting with the argument at all. Let me give you an example to help illustrate my feelings in this matter. If I give someone an argument, and their response is to turn around and scream at a wall, should I feel any sort of drive to "rebut" the screaming? I don't think so. + +Constructing a lengthy reply to Masterjohn's article would only serve to give readers the impression that he actually said anything of substance against my position, which he hasn't. When someone tells me that they disagree with an argument that I have presented, I take this to mean one of two things. Either they have an argument of their own that forms a conclusion that is the negation of at least one of my premises, or they give at least one of my premises such low credence that they just deny that it's true. Masterjohn didn't do either in his article. + +Masterjohn just spends the article giving low credence to concepts that aren't even entailed from the argument itself, so why should I care? It's doubly hilarious to expect me to rebut his article when he actually signed off on the entailments of my position at least twice in our [debate](https://chrismasterjohnphd.substack.com/p/the-ancestral-health-debate) when he was actually interacting with the argument itself and not going off on tangents. Once at [58:26](https://youtu.be/n1I5xgvERbo?t=3506) and again at [1:39:16](https://youtu.be/n1I5xgvERbo?t=5956). Not sure what more there is to comment on here. + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting! + +# BIBLIOGRAPHY""" + , articleReferences = + [ { author = "Anthony A. Volka and Jeremy A. Atkinson" + , title = "Infant and child death in the human environment of evolutionary adaptation" + , journal = "Evolution and Human Behavior" + , year = "2013" + , link = "https://www.sciencedirect.com/science/article/abs/pii/S1090513812001237" + } + , { author = "Lee Hooper, et al." + , title = "Reduction in saturated fat intake for cardiovascular disease" + , journal = "Cochrane Database Syst Rev" + , year = "2020" + , link = "https://pubmed.ncbi.nlm.nih.gov/32428300/" + } + , { author = "Arash Etemadi, et al." + , title = "Mortality from different causes associated with meat, heme iron, nitrates, and nitrites in the NIH-AARP Diet and Health Study: population based cohort study" + , journal = "BMJ" + , year = "2017" + , link = "https://pubmed.ncbi.nlm.nih.gov/28487287/" + } + , { author = "Andrew Mente, et al." + , title = "Associations of urinary sodium excretion with cardiovascular events in individuals with and without hypertension: a pooled analysis of data from four studies" + , journal = "Lancet" + , year = "2016" + , link = "https://pubmed.ncbi.nlm.nih.gov/27216139/" + } + , { author = "Rik H G Olde Engberink, et al." + , title = "Use of a Single Baseline Versus Multiyear 24-Hour Urine Collection for Estimation of Long-Term Sodium Intake and Associated Cardiovascular and Renal Risk" + , journal = "Circulation" + , year = "2017" + , link = "https://pubmed.ncbi.nlm.nih.gov/28655835/" + } + , { author = "Thomas Flatt and Linda Partridge" + , title = "Horizons in the evolution of aging" + , journal = "BMC Biol" + , year = "2018" + , link = "https://pubmed.ncbi.nlm.nih.gov/30124168/" + } + , { author = "Ryan McCready" + , title = "For Olympic Athletes, Is 30 the New 20?" + , journal = "" + , year = "2016" + , link = "https://venngage.com/blog/olympics/" + } + , { author = "Hillard Kaplan, et al." + , title = "Coronary atherosclerosis in indigenous South American Tsimane: a cross-sectional cohort study" + , journal = "Lancet" + , year = "2017" + , link = "https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(17)30752-3/fulltext" + } + , { author = "Mahesh V Madhavan, et al." + , title = "Coronary artery calcification: pathogenesis and prognostic implications" + , journal = "J Am Coll Cardiol" + , year = "2014" + , link = "https://pubmed.ncbi.nlm.nih.gov/24530667/" + } + , { author = "Michael Gurven" + , title = "Infant and fetal mortality among a high fertility and mortality population in the Bolivian Amazon" + , journal = "Soc Sci Med" + , year = "2012" + , link = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3502712/" + } + , { author = "Horvath et al." + , title = "An epigenetic clock analysis of race/ethnicity, sex, and coronary heart disease" + , journal = "Genome Biol" + , year = "2016" + , link = "https://pubmed.ncbi.nlm.nih.gov/27511193/" + } + , { author = "J Mitteldorf" + , title = "What Is Antagonistic Pleiotropy?" + , journal = "Biochemistry (Mosc)" + , year = "2019" + , link = "https://pubmed.ncbi.nlm.nih.gov/31870250/" + } + , { author = "He and Zhang" + , title = "Toward a molecular understanding of pleiotropy" + , journal = "Genetics" + , year = "2006" + , link = "https://pubmed.ncbi.nlm.nih.gov/16702416/" + } + , { author = "J M Stanhope and I A Prior" + , title = "The Tokelau island migrant study: prevalence and incidence of diabetes mellitus" + , journal = "N Z Med J" + , year = "1980" + , link = "https://pubmed.ncbi.nlm.nih.gov/6937778/" + } + , { author = "J M Stanhope and I A Prior" + , title = "The Tokelau Island Migrant Study: serum lipid concentration in two environments" + , journal = "J Chronic Dis" + , year = "1981" + , link = "https://pubmed.ncbi.nlm.nih.gov/7462380/" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/MeatApologetics.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/MeatApologetics.elm new file mode 100755 index 0000000..ae21e11 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/MeatApologetics.elm @@ -0,0 +1,415 @@ +module Config.Pages.Blogs.MainBlog.MeatApologetics exposing (articleMeatApologetics) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleMeatApologetics : BlogArticle +articleMeatApologetics = + { articleName = "A Systematic Appraisal of Pro-meat Apologetics" + , articleLink = Path.toString Path.Blog_Meatapologetics + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "meatapologetics" + , articlePublished = "Apr 13, 2022" + , articleBody = """ +Recently, a controversial paper reviewing both the health and environmental benefits of animal foods was published to the journal, Animal [[1](https://pubmed.ncbi.nlm.nih.gov/35158307/)]. This was brought to my attention by one of my patrons, who specifically requested that I respond to the first section of the article, titled "why the nutritional case against animal source foods may be overstated". My response was originally supposed to be a reaction video for my patrons. But, the more of the paper that I read, the more I realized that this would require a much more systematic appraisal. + +Although I have only reviewed one section of the paper, I am told that the rest of the paper is also filled with questionable claims, falsehoods, half-truths, and dubious reasoning. As such, I will leave it to people with more domain knowledge to comment on the latter sections of the paper. As for the section that I was tasked with critiquing, I'm completely comfortable with systematically evaluating the claims contained within it. So, let's get into it. + +>_Even though advocacy for moderate to heavy restriction [of animal foods] is echoed by various public heath institutions worldwide, suggesting apparent consensus, the scientific debate is not settled as the evidence has been challenged by various scientists, both for red meat (Truswell, 2009; Hite et al., 20100; Alexander et al., 2015; Klurfeld, 2015; Kruger & Zhou, 2018; H盲ndel et al., 2020; Hill et al., 2020; Johnston et al., 2019; Leroy and Cofnas, 2020; Sholl et al., 2021)_ + +**Weasel words:** + +Citing a couple of authors to represent the "public heath institutions" that advocate for animal food restriction, whilst also citing ten authors who challenge this notion, is a painfully misleading move. The evidence for reducing most animal foods is actually extensive, with only a small handful of exceptions. Not only that, but it's also questionable whether or not any public health institutions actually advocate for the moderate or heavy restriction of these exceptions. It's unclear, because the terms "moderate" and "heavy" are not clearly defined. + +**Motte and Bailey:** + +The paragraph began by referencing the presumed attitudes of "public health institutions" toward animal foods more broadly. A truly extraordinary claim that is not supposed by any of the their reference material. They then follow it up by citing authors who have pushed back specifically on these institutions' attitudes toward red meat and saturated fat. Most public health institutions that are concerned with nutrition do indeed advocate for the restriction of these foods. + +>_...and saturated fat, which is not exclusive to animal source foods (Astrup et al., 2020; Krauss & Kris Etherton, 2020)._ + +**Red herring:** + +While there are some plant foods that are high in saturated fat, we need not consume them. Those sources of saturated fat can be avoided on an animal food restricted diet. This is less true of the animal foods that these authors are specifically attempting to defend. Not only that, but no public health institutions are advocating for the consumption of plant foods like coconut or palm oil. So, I'm not even sure what this point is meant to address. + +# EPIDEMIOLOGY THO + +>_Among other concerns, one of the objections is that pleas for restriction are based on conflicting findings and observational relationships that are not necessarily causal, suffering from confounding and bias (Grosso et al., 2017; H盲ndel et al., 2020; Hill et al., 2020; Leroy & Barnard, 2020; Nordhagen et al., 2020)._ + +**Potential contradiction:** + +Confounding is a causal concept. All posited confounders need to be validated as genuine confounders using evidence that meets these authors' bar for causal inference. Otherwise we don't have a reason to consider them confounders at all. The truth is that virtually all accepted confounders in this domain are validated via epidemiological data itself. I can formalize the argument like this: + +![][argument1] +[argument1]: /blog/meatapologetics/argument1.png + +In the above syllogism, the authors could very easily be affirming P and 卢P. If the authors are rejecting epidemiological evidence while simultaneously positing confounders that will be validated with epidemiological evidence, their position would entail a contradiction. + +>_Unwarranted use of causal language is nonetheless widespread in the interpretation of nutritional epidemiological data, thereby posing a systemic problem and undermining the field鈥檚 credibility (Cofield et al., 2010; Ioannidis, 2018)._ + +**Red herring:** + +Firstly, there is no reference for the claim that causal language is widespread in the interpretation of nutritional epidemiological data. Secondly, even if it were true, nutritional epidemiology has excellent validation for both its results as well as the underpinning methodology, considering its limitations and shortcomings. + +If the goalpost for causal inference is human experiments, then the use of causal language is likely to be warranted more often than it is unwarranted. This is due to the high degree of concordance between the results of nutritional epidemiology and randomized controlled trials [[2](https://pubmed.ncbi.nlm.nih.gov/34526355/)][[3](https://pubmed.ncbi.nlm.nih.gov/23700648/)][[4](https://pubmed.ncbi.nlm.nih.gov/34308960/)]. Regardless, it's not clear how the widespread use of causal language poses either a systemic problem or undermines the field's credibility. Again, it just isn't clear what the point of these claims is supposed to be. + +>_Moreover, the associations between red meat and metabolic disease have not only been evaluated as weak..._ + +**Red herring:** + +It is not true that these associations are weak. When meta-analytically summated the associations are often close to linear. Not only for total mortality but also for many major chronic diseases [[5](https://pubmed.ncbi.nlm.nih.gov/28446499/)][[6](https://pubmed.ncbi.nlm.nih.gov/29039970/)][[7](https://pubmed.ncbi.nlm.nih.gov/28397016/)]. The associations generally only appear weak when there are certain sources of bias present, such as inadequate exposure contrasts, follow-up times, participant numbers, or even overadjustment for mediators. + +>_...translating into small absolute risks based on low to very low certainty evidence (Johnston et al., 2019)..._ + +**Red herring:** + +Absolute risk and certainty are concepts that don't strongly interact. You can have low absolute risks and a high degree of certainty, such as with successful human trials with event-based stopping conditions. You can also have high absolute risks and low certainty, such as with underpowered human studies with high event rates. + +It's also not clear why the authors would choose to favour absolute risk over relative risk, considering that the maximum possible absolute risk differences are going to be dictated by event rates in the comparator population. This concept can be easily illustrated referring to populations that have longer follow-up times, such as with the literature on LDL and cardiovascular disease risk [[8](https://pubmed.ncbi.nlm.nih.gov/30571575/)]. + +![][image1] +[image1]: /blog/meatapologetics/image1.png + +The distance between the two green lines represents the absolute risk difference between low and high LDL over 10 years. Whereas the distance between the two red lines represents the absolute risk difference between low and high LDL over 30 years. Here we can see that if insufficient follow-up is observed, absolute risk differences will inevitably be smaller. This is because event rates naturally increase with time. + +The meta-analysis by Vernooij et al. (2019) that the authors cited to support the claim of "small" absolute risk differences with red meat had a median follow-up time of 10.5 years for cardiovascular disease [[9](https://pubmed.ncbi.nlm.nih.gov/31569217/)]. Despite this limitation, Vernooij et al. did not appear to have made any substantive attempt to explore the heterogeneity between their included studies with subgroup analyses or meta-regression analyses. Had they done so, they could have subgrouped by follow-up time and inevitably found that the absolute risks were higher in cohorts with longer follow-ups. + +But we can take it a step further. We can reveal the inconsistency in their reasoning by formalizing their argument against nutritional epidemiology, and showing that their criticisms apply to, say, human experiments as well. + +![][argument2] +[argument2]: /blog/meatapologetics/argument2.png + +Using the authors' own logic, we can show that they would have to dismiss human experimental evidence on the same basis. This is because human experimental evidence is vulnerable to the same types of limitations that the authors are positing as presumably invalidating for nutritional epidemiology. + +>_Associations are particularly noticeable in North America, where meat is often consumed through a fast-food window and where high-meat consumers tend to also eat less healthy diets and follow less healthy lifestyles in general. In a Canadian study, eating more meat was only associated with more all-cause cancer incidence for the subpopulation eating the lowest amounts of fruits and vegetables (Maximova et al., 2020)._ + +**Potential contradiction:** + +Again, the authors appear to be dismissing nutritional epidemiological evidence on the basis of confounding, without justifying their asymmetrical attitudes toward the supporting evidence for the confounders they're positing. What is true of the evidence between fruits and vegetables and cancer and the evidence between meat and cancer, such that we can infer causality for one and not the other? + +**Equivocation:** + +This is the second time the authors have shifted the goalpost regarding what types of animals foods that are in question. First they were discussing animal foods simpliciter, only to shift the goalpost to red meat. Now they were talking about red meat, and have shifted goalposts to meat as a broad category. Whether this is intentional or just the result of sloppy writing, it is not a good look for the authors. + +>_Several large-scale population-based studies, performed in individuals with 鈥榟ealthy lifestyles鈥, such as the Oxford-EPIC Study (Key et al., 2003) and the 45-and-Up Study (Mihrshahi et al., 2017), also find that the negative effects of red meat consumption on all-cause mortality become benign._ + +**Red Herring:** + +From the wider literature, the typical threshold for harm with meat is at approximately 100g/day on average [[5](https://pubmed.ncbi.nlm.nih.gov/28446499/)]. + +![][image2] +[image2]: /blog/meatapologetics/image2.png + +The Oxford-EPIC cohort lacks power in those ranges [[10](https://pubmed.ncbi.nlm.nih.gov/23497300/)]. Data on the exposure contrasts in the 45-and-Up Study are even more unpersuasive [[11](https://pubmed.ncbi.nlm.nih.gov/28040519/)]. We have far more robust data than this, with better internal validity, follow-up times, and measurements. + +In this Japanese cohort with a follow-up of 14 years, diet and lifestyle covariates were largely balanced across the quantiles of red meat intake [[12](https://pubmed.ncbi.nlm.nih.gov/33320898/)]. In fact, many covariates we'd suspect to be detrimental actually favoured meat consumption. Despite this, total meat was still associated with a statistically significant 21% increase in all-cause mortality among men between the ages of 65 and 79 years old, and a borderline-significant 41% increase in all-cause mortality risk among women between the ages of 45 and 54 years old. + +![][image3] +[image3]: /blog/meatapologetics/image3.png + +These results could indicate that meat consumption is more likely to lead to premature death due to an unmeasured cause earlier in life than with men. Perhaps the seemingly premature increase in mortality could plausibly be attributed to an unmeasured female-specific endpoint, such as breast cancer [[13](https://pubmed.ncbi.nlm.nih.gov/31389007/)]. + +Again, just to hammer the point home, we can actually defeat the authors' position with a simple modus tollens. + +![][argument3] +[argument3]: /blog/meatapologetics/argument3.png + +Given the weight and strength of the evidence in favour of meat restriction for longevity, it would be quite hilarious to see the authors attempt to reject P2. The evidence they referenced from the Oxford-EPIC cohrot and the 45-and-Up Study could be used in an attempt to reject P2. However, that evidence is very easily superseded by higher internal validity evidence with greater power, not to mention in populations that don't suffer from the same supposed confounding. + +>_If red meat were indeed causally driving the associations, one would anticipate finding stronger effects in systematic reviews looking specifically at red meat intake (able to evaluate a large intake gradient) compared to dietary pattern studies (smaller intake gradient) (Johnston et al., 2018)._ + +**Potential contradiction:** + +The association between all-cause mortality and red meat consumption is stronger than the inverse association between all-cause mortality and fruit and vegetable consumption in the most well-done systematic reviews [[5](https://pubmed.ncbi.nlm.nih.gov/28446499/)]. Again, what is true of the association between fruits and vegetables and all-cause mortality and red meat and all-cause mortality, such that we can infer causality for one and not the other? + +>_On the contrary, the absolute risk reductions from both reviews specific to intake versus dietary pattern (Johnston et al., 2019) were very similar in their magnitude of effect, indicating the possibility that, even after adjustment, a multitude of other diet or lifestyle components may be confounding the associations irrespective of whether they are negative or positive (Zeraatkar & Johnston, 2019)._ + +**Red herring:** + +This literally just doesn't make any sense. Similar effect sizes are not indicators of multicollinearity or interaction between exposures. I have no idea how the authors come to this conclusion. If I punch people in the face on Mondays and kick people in the balls on Wednesdays, the risk of injury is equal between both Mondays and Wednesdays, but Mondays and Wednesdays aren't the same thing. Just as dietary patterns and individual foods aren't the same thing. + +Just because the contribution of meat and diet/lifestyle factors have similar magnitudes of effect doesn't mean a mutual adjustment would do anything to either effect. Both exposures could be interacting with the outcome without interacting with each other. This is easily one of the most bizarre claims in the entire paper. They're also comparing effect sizes between analyses investigating different populations. It's just unfounded speculation. + +>_While such troubling incongruity can be partially ascribed to differences in methodological set-up between studies, it has been hypothesised that the associations found in the West could at least partially be seen as cultural constructs generated by responses to norms of eating right (Hite, 2018)._ + +**Red herring:** + +Again, these associations are seen in populations that are not consuming Westernized diets [[12](https://pubmed.ncbi.nlm.nih.gov/33320898/)]. I'm not entirely sure why the authors seem to believe that these associations are limited to Western populations eating Western diets with Western attitudes toward health. + +>_An important question to consider, therefore, is "whether intake of animal and plant proteins is a marker of overall dietary patterns or of social class" (Naghshi et al., 2020). Upper-middle classes, who are particularly sensitive to the ideologies of eating virtuous, tend to eat less red meat and saturated fat because of what they symbolise, and because of what they are being told by authorities and moralising societal discourse (Leroy & Hite, 2020). However, those same people are also more educated, wealthier, and healthier in general (Leroy & Cofnas, 2020)._ + +**Equivocation:** + +Yet again, the authors have shifted their goalpost. They went from animal foods to red meat, from red meat to meat, and now from meat to animal protein. Again, it's unclear if this is intentional or just really atrocious writing on the part of the authors. But, I will attempt to keep my rebuttals relevant to the authors' most recently stated goalpost. + +**Bullshit:** + +These associations are seen even when socioeconomic status are largely balanced across the quantiles of animal protein intake [[14](https://pubmed.ncbi.nlm.nih.gov/33624505/)]. In fact, in this analysis of the Women's Health Initiative Observational Study by Sun et al. (2021), those who consumed the most plant protein were typically in the lower socioeconomic strata. This is in direct opposition to their speculation about socioeconomic status confounding. Additionally, replacing animal protein with plant protein associates with a reduced risk of all-cause mortality even in populations that are situated in a higher socioeconomic stratum [[15](https://pubmed.ncbi.nlm.nih.gov/27479196/)]. + +>_Even if multivariable models are used to account for such confounding effects as smoking, alcohol consumption, or obesity, it may not be possible to disentangle the effects of all dietary and lifestyle factors involved, especially given the low certainty of evidence._ + +**Potential contradiction:** + +Yet again, we find ourselves needing to ask the authors what is true of the evidence between smoking/alcohol/obesity and health outcomes and animal foods/red meat/meat/animal protein and health outcomes such that we can infer causality for one and not the other? Thus far, the authors have not divulged any clear answers to this question in their paper. + +>_Therefore, WHO (2015) mentions that eating unprocessed red meat "has not yet been established as a cause of cancer鈥 (emphasis added)..._ + +**Appeal to authority:** + +Causal inference is an epistemic question, informed and largely adjudicated by statistics. It's rather interesting that the authors tend to offer next to no critical appraisal of methodology or interpretation when the results concord with their (obvious) biases. So far any evidence against animal food consumption as been scrutinized extensively, albeit fallaciously, but the same attempt at rigour is not extended to the counterevidence. + +>_...while IARC (2015) stated that "chance, bias, and confounding could not be ruled out鈥 with respect to the association between red meat intake and colorectal cancer. According to some (e.g., Hite, 2018), nutritional epidemiology of chronic disease is thus at risk of capturing cultural artefacts and health beliefs within observational relationships, rather than reliably quantifying actual health effects. Such observations are then used to reinforce dietary advice, potentially creating a positive feedback loop (Leroy & Hite, 2020)._ + +**Red herring:** + +This is true of any association, as per the Duhem-Quine thesis [[16](https://en.wikipedia.org/wiki/Duhem%E2%80%93Quine_thesis)]. Causal inference is a separate consideration, and the fact that auxiliary hypotheses can be proposed is tangential. The authors imply that the ability to appeal to these auxiliary hypotheses presents a barrier to reliably quantifying actual health effects. What type of evidence do they propose needs to be used, then? Because no scientific evidence is free from this limitation. + +>_This problem is further underlined by the lack of support from intervention trials (O鈥機onnor et al., 2017; Turner & Lloyd, 2017; Leroy & Cofnas, 2020), which are designed to account for known and unknown confounders, and the fact that the mechanistic rationale for red meats remains speculative at best (Delgado et al., 2020; Leroy & Barnard, 2020)._ + +**Equivocation:** + +The authors' references don't support the claim. Until this point they were discussing the impact of meat products on disease outcomes, not disease risk markers or biochemical mechanisms. However, one of the only studies that did attempt to replace animal foods in the diet also showed one of the largest effect sizes in reducing the risk of acute myocardial infarction [[17](https://pubmed.ncbi.nlm.nih.gov/7911176/)]. On top of that, the most well-controlled human mechanistic studies also support the inference that meat increases CVD risk factors [[18](https://pubmed.ncbi.nlm.nih.gov/31161217/)]. + +>_Taken together, various public health organisations make a case for the reduction of animal source foods based on their interpretation of the prevailing scientific evidence. Others, however, argue that conclusive proof for (some of) these recommendations is missing, particularly given the contribution of animal source foods to closing essential micronutrient gaps (Leroy & Barnard, 2020)._ + +**Potential contradiction:** + +The authors need to define "conclusive proof", and demonstrate how it has been shown for all variables that they are positing as confounding. However, it's beginning to sound as though they're getting close to planting their goalpost at human experimental evidence. However, this would be a mistake, as they've already posited a number of confounders for which we have no human experimental evidence for causal interaction with the outcomes that have been discussed. + +# NATURAL THO + +>_Arguing for strong reductions contradicts common-sense approaches, especially from an anthropological perspective (Gupta, 2016; Leroy et al., 2020a). Meat, marrow, and seafood are evolutionary components of the human diet, even if they may have displayed some nutritional and biochemical differences compared to what is produced today in intensified operations, e.g., with respect to fat composition (Kuipers et al., 2010; Manzano-Baena & Salguero-Herrera 2018) and the presence of phytochemicals (van Vliet et al., 2021a, and 2021b). The health impact of these differences may be significant but remains difficult to quantify, though polyunsaturated fatty acids/saturated fatty acids and omega 3/6 ratios of wild ruminants living in current times are similar to pasture-raised (grass-fed) beef, but dissimilar to grain-fed beef (Cordain et al., 2002b). Be that as it may, the abundant consumption of animal source foods over 2.5 million years has resulted in an adapted human anatomy, metabolism, and cognitive capacity that is divergent from other apes (Milton, 2003; Mann, 2018). Also, many hunter-gatherer populations consume far larger amounts of meat and other animal source foods (sometimes > 300 kg/p/y), than what is now consumed in the West (around 100 kg/p/y). This is likely still much below what was once valid for early humans preying on megafauna (Ben-Dor & Barkai, 2020). On a caloric basis, the animal:plant ratio of Western diets (about 1:2 in the US; Rehkamp, 2016) is the inverse of most pre-agricultural diets (mean of 2:1; Cordain et al., 2000). Such high amounts of animal source foods are not necessarily indicative of a health advantage, but it can be assumed that animal source foods are at least compatible with good health._ + +**Equivocation:** + +Apparently we've gone from talking about animal foods to talking about red meat, from talking about red meat to talking about meat, from talking about meat to talking about animal protein, and now from talking about animal protein to to talking about meat, marrow, and seafood. This is truly astonishing. Especially considering that now they're including seafood, which no major public health institution recommends that we eschew. + +**Appeal to nature:** + +Just because meat is an integral part of our evolutionary history does not actually mean that it is necessarily beneficial for the long-term health of modern humans. In fact, there are valid reasons to suspect that foods to which we are most strongly adapted may actually be more detrimental for long-term health, via antagonistic pleiotropy. I discuss this in a previous blog article [[19](https://www.the-nutrivore.com/post/should-we-eat-like-hunter-gatherers)]. + +Appeal to nature fallacies basically affirm that because something is natural (or in this case, "evolutionary"), it then follows that it is good. However, taking this position leads to hilarious consequences. Let me demonstrate by formalizing the authors' position once more. + +![][argument4] +[argument4]: /blog/meatapologetics/argument4.png + +It should be obvious straight away why this is problematic. There are plenty of things that are natural or "evolutionary" that we also consider to be undesirable, and we can illustrate that with a reductio ad absurdum. + +![][argument5] +[argument5]: /blog/meatapologetics/argument5.png + +If animal foods are good by virtue of them being natural or "evolutionary", the authors will have to explain to me why something like rape is not good. As they share the same property of being evolutionary. + +>_So-called "diseases of modernity" were rare in ancestral communities, in contrast to what is now seen in regions where Western diets rich in energy-dense foods and (sedentary) lifestyles prevail. In the US, 71% of packaged foods are ultraprocessed (Baldridge et al., 2019)..._ + +**Red herring:** + +There are a number of epistemic barriers that challenge inferences about the long-term health value of more primitive living conditions for modern humans, such as survivorship bias [[20](https://pubmed.ncbi.nlm.nih.gov/25489027/)]. Primitive cultures tend to have very high rates of infant and child mortality, which modern medicine can rescue. When those children are _not_ saved, the population will appear more robust by weeding out less resilient people. When those children _are_ saved, you increase the number of less resilient people within the population. + +>_Even if this has been described as a "paradox鈥 (Cordain et al., 2002a), it mainly indicates that today鈥檚 assumptions about healthy diets, as being de facto low in red meat and saturated fat, are flawed and represent a romanticised Western viewpoint._ + +**Strawman:** + +No public health institutions are suggesting that healthy diets are _defined_ by the absence of red meat and saturated fat. Rather, diets lower in red meat and saturated fat tend to be healthier than diets that are higher in red meat and saturated fat. But, this doesn't mean that other factors don't also matter. These dietary patterns have many other characteristics that contribute to healthfulness that have nothing to do with red meat or saturated fat. + +>_To sum up, although animal source foods are primary components of the Western diet, they are also evolutionary foods to which the human body is anatomically and metabolically adapted, up to the level of the microbiome (Sholl et al., 2021), and has always obtained key nutrients from._ + +**Appeal to nature:** + +The status of red meat as an evolutionary food is tangential to the question of whether or not red meat increases long-term disease risk in modern populations. Investigations into the health status of primitive cultures is insufficient to inform this question. + +>_Although further research may be needed, their role in chronic diseases could as well be a mere artefact based on association with the actual damage from other dietary and lifestyle factors. It is uncertain yet possible that high intake of red meat could become problematic in a contemporary Western context._ + +**Red herring:** + +Again, this is true of any association. Causal inference is a separate consideration, and the fact that auxiliary hypotheses can be proposed is, again, tangential. + +**Potential contradiction:** + +For the last time, posited confounders require validation that meets the authors' bar for causal inference. Thus far, no such bar has been provided and no validation was offered for any of the confounders that were posited. That which is stated without evidence can be dismissed without evidence. Anyone can baselessly speculate. + +# TSIMANE THO + +>_Moreover, contemporary cultures that have maintained traditional diets and lifestyles typically have low burdens of chronic disease (e.g., Kaplan et al., 2017)._ + +**Red herring:** + +The authors reference a cross-sectional analysis of the Tsimane population conducted by Kaplan et al. (2017) [[21](https://pubmed.ncbi.nlm.nih.gov/28320601/)]. It's questionable whether or not their results qualify as low burdens of chronic disease for that population in the first place. + +![][image4] +[image4]: /blog/meatapologetics/image4.png + +This is made even more questionable after accounting for ~15-year age overestimations that were likely to have biased their results [[22](https://immunityageing.biomedcentral.com/articles/10.1186/s12979-019-0165-8)][[23](https://pubmed.ncbi.nlm.nih.gov/27511193/)][[24](https://pubmed.ncbi.nlm.nih.gov/34038540/)]. After this adjustment, the cardiovascular disease burden within the Tsimane is likely largely comparable with the results of the MESA cohort. + +![][image5] +[image5]: /blog/meatapologetics/image5.png + +Here on the chart above we see Tsimane age estimates using DNA methylation on the Y axis, against Tsimane age estimates using the methods of Kaplan et al. on the X axis. Kaplan et al. (2017) estimated the ages of the Tsimane participants using written records, relative age lists, dated events, photo comparisons of people with known ages, and cross-validation of information from independent interviews of kin. + +Apparently such methodology would appear to introduce a fair amount of bias, as the more objective measures of age tend not to agree with them. Furthermore, all of these more robust measures of age seem to point to overestimations on the party of Kaplan et al. that are all roughly in the same ballpark of 10-20 years. + +**Equivocation:** + +The category of "chronic disease" is a superset, including many individual diseases. The only disease endpoint investigated in the authors' reference was cardiovascular disease progression (measured by coronary artery calcification). So, I'm not sure why they feel justified in referring to chronic disease as a broad category with this single reference. + +To wrap this up, I'd just like to say that I've never before seen a peer-reviewed publication that was so densely packed with logical fallacies and inconsistencies. Mind you this is only the first section, related to disease risk. I was only responsible for appraising this section, but from what I've been told about the remainder of the paper it could potentially be even more absurd. Which is scary to me. + +Altogether the authors were guilty of eleven red herrings, six potential contradictions, five equivocations, and eight other assorted fallacies. From what I've read, no truly persuasive arguments were offered in favour of their view, and their attempts to criticize the prevailing paradigm were uniformly hollow and superficial. + +Ultimately, the authors actually describe the absurdity of their approach better than I could in the introduction of their paper. Truly astonishing. + +>_Due to constraints in format, we restrict ourselves to generating a perspective that favours concepts over details and methodological data._ + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting! + +# BIBLIOGRAPHY""" + , articleReferences = + [ { author = "Leroy, Fr茅d茅ric, et al." + , title = "Animal Board Invited Review: Animal Source Foods in Healthy, Sustainable, and Ethical Diets - An Argument against Drastic Limitation of Livestock in the Food System" + , journal = "Animal: An International Journal of Animal Bioscience" + , year = "2022" + , link = "https://doi.org/10.1016/j.animal.2022.100457" + } + , { author = "Schwingshackl, Lukas, et al." + , title = "Evaluating Agreement between Bodies of Evidence from Randomised Controlled Trials and Cohort Studies in Nutrition Research: Meta-Epidemiological Study" + , journal = "BMJ (Clinical Research Ed.)" + , year = "2021" + , link = "https://doi.org/10.1136/bmj.n1864" + } + , { author = "Moorthy, Denish, et al." + , title = "Concordance Between the Findings of Epidemiological Studies and Randomized Trials in Nutrition: An Empirical Evaluation and Citation Analysis: Nutritional Research Series, Vol. 6" + , journal = "Agency for Healthcare Research and Quality (US)" + , year = "2013" + , link = "http://www.ncbi.nlm.nih.gov/books/NBK138246/" + } + , { author = "Beyerbach, Jessica, et al." + , title = "Evaluating Concordance of Bodies of Evidence from Randomized Controlled Trials, Dietary Intake, and Biomarkers of Intake in Cohort Studies: A Meta-Epidemiological Study" + , journal = "Advances in Nutrition (Bethesda, Md.)" + , year = "2022" + , link = "https://doi.org/10.1093/advances/nmab095" + } + , { author = "Schwingshackl, Lukas, et al." + , title = "Food Groups and Risk of All-Cause Mortality: A Systematic Review and Meta-Analysis of Prospective Studies" + , journal = "The American Journal of Clinical Nutrition" + , year = "2017" + , link = "https://doi.org/10.3945/ajcn.117.153148" + } + , { author = "Bechthold, Angela, et al." + , title = "Food Groups and Risk of Coronary Heart Disease, Stroke and Heart Failure: A Systematic Review and Dose-Response Meta-Analysis of Prospective Studies" + , journal = "Critical Reviews in Food Science and Nutrition" + , year = "2019" + , link = "https://doi.org/10.1080/10408398.2017.1392288" + } + , { author = "Schwingshackl, Lukas, et al." + , title = "Food Groups and Risk of Type 2 Diabetes Mellitus: A Systematic Review and Meta-Analysis of Prospective Studies" + , journal = "European Journal of Epidemiology" + , year = "2017" + , link = "https://doi.org/10.1007/s10654-017-0246-y" + } + , { author = "Abdullah, Shuaib M., et al." + , title = "Long-Term Association of Low-Density Lipoprotein Cholesterol With Cardiovascular Mortality in Individuals at Low 10-Year Risk of Atherosclerotic Cardiovascular Disease" + , journal = "Circulation" + , year = "2018" + , link = "https://doi.org/10.1161/CIRCULATIONAHA.118.034273" + } + , { author = "Vernooij, Robin W. M., et al." + , title = "Patterns of Red and Processed Meat Consumption and Risk for Cardiometabolic and Cancer Outcomes: A Systematic Review and Meta-Analysis of Cohort Studies" + , journal = "Annals of Internal Medicine" + , year = "2019" + , link = "https://doi.org/10.7326/M19-1583" + } + , { author = "Rohrmann, Sabine, et al." + , title = "Meat Consumption and Mortality--Results from the European Prospective Investigation into Cancer and Nutrition" + , journal = "BMC Medicine" + , year = "2013" + , link = "https://doi.org/10.1186/1741-7015-11-63" + } + , { author = "Mihrshahi, Seema, et al." + , title = "Vegetarian Diet and All-Cause Mortality: Evidence from a Large Population-Based Australian Cohort - the 45 and Up Study" + , journal = "Preventive Medicine" + , year = "2017" + , link = "https://doi.org/10.1016/j.ypmed.2016.12.044" + } + , { author = "Saito, Eiko, et al." + , title = "Association between Meat Intake and Mortality Due to All-Cause and Major Causes of Death in a Japanese Population" + , journal = "PloS One" + , year = "2020" + , link = "https://doi.org/10.1371/journal.pone.0244007" + } + , { author = "Lo, Jamie J., et al." + , title = "Association between Meat Consumption and Risk of Breast Cancer: Findings from the Sister Study" + , journal = "International Journal of Cancer" + , year = "2020" + , link = "https://doi.org/10.1002/ijc.32547" + } + , { author = "Sun, Yangbo, et al." + , title = "Association of Major Dietary Protein Sources With All-Cause and Cause-Specific Mortality: Prospective Cohort Study" + , journal = "Journal of the American Heart Association" + , year = "2021" + , link = "https://doi.org/10.1161/JAHA.119.015553" + } + , { author = "Song, Mingyang, et al." + , title = "Association of Animal and Plant Protein Intake With All-Cause and Cause-Specific Mortality" + , journal = "JAMA Internal Medicine" + , year = "2016" + , link = "https://doi.org/10.1001/jamainternmed.2016.4182" + } + , { author = "Duhem鈥換uine Thesis" + , title = "Duhem鈥換uine Thesis" + , journal = "Wikipedia" + , year = "2022" + , link = "https://en.wikipedia.org/w/index.php?title=Duhem%E2%80%93Quine_thesis&oldid=1065410241" + } + , { author = "de Lorgeril, M., et al." + , title = "Mediterranean Alpha-Linolenic Acid-Rich Diet in Secondary Prevention of Coronary Heart Disease" + , journal = "Lancet (London, England)" + , year = "1994" + , link = "https://doi.org/10.1016/s0140-6736(94)92580-1" + } + , { author = "Bergeron, Nathalie, et al." + , title = "Effects of Red Meat, White Meat, and Nonmeat Protein Sources on Atherogenic Lipoprotein Measures in the Context of Low Compared with High Saturated Fat Intake: A Randomized Controlled Trial" + , journal = "The American Journal of Clinical Nutrition" + , year = "2019" + , link = "https://doi.org/10.1093/ajcn/nqz035" + } + , { author = "Hiebert, Nick" + , title = "Should Modern Humans Eat Like Hunter-Gatherers?" + , journal = "The Nutrivore" + , year = "2021" + , link = "https://www.the-nutrivore.com/post/should-we-eat-like-hunter-gatherers." + } + , { author = "Perrin, James M., et al." + , title = "The Rise in Chronic Conditions among Infants, Children, and Youth Can Be Met with Continued Health System Innovations" + , journal = "Health Affairs (Project Hope)" + , year = "2014" + , link = "https://doi.org/10.1377/hlthaff.2014.0832" + } + , { author = "Kaplan, Hillard, et al." + , title = "Coronary Atherosclerosis in Indigenous South American Tsimane: A Cross-Sectional Cohort Study" + , journal = "Lancet (London, England)" + , year = "2017" + , link = "https://doi.org/10.1016/S0140-6736(17)30752-3" + } + , { author = "Li, Mingde, et al." + , title = "Age Related Human T Cell Subset Evolution and Senescence" + , journal = "Immunity & Ageing" + , year = "2019" + , link = "https://doi.org/10.1186/s12979-019-0165-8" + } + , { author = "Horvath, Steve, et al." + , title = "An Epigenetic Clock Analysis of Race/Ethnicity, Sex, and Coronary Heart Disease" + , journal = "Genome Biology" + , year = "2016" + , link = "https://doi.org/10.1186/s13059-016-1030-0" + } + , { author = "Irimia, Andrei, et al." + , title = "The Indigenous South American Tsimane Exhibit Relatively Modest Decrease in Brain Volume With Age Despite High Systemic Inflammation" + , journal = "The Journals of Gerontology. Series A, Biological Sciences and Medical Sciences" + , year = "2021" + , link = "https://doi.org/10.1093/gerona/glab138" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/NagraGoodrich.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/NagraGoodrich.elm new file mode 100755 index 0000000..f5d22c6 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/NagraGoodrich.elm @@ -0,0 +1,332 @@ +module Config.Pages.Blogs.MainBlog.NagraGoodrich exposing (articleNagraGoodrich) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleNagraGoodrich : BlogArticle +articleNagraGoodrich = + { articleName = "Grading Tucker Goodrich: A Lesson in Debate Etiquette" + , articleLink = Path.toString Path.Blog_Nagragoodrich + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = True + , articleImage = "nagragoodrich" + , articlePublished = "May 12, 2022" + , articleBody = """ +Back in August of 2021, I invited [Tucker Goodrich](https://twitter.com/TuckerGoodrich) to a debate about the health value of seed oils. Tucker agreed to participate immediately, but after a brief back-and-forth (which resulted in Tucker [contradicting himself](https://twitter.com/The_Nutrivore/status/1428064287059324929?s=20&t=rmYpT72-5Tan31MnU_ptlw)), he eventually [withdrew](https://twitter.com/TuckerGoodrich/status/1428062578668830720?s=20&t=rmYpT72-5Tan31MnU_ptlw) without an explicit justification. Shortly thereafter he wrote a [blog article](https://yelling-stop.blogspot.com/2021/12/thoughts-on-nick-hieberts-comprehensive.html), wherein he paints a caricature of the events that transpired, which included everything from exaggerations to full-throated lies. Despite this, I reinvited him to debate multiple times since the incident, with either no response or outright refusals in reply. + +My initial invitation was prompted by my discovery that Tucker was actually just straight up [fabricating evidence](https://twitter.com/The_Nutrivore/status/1489863311155810304?s=20&t=DhYUMrwmqG260Ft7uNHozg) in a debate with a friend of mine, [Alan Flanagan](https://www.alineanutrition.com/about/). Needless to say, Tucker appears to be a particularly dishonest actor and a coward. When he wants to engage with me he does so in the safety of his blog, and critiques my writings and public statements with strawman arguments and red herrings, as well as just attacking very low-hanging fruit. At this point I don't think it's unfair to speculate that he conducts himself in this manner because he knows his arguments would not withstand scrutiny in a debate against me. + +Recently I was invited to set the record straight and shed some light on some of Tucker's more misleading claims on [Mark Bell's Power Project](https://www.youtube.com/watch?v=omzCi2CGoxo). Naturally Tucker felt compelled to write [a response](http://yelling-stop.blogspot.com/2022/02/thoughts-on-nick-hiebert-on-mark-bells.html) that was also particularly low-level and ultimately did not provide any stable defeaters for any of my positions. That didn't stop him from writing the article as though my arguments had been thoroughly dispatched, despite his counterarguments not even meaningfully interacting with what I had said to begin with. + +At this point I figured that enough was enough. So, I contacted an acquaintance of mine (who through this whole ordeal would become a friend), [Matthew Nagra](https://drmatthewnagra.com). I knew Matt was experienced in empirical debate and didn't hold any whacky heterodox views about seed oils, so I asked him if he'd be interested in debating Tucker. Matt agreed and promptly extended an invitation to Tucker. After Tucker agreed to a debate against Matt on [Simon Hill](https://twitter.com/theproof)'s [podcast](https://theproof.com/podcast/), it was time to get to work. With some help from [Matthew Madore](https://twitter.com/MattMadore576) over at [My Nutrition Science](https://www.mynutritionscience.com/authors-page/), we developed about 200 pages worth of debate-prep, syllogisms, and dialogue trees over approximately six weeks. + +As you will see throughout this article, our hard work paid off in the sweetest way possible. Matt was able to tease an absolutely enormous amount of dodges, strawman arguments, and straight up contradictions out of Tucker. It was more than any of us could have hoped for, and it truly reveals just how weak Tucker's arguments really are. The number of self-defeating bullets Tucker tried to bite in order to stay ahead in the debate was exquisite鈥 a true treat. All in all, I'm very pleased with the results. Matt did a truly phenomenal job. Enjoy! + +# DEBATE + +Let's start. Tucker and Matt both agree to the following: + +**Debate Rules:** + +1) The debate will be open and conversation-style. + +2) Both parties will avoid talking over one another. + +3) Both parties must answer questions directly. + +4) Both parties will make and address one claim at a time. + +5) Both parties will refrain from using personal insults. + +6) Both parties will provide adequate time for response. + +**Matt's Debate Proposition:** + +>_It is more reasonable to believe that seed oils are beneficial, rather than harmful, for coronary heart disease risk._ + +**Tucker's Definition of Seed Oils:** + +>_Oils made from seeds, like canola oil, soybean oil, sunflower oil, etc. Not the fleshy part of the fruit, like olive oil, palm oil, avocado oil, or coconut oil. With the primary focus being high linoleic acid oils._ + +# NUTRITIONAL EPIDEMIOLOGY + +**Rule violation (**[**30:20**](https://youtu.be/5nZSV-DyVRM?t=1820)**,** [**30:38**](https://youtu.be/5nZSV-DyVRM?t=1838)**):** + +Tucker breaks rule three twice. Matt provides evidence from three independent analyses that shows a concordance rate of 65-67% between nutritional epidemiology and nutritional randomized controlled trials (RCTs). Matt then asks Tucker if nutritional epidemiological evidence is concordant with nutritional RCTs two thirds of the time, which is a yes or no question. Tucker responds by saying its irrelevant due to being a tangent. However, it's not clear exactly how Matt's question is an irrelevant tangent, since it directly interacts with Tucker's opening claim at the beginning of the debate. + +**Strawman (**[**32:09**](https://youtu.be/5nZSV-DyVRM?t=1929)**):** + +Tucker finally answers "no" in response to Matt's question. When Matt asks why not, Tucker responds by saying "it's just a meta-analysis", which doesn't provide us with any clarity on why he provided the answer that he did. Tucker further elaborates with a strawman of Matt's position, stating that the data provided by Matt doesn't provide us with any information about the likelihood of a high-LA intervention being beneficial. However, this wasn't Matt's point. Matt's point was that Tucker's characterization of nutritional epidemiology on the whole was a red herring and false. + +# MINNESOTA CORONARY EXPERIMENT + +**Rule violation (**[**37:24**](https://youtu.be/5nZSV-DyVRM?t=2239)**):** + +Tucker breaks rule three for the third time. Matt shows Tucker the power calculation from MCE, and demonstrates that the trial was actually underpowered. Matt then asks Tucker if the trial had adequate power. Tucker again says that the question is irrelevant, stating that when a trial shows harm, it shouldn't be discounted based on a P-value. This is a truly bizarre answer, as Matt has yet to discount the trial. + +**Rule violation (**[**38:50**](https://youtu.be/5nZSV-DyVRM?t=2330)**):** + +Tucker breaks rule four. Instead of resolving Matt's point about MCE, Tucker wants to pivot to the LA Veterans Administration Hospital Trial (LAVAT). + +**Rule violation (**[**43:20**](https://youtu.be/5nZSV-DyVRM?t=2600)**):** + +Tucker breaks rule three for the fourth time. Matt presents a subgroup analysis from MCE that shows that older subjects who maintained the intervention diet for more one year tended to see a benefit when compared to the control diet. Matt asks Tucker if the older subjects in MCE who were consuming the intervention diet for longer saw a benefit compared to the control diet. Tucker rejects the question, saying that Matt is citing a "sub-population" analysis, and that it is superseded by the total outcome. This answer doesn't interact with Matt's question. + +**Rule violation (**[**42:56**](https://youtu.be/5nZSV-DyVRM?t=2576)**,** [**43:30**](https://youtu.be/5nZSV-DyVRM?t=2610)**):** + +Tucker breaks rule three for the fifth time. Matt rephrases his question, asking Tucker if harm would be more likely if subjects were to maintain the intervention diet for a longer period of time as opposed to a shorter period of time in MCE. Tucker again, dismisses a yes-or-no question as being irrelevant without any clarifying explanation. + +**Rule violation (**[**44:06**](https://youtu.be/5nZSV-DyVRM?t=2646)**):** + +Tucker breaks rule two. Matt wants to elaborate on why his question is important, but Tucker cuts him off. Matt allows it, but Tucker shouldn't have done it to begin with. + +**Rule violation (**[**48:18**](https://youtu.be/5nZSV-DyVRM?t=2898)**):** +Tucker breaks rule one and three. Tucker attempts an explanation for why MCE showed benefit for older subjects over two years. When Matt asks for further clarification, Tucker refuses to provide it. Not only is this directly dodging a question, this behaviour also calls into question whether or not Tucker is actually there for an open, conversation-style debate. + +**Rule violation (**[**49:07**](https://youtu.be/5nZSV-DyVRM?t=2947)**):** + +Tucker breaks rule four again. Instead of resolving Matt's point about MCE, Tucker wants to pivot to the Oslo Diet-Heart Study (ODHS). + + +**Strawman (**[**50:34**](https://youtu.be/5nZSV-DyVRM?t=3034)**):** + +Tucker offers a strawman of Matt's position, claiming that Matt's conclusions were based on ODHS. In fact, Matt's position was not based on ODHS, and Matt even said that the evidence underpinning his position is virtually the same if ODHS is omitted completely. + +**Strawman (**[**51:52**](https://youtu.be/oYsRgsJoZc4?t=3112)**):** + +Tucker offers a strawman of Matt's position, claiming that the composition of fats in margarines would need to be known in order to conclude that trans-fats (TFA) were confounding in MCE. This isn't Matt's position. Matt's position was that TFA confounding is likely based on two pieces of evidence. Firstly, the vast majority of margarines during that time period contained TFA. Secondly, there was disagreement between the observed cholesterol changes and the predicted cholesterol changes in MCE. From these data Matt infers that TFA confounding was likely, which is merely a truism that can be soundly inferred a priori. Matt doesn't conclude that TFA confounding did in fact occur. He merely takes the position that is likely. + +**Rule violation (**[**55:27**](https://youtu.be/oYsRgsJoZc4?t=3327)**):** + +Tucker breaks rule three. Matt asks Tucker if he thinks that a cooking oil with 1% TFA would be equivalent to a cooking oil with 15% TFA, which is a yes or no question. Tucker responds by saying that TFA confounding would have to be a systematic issue across all of the RCTs using Matt's assumptions. However, this doesn't interact with Matt's question. + +**Rule violation (**[**1:02:00**](https://youtu.be/oYsRgsJoZc4?t=3720)**):** + +Tucker breakers rule three again. Tucker cites a result from the LAVAT that is incongruent with Matt's figures, so Matt asks him what Tucker's figure is representing. After Matt finishes explaining the incongruency, he asks Tucker where he is getting the number from. Instead of answering, Tucker just asks him what his point is. + +**Potential contradiction (**[**1:08:00**](https://youtu.be/oYsRgsJoZc4?t=4080)**):** + +Tucker concedes that LAVAT showed a slight benefit for vegetable oils compared to animal fats. However, earlier he characterized MCE as showing "harm", but it wasn't qualified as slight. However, LAVAT showed a statistically significant 49% increase in CVD mortality risk in the control group, but MCE showed a non-significant 24% increase in CVD mortality risk in the intervention group. If a non-significant 24% increase in CVD mortality is noteworthy in Tucker's view, why is a statistically significant 49% increase in CVD mortality risk only slight in his view as well? + +Without further elaboration, would have to either accept that the increase in CVD mortality in LAVAT is noteworthy, or accept that the CVD mortality increase in MCE is at least just as unnoteworthy as LAVAT, if he wishes to stay consistent. We can syllogize the logical entailments of accepting the CVD mortality risk in MCE as "not slight" like this: + +![][argument1] +[argument1]: /blog/nagragoodrich/argument1.png + +# LA VETERANS ADMINISTRATION HOSPITAL STUDY + +**Rule violation (**[**1:08:22**](https://youtu.be/oYsRgsJoZc4?t=4102)**,** [**1:08:34**](https://youtu.be/oYsRgsJoZc4?t=4114)**):** + +Tucker breaks rule three two more times. Matt presented data from LAVAT that divulged that the intervention diet resulted in statistically significant benefits to CVD mortality and all-cause mortality. Matt asked Tucker if he though the data shows that the intervention diet in LAVAT resulted in a benefit to CVD mortality and all-cause mortality, which is again a yes or no question. First, Tucker dismisses the question, saying that LAVAT also saw an increase in cancer. When Matt asks again, Tucker says that he doesn't agree that studies can be "sliced and diced", which doesn't interact with Matt's question. + +**Rule violation (**[**1:10:44**](https://youtu.be/oYsRgsJoZc4?t=4244)**,** [**1:14:22**](https://youtu.be/oYsRgsJoZc4?t=4462)**):** + +Tucker breaks rule four two more times. Instead of resolving Matt's point about LAVAT, Tucker tries to pivot to talking about the standard American diet (SAD), which is tangential to the claim being discussed at that moment. When asked again, Tucker responds by talking about rates of acute myocardial infarction (AMI) in Africans, which is also tangential to the claim being discussed at that moment. + +**Rule violation (**[**1:18:03**](https://youtu.be/QGNNsiINehI?t=4683)**):** + +Tucker breaks rule three yet again. Matt attempts an internal critique by asking if Tucker would believe that adding vegetable oils to the SAD would be a benefit, based on the results of LAVAT. Tucker replies by saying that Lee Hooper would conclude that there is little to no benefit. A truly bizarre reply that doesn't interact with Matt's question at all. + +**Potential contradiction (**[**1:21:11**](https://youtu.be/QGNNsiINehI?t=4871)**):** + +Matt responds to ecological data that Tucker presented earlier, stating that he disagrees with the notion that it can be used to determine independent effects of seed oils. Tucker denies that he is making such a claim, and clarifies that he is speculating off that data. However, earlier in the debate Tucker objected to Matt's speculation regarding TFA confounding in MCE. Why is it OK for Tucker to submit speculation as evidence but not OK for Matt to submit speculation as evidence? + +Without further elaboration, it's unclear why Tucker would not be OK with a priori inferences about the potentially confounding effects of TFA in MCE being used in debate, when he also relies on such a priori inferences. Such as when he infers from ecological data that seed oils are likely to be detrimental. We can syllogize the logical entailments of accepting the use of a priori inferences in debate like this: + +![][argument2] +[argument2]: /blog/nagragoodrich/argument2.png + +# LYON DIET-HEART STUDY + +**Rule violation (**[**1:32:15**](https://youtu.be/QGNNsiINehI?t=5535)**):** + +Tucker breaks rule four once more. At this point, both are discussing Lyon Diet-Heart Study (LDHS), and the differential effects of the various dietary modifications that were made in that study, such as the reduction in LA. Matt takes the position that it is unlikely the the 73% reduction in AMI risk seen in LDHS is attributable to LA-reduction due to many other dietary variables changing alongside the reduction in LA. Tucker takes the position that reduction in LA explains the majority of the effect. Instead of resolving Matt's point about LDHS, Tucker wants to pivot to discussing the mechanisms of atherosclerosis. + +**Potential contradiction (**[**1:35:45**](https://youtu.be/QGNNsiINehI?t=5745)**):** + +Tucker holds the view that alpha-linolenic acid reduces risk, but he also holds the view that risk is mediated solely by LA-specific metabolites. However, this is true of all non-LA fatty acids. If the metabolites that confer harm are LA-specific, then shouldn't all non-LA fatty acids be equally non-atherogenic? He tries to reconcile this by saying that ALA "blocks" the negative effects of LA. Does that mean that ALA is an antioxidant? Does the mean that ALA detoxifies LA-specific metabolites somehow? He offers no further explanation. + +**Rule violation (**[**1:47:53**](https://youtu.be/QGNNsiINehI?t=6473)**):** + +Tucker breaks both rule two and rule six. In response to an objection from Tucker, Matt wanted to ask a question so that he could have specific clarity on Tucker's position, but Tucker cut Matt off before Matt could ask. + +# LOW DENSITY LIPOPROTEINS + +**Potential contradiction (**[**1:39:20**](https://youtu.be/QGNNsiINehI?t=5960)**):** + +Matt uses one of Tucker's references to present an internal critique. The reference appears to contradict Tucker's model of CVD by stating that hyperlipidemia is sufficient to explain the development of CVD in all its manifestations. Tucker objects to this, saying that the paper is referring to the "genetic hypothesis" of CVD, which involves CVD risk being conferred via genetically mediated concentrations of LDL. Tucker elaborates by stating that if the hypothesis were true, there wouldn't be observable differences in CVD rates between people with the same genetic background between different environments. This appears to be discounting the possibility that LDL can vary between individuals within a genetically homogenous group. Yet, here he affirms that environmental factors like dietary modification can affect LDL levels. + +**Strawman (**[**1:49:00**](https://youtu.be/QGNNsiINehI?t=6540)**):** + +Matt claims that oxidation of LDL is virtually inevitable after LDL are irreversibly retained within the subendothelial space. Tucker objects, saying it is not inevitable. Matt asks for clarification, requesting evidence that oxidation can be abolished in the subendothelial space. Tucker informs Matt that the fat composition of the diet can influence LDL oxidation rates. After Matt tells Tucker that this isn't what he's asking about, Tucker insists that this is indeed what Matt is asking about, without any further explanation. + +**Potential contradiction (**[**1:53:46**](https://youtu.be/QGNNsiINehI?t=6826)**):** + +Tucker correctly states that the LA-derived metabolite, malondialdehyde (MDA), is responsible for oxidative modification of LDL particles. However, he also states that ALA can produce this metabolite as well. If Tucker's position is that MDA-mediated oxidative modification of LDL particles initiates CVD, then why would it matter if an intervention involves both LA and ALA? At **58:32**, Tucker states that the inclusion of ALA confounded LAVAT. + +If Tucker wants to remain consistent, he'll have to explain why the atherogenic properties of ALA that are entailed from his stated position don't seem to matter. He seems to singling out LA based on characteristics that he admits are shared by ALA. Without further elaboration, Tucker should have to accept ALA as atherogenic, and the reasoning can be syllogized like this: + +![][argument3] +[argument3]: /blog/nagragoodrich/argument3.png + +**Direct contradiction (2:18:19):** + +Tucker directly contradicts himself when he suggests that corn oil is not a seed oil. At **1:43:50**, he cited two primary interventions that demonstrate that seed oils produce harm, but the sole oil used in those trials was corn oil. + +![][argument4] +[argument4]: /blog/nagragoodrich/argument4.png + +# TUCKER CONCEDES + +**Potential contradiction (**[**2:09:08**](https://youtu.be/QGNNsiINehI?t=7748)**):** + +Tucker again concedes that LAVAT showed a "fairly small" benefit of vegetable oils compared to animal fats. Earlier in the debate, Tucker stated that other trials such as MCE as showed "harm". However, LAVAT showed a statistically significant 49% increase in CVD mortality risk in the control group, but MCE showed a non-significant 24% increase in CVD mortality risk in the intervention group. If a non-significant 24% increase in CVD mortality is noteworthy in Tucker's view, why is a statistically significant 49% increase in CVD mortality risk only "fairly small" in Tucker's view as well? + +**Rule violation (**[**2:10:08**](https://youtu.be/QGNNsiINehI?t=7808)**,** [**2:10:41**](https://youtu.be/QGNNsiINehI?t=7841)**):** + +Tucker breaks rule three another three times. After Tucker implies that the benefits seen in LAVAT are inconsequential, Matt once again presents the findings of LAVAT. Matt asks Tucker if he believes that a 33% reduction to all-cause mortality and a 35% reduction to CVD mortality is "small", which is a yes or no question. Rather than answering, Tucker starts talking about Christopher Ramsden's meta-analysis. When Matt asks again, Tucker continues talking about the Ramsden meta-analysis. + +**Rule violation (**[**2:10:52**](https://youtu.be/QGNNsiINehI?t=7852)**):** + +Tucker breaks rule one again. Matt attempts to explain what his question for Tucker is, but Tucker mind-reads and tries to tell Matt what he means instead of listening. + +**Direct contradiction (**[**2:10:59**](https://youtu.be/QGNNsiINehI?t=7859)**):** + +Tucker objects to Matt's use of LAVAT to demonstrate a potential benefit of seed oils, saying that "you can't take one single RCT and prove an effect". However, this is the exact manner in which Tucker relies on LDHS to demonstrate the benefits of LA reduction in the context of high ALA. There is no other study that included such an intervention. + +Without additional clarification, Tucker would need to reject his own reliance on LDHS to prove the effect of LA-reduction in the context of an ALA-rich diet. Such an entailment can be syllogized like this: + +![][argument5] +[argument5]: /blog/nagragoodrich/argument5.png + +**Rule violation (**[**2:13:03**](https://youtu.be/QGNNsiINehI?t=7983)**):** + +In an astonishing feat, Tucker breaks rules two, four, five, and six all at the same time. Rather than engaging with Matt's question about the clinical significance of the LAVAT results, Tucker dodges by attacking Matt's intellectual integrity. When Matt attempts to interject, Tucker cuts Matt off, attempting to pivot to discussing meta-analyses despite agreeing to systematically discuss the relevant trials one by one. + +**Strawman (**[**2:14:21**](https://youtu.be/QGNNsiINehI?t=8061)**):** + +Tucker finishes his rant by suggesting that the LAVAT results don't show that increasing seed oils can "reduce heart disease by 30%", which was not at all what Matt was suggesting. All Matt asked Tucker was whether or not Tucker believed that the effects observed in LAVAT were small. + +**Strawman (**[**2:14:33**](https://youtu.be/QGNNsiINehI?t=8073)**):** + +Tucker claims that Matt agreed that you cannot "prove" something based on one study, and in fact meta-analysis is required for proof. Matt never committed himself to such a concept for causal inference. This is a truly bizarre move on Tucker's part. + +# HOOPER 2020 META-ANALYSIS + +**Rule violation (**[**2:16:32**](https://youtu.be/QGNNsiINehI?t=8192)**):** + +Tucker breaks rules two and six again. Now discussing the paper by Hooper et al. (2020), Tucker asks Matt where in the paper can the evidence for his claims be found. Matt attempts to respond, but Tucker cuts Matt off again by asking the exact same question he just asked, but with a slightly more crazed inflection. + +**Rule violation (**[**2:19:30**](https://youtu.be/QGNNsiINehI?t=8370)**,** [**2:19:38**](https://youtu.be/QGNNsiINehI?t=8378)**,** [**2:19:45**](https://youtu.be/QGNNsiINehI?t=8385)**):** + +Tucker breaks rule three three more times. Tucker criticizes the Hooper (2020) meta-analysis by stating that the analysis found "little to no effect" of reducing saturated fat on CVD mortality. Not only is this tangential, but Matt humours the objection long enough to make the point that events is a much more sensitive endpoint than mortality, and events is where the benefit can be seen. Matt follows up by asking Tucker if he thinks reducing total CVD events is beneficial if all else was held equal, which is a simple yes or no question. Rather than answering, Tucker starts painting a caricature of Matt's question instead. When it is clear that Matt is not getting a straight answer, the moderator interjects and allows the yes-or-no question to be asked again. Again, Tucker dodges. + +**Direct contradiction (**[**2:21:19**](https://youtu.be/QGNNsiINehI?t=8479)**):** + +Tucker takes the position that silent and non-fatal AMIs are not important outcomes and we need not care about them. Yet, at [**1:16:22**](https://youtu.be/QGNNsiINehI?t=4582), Tucker makes it clear that silent and non-fatal AMIs are important and that we should care about them. + +This one is pretty straight forward. Either silent and non-fatal AMIs are important and we should care about them, or they are not important and we shouldn't care about them. If Tucker wishes to remain consistent while also preserving his own arguments, we'd need to accept that silent and non-fatal AMIs are important, and that we should care about them. This entailment can by syllogized like this: + +![][argument6] +[argument6]: /blog/nagragoodrich/argument6.png + +**Rule violation (**[**2:25:20**](https://youtu.be/QGNNsiINehI?t=8720)**):** + +Tucker breaks rule four for the seventh time. After agreeing to discuss the results of Hooper (2020), Tucker suddenly attempts to steer the debate toward some sort of meta-level discussion about seed oil consumption in the general population. + +**Rule violation (**[**2:30:31**](https://youtu.be/QGNNsiINehI?t=9031)**):** + +Tucker breaks both rules four and six. The moderator poses a question to both Matt and Tucker, and gets a satisfactory answer from both Matt and Tucker. However, rather than returning the floor to the moderator or continuing with the debate, Tucker takes the opportunity to address points that Matt hasn't even made yet in the debate, and doesn't give Matt any amount of time to respond. + +**Rule violation (**[**2:37:06**](https://youtu.be/QGNNsiINehI?t=9426)**):** + +Tucker breaks rules two and four again. The moderator recognizes that Tucker's incoherent flow-of-consciousness monologue has been going on for nearly ten minutes, and the moderator tries to interject. Tucker cuts the moderator off and proceeds to ramble about vitamin E for another minute. + +# ECOLOGICAL STUDIES + +**Rule violation (**[**2:38:42**](https://youtu.be/QGNNsiINehI?t=9522)**):** + +Tucker can't help but break rule four again. Tucker interjects, before Matt can even finish a single sentence, in order to tell Matt that ecological studies are the worst form of epidemiology. At this point it is fair to say that Tucker is breaking rule one as well. It's clear that Tucker is no longer here for an "open, conversation-style" debate. + +**Direct contradiction (**[**2:38:50**](https://youtu.be/QGNNsiINehI?t=9530)**):** + +Tucker takes the position that ecological studies are of critical importance, superseding all other forms of epidemiology. Yet, only moments earlier, Tucker took the position that ecological studies are the worst form of epidemiological evidence. + +Again, we have another relatively simple inconsistency to address. In order for Tucker to make his case against seed oils, he systematically rejected all nutritional epidemiology except for ecological studies. Yet, claiming that ecological studies are the worst form of epidemiology entails a contradiction, as it means that Tucker is simultaneously holding the view that it is both the best and the worst form of epidemiology at the same time. If Tucker wished to resolve the inconsistency, he'd probably have to acknowledge that ecological studies are not the worst form of epidemiology. This can be syllogized like this: + +![][argument7] +[argument7]: /blog/nagragoodrich/argument7.png + +# SYDNEY DIET-HEART STUDY + +**Direct contradiction (**[**2:42:37**](https://youtu.be/QGNNsiINehI?t=9757)**):** + +Tucker makes the claim that we can't know whether or not the margarine used in Sydney Diet-Heart Study (SDHS) contained TFA. Moments later, at [**2:44:23**](https://youtu.be/QGNNsiINehI?t=9863) he suggests that it is valid to argue that we absolutely can know the margarine in SDHS did not contain TFA. + +If Tucker maintains that it cannot be known whether or not TFA was confounding in SDHS, then he cannot posit that it can be known one way or the other. Either position that Tucker took could work for his argument on this subject, but they're just not compatible with each other, and that can be illustrated like this: + +![][argument8] +[argument8]: /blog/nagragoodrich/argument8.png + + +**Rule violation (**[**2:57:59**](https://youtu.be/QGNNsiINehI?t=10679)**,** [**2:58:53**](https://youtu.be/QGNNsiINehI?t=10733)**):** + +Tucker breaks rule three two more times. While discussing a paper that models substitutions of olive oil for various other fats, Matt asks Tucker if he has any problems with the paper. Rather than answering, Tucker starts discussing issues he has with another paper published by the same group investigating dairy fat. Matt attempts to interject, but Tucker continues to discuss previous research on potatoes that was also published by this group. + + +**Rule violation (**[**2:59:44**](https://youtu.be/QGNNsiINehI?t=10784)**):** + +Tucker breaks rules two, three, and four again. Matt once again asks Tucker if he has any issues with the olive oil substitution analysis. Rather than answering, Tucker cuts Matt off before he can finish asking his question, and Tucker starts asking why Matt included the paper in his references. + + +**Rule violation (**[**3:00:44**](https://youtu.be/QGNNsiINehI?t=10844)**):** + +Tucker once again breaks rule three. Matt asks his yes-or-no question yet again, to which Tucker responds by stating that the mechanisms favour his position. This is just another dodge. + + +**Rule violation (**[**3:00:53**](https://youtu.be/QGNNsiINehI?t=10853)**,** [**3:02:18**](https://youtu.be/QGNNsiINehI?t=10938)**):** + +Tucker breaks rule three again, despite it now being enforced by the moderator. The moderator notices that Matt is not getting an answer to his question, and the moderator steps and reminds Tucker of the question being asked. Rather than answering the question, Tucker continues to discuss mechanisms. The moderator again notices that this doesn't answer Matt's question, and implores Tucker to answer. Again, Tucker dodges the question and starts talking about the paper itself, rather than addressing Matt's question about Tucker's interpretation of the paper. + + +**Rule violation (**[**3:06:00**](https://youtu.be/QGNNsiINehI?t=11160)**):** + +Tucker breaks rules one and six again. Not even one minute after Tucker grants Matt the floor to make a point about mechanistic data, Tucker interrupts Matt on the basis that Matt's point isn't relevant. Though, only moments before, the moderator gave Matt the floor to complete his point. It is clear that Tucker has no respect for the moderator's wishes, nor the debate parameters. + + +**Rule violation (**[**3:06:52**](https://youtu.be/QGNNsiINehI?t=11212)**):** + +Tucker breaks rules one and six again. For the second time, Tucker interrupts Matt when he's been given the floor by the moderator to complete his point. + +# OLIVE OIL SUBSTITUTION ANALYSIS + +**Rule violation (**[**3:13:34**](https://youtu.be/QGNNsiINehI?t=11614)**):** + +Tucker breaks rules two again. Rather than letting Matt complete his point about the olive oil substitution analysis, Tucker interrupts him. + +**Direct contradiction (**[**3:15:10**](https://youtu.be/QGNNsiINehI?t=11710)**):** + +Tucker concedes that margarine and mayonnaise are not the same thing as isolated vegetable oils. However, at [**3:14:30**](https://youtu.be/QGNNsiINehI?t=11670), Tucker rejects that there are differences between margarine, mayonnaise, and isolated vegetable oils. Another layer of hilarity would be to point out that if Tucker maintains that mayonnaise is the same as an isolated seed oil, he'd be holding the position that corn oil is not a seed oil, but mayonnaise is. + +![][argument9] +[argument9]: /blog/nagragoodrich/argument9.png + +# DISCUSSION + +This is where the debate portion of the episode ends, with Matt and Tucker both giving their closing statements. Altogether, Tucker violated the rules at least 50 times and committed at least 18 fallacies, and that's not counting the various hilarious empirical and epistemic claims that Tucker made. For anyone interested in reading more about Tucker's errors, Matt published a comprehensive rebuttal to his personal blog, which can be found on [Matt's blog](https://drmatthewnagra.com/seed-oil-debate-with-tucker-goodrich/). From what I could tell, Matt did not really break the rules at all, except for perhaps a few minor instances when he attempted to interject when Tucker was rambling. Other than that, he conducted himself according to the rules. + +Whether you're skeptical, supportive, or unsure of Tucker's work, I hope that this debate, as well as the breakdown contained within this article, gives you a decent perspective on just how bad his arguments actually are. I'm truly failing to imagine any good reasons for why someone with a stable position, which is truly robust to scrutiny, should struggle this hard to stay consistent in a debate. Tucker's performance was truly terrible, and should be eye-opening to anyone who thought that he might have even a scrap of credibility within this domain. + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting!""" + , articleReferences = + [ { author = "" + , title = "" + , journal = "" + , year = "" + , link = "" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/PlantBasedMeta.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/PlantBasedMeta.elm new file mode 100755 index 0000000..10aa297 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/PlantBasedMeta.elm @@ -0,0 +1,1391 @@ +module Config.Pages.Blogs.MainBlog.PlantBasedMeta exposing (articlePlantBasedMeta) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articlePlantBasedMeta : BlogArticle +articlePlantBasedMeta = + { articleName = "Plant-Based Diets (An Independent Meta-Analysis)" + , articleLink = Path.toString Path.Blog_Plantbasedmeta + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "plantbasedmeta" + , articlePublished = "Feb 5, 2021" + , articleBody = """ +On the back of my independent meta-analysis investigating the relationship between low carbohydrate/ketogenic diets and health markers in intervention trials, I now give you my independent meta-analysis investigating the relationship between plant-based diets and health markers in intervention trials. + +The plant-based community has just as much of a tendency to cherry-pick study results as any other diet community wherein certainty is low and guruism is high. This independent meta-analysis is my attempt to add some clarity to online and academic discourse regarding plant-based diets and health鈥攄o these types of diets actually live up to the hype? + +It is my hope that this blog article might serve as an educational resource for anyone aiming to learn about how plant-based diets could relate to health. As well as whether or not those health outcomes are independent of duration or weight loss. There are many supposed effects of plant-based that many of us may just take for granted, such as reductions in low density lipoprotein cholesterol or lower inflammatory markers. However, it is unclear whether or not these effects, if they exist at all, are independent of weight loss or the duration of time spent on the diet. + +It is also true that some of us may expect negative things to happen on a plant-based diet, like elevated triglycerides or higher blood glucose. It is likewise unclear whether or not these effects are independent of weight loss or the total amount of time spent on the diet. Hopefully the data below will help inform some of these debates and discussions, as well as help rectify any potential misconceptions one might have. + +I will also not be including any interpretations of any of the data. I am not a health professional of any kind, and it is not my job to interpret this data. I searched for it. I collated it. And now it's yours. + +Results will be stratified six ways: + +1. Plant-based diets compared to control. + +2. Plant-based diets compared to baseline. + +3. Plant-based diets stratified by duration, compared to control. + +4. Plant-based diets stratified by duration, compared to baseline. + +5. Plant-based diets stratified by weight loss, compared to control. + +6. Plant-based diets stratified by weight loss, compared to baseline. + +**Inclusion Criteria:** + +Due to the fact that there is no clear, standardized definition of a "plant-based" diet in the literature, the inclusion criteria for this meta-analysis was difficult to formulate. An obvious correlate for a diet that emphasizes plant foods might be dietary cholesterol (due to it only being found in animal foods). However, no trial actually achieved a zero-cholesterol diet in the intervention group, and some diets may be higher in dietary cholesterol despite a significant overall decrease in animal food consumption. For example, a diet that substitutes 150 kcal of eggs for 1000 kcal of assorted animal products could potentially have the exact same dietary cholesterol yield overall, despite the fact that one diet may be significantly more plant-based than the other diet. + +A minority of studies divulged the percentage of calories from either animal foods or non-animal foods in the intervention diets. So, such criteria would have narrowed the range of eligible trials to an unacceptable degree. In order to insulate myself from criticisms to the greatest degree possible, I let the literature itself dictate my inclusion criteria. If the experimental diet used in an intervention trial had been referenced as "plant-based" or "vegan" in the literature (either in a meta-analysis, narrative review, systematic review, trial paper, etc.), I invoked the if-it-is-good-enough-for-them-it-is-good-enough-for-me principle, and included them. Don't fucking @ me, bro. + +**Disclaimer:** + +This is not a peer-reviewed publication. This blog article is for educational and/or entertainment purposes only. This blog article is not an academic reference, nor does it stand in place of current or future peer reviewed, academic research into plant-based diets and health. There are multiple methodological limitations that make robust interpretation challenging in many cases. + +If you have enjoyed my work and want me to continue producing this sort of content, consider supporting me on Patreon. Every little bit helps! Thank you for your time! Enjoy! + +# ANTHROPOMETRICS + +# BODY WEIGHT + +**Body Weight: Plant-based (vs Control)** + +![][image5] +[image5]: /blog/plantbasedmeta/image5.png + +**Body Weight: Plant-based (vs Baseline)** + +![][image6] +[image6]: /blog/plantbasedmeta/image6.png + +**Body Weight: Plant-based by Duration (vs Control)** + +![][image7] +[image7]: /blog/plantbasedmeta/image7.png + +**Body Weight: Plant-based by Duration (vs Baseline)** + +![][image8] +[image8]: /blog/plantbasedmeta/image8.png + +**Body Weight: Plant-based by Weight Loss (vs Control)** + +![][image9] +[image9]: /blog/plantbasedmeta/image9.png + +**Body Weight: Plant-based by Weight Loss (vs Baseline)** + +![][image10] +[image10]: /blog/plantbasedmeta/image10.png + +# BODY FAT MASS + +**Body Fat Mass: Plant-based (vs Control)** + +![][image11] +[image11]: /blog/plantbasedmeta/image11.png + +**Body Fat Mass: Plant-based (vs Baseline)** + +![][image12] +[image12]: /blog/plantbasedmeta/image12.png + +**Body Fat Mass: Plant-based by Duration (vs Control)** + +![][image13] +[image13]: /blog/plantbasedmeta/image13.png + +**Body Fat Mass: Plant-based by Duration (vs Baseline)** + +![][image14] +[image14]: /blog/plantbasedmeta/image14.png + +**Body Fat Mass: Plant-based by Weight Loss (vs Control)** + +![][image15] +[image15]: /blog/plantbasedmeta/image15.png + +**Body Fat Mass: Plant-based by Weight Loss (vs Baseline)** + +![][image16] +[image16]: /blog/plantbasedmeta/image16.png + +# FAT FREE MASS + +**Fat Free Mass: Plant-based (vs Control)** + +![][image17] +[image17]: /blog/plantbasedmeta/image17.png + +**Fat Free Mass: Plant-based (vs Baseline)** + +![][image18] +[image18]: /blog/plantbasedmeta/image18.png + +**Fat Free Mass: Plant-based by Duration (vs Control)** + +![][image19] +[image19]: /blog/plantbasedmeta/image19.png + +**Fat Free Mass: Plant-based by Duration (vs Baseline)** + +![][image20] +[image20]: /blog/plantbasedmeta/image20.png + +**Fat Free Mass: Plant-based by Weight Loss (vs Control)** + +![][image21] +[image21]: /blog/plantbasedmeta/image21.png + +**Fat Free Mass: Plant-based by Weight Loss (vs Baseline)** + +![][image22] +[image22]: /blog/plantbasedmeta/image22.png + +# BODY MASS INDEX + +**Body Mass Index: Plant-based (vs Control)** + +![][image23] +[image23]: /blog/plantbasedmeta/image23.png + +**Body Mass Index: Plant-based (vs Baseline)** + +![][image24] +[image24]: /blog/plantbasedmeta/image24.png + +**Body Mass Index: Plant-based by Duration (vs Control)** + +![][image25] +[image25]: /blog/plantbasedmeta/image25.png + +**Body Mass Index: Plant-based by Duration (vs Baseline)** + +![][image26] +[image26]: /blog/plantbasedmeta/image26.png + +**Body Mass Index: Plant-based by Weight Loss (vs Control)** + +![][image27] +[image27]: /blog/plantbasedmeta/image27.png + +**Body Mass Index: Plant-based by Weight Loss (vs Baseline)** + +![][image28] +[image28]: /blog/plantbasedmeta/image28.png + +# WAIST HIP RATIO + +**Waist Hip Ratio: Plant-based (vs Control)** + +![][image29] +[image29]: /blog/plantbasedmeta/image29.png + +**Waist Hip Ratio: Plant-based (vs Baseline)** + +![][image30] +[image30]: /blog/plantbasedmeta/image30.png + +**Waist Hip Ratio: Plant-based by Duration (vs Control)** + +![][image31] +[image31]: /blog/plantbasedmeta/image31.png + +**Waist Hip Ratio: Plant-based by Duration (vs Baseline)** + +![][image32] +[image32]: /blog/plantbasedmeta/image32.png + +**Waist Hip Ratio: Plant-based by Weight Loss (vs Control)** + +![][image33] +[image33]: /blog/plantbasedmeta/image33.png + +**Waist Hip Ratio: Plant-based by Weight Loss (vs Baseline)** + +![][image34] +[image34]: /blog/plantbasedmeta/image34.png + +# VISCERAL ADIPOSE TISSUE + +**Visceral Adipose Tissue: Plant-based (vs Control)** + +![][image35] +[image35]: /blog/plantbasedmeta/image35.png + +**Visceral Adipose Tissue: Plant-based (vs Baseline)** + +![][image36] +[image36]: /blog/plantbasedmeta/image36.png + +# INTRAHEPATIC LIPID + +**Intrahepatic Lipid: Plant-based (vs Control)** + +![][image37] +[image37]: /blog/plantbasedmeta/image37.png + +**Intrahepatic Lipid: Plant-based (vs Baseline)** + +![][image38] +[image38]: /blog/plantbasedmeta/image38.png + +**Intrahepatic Lipid: Plant-based by Duration (vs Control)** + +![][image39] +[image39]: /blog/plantbasedmeta/image39.png + +**Intrahepatic Lipid: Plant-based by Duration (vs Baseline)** + +![][image40] +[image40]: /blog/plantbasedmeta/image40.png + +**Intrahepatic Lipid: Plant-based by Weight Loss (vs Control)** + +![][image41] +[image41]: /blog/plantbasedmeta/image41.png + +**Intrahepatic Lipid: Plant-based by Weight Loss (vs Baseline)** + +![][image42] +[image42]: /blog/plantbasedmeta/image42.png + +# INTRAMYOCELLULAR LIPID + +**Intramyocellular Lipid: Plant-based (vs Control)** + +![][image43] +[image43]: /blog/plantbasedmeta/image43.png + +**Intramyocellular Lipid: Plant-based (vs Baseline)** + +![][image44] +[image44]: /blog/plantbasedmeta/image44.png + +# CARDIOVASCULAR + +# SYSTOLIC BLOOD PRESSURE + +**Systolic Blood Pressure: Plant-based (vs Control)** + +![][image45] +[image45]: /blog/plantbasedmeta/image45.png + +**Systolic Blood Pressure: Plant-based (vs Baseline)** + +![][image46] +[image46]: /blog/plantbasedmeta/image46.png + +**Systolic Blood Pressure: Plant-based by Duration (vs Control)** + +![][image47] +[image47]: /blog/plantbasedmeta/image47.png + +**Systolic Blood Pressure: Plant-based by Duration (vs Baseline)** + +![][image48] +[image48]: /blog/plantbasedmeta/image48.png + +**Systolic Blood Pressure: Plant-based by Weight Loss (vs Control)** + +![][image49] +[image49]: /blog/plantbasedmeta/image49.png + +**Systolic Blood Pressure: Plant-based by Weight Loss (vs Baseline)** + +![][image50] +[image50]: /blog/plantbasedmeta/image50.png + +# DIASTOLIC BLOOD PRESSURE + +**Diastolic Blood Pressure: Plant-based (vs Control)** + +![][image51] +[image51]: /blog/plantbasedmeta/image51.png + +**Diastolic Blood Pressure: Plant-based (vs Baseline)** + +![][image52] +[image52]: /blog/plantbasedmeta/image52.png + +**Diastolic Blood Pressure: Plant-based by Duration (vs Control)** + +![][image53] +[image53]: /blog/plantbasedmeta/image53.png + +**Diastolic Blood Pressure: Plant-based by Duration (vs Baseline)** + +![][image54] +[image54]: /blog/plantbasedmeta/image54.png + +**Diastolic Blood Pressure: Plant-based by Weight Loss (vs Control)** + +![][image55] +[image55]: /blog/plantbasedmeta/image55.png + +**Diastolic Blood Pressure: Plant-based by Weight Loss (vs Baseline)** + +![][image56] +[image56]: /blog/plantbasedmeta/image56.png + +# CHEMISTRY + +# HEMAGLOBIN A1C + +**Hemoglobin A1C: Plant-based (vs Control)** + +![][image57] +[image57]: /blog/plantbasedmeta/image57.png + +**Hemoglobin A1C: Plant-based (vs Baseline)** + +![][image58] +[image58]: /blog/plantbasedmeta/image58.png + +**Hemoglobin A1C: Plant-based by Duration (vs Control)** + +![][image59] +[image59]: /blog/plantbasedmeta/image59.png + +**Hemoglobin A1C: Plant-based by Duration (vs Baseline)** + +![][image60] +[image60]: /blog/plantbasedmeta/image60.png + +**Hemoglobin A1C: Plant-based by Weight Loss (vs Control)** + +![][image61] +[image61]: /blog/plantbasedmeta/image61.png + +**Hemoglobin A1C: Plant-based by Weight Loss (vs Baseline)** + +![][image62] +[image62]: /blog/plantbasedmeta/image62.png + +# BLOOD GLUCOSE + +**Blood Glucose: Plant-based (vs Control)** + +![][image63] +[image63]: /blog/plantbasedmeta/image63.png + +**Blood Glucose: Plant-based (vs Baseline)** + +![][image64] +[image64]: /blog/plantbasedmeta/image64.png + +**Blood Glucose: Plant-based by Duration (vs Control)** + +![][image65] +[image65]: /blog/plantbasedmeta/image65.png + +**Blood Glucose: Plant-based by Duration (vs Baseline)** + +![][image66] +[image66]: /blog/plantbasedmeta/image66.png + +**Blood Glucose: Plant-based by Weight Loss (vs Control)** + +![][image67] +[image67]: /blog/plantbasedmeta/image67.png + +**Blood Glucose: Plant-based by Weight Loss (vs Baseline)** + +![][image68] +[image68]: /blog/plantbasedmeta/image68.png + +# URIC ACID + +**Uric Acid: Plant-based (vs Control)** + +![][image69] +[image69]: /blog/plantbasedmeta/image69.png + +**Uric Acid: Plant-based (vs Baseline)** + +![][image70] +[image70]: /blog/plantbasedmeta/image70.png + +**Uric Acid: Plant-based by Duration (vs Control)** + +![][image71] +[image71]: /blog/plantbasedmeta/image71.png + +**Uric Acid: Plant-based by Duration (vs Baseline)** + +![][image72] +[image72]: /blog/plantbasedmeta/image72.png + +# WHITE BLOOD CELL COUNT + +**White Blood Cell Count: Plant-based (vs Control)** + +![][image73] +[image73]: /blog/plantbasedmeta/image73.png + +**White Blood Cell Count: Plant-based (vs Baseline)** + +![][image74] +[image74]: /blog/plantbasedmeta/image74.png + +**White Blood Cell Count: Plant-based by Duration (vs Control)** + +![][image75] +[image75]: /blog/plantbasedmeta/image75.png + +**White Blood Cell Count: Plant-based by Duration (vs Baseline)** + +![][image76] +[image76]: /blog/plantbasedmeta/image76.png + +#TRIMETHYLAMINE N-OXIDE + +**Trimethylamine N-Oxide: Plant-based (vs Control)** + +![][image77] +[image77]: /blog/plantbasedmeta/image77.png + +**Trimethylamine N-Oxide: Plant-based (vs Baseline)** + +![][image78] +[image78]: /blog/plantbasedmeta/image78.png + +# MALONDIALDEHYDE + +**Malondialdehyde: Plant-based (vs Control)** + +![][image79] +[image79]: /blog/plantbasedmeta/image79.png + +**Malondialdehyde: Plant-based (vs Baseline)** + +![][image80] +[image80]: /blog/plantbasedmeta/image80.png + +**Malondialdehyde: Plant-based by Duration (vs Control)** + +![][image81] +[image81]: /blog/plantbasedmeta/image81.png + +**Malondialdehyde: Plant-based by Duration (vs Baseline)** + +![][image82] +[image82]: /blog/plantbasedmeta/image82.png + +# ENDOCRINE + +# INSULIN + +**Insulin: Plant-based (vs Control)** + +![][image83] +[image83]: /blog/plantbasedmeta/image83.png + +**Insulin: Plant-based (vs Baseline)** + +![][image84] +[image84]: /blog/plantbasedmeta/image84.png + +**Insulin: Plant-based by Duration (vs Control)** + +![][image85] +[image85]: /blog/plantbasedmeta/image85.png + +**Insulin: Plant-based by Duration (vs Baseline)** + +![][image86] +[image86]: /blog/plantbasedmeta/image86.png + +**Insulin: Plant-based by Weight Loss (vs Control)** + +![][image87] +[image87]: /blog/plantbasedmeta/image87.png + +**Insulin: Plant-based by Weight Loss (vs Baseline)** + +![][image88] +[image88]: /blog/plantbasedmeta/image88.png + +# INSULIN-LIKE GROWTH FACTOR 1 + +**Insulin-Like Growth Factor 1: Plant-based (vs Control)** + +![][image89] +[image89]: /blog/plantbasedmeta/image89.png + +**Insulin-Like Growth Factor 1: Plant-based (vs Baseline)** + +![][image90] +[image90]: /blog/plantbasedmeta/image90.png + +# INFLAMMATION + +# HIGH SENSITIVITY C-REACTIVE PROTEIN + +**High Sensitivity C-Reactive Protein: Plant-based (vs Control)** + +![][image91] +[image91]: /blog/plantbasedmeta/image91.png + +**High Sensitivity C-Reactive Protein: Plant-based (vs Baseline)** + +![][image92] +[image92]: /blog/plantbasedmeta/image92.png + +**High Sensitivity C-Reactive Protein: Plant-based by Duration (vs Control)** + +![][image93] +[image93]: /blog/plantbasedmeta/image93.png + +**High Sensitivity C-Reactive Protein: Plant-based by Duration (vs Baseline)** + +![][image94] +[image94]: /blog/plantbasedmeta/image94.png + +**High Sensitivity C-Reactive Protein: Plant-based by Weight Loss (vs Control)** + +![][image95] +[image95]: /blog/plantbasedmeta/image95.png + +**High Sensitivity C-Reactive Protein: Plant-based by Weight Loss (vs Baseline)** + +![][image96] +[image96]: /blog/plantbasedmeta/image96.png + +# LOW SENSITIVITY C-REACTIVE PROTEIN + +**Low Sensitivity C-Reactive Protein: Plant-based (vs Control)** + +![][image97] +[image97]: /blog/plantbasedmeta/image97.png + +**Low Sensitivity C-Reactive Protein: Plant-based (vs Baseline)** + +![][image98] +[image98]: /blog/plantbasedmeta/image98.png + +**Low Sensitivity C-Reactive Protein: Plant-based by Duration (vs Control)** + +![][image99] +[image99]: /blog/plantbasedmeta/image99.png + +**Low Sensitivity C-Reactive Protein: Plant-based by Duration (vs Baseline)** + +![][image100] +[image100]: /blog/plantbasedmeta/image100.png + +# TUMOR NECROSIS FACTOR + +**Tumor Necrosis Factor: Plant-based (vs Control)** + +![][image101] +[image101]: /blog/plantbasedmeta/image101.png + +**Tumor Necrosis Factor: Plant-based (vs Baseline)** + +![][image102] +[image102]: /blog/plantbasedmeta/image102.png + +# INTERCELLULAR ADHESION MOLECULE 1 + +**Intercellular Adhesion Molecule 1: Plant-based (vs Control)** + +![][image103] +[image103]: /blog/plantbasedmeta/image103.png + +**Intercellular Adhesion Molecule 1: Plant-based (vs Baseline)** + +![][image104] +[image104]: /blog/plantbasedmeta/image104.png + +**Intercellular Adhesion Molecule 1: Plant-based by Duration (vs Control)** + +![][image105] +[image105]: /blog/plantbasedmeta/image105.png + +**Intercellular Adhesion Molecule 1: Plant-based by Duration (vs Baseline)** + +![][image106] +[image106]: /blog/plantbasedmeta/image106.png + +# VASCULAR CELLULAR ADHESION MOLECULE 1 + +**Vascular Cellular Adhesion Molecule 1: Plant-based (vs Control)** + +![][image107] +[image107]: /blog/plantbasedmeta/image107.png + +**Vascular Cellular Adhesion Molecule 1: Plant-based (vs Baseline)** + +![][image108] +[image108]: /blog/plantbasedmeta/image108.png + +**Vascular Cellular Adhesion Molecule 1: Plant-based by Duration (vs Control)** + +![][image109] +[image109]: /blog/plantbasedmeta/image109.png + +**Vascular Cellular Adhesion Molecule 1: Plant-based by Duration (vs Baseline)** + +![][image110] +[image110]: /blog/plantbasedmeta/image110.png + +# MONOCYTE CHEMOATTRACTANT PROTEIN-1 + +**Monocyte Chemoattractant Protein-1: Plant-based (vs Control)** + +![][image111] +[image111]: /blog/plantbasedmeta/image111.png + +**Monocyte Chemoattractant Protein-1: Plant-based (vs Baseline)** + +![][image112] +[image112]: /blog/plantbasedmeta/image112.png + +# INTERLEUKIN 6 + +**Interleukin 6: Plant-based (vs Control)** + +![][image113] +[image113]: /blog/plantbasedmeta/image113.png + +**Interleukin 6: Plant-based (vs Baseline)** + +![][image114] +[image114]: /blog/plantbasedmeta/image114.png + +**Interleukin 6: Plant-based by Duration (vs Control)** + +![][image115] +[image115]: /blog/plantbasedmeta/image115.png + +**Interleukin 6: Plant-based by Duration (vs Baseline)** + +![][image116] +[image116]: /blog/plantbasedmeta/image116.png + +# INTERLEUKIN 8 + +**Interleukin 8: Plant-based (vs Control)** + +![][image117] +[image117]: /blog/plantbasedmeta/image117.png + +**Interleukin 8: Plant-based (vs Baseline)** + +![][image118] +[image118]: /blog/plantbasedmeta/image118.png + +# INTERLEUKIN 10 + +**Interleukin 10: Plant-based (vs Control)** + +![][image119] +[image119]: /blog/plantbasedmeta/image119.png + +**Interleukin 10: Plant-based (vs Baseline)** + +![][image120] +[image120]: /blog/plantbasedmeta/image120.png + +# KIDNEY FUNCTION + +# UREA + +**Urea: Plant-based (vs Control)** + +![][image121] +[image121]: /blog/plantbasedmeta/image121.png + +**Urea: Plant-based (vs Baseline)** + +![][image122] +[image122]: /blog/plantbasedmeta/image122.png + +# LIPIDOLOGY + +# LOW DENSITY LIPOPROTEIN CHOLESTEROL + +**Low Density Lipoprotein Cholesterol: Plant-based (vs Control)** + +![][image123] +[image123]: /blog/plantbasedmeta/image123.png + +**Low Density Lipoprotein Cholesterol: Plant-based (vs Baseline)** + +![][image124] +[image124]: /blog/plantbasedmeta/image124.png + +**Low Density Lipoprotein Cholesterol: Plant-based by Duration (vs Control)** + +![][image125] +[image125]: /blog/plantbasedmeta/image125.png + +**Low Density Lipoprotein Cholesterol: Plant-based by Duration (vs Baseline)** + +![][image126] +[image126]: /blog/plantbasedmeta/image126.png + +**Low Density Lipoprotein Cholesterol: Plant-based by Weight Loss (vs Control)** + +![][image127] +[image127]: /blog/plantbasedmeta/image127.png + +**Low Density Lipoprotein Cholesterol: Plant-based by Weight Loss (vs Baseline)** + +![][image128] +[image128]: /blog/plantbasedmeta/image128.png + +# HIGH DENSITY LIPOPROTEIN CHOLESTEROL + +**High Density Lipoprotein Cholesterol: Plant-based (vs Control)** + +![][image129] +[image129]: /blog/plantbasedmeta/image129.png + +**High Density Lipoprotein Cholesterol: Plant-based (vs Baseline)** + +![][image130] +[image130]: /blog/plantbasedmeta/image130.png + +**High Density Lipoprotein Cholesterol: Plant-based by Duration (vs Control)** + +![][image131] +[image131]: /blog/plantbasedmeta/image131.png + +**High Density Lipoprotein Cholesterol: Plant-based by Duration (vs Baseline)** + +![][image132] +[image132]: /blog/plantbasedmeta/image132.png + +**High Density Lipoprotein Cholesterol: Plant-based by Weight Loss (vs Control)** + +![][image133] +[image133]: /blog/plantbasedmeta/image133.png + +**High Density Lipoprotein Cholesterol: Plant-based by Weight Loss (vs Baseline)** + +![][image134] +[image134]: /blog/plantbasedmeta/image134.png + +# TRIGLYCERIDES + +**Triglycerides: Plant-based (vs Control)** + +![][image135] +[image135]: /blog/plantbasedmeta/image135.png + +**Triglycerides: Plant-based (vs Baseline)** + +![][image136] +[image136]: /blog/plantbasedmeta/image136.png + +**Triglycerides: Plant-based by Duration (vs Control)** + +![][image137] +[image137]: /blog/plantbasedmeta/image137.png + +**Triglycerides: Plant-based by Duration (vs Baseline)** + +![][image138] +[image138]: /blog/plantbasedmeta/image138.png + +**Triglycerides: Plant-based by Weight Loss (vs Control)** + +![][image139] +[image139]: /blog/plantbasedmeta/image139.png + +**Triglycerides: Plant-based by Weight Loss (vs Baseline)** + +![][image140] +[image140]: /blog/plantbasedmeta/image140.png + +# APOLIPOPROTEIN B + +**Apolipoprotein B: Plant-based (vs Control)** + +![][image141] +[image141]: /blog/plantbasedmeta/image141.png + +**Apolipoprotein B: Plant-based (vs Baseline)** + +![][image142] +[image142]: /blog/plantbasedmeta/image142.png + +**Apolipoprotein B: Plant-based by Duration (vs Control)** + +![][image143] +[image143]: /blog/plantbasedmeta/image143.png + +**Apolipoprotein B: Plant-based by Duration (vs Baseline)** + +![][image144] +[image144]: /blog/plantbasedmeta/image144.png + +**Apolipoprotein B: Plant-based by Weight Loss (vs Control)** + +![][image145] +[image145]: /blog/plantbasedmeta/image145.png + +**Apolipoprotein B: Plant-based by Weight Loss (vs Baseline)** + +![][image146] +[image146]: /blog/plantbasedmeta/image146.png + +# APOLIPOPROTEIN A1 + +**Apolipoprotein A1: Plant-based (vs Control)** + +![][image147] +[image147]: /blog/plantbasedmeta/image147.png + +**Apolipoprotein A1: Plant-based (vs Baseline)** + +![][image148] +[image148]: /blog/plantbasedmeta/image148.png + +**Apolipoprotein A1: Plant-based by Duration (vs Control)** + +![][image149] +[image149]: /blog/plantbasedmeta/image149.png + +**Apolipoprotein A1: Plant-based by Duration (vs Baseline)** + +![][image150] +[image150]: /blog/plantbasedmeta/image150.png + +**Apolipoprotein A1: Plant-based by Weight Loss (vs Control)** + +![][image151] +[image151]: /blog/plantbasedmeta/image151.png + +**Apolipoprotein A1: Plant-based by Weight Loss (vs Baseline)** + +![][image152] +[image152]: /blog/plantbasedmeta/image152.png + +# LOW DENSITY LIPOPROTEIN PARTICLE COUNT + +**Low Density Lipoprotein Particle Count: Plant-based (vs Control)** + +![][image153] +[image153]: /blog/plantbasedmeta/image153.png + +**Low Density Lipoprotein Particle Count: Plant-based (vs Baseline)** + +![][image154] +[image154]: /blog/plantbasedmeta/image154.png + +**Low Density Lipoprotein Particle Count: Plant-based by Duration (vs Control)** + +![][image155] +[image155]: /blog/plantbasedmeta/image155.png + +**Low Density Lipoprotein Particle Count: Plant-based by Duration (vs Baseline)** + +![][image156] +[image156]: /blog/plantbasedmeta/image156.png + +# LOW DENSITY LIPOPROTEIN PARTICLE SIZE + +**Low Density Lipoprotein Particle Size: Plant-based (vs Control)** + +![][image157] +[image157]: /blog/plantbasedmeta/image157.png + +**Low Density Lipoprotein Particle Size: Plant-based (vs Baseline)** + +![][image158] +[image158]: /blog/plantbasedmeta/image158.png + +**Low Density Lipoprotein Particle Size: Plant-based by Duration (vs Control)** + +![][image159] +[image159]: /blog/plantbasedmeta/image159.png + +**Low Density Lipoprotein Particle Size: Plant-based by Duration (vs Baseline)** + +![][image160] +[image160]: /blog/plantbasedmeta/image160.png + +# LIVER FUNCTION + +**Alanine Aminotransferase (U/L) + +![][image161] +[image161]: /blog/plantbasedmeta/image161.png + +**Alanine Aminotransferase: Plant-based (vs Control)** + +![][image162] +[image162]: /blog/plantbasedmeta/image162.png + +**Alanine Aminotransferase: Plant-based (vs Baseline)** + +![][image163] +[image163]: /blog/plantbasedmeta/image163.png + +**Alanine Aminotransferase: Plant-based by Duration (vs Control)** + +![][image164] +[image164]: /blog/plantbasedmeta/image164.png + +**Alanine Aminotransferase: Plant-based by Duration (vs Baseline)** + +![][image165] +[image165]: /blog/plantbasedmeta/image165.png + +# ASPARTATE AMINOTRANSFERASE + +**Aspartate Aminotransferase: Plant-based (vs Control)** + +![][image166] +[image166]: /blog/plantbasedmeta/image166.png + +**Aspartate Aminotransferase: Plant-based (vs Baseline)** + +![][image167] +[image167]: /blog/plantbasedmeta/image167.png + +# GAMMA-GLUTAMYL TRANSFERASE + +**Gamma-Glutamyl Transferase: Plant-based (vs Control)** + +![][image168] +[image168]: /blog/plantbasedmeta/image168.png + +**Gamma-Glutamyl Transferase: Plant-based (vs Baseline)** + +![][image169] +[image169]: /blog/plantbasedmeta/image169.png + +# BILIRUBIN + +**Bilirubin: Plant-based (vs Control)** + +![][image170] +[image170]: /blog/plantbasedmeta/image170.png + +**Bilirubin: Plant-based (vs Baseline)** + +![][image171] +[image171]: /blog/plantbasedmeta/image171.png + +# THYROID FUNCTION + +**Triiodothyronine (ng/dL) + +![][image172] +[image172]: /blog/plantbasedmeta/image172.png + +**Triiodothyronine: Plant-based (vs Control)** + +![][image173] +[image173]: /blog/plantbasedmeta/image173.png + +**Triiodothyronine: Plant-based (vs Baseline)** + +![][image174] +[image174]: /blog/plantbasedmeta/image174.png + +# THYROXINE + +**Thyroxine: Plant-based (vs Control)** + +![][image175] +[image175]: /blog/plantbasedmeta/image175.png + +**Thyroxine: Plant-based (vs Baseline)** + +![][image176] +[image176]: /blog/plantbasedmeta/image176.png + +# FREE TRIIODOTHYRONINE + +**Free Triiodothyronine: Plant-based (vs Control)** + +![][image177] +[image177]: /blog/plantbasedmeta/image177.png + +**Free Triiodothyronine: Plant-based (vs Baseline)** + +![][image178] +[image-45]: /blog/plantbasedmeta/image-4-45.png + +# THYROXINE + +**Free Thyroxine: Plant-based (vs Control)** + +![][image178] +[image178]: /blog/plantbasedmeta/image178.png + +**Free Thyroxine: Plant-based (vs Baseline)** + +![][image179] +[image179]: /blog/plantbasedmeta/image179.png + +# THYROID STIMULATING HORMONE + +**Thyroid Stimulating Hormone: Plant-based (vs Control)** + +![][image180] +[image180]: /blog/plantbasedmeta/image180.png + +**Thyroid Stimulating Hormone: Plant-based (vs Baseline)** + +![][image181] +[image181]: /blog/plantbasedmeta/image181.png + +# ENERGETICS + +# ENERGY EXPENDITURE + +**Energy Expenditure: Plant-based (vs Control)** + +![][image182] +[image182]: /blog/plantbasedmeta/image182.png + +**Energy Expenditure: Plant-based (vs Baseline)** + +![][image183] +[image183]: /blog/plantbasedmeta/image183.png + +**Energy Expenditure: Plant-based by Duration (vs Control)** + +![][image184] +[image184]: /blog/plantbasedmeta/image184.png + +**Energy Expenditure: Plant-based by Duration (vs Baseline)** + +![][image185] +[image185]: /blog/plantbasedmeta/image185.png + +**Energy Expenditure: Plant-based by Weight Loss (vs Control)** + +![][image186] +[image186]: /blog/plantbasedmeta/image186.png + +**Energy Expenditure: Plant-based by Weight Loss (vs Baseline)** + +![][image187] +[image187]: /blog/plantbasedmeta/image187.png + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting! + +# BIBLIOGRAPHY""" + , articleReferences = + [ { author = "Agren, J. J., et al." + , title = "Divergent Changes in Serum Sterols during a Strict Uncooked Vegan Diet in Patients with Rheumatoid Arthritis" + , journal = "The British Journal of Nutrition" + , year = "2001" + , link = "https://doi.org/10.1079/bjn2000234" + } + , { author = "Alleman, Rick J., et al." + , title = "Both a Traditional and Modified Daniel Fast Improve the Cardio-Metabolic Profile in Men and Women" + , journal = "Lipids in Health and Disease" + , year = "2013" + , link = "https://doi.org/10.1186/1476-511X-12-114" + } + , { author = "Barnard, N. D., et al." + , title = "Effectiveness of a Low-Fat Vegetarian Diet in Altering Serum Lipids in Healthy Premenopausal Women" + , journal = "The American Journal of Cardiology" + , year = "2000" + , link = "https://doi.org/10.1016/s0002-9149(99)00911-x" + } + , { author = "Barnard, Neal D., et al." + , title = "The Effects of a Low-Fat, Plant-Based Dietary Intervention on Body Weight, Metabolism, and Insulin Sensitivity" + , journal = "The American Journal of Medicine" + , year = "2005" + , link = "https://doi.org/10.1016/j.amjmed.2005.03.039" + } + , { author = "Barnard, Neal D., et al." + , title = "A Low-Fat Vegan Diet Improves Glycemic Control and Cardiovascular Risk Factors in a Randomized Clinical Trial in Individuals with Type 2 Diabetes" + , journal = "Diabetes Care" + , year = "2006" + , link = "https://doi.org/10.2337/dc06-0606" + } + , { author = "Barnard, Neal D., et al." + , title = "A Low-Fat Vegan Diet and a Conventional Diabetes Diet in the Treatment of Type 2 Diabetes: A Randomized, Controlled, 74-Wk Clinical Trial" + , journal = "The American Journal of Clinical Nutrition" + , year = "2009" + , link = "https://doi.org/10.3945/ajcn.2009.26736H" + } + , { author = "Barnard, Neal D., et al." + , title = "Turning the Waiting Room into a Classroom: Weekly Classes Using a Vegan or a Portion-Controlled Eating Plan Improve Diabetes Control in a Randomized Translational Study" + , journal = "Journal of the Academy of Nutrition and Dietetics" + , year = "2018" + , link = "https://doi.org/10.1016/j.jand.2017.11.017" + } + , { author = "Barnard, Neal D., et al." + , title = "A Mediterranean Diet and Low-Fat Vegan Diet to Improve Body Weight and Cardiometabolic Risk Factors: A Randomized, Cross-over Trial" + , journal = "Journal of the American Nutrition Association" + , year = "2022" + , link = "https://doi.org/10.1080/07315724.2020.1869625" + } + , { author = "Bloomer, Richard J., et al." + , title = "Comparison of a Restricted and Unrestricted Vegan Diet Plan with a Restricted Omnivorous Diet Plan on Health-Specific Measures" + , journal = "Healthcare (Basel, Switzerland)" + , year = "2015" + , link = "https://doi.org/10.3390/healthcare3030544" + } + , { author = "Bunner, Anne E., et al." + , title = "Nutrition Intervention for Migraine: A Randomized Crossover Trial" + , journal = "The Journal of Headache and Pain" + , year = "2014" + , link = "https://doi.org/10.1186/1129-2377-15-69" + } + , { author = "Crimarco, Anthony, et al." + , title = "A Randomized Crossover Trial on the Effect of Plant-Based Compared with Animal-Based Meat on Trimethylamine-N-Oxide and Cardiovascular Disease Risk Factors in Generally Healthy Adults: Study With Appetizing Plantfood-Meat Eating Alternative Trial (SWAP-MEAT)" + , journal = "The American Journal of Clinical Nutrition" + , year = "2020" + , link = "https://doi.org/10.1093/ajcn/nqaa203" + } + , { author = "David, Lawrence A., et al." + , title = "Diet Rapidly and Reproducibly Alters the Human Gut Microbiome" + , journal = "Nature" + , year = "2014" + , link = "https://doi.org/10.1038/nature12820" + } + , { author = "De Natale, Claudia, et al." + , title = "Effects of a Plant-Based High-Carbohydrate/High-Fiber Diet versus High-Monounsaturated Fat/Low-Carbohydrate Diet on Postprandial Lipids in Type 2 Diabetic Patients" + , journal = "Diabetes Care" + , year = "2009" + , link = "https://doi.org/10.2337/dc09-0266" + } + , { author = "Crosby, Lelia, et al." + , title = "Changes in Food and Nutrient Intake and Diet Quality on a Low-Fat Vegan Diet Are Associated with Changes in Body Weight, Body Composition, and Insulin Sensitivity in Overweight Adults: A Randomized Clinical Trial" + , journal = "Journal of the Academy of Nutrition and Dietetics" + , year = "2022" + , link = "https://doi.org/10.1016/j.jand.2022.04.008" + } + , { author = "Draper, Colleen Fogarty, et al." + , title = "Vegan and Animal Meal Composition and Timing Influence Glucose and Lipid Related Postprandial Metabolic Profiles" + , journal = "Molecular Nutrition & Food Research" + , year = "2019" + , link = "https://doi.org/10.1002/mnfr.201800568" + } + , { author = "Elkan, Ann-Charlotte, et al." + , title = "Gluten-Free Vegan Diet Induces Decreased LDL and Oxidized LDL Levels and Raised Atheroprotective Natural Antibodies against Phosphorylcholine in Patients with Rheumatoid Arthritis: A Randomized Study" + , journal = "Arthritis Research & Therapy" + , year = "2008" + , link = "https://doi.org/10.1186/ar2388" + } + , { author = "Ferdowsian, Hope R., et al." + , title = "A Multicomponent Intervention Reduces Body Weight and Cardiovascular Risk at a GEICO Corporate Site" + , journal = "American Journal of Health Promotion: AJHP" + , year = "2010" + , link = "https://doi.org/10.4278/ajhp.081027-QUAN-255" + } + , { author = "Gardner, Christopher D., et al." + , title = "The Effect of a Plant-Based Diet on Plasma Lipids in Hypercholesterolemic Adults: A Randomized Trial" + , journal = "Annals of Internal Medicine" + , year = "2005" + , link = "https://doi.org/10.7326/0003-4819-142-9-200505030-00007" + } + , { author = "Hall, Kevin D., et al." + , title = "Effect of a Plant-Based, Low-Fat Diet versus an Animal-Based, Ketogenic Diet on Ad Libitum Energy Intake" + , journal = "Nature Medicine" + , year = "2021" + , link = "https://doi.org/10.1038/s41591-020-01209-1" + } + , { author = "Jenkins, David J. A., et al." + , title = "The Effect of a Plant-Based Low-Carbohydrate (鈥楨co-Atkins鈥) Diet on Body Weight and Blood Lipid Concentrations in Hyperlipidemic Subjects" + , journal = "Archives of Internal Medicine" + , year = "2009" + , link = "https://doi.org/10.1001/archinternmed.2009.115" + } + , { author = "Jenkins, David J. A., et al." + , title = "Effect of a Dietary Portfolio of Cholesterol-Lowering Foods given at 2 Levels of Intensity of Dietary Advice on Serum Lipids in Hyperlipidemia: A Randomized Controlled Trial." + , journal = "JAMA" + , year = "2011" + , link = "https://doi.org/10.1001/jama.2011.1202" + } + , { author = "Jenkins, David J. A., et al." + , title = "Effect of a 6-Month Vegan Low-Carbohydrate ('Eco-Atkins鈥) Diet on Cardiovascular Risk Factors and Body Weight in Hyperlipidaemic Adults: A Randomised Controlled Trial." + , journal = "BMJ Open" + , year = "2014" + , link = "https://doi.org/10.1136/bmjopen-2013-003505" + } + , { author = "Kaartinen, K., et al." + , title = "Vegan Diet Alleviates Fibromyalgia Symptoms." + , journal = "Scandinavian Journal of Rheumatology" + , year = "2000" + , link = "https://doi.org/10.1080/030097400447697" + } + , { author = "Kahleova, Hana, et al." + , title = "A Plant-Based High-Carbohydrate, Low-Fat Diet in Overweight Individuals in a 16-Week Randomized Clinical Trial: The Role of Carbohydrates." + , journal = "Nutrients" + , year = "2018" + , link = "https://doi.org/10.3390/nu10091302" + } + , { author = "Kahleova, Hana, et al." + , title = "A Plant-Based Meal Stimulates Incretin and Insulin Secretion More Than an Energy- and Macronutrient-Matched Standard Meal in Type 2 Diabetes: A Randomized Crossover Study." + , journal = "Nutrients" + , year = "2019" + , link = "https://doi.org/10.3390/nu11030486" + } + , { author = "Kahleova, Hana, et al." + , title = "Effect of a Low-Fat Vegan Diet on Body Weight, Insulin Sensitivity, Postprandial Metabolism, and Intramyocellular and Hepatocellular Lipid Levels in Overweight Adults: A Randomized Clinical Trial." + , journal = "JAMA Network Open" + , year = "2020" + , link = "https://doi.org/10.1001/jamanetworkopen.2020.25454" + } + , { author = "Kahleova, Hana, et al." + , title = "Fat Quantity and Quality, as Part of a Low-Fat, Vegan Diet, Are Associated with Changes in Body Composition, Insulin Resistance, and Insulin Secretion. A 16-Week Randomized Controlled Trial." + , journal = "Nutrients" + , year = "2019" + , link = "https://doi.org/10.3390/nu11030615" + } + , { author = "Kjeldsen-Kragh, J., et al." + , title = "Vegetarian Diet for Patients with Rheumatoid Arthritis: Can the Clinical Effects Be Explained by the Psychological Characteristics of the Patients?" + , journal = "British Journal of Rheumatology" + , year = "1994" + , link = "https://doi.org/10.1093/rheumatology/33.6.569" + } + , { author = "Klementova, Marta, et al." + , title = "A Plant-Based Meal Increases Gastrointestinal Hormones and Satiety More Than an Energy- and Macronutrient-Matched Processed-Meat Meal in T2D, Obese, and Healthy Men: A Three-Group Randomized Crossover Study." + , journal = "Nutrients" + , year = "2019" + , link = "https://doi.org/10.3390/nu11010157" + } + , { author = "Koebnick, C., et al." + , title = "Double-Blind, Randomized Feedback Control Fails to Improve the Hypocholesterolemic Effect of a Plant-Based Low-Fat Diet in Patients with Moderately Elevated Total Cholesterol Levels." + , journal = "European Journal of Clinical Nutrition" + , year = "2004" + , link = "https://doi.org/10.1038/sj.ejcn.1601984" + } + , { author = "Lederer, Ann-Kathrin, et al." + , title = "Vitamin B12 Status Upon Short-Term Intervention with a Vegan Diet-A Randomized Controlled Trial in Healthy Participants." + , journal = "Nutrients" + , year = "2019" + , link = "https://doi.org/10.3390/nu11112815" + } + , { author = "Lee, Yu-Mi, et al." + , title = "Effect of a Brown Rice Based Vegan Diet and Conventional Diabetic Diet on Glycemic Control of Patients with Type 2 Diabetes: A 12-Week Randomized Clinical Trial." + , journal = "PloS One" + , year = "2016" + , link = "https://doi.org/10.1371/journal.pone.0155918" + } + , { author = "Ling, W. H., and O. H盲nninen." + , title = "Shifting from a Conventional Diet to an Uncooked Vegan Diet Reversibly Alters Fecal Hydrolytic Activities in Humans." + , journal = "The Journal of Nutrition" + , year = "1992" + , link = "https://doi.org/10.1093/jn/122.4.924" + } + , { author = "Macknin, Michael, et al." + , title = "Plant-Based, No-Added-Fat or American Heart Association Diets: Impact on Cardiovascular Risk in Obese Children with Hypercholesterolemia and Their Parents." + , journal = "The Journal of Pediatrics" + , year = "2015" + , link = "https://doi.org/10.1016/j.jpeds.2014.12.058" + } + , { author = "Mishra, S., et al." + , title = "A Multicenter Randomized Controlled Trial of a Plant-Based Nutrition Program to Reduce Body Weight and Cardiovascular Risk in the Corporate Setting: The GEICO Study." + , journal = "European Journal of Clinical Nutrition" + , year = "2013" + , link = "https://doi.org/10.1038/ejcn.2013.92" + } + , { author = "Neacsu, Madalina, et al." + , title = "Appetite Control and Biomarkers of Satiety with Vegetarian (Soy) and Meat-Based High-Protein Diets for Weight Loss in Obese Men: A Randomized Crossover Trial." + , journal = "The American Journal of Clinical Nutrition" + , year = "2014" + , link = "https://doi.org/10.3945/ajcn.113.077503" + } + , { author = "Nicholson, A. S., et al." + , title = "Toward Improved Management of NIDDM: A Randomized, Controlled, Pilot Intervention Using a Lowfat, Vegetarian Diet." + , journal = "Preventive Medicine" + , year = "1999" + , link = "https://doi.org/10.1006/pmed.1999.0529" + } + , { author = "Ornish, D., et al." + , title = "Can Lifestyle Changes Reverse Coronary Heart Disease? The Lifestyle Heart Trial." + , journal = "Lancet (London, England)" + , year = "1990" + , link = "https://doi.org/10.1016/0140-6736(90)91656-u" + } + , { author = "Ornish, D., et al." + , title = "Intensive Lifestyle Changes for Reversal of Coronary Heart Disease." + , journal = "JAMA" + , year = "1998" + , link = "https://doi.org/10.1001/jama.280.23.2001" + } + , { author = "P盲iv盲rinta, Essi, et al." + , title = "Replacing Animal-Based Proteins with Plant-Based Proteins Changes the Composition of a Whole Nordic Diet-A Randomised Clinical Trial in Healthy Finnish Adults." + , journal = "Nutrients" + , year = "2020" + , link = "https://doi.org/10.3390/nu12040943" + } + , { author = "Peltonen, R., et al." + , title = "Faecal Microbial Flora and Disease Activity in Rheumatoid Arthritis during a Vegan Diet." + , journal = "British Journal of Rheumatology" + , year = "1997" + , link = "https://doi.org/10.1093/rheumatology/36.1.64" + } + , { author = "Ramal, Edelweiss, et al." + , title = "Impact of a Plant-Based Diet and Support on Mitigating Type 2 Diabetes Mellitus in Latinos Living in Medically Underserved Areas." + , journal = "American Journal of Health Promotion: AJHP" + , year = "2018" + , link = "https://doi.org/10.1177/0890117117706793" + } + , { author = "Shah, Binita, et al." + , title = "Anti-Inflammatory Effects of a Vegan Diet Versus the American Heart Association-Recommended Diet in Coronary Artery Disease Trial." + , journal = "Journal of the American Heart Association" + , year = "2018" + , link = "https://doi.org/10.1161/JAHA.118.011367" + } + , { author = "Sofi, Francesco, et al." + , title = "Low-Calorie Vegetarian Versus Mediterranean Diets for Reducing Body Weight and Improving Cardiovascular Risk Profile: CARDIVEG Study (Cardiovascular Prevention With Vegetarian Diet)." + , journal = "Circulation" + , year = "2018" + , link = "https://doi.org/10.1161/CIRCULATIONAHA.117.030088" + } + , { author = "Sutliffe, Jay T., et al." + , title = "C-Reactive Protein Response to a Vegan Lifestyle Intervention." + , journal = "Complementary Therapies in Medicine" + , year = "2015" + , link = "https://doi.org/10.1016/j.ctim.2014.11.001" + } + , { author = "Turner-McGrievy, Gabrielle M., et al." + , title = "A Two-Year Randomized Weight Loss Trial Comparing a Vegan Diet to a More Moderate Low-Fat Diet." + , journal = "Obesity (Silver Spring, Md.)" + , year = "2007" + , link = "https://doi.org/10.1038/oby.2007.270" + } + , { author = "Turner-McGrievy, Gabrielle M., et al." + , title = "Low Glycemic Index Vegan or Low-Calorie Weight Loss Diets for Women with Polycystic Ovary Syndrome: A Randomized Controlled Feasibility Study." + , journal = "Nutrition Research (New York, N.Y.)" + , year = "2014" + , link = "https://doi.org/10.1016/j.nutres.2014.04.011" + } + , { author = "Turner-McGrievy, Gabrielle M., et al." + , title = "Comparative Effectiveness of Plant-Based Diets for Weight Loss: A Randomized Controlled Trial of Five Different Diets." + , journal = "Nutrition (Burbank, Los Angeles County, Calif.)" + , year = "2015" + , link = "https://doi.org/10.1016/j.nut.2014.09.002" + } + , { author = "Turner-McGrievy, Gabrielle M., et al." + , title = "Randomization to Plant-Based Dietary Approaches Leads to Larger Short-Term Improvements in Dietary Inflammatory Index Scores and Macronutrient Intake Compared with Diets That Contain Meat." + , journal = "Nutrition Research (New York, N.Y.)" + , year = "2015" + , link = "https://doi.org/10.1016/j.nutres.2014.11.007" + } + , { author = "Wright, N., et al." + , title = "The BROAD Study: A Randomised Controlled Trial Using a Whole Food Plant-Based Diet in the Community for Obesity, Ischaemic Heart Disease or Diabetes." + , journal = "Nutrition & Diabetes" + , year = "2017" + , link = "https://doi.org/10.1038/nutd.2017.3" + } + , { author = "Yadav, Vijayshree, et al." + , title = "Low-Fat, Plant-Based Diet in Multiple Sclerosis: A Randomized Controlled Trial." + , journal = "Multiple Sclerosis and Related Disorders" + , year = "2016" + , link = "https://doi.org/10.1016/j.msard.2016.07.001" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/QuackSmashing.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/QuackSmashing.elm new file mode 100755 index 0000000..b63caba --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/QuackSmashing.elm @@ -0,0 +1,333 @@ +module Config.Pages.Blogs.MainBlog.QuackSmashing exposing (articleQuackSmashing) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleQuackSmashing : BlogArticle +articleQuackSmashing = + { articleName = "The Hitchhiker's Guide to Quack-Smashing" + , articleLink = Path.toString Path.Blog_Quacksmashing + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "quacksmashing" + , articlePublished = "Dec 24, 2022" + , articleBody = """ +By no stretch of the imagination is there any shortage of quackery on social media. Chances are excellent that if you鈥檝e spent any appreciable amount of time on social media, you have encountered some number of quacks and some sort of quackery that they espouse. You might not even be aware that you鈥檙e looking at quackery while you鈥檙e being exposed to it. So, the aim of this article will be to attempt to simplify the processes of both identifying quackery and dealing with quackery. + +Fundamentally, the issue is not merely that quacks are just interpreting studies incorrectly or affirming crazy beliefs. Those are just symptoms of the problem, rather than being the root cause of the problem. Typically, the problem is occurring within their epistemic framework, and is the very thing that is actually leading them to form their crazy beliefs to begin with. As such, a universally efficacious way to get under a quack鈥檚 position and expose them as a raving lunatic is to press them on their epistemic standards in one way or another. That is to say, subject their belief-formation process to a thorough stirring, so that their insanity is allowed to bubble to the surface for all to see. + +This means dragging them down to a level that is inferentially prior to their current understanding, and away from the level of research and studies. Just like the scientific method is inferentially prior to studies or study design, scientific epistemology is inferentially prior to the scientific method. If your starting point is on the level of studies and study design, following the inferential lineage backward will eventually bring you to a level where the premises will all be principles, virtues, or axioms. This is the level we need to bring the quack to in order to address the fundamental flaws in their reasoning. + +The ultimate aim of this process is to expose errors in the quack鈥檚 reasoning, not to necessarily convince them of anything. Of course, the hope is that they correct the complications in their belief-formation process, such that they cease to be a quack by the end of the discussion. However, this isn鈥檛 a very likely outcome, but this is nonetheless the outcome that you should be aiming for in order to have the best good faith conversation possible. To explore why this outcome isn鈥檛 particularly likely, we鈥檒l have to explore what a quack is, and why they鈥檙e typically so immovable. So, let鈥檚 get into some definitions. + +# QUACK DEFINITION + +>_A quack is a type of scientific delinquent鈥 one who brandishes the trappings of science, yet whose scientific standards are obstinately in violation of those considered most virtuous within the contemporary philosophy of science._ + +It was no easy task to get to the bottom of what is so objectionable about the quack鈥檚 behaviour. It took interviewing multiple domain experts and trashing dozens of revisions, but I think I finally have something that is workable and minimally assailable for the time being. Essentially, the trait that quantifies over all quacks is a fundamental lack of respect for the rules of scientific inquiry. + +If we were to think of science as a country with laws, a quack would be a contemptuous sort of outlaw within that country. But, quacks are not only rule-breakers by nature, they also actively turn their noses up at the rules鈥 almost relishing in their own intransigence. Despite the commonalities, quacks can usually be categorized in at least one of three distinct ways: **deranged**, **dense**, or **dishonest**. + +**Deranged** + +1. **The Zealot**: one who has assimilated quackery into their identity, and will be emotionally damaged if the quackery is challenged. + +2. **The Contrarian**: one who espouses quackery due to strong anti-establishment and/or conspiratorial and/or paranoid tendencies. + +3. **The Narcissist**: one who is simply so self-assured of their own infallibility that they cannot fathom that their beliefs could be quackery. + +4. **The Aggrieved**: one who feels wronged by some conventional scientific paradigm and is seeking vindication or revenge through quackery. + +5. **The JAQ-off**: one who slyly hat-tips to quackery, often in an ostentatious or cheeky manner, but claims to be just asking questions when challenged. + +6. **The Circlejerker**: one who is deeply impressionable and merely forms the beliefs of whatever community will accept them. + + +**Dense** + +1. **The Zombie**: one who has made little to no effort to form their own beliefs, but rather just recapitulates the beliefs of influential people. + +2. **The Imbecile**: one who lacks the requisite intelligence and/or cognitive faculties to form rational beliefs of their own accord. + + +**Dishonest** + +1. T**he Grifter**: one who espouses quackery, not necessarily because they believe it to be true, but rather for some ulterior motive such as money or clout. + +2. **The Yo-Yo**: one who spouses both quackery and non-quackery, often to the point of self-contradiction, depending on the context. + + +This probably isn鈥檛 an exhaustive list of quack species and subspecies, and will likely be updated in the future. For now, these are the most common types of quacks you鈥檙e likely to encounter online or on social media. Most quacks you will encounter will be of the deranged variety, and of them, the majority will be either contrarian or narcissistic. The narcissistic quacks are hardly worth engaging with, unless it is for the benefit of an audience. But other than that, you鈥檒l never convince them of anything because they鈥檙e cocksure of their own perfection. Contrarians may be swayed by reason, but it is not particularly likely. + +Much like the narcissistic quack, the dishonest quacks are also not likely to be worth engaging with, except for the benefit of onlookers to whom you seek to reveal the quack鈥檚 dishonesty. Dishonest quacks, especially grifters, will tend to sway their affirmations in lockstep with the trends of the time. For example, many grifters who were pushing low carbohydrate diets back in 2017 are now pushing raw, grassfed carnivore diets in 2022. It just depends on what鈥檚 trending at the moment. It鈥檚 a game to them. Engaging is typically pointless and you鈥檙e justified in disengaging, in my opinion. + +Altogether, you have the best chance of convincing dense quacks, because they鈥檙e less likely to be as intransigent as other varieties. These types of quacks don鈥檛 typically believe quackery due to some emotional commitment or ulterior motives. Usually they鈥檙e just either uneducated or dumb. However, if they鈥檙e too dumb to understand the difference between good evidence and bad evidence, convincing them may be ultimately beyond your reach. But it is nonetheless worthwhile to attempt reasoning with them. The best discussions will likely be had with the zombie variety of quack, as they鈥檙e usually the closest to just being truly naive, and they鈥檙e not necessarily dumb. + +Now that we have a bit of a handle on what constitutes a quack, let鈥檚 move on to the next definition we need to cover: + +# QUACKERY DEFINITION + +>_Any ostensible hypothesis that either fails to satisfy any critical theoretical virtue of a scientific hypothesis (i.e., testability, fruitfulness, scope, parsimony, conservativism) or satisfies fewer theoretical virtues compared to the prevailing scientific hypotheses against which it is intended to compete._ + +Given that a proposition is a statement that can be either true or false, a scientific hypothesis can be thought of as basically being an empirically testable proposition. For example, say that we wanted to develop a theory to explain the rising of the sun each morning. We could generate a few different hypotheses. Hypothesis A might suppose that the sun rises because God is pulling it across the sky. Hypothesis B might suppose that the sun rises because it is revolving around the Earth. Hypothesis C might suppose that the sun rises because the Earth is spinning. + +Let鈥檚 linger on hypothesis A for a moment to discuss some of its issues. Firstly, it鈥檚 completely unclear how hypothesis A could be tested, so whether or not it genuinely qualifies as a hypothesis is questionable. Those with a background in science have likely been exposed to the principle that unfalsifiable hypotheses are to be avoided, and hypothesis A is an example of that. Testability is arguably the most important aspect of a scientific hypothesis. Without testability, there is no empirical investigation. Without an empirical investigation, there is no science. The hypothesis ends up being completely ad hoc (which we will discuss later). + +On the other hand, hypothesis B certainly has the capacity to make predictions. One could create a model wherein the sun travels around the Earth, and observations can certainly be made that are consistent with that model. Hypothesis C could be tested similarly. One could construct a model wherein the Earth is spinning and the sun is fixed in place, and observations can be made to see if that model pans out. + +So far, hypothesis B and hypothesis C don鈥檛 seem to underdetermine phenomena differently, and the observations seem equally expected on both hypotheses. However, what if we also made the observation that there are other planets out there in space, and we also observe that those planets seem to move in relationship to the sun in a way that suggests that the sun is a fixed object. This observation is more expected on hypothesis C than hypothesis B. The observed phenomena are underdetermined on hypothesis B, and thus hypothesis C would come out on top until there is a better hypothesis to supplant it. + +Great! We have established what it takes for a proposition to be a scientific hypothesis, as well as what it takes for one scientific hypothesis to prevail over another. Now let鈥檚 move on to discuss the different criteria that such hypotheses need to satisfy in order for them to be competitive within the domain of science. These are the epistemic virtues we touched on earlier鈥 the standards by which the viability of a tentatively competing scientific hypothesis will be measured. [鹿](https://www.oxfordbibliographies.com/display/document/obo-9780195396577/obo-9780195396577-0409.xml) [虏](https://books.google.ca/books/about/How_to_Think_About_Weird_Things_Critical.html?id=YR4iAAAAQBAJ&redir_esc=y) + +# THEORETICAL VIRTUES + +1. **Testability**: A hypothesis is scientific only if it is testable, that is, only if it predicts something more than what is predicted by the background theory alone. + +2. **Fruitfulness**: Other things being equal, the best hypothesis is the one that is the most fruitful, that is, makes the most successful novel predictions. + +3. **Scope**: Other things being equal, the best hypothesis is the one that has the greatest scope, that is, that explains and predicts the most diverse phenomena. + +4. **Parsimony**: Other things being equal, the best hypothesis is the simplest one, that is, the one that makes the fewest assumptions. + +5. **Conservatism**: Other things being equal, the best hypothesis is the one that is the most conservative, that is, the one that fits best with established beliefs. + + +All else equal, if an alternative hypothesis fails to outcompete a prevailing hypothesis on any of these measures, why form the belief that the alternative hypothesis is more likely to be true compared to the prevailing hypothesis? Beyond the testability of a hypothesis, the extent to which a hypothesis fails to satisfy any of these theoretical virtues will determine the 鈥渁d-hocness鈥 of that hypothesis. An ad hoc hypothesis is also known as a 鈥渏ust-so story鈥, which is a phrase you may have heard before. + +While it goes without saying that ad-hocness is undesirable in science, it is important to emphasize that this is the crux of the quack鈥檚 rhetoric. Quackery is like an artichoke of idiocy, and just-so story-telling is at the heart of it. You have to peel it slowly to expose the fuckery. This sort of delinquent fabulism takes many forms, and it鈥檚 not always obvious when a hypothesis is ad-hoc and failing to satisfy one or more theoretical virtues compared to another hypothesis. But, hopefully your intuitions can be adequately primed with a few examples. Let鈥檚 examine this scientific hypothesis: + +>_Vegetable oils are the cause of heart disease._ + +At first glance, this hypothesis appears to be extremely attractive in its parsimony. It appears to be making very few assumptions, as it is reducing the cause of heart disease down to a single variable. However, this is an illusion. This hypothesis must actually bootstrap an enormous number of assumptions in order to compensate for its lack of scope and fruitfulness. Not only does the totality of the empirical evidence weigh heavily against this hypothesis, it鈥檚 not clear what novel predictions the hypothesis has generated, if any at all. + +The primary issue is that the hypothesis is lacking in scope because it does not account for the majority of our observations regarding vegetable oils and heart disease. Typically, the quack will attempt to compensate for this shortcoming by casting doubt on existing research鈥 鈥渢hose findings are wrong because epidemiology is pseudoscience鈥. What the quack doesn鈥檛 realize is that this actually decreases the parsimony of their hypothesis. This leaves them with an ad-hoc story that is not particularly unifying, fruitful, or parsimonious. Let鈥檚 examine another hypothesis: + +>_Ancestral foods protect against all illnesses.鈥 + +On the face of it, this hypothesis might appear similar to the first in that it lacks scope and fruitfulness, and in turn compromises its own parsimony. However, it may be even worse than that. If ancestral foods are referring to foods that humans consumed during some prehistoric time period, then the hypothesis is actually untestable. Humans no longer have access to those foods, and as such the hypothesis is almost entirely ad hoc, and the theoretical virtues that it upholds are few to none. + +The more sensitive you become to when a hypothesis is failing in its virtuousness, the more straightforward it will be to identify and dispatch quackery. For instance, consider what has been described above in previous examples, and examine these other quack hypotheses carefully: + +> _Red meat protects against mental illness._ +> _Sunlight protects against skin cancer._ +> _Blueberries cure Alzheimer鈥檚 disease._ +> _Refined carbohydrates cause obesity._ +> _Milk products impair bone health._ +> _Soy products feminize men._ +> _Vegan diets cure cancer._ + +Remember that quacks fundamentally don鈥檛 care about scientific rigour, and virtually all quackery will follow a similar structure at its core鈥 an utter lack of respect for the rules we just discussed. Thus, there is a virtually universally efficacious way of uprooting quackery. Simply interrogate the quack about how their hypothesis better conforms to the rules compared to other hypotheses, and watch them crumble. + +Once you start scrutinizing quackery like this on this basis, you will quickly realize that quacks are just master fabulists鈥 iron chefs of word salads. Mind you, quacks will never admit to this. Even when their bullshit has been revealed to them point blank, the exact lack of rigour that got them to be in their current state will end up keeping them smiling through their humiliation. + +# THE QUACK'S TRICHOTOMY + +At this point it would be worthwhile to discuss the **Quack鈥檚 Trichotomy**. This concept has been borrowed from Lance Bush鈥檚 anti-realist metaethical thesis. While it was originally a way of categorizing different types of moral realism, it would appear to be highly applicable to categorizing different types of quackery as well. + +Basically, quackery will ultimately reduce down into one of three categories: **false**, **trivial**, or **unintelligible**. As discussed above, most quackery will end up being false (or at least more likely to be false than true). But, there are some other common cases to explore. Identifying just what kind of utterances the quack is making will be helpful in figuring out whether or not it鈥檚 even worth entertaining their madness. Consider the following three interpretations of this hypothesis: + +>_Red meat is healthy._ + +**False Interpretation** + +Perhaps the tentative quack cashes out the term 鈥渉ealthy鈥 into some sort of claim about red meat not increasing the risk of heart disease. This can be tested, and it turns out that when the best available data is aggregated together, across multiple domains, red meat consumption reliably associates with an increased risk of heart disease. This means that this hypothesis would just be false, or more likely false than true. + +**Trivial Interpretation** + +Let鈥檚 just say that all the tentative quack means by 鈥渉ealthy鈥 is that they themselves just feel really good on a diet that is high in red meat. In this case, the hypothesis is actually going to be 鈥淚 feel really good on a diet that is high in red meat.鈥 This is not anything that anyone would contest, as it鈥檚 clearly true. However, it鈥檚 trivially true, and a pointless proposition to utter. We need not debate this. This claim may not necessarily make them a quack, but we should probably just leave this idiot to their fuzzy feelings and move on. + +**Unintelligible Interpretation** + +In this case, we鈥檒l imagine that the tentative quack doesn鈥檛 unpack the utterance any further, and just continues to insist that red meat is 鈥渉ealthy鈥, over and over. If no further clarification is offered, this interpretation of the hypothesis is just gibberish. What is healthy supposed to mean? To me, 鈥渉ealthy鈥 is a relational concept that joins many relata鈥 X is healthy for Y compared to W relative to standard Z (where healthy is defined as an exposure that increases the lag-time to the onset of illness compared to a different exposure). Unless their meaning is unpacked in an intelligible way, their utterance doesn鈥檛 even rise to the level of being a proposition. They鈥檙e literally just gibberating, and we need not debate their ramblings. Leave them to their delusions. + +In an exceedingly small minority of cases that fall outside of the scope of the **Quack鈥檚 Trichotomy**, the tentative quack鈥檚 proposition will be true and convincing, rather than being false, trivial, or unintelligible. In this case, the proposition likely isn鈥檛 quackery and you likely just mistook the proposition as quackery due to miscommunication. If this happens, you should just accept the proposition and feel good that you learned a new fact today. Enjoy it when it happens. But again, this almost never happens. + +There is one final trope we need to explore, though. Every so often, you will encounter someone who is committed to extraordinarily high standards of evidence. For example, quacks in the nutrition blogosphere will sometimes claim the following: + +> 鈥淓vidence cannot be obtained in nutrition science unless you have studied the effects of a food in a multi-generational, quadruple-blind randomized controlled metabolic ward crossover trial in human clones.鈥 + +This is not really a hypothesis. It鈥檚 just a claim that directly pertains to scientific epistemology itself, which means we must deal with this in a unique way. In this case, we should simply ask them what theoretical virtue would be either violated or unable to be satisfied unless we had such evidence for our hypothesis? As such, it would be worthwhile to get into a few definitions regarding what constitutes evidence. + +# EVIDENCE DEFINITION + +>_That which is more expected on a given hypothesis compared to the negation of that hypothesis._ + +On this definitions, falling short of achieving a trial design like the one described above does not bar us from making discoveries that are more or less expected on different hypotheses. Thus, failing to achieve such a trial design is not a barrier to discovering any sort of evidence. If a short trial with a limited number of people finds an effect of some intervention, that effect is still going to be expected on a hypothesis that predicts it. So, it鈥檚 still evidence. + +Now we鈥檙e ready to start tackling quackery ourselves. Next up, we鈥檒l go through a universally applicable procedures for smashing quackery. The beauty is that the procedures leave the burden of proof squarely on the quack, and pressure test their epistemic standards. This means that you probably don鈥檛 even need to show up with studies of your own if you don鈥檛 want to. The ball will mostly be in their court, and the burden of proof will be squarely theirs. By the end they鈥檒l find themselves looking up from within their own grave and they will have nobody but themselves to blame for them being there. + +Before we move on to the quack-smashing debate procedure, it's recommended that you download the included [dialogue tree](https://drive.google.com/file/d/1QQaN6HRwzp3kY2DAcnHVBxeX6jBhrvkw/view?usp=share_link) and refer to it while reading. + +# PHASE ONE: CLARIFICATION + +**Step 1: Ask for a proposition** + +Essentially, a proposition is what is known as a truth-apt statement. Meaning that it is a statement that can be either true or false. You can think of a proposition like a claim. A common tactic among quacks is to dance around some implied commitment without ever actually explicitly making any claims. + +Quacks are notoriously unclear when they communicate. Sometimes quacks will simply gesture in your direction with a series of vague utterances that merely have the appearance of communicating disagreement. For example, a quack might say to you: + +> _Read the studies you idiot!_ +> _Follow the money to know the truth!_ +> _We鈥檝e been lied to for over fifty years!_ + +Notice how vague these statements are. Quackery thrives on vagueness. You must straightforwardly ask the quack for their position鈥 鈥淚鈥檓 sorry, I just want to understand what you mean. What do you think is true that people who believe this study think is false?鈥 Be firm, and stand your ground. Press them until they give you an utterance that at least has the appearance of something propositional. + +**Step 2: Evaluate their ostensible proposition** + +Once you have a proposition, we begin the clarification phase. During this step you are aiming to demystify anything that you find unclear. If there are terms over which there may be disagreement, such as relational terms with missing relata, you must ask for clarification. + +If clarification is required, proceed to **step 2.1**. If clarification is not required, proceed to **step 2.2**. + +**Step 2.1: Ask for clarification** + +Essentially what we need from the quack is a clear, contestable proposition. Scrutinize every word in their proposition if necessary. This is not to bog down the debate, but to make sure that there is as close to a complete, unambiguous shared understanding of the terms being used by the quack as possible. In the vast majority of cases, asking the quack simple clarifying questions about their proposition will make it fall apart on the spot. + +If the tentative quack鈥檚 explanation devolves into bullshit like rambling or gibberish, just walk away from the idiot. If it appears intelligible and it鈥檚 just some trivial utterance that isn鈥檛 worth discussing, we can start assessing its truth value. + +# PHASE TWO: ARGUMENTATION + +**Step 2.2: Check for modal claims** + +If we manage to obtain an intelligible proposition from the quack, we can begin checking for modal language. Modal language typically refers to concepts like impossibility, necessity, possibility, or contingency. Be sensitive to when your interlocutor is using words that function as synonyms for any of these terms. For example, words like 鈥渃an鈥, 鈥渁ble鈥, 鈥渕ay鈥, 鈥渃ould鈥, or 鈥渃apable鈥 should all be taken as synonyms for the modal term 鈥減ossible鈥, whereas words like 鈥渦nable鈥, 鈥渃annot鈥, 鈥渃ouldn鈥檛鈥, 鈥渦nable鈥, 鈥渋ncapable鈥, should all be taken as synonyms for the modal term 鈥渋mpossible鈥. + +Additionally, if your interlocutor suggests that something is necessarily the case, that should be taken as just another way of saying that the contrary is impossible. As such, impossibility and necessity are modal terms that can essentially be captured by the same modal operator. Similarly, if your interlocutor suggests that something is possible, all they鈥檙e saying is that it's necessarily not impossible, which is to say that it's contingent upon something else. So, much like impossibility and necessity, possibility and contingency can also be interpreted interchangeably, under the same modal operator. At the end of the day the terms can ultimately be cashed out into what is impossible or possible. + +To be clear, these terms are just operators, and don鈥檛 mean much unless they鈥檙e in reference to a given modality. Modalities are just means by which these modal operators can be understood. There are two primary modalities that are commonly discussed in the philosophy literature鈥 physical and logical. For example, something is logically impossible if it entails a contradiction, and something is physically impossible if it violates a law of physics. + +Of course there are other modalities. In fact, there are probably infinite numbers of modalities on which an operator like impossible can be understood. For instance, while it鈥檚 certainly logically and physically possible to murder someone in any country, it is legally impossible to murder someone in most countries. Though we don鈥檛 really use modal language in this way. + +Overall, impossibility can be interpreted as something that is incompatible with a given rule/standard or set of rules/standards, and possibility can just be interpreted as something that is compatible with a given rule/standard or rule/standard set. + +In most cases, if the modal operator they鈥檙e invoking relates to possibility, then it鈥檚 probably not even worth continuing the discussion. In the vast majority of cases it鈥檚 just trivial to claim something is possible. If the proposition contains a modal operator related to impossibility, proceed to **step 2.3**. If their proposition does not contain a modal operator, proceed to **step 2.4**. + +**Step 2.3: Ask which law is broken on their stated modality** + +This step is pretty straightforward. If your interlocutor is claiming something is impossible, ask them on what modality is it impossible. If necessary, explain to them what modalities and modal operators are, just so they鈥檙e both clear on what you鈥檙e asking of them and what kind of claim they鈥檝e actually made. + +If they cannot unpack the modality and the law that鈥檚 violated on that modality first give them the opportunity to amend their claim. If they refuse to amend the claim or are unable to unpack the claim, then proceed to **step 6**. If they actually manage to unpack the modality and the law that鈥檚 violated on that modality, and it鈥檚 convincing to you, you should probably just concede. + +**Step 2.4: Ask for a goalpost** + +Assuming there were no modal claims in our tentative quack鈥檚 proposition, we can proceed to the first step in the actual debate鈥 requesting a goalpost. Basically, you will merely ask them what evidence would be required for them to affirm that their proposition is false. This is different than asking them what evidence it would take for them to reject their proposition. We want to know what it would take for them to affirm their proposition鈥檚 negation. + +This step isn鈥檛 vital, so it鈥檚 not a huge concern if our tentative quack doesn鈥檛 render a goalpost to you. However, keep in mind that if they can鈥檛 tell you their goalpost for affirming their proposition鈥檚 negation, they are essentially telling you that they don鈥檛 even know why they believe that their proposition is true. So, it鈥檚 up to you if you want to proceed further. If you want to stop here, just shame them for being a sophist and disengage. + +If you decide to continue, proceed to **step 3**. + +**Step 3: Ask for an inference for their proposition** + +This step is pretty straightforward. You鈥檙e just straight up asking for the argument for the proposition. After you鈥檝e obtained a clear, contestable proposition from the quack, you must then ask them what the evidence is for their proposition. Asking the quack for evidence is perfectly fair. Don鈥檛 let them try to convince you otherwise. They bear the burden of proof, and the onus is solely on them to demonstrate the merits of their proposition. + +If they actually manage to render an argument, you can proceed to **step 3.1**. If they refuse to render an argument, proceed to **step 6**. + +**Step 3.1: Identify the type of inference** + +Basically there are two broad categories of inference someone can make. Either their inference is going to be a posteriori or it is going to be a priori. Both a posteriori and a priori inferences are forms of deductive arguments. However, in contrast to an a priori inference, an a posteriori inference requires synthesizing prior experience of the world. The truth or falsity of an a posteriori inference will rest on empirical evidence. + +**A Posteriori** + +> **P1)** An unmarried person is more likely to be depressed. +> **P2)** Jim is unmarried. +> **C)** Therefore, Jim is more likely to be depressed. + +An a priori inference doesn鈥檛 require prior experience of the world, and the truth of falsity of the inference will hinge on the definitions or meaning of the terms used. + +**A Priori** + +> **P1)** An unmarried man is a bachelor. +> **P2)** Jim is an unmarried man. +> **C)** Therefore, Jim is a bachelor. + +For the purposes of this article, we鈥檒l just be focusing on a posteriori inferences. If you are interested in how to address a priori inference, please refer to the included dialogue tree at the top of this section. Otherwise, proceed to **step 3.2**. + +**Step 3.2: Check for modal claims** + +Generally speaking, if their inference is a posteriori and it contains a modal operator, they鈥檙e likely to be referring to a physical modality (but they could be referring to another modality). + +If they are invoking an operator that is related to impossibility, proceed to **step 3.3**. Once again, if the invoke a modal operator related to possibility, then it鈥檚 probably worthwhile to just agree and disengage, as it鈥檚 typically just trivial to claim that things are possible. If there are no modal operators in their claim, proceed to **step 3.4**. + +**Step 3.3: Ask which law is broken on their stated modality** + +The overall procedure is identical to **step 2.3**. If the quack can鈥檛 unpack the claim or they refuse to amend the claim, then proceed to **step 6**. If they actually manage to unpack their the modality and the law that鈥檚 violated on that modality, and it鈥檚 convincing to you, you should probably just concede. + +**Step 3.4: Evaluate their empirical evidence** + +During this step, it pays to have some critical appraisal skills to fall back on, but it鈥檚 not necessary. The most important thing to remember is that you have to be honest about what you find convincing and you have to be honest enough to amend your views according to new evidence. + +Keep the definitions of evidence that we discussed earlier in mind going forward. After the quack has rendered their evidence, examine it carefully. In the vast majority of cases it will be unclear how this evidence should be more expected on their hypothesis as opposed to some other hypothesis, even another hypothesis that you literally dream up on the spot as a counter explanation (which we will be covered in later steps). Consider the following proposition: + +>_Carnivorous diets made humans more intelligent._ + +A bold proposition like this certainly requires substantial evidence, which is perfectly reasonable to request of the quack. Let鈥檚 say you ask for the evidence, and the quack renders something along the lines of this in response: + +>_Because plant agriculture decreased human brain size by 11%._ + +Bearing all of the above in mind, critically evaluate their evidence and think hard about the assumptions it makes. If you don鈥檛 find anything objectionable, it is perfectly OK to admit that sufficient evidence for the proposition has been rendered, and that you concede the proposition on that basis. + +If the quack managed to render a goalpost to you in **step 2.4**, then proceed to **step 3.5**. If they did not render a goalpost to you, and their evidence is not convincing to you, then proceed to **step 5**. + +**Step 3.5: Compare their evidence to their goalpost** + +Check to see if their empirical evidence is actually consistent with the goalpost they described. If their empirical evidence is either consistent or stronger than the sort of evidence described in their goalpost, then simply proceed to **step 5**. However, if their empirical evidence is _weaker_ than the sort of evidence they described in their goalpost, then the quack has just straightforwardly contradicted themselves and you can proceed straight to **step 6**. + +**Step 5: Propose an alternative hypothesis** + +As with **step 3.4**, it pays to have some critical appraisal skills, but it is again not actually necessary. The only thing that you really require to proceed with this step is the creativity to dream up alternative hypotheses. But not just any alternative hypothesis. Your alternative hypothesis has to make the same prediction as their hypothesis, but also be mutually incompatible with their hypothesis. + +In reference to the evidence presented in **step 3.4**, while this evidence may sound hilarious to us, it may actually be convincing to some people, so contesting it is probably still a good idea. Don鈥檛 dismiss it outright. At this point, it may be true that the quack has already put their foot in their mouth. But continue to be a fair interlocutor, and give the quack an opportunity to either swallow it or pull it out. Hit them back with an alternative hypothesis that makes the same prediction: + +>_Perhaps agriculture actually increased the efficiency of the human brain, and there was actually no change in intelligence._ + +Remember that it鈥檚 not at all clear why plant agriculture decreasing human brain size by 11% would necessarily, or even probably, be evidence for carnivorous diets making humans more intelligent. Perhaps plant agriculture increased the efficiency of our brains, such that our brains could achieve the same level of intelligence using less tissue. So, why would plant agriculture decreasing human brain size by 11% be more expected on the quack鈥檚 hypothesis as opposed to your alternative hypothesis? + +Now the quack is in a tough position, because he has to actually explain why the evidence in question is more expected on their hypothesis than the one you just cooked up on the spot. In the vast majority of cases, the quack will not be able to produce any compelling reason for why one hypothesis has more explanatory power over the other. + +Notice as well that we鈥檙e not asking them to substantiate their evidence, and we鈥檙e not scrambling to find studies of our own to refute their evidence. We鈥檙e just asking the quack why their hypothesis is more virtuous than ours. This is not a strategy that virtually any quacks are going to be prepared to deal with (because if they were, they probably wouldn鈥檛 propose stuff as stupid as they typically do). + +In the vast majority of cases, merely asking the quack why the evidence in question is more expected on their hypothesis, rather than your own hypothesis, will lead them to fold like a chair, right on the spot. + +If your interlocutor actually can demonstrate that the evidence they brought to the table is indeed more expected on their hypothesis than some alternative hypothesis, you have a few options. You retry **step 5**, and attempt to create another alternative hypothesis that will challenge the strength of their evidence even harder. Alternatively, you can concede the proposition for the time being and come back to it later, even if you don鈥檛 find it convincing. Just be honest. Conceding the debate doesn鈥檛 mean that your interlocutor was correct. + +Remember, you can always be agnostic (even about your own alternative hypotheses), and try to remember that you don鈥檛 need to affirm the negation of their proposition. The onus is not on you to prove anything in this exchange. Not a goddamn thing. Remember that. + +Assuming they鈥檙e unable to answer your question, it must be reiterated that it is very important to never allow the quack to flip the burden of proof on you. It鈥檚 their proposition, and the burden of proof is theirs and only theirs. A tip for identifying when the quack is trying to flip the burden of proof is when they attempt to ask questions that are not clarifying questions. Any question other than a clarifying question is always a dodge when you hold the line of questioning, and your line of questioning is only over when you鈥檝e obtained all of the answers you require. + +If the quack rejects your alternative hypothesis, proceed to **step 5.1**. If the quack accepts your alternative hypothesis and admits that he has no justification for why their evidence is more expected on their hypothesis than your hypothesis, then proceed to **step 6**. + +**Step 5.1: Ask what鈥檚 wrong with your alternative hypothesis** + +Rejecting your alternative hypothesis could mean a couple different things. Either they鈥檙e calling the alternative hypothesis itself into question, or they are going to explain why their evidence is more expected on their hypothesis than your hypothesis. If they鈥檙e rejecting your alternative hypothesis, just ask them for the explanation. If their explanation is convincing to you, there are a couple of different options. You can either concede or return to **step 5** and press them with an even stronger hypothesis. It just depends on how comfortable you are giving it another shot. + +Alternatively (and altogether more likely), if they can鈥檛 give you a clear explanation as to why their evidence is more expected on your hypothesis, then proceed to **step 6**. + +# PHASE THREE: STEAMROLLING + +**Step 6: Demand that they concede their proposition** + +Once you find yourself in a position where you have not conceded the proposition and the quack is unable to render an argument in favour of the proposition, you鈥檝e obtained all you need from the quack to begin steamrolling. Just refuse to proceed until you obtain either an argument for the proposition or a concession on the proposition itself. Anything other than these outcomes is not satisfactory. Don鈥檛 accept any 鈥渁gree to disagree鈥 cop-outs. Hold their feet to the fire and press the issue. + +The quack may try to spiral down on some tangent that isn鈥檛 germane to any of the previous questions you have asked them. In this event, redirect them immediately after their ramble. If their ramble is excessively long, feel free to cut them off. Tangents waste time, and it鈥檚 inappropriate to let tangents go to completion. Most quacks are bad faith actors, so concessions are too optically intolerable for them and rendering an argument for their claim is usually beyond their capabilities. Most will simply just disengage once you鈥檝e gotten this far. + +Lastly, we have to talk about an exceptionally rare outcome you will almost never encounter on your quack smashing journey鈥 the quack concedes the proposition. Congratulate and praise the quack for their honesty. In fact, they may not even be a quack anymore. You may have rescued them from utter insanity, and that鈥檚 certainly worth a pat on the back for both of you. + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting! + +# BIBLIOGRAPHY""" + , articleReferences = + [ { author = "" + , title = "Theoretical Virtues in Science" + , journal = "Obo" + , year = "N/A" + , link = "https://www.oxfordbibliographies.com/display/document/obo-9780195396577/obo-9780195396577-0409.xml" + } + , { author = "Theodore Schick, Lewis Vaughn" + , title = "How to Think About Weird Things: Critical Thinking for a New Age: Seventh Edition" + , journal = "N/A" + , year = "2013" + , link = "https://books.google.ca/books/about/How_to_Think_About_Weird_Things_Critical.html?id=YR4iAAAAQBAJ&redir_esc=y" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/SapienDiet.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/SapienDiet.elm new file mode 100755 index 0000000..67a138d --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/SapienDiet.elm @@ -0,0 +1,598 @@ +module Config.Pages.Blogs.MainBlog.SapienDiet exposing (articleSapienDiet) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleSapienDiet : BlogArticle +articleSapienDiet = + { articleName = "The Sapien Diet: Peak Human or Food Lies?" + , articleLink = Path.toString Path.Blog_Sapiendiet + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "sapiendiet" + , articlePublished = "Aug 24, 2022" + , articleBody = """ +[Brian Sanders](https://www.sapien.org/brian) is an entrepreneur and filmmaker who advocates for an "ancestral" diet he has coined the Sapien Diet鈩. This diet is characterized by high intakes of animal products and considerably strict abstinence from processed food consumption. His diet is supposedly based on the teaching of [Weston Price](https://en.wikipedia.org/wiki/Weston_A._Price), a dentist and nutritional anthropologist of the early 1900s who also advocated for the consumption of animal products. Right off the bat, we can tell that Brian's diet is marinated in quackery, as Price's methods and inferences were [questionable at best](https://quackwatch.org/related/holisticdent/). + +Whatever the case, Brian publicly advocated for his diet back in 2020 during a talk at [Low Carb Down Under](https://lowcarbdownunder.com.au) entitled ["Despite what you've been told COWS CAN SAVE THE WORLD"](https://www.youtube.com/watch?v=VYTjwPcNEcw). In this talk, he describes the benefits and virtues of animal food production and consumption, and also touches on the supposed pitfalls and fallacies of veganism and plant-based diets. He structures his talk into three sections, which serve as direct rebuttals to three propositions that he characterizes as mainstream: + +- Red meat is harmful to human health. + +- Cows are harmful to the environment. + +- It's unethical to kill animals for food. + + +Brian's talk is riddled with half-truths, misunderstandings, bald-faced lies, and other idiocy. To go through everything individually would take far too long, so in this article I will only be addressing the primary points that Brian makes throughout his presentation. Some of the quotes that I will be referencing will be paraphrased to account for Brian's unclear manner of speaking, but I nonetheless believe that I have represented his beliefs fairly. So, let's dive in! + +# HEALTH CLAIMS + +**Claim #1 (**[**4:52**](https://youtu.be/VYTjwPcNEcw?t=292)**):** + +>_Hong Kong eats the most amount of meat and animal foods in the world and has the longest life expectancy._ + +**Post-hoc Fallacy** + +This is just a post-hoc fallacy and a misunderstanding of the evidence being presented. Firstly, Brian's argument doesn't even get off the ground unless there is an assessment of what is causing the differences in longevity, and how the mortality stats are calculated. In this case, Brian is suggesting temporal connections that can't be verified to exist based on the data provided. More to the point, differential ecological associations between populations can't really tell us anything about differences in outcomes between individuals consuming the least meat versus individuals consuming the most meat. + +For example, there is a positive ecological association between smoking and life expectancy [[1](http://www.thefunctionalart.com/2018/07/visualizing-amalgamation-paradoxes-and.html)]. But, we wouldn't infer from this association that cigarette consumption increases longevity. Those sorts of inferences are what prospective cohort studies and randomized controlled trials are for, as they are actually equipped to assess individual-level exposure and outcomes. + +![][image1] +[image1]: /blog/sapiendiet/image1.png + +**Base Rate Fallacy** + +According to Brian's source, Hong Kong's meat intake has been steadily increasing and didn't reach UK-levels of intake in 1972 and US-levels of intake in 1967 [[2](https://www.nationalgeographic.com/what-the-world-eats/)]. If the hypothesis is that meat causes higher mortality via chronic disease, then people who started eating that much meat during those time periods would barely even be old enough to contribute substantially higher mortality statistics at the time of this report anyway. So, while it's true that Hong Kong now eats a lot of meat and enjoys longer lifespans, Brian is not appreciating the base rate of historical meat consumption for this population. + +As an aside, it is also interesting to note that those in Hong Kong who followed a non-ancestral "Portfolio diet" (which is characterized by low saturated fats, sodium, and dietary cholesterol, as well as higher plant proteins, vegetable oils, high fruits, vegetables, and whole grains) were at a lower risk of dying from all causes, as well as dying of CVD or cancer [[3](https://pubmed.ncbi.nlm.nih.gov/34959911/)]. In fact, multiple sensitivity analyses were done to remove the possibility for reverse causality, and the reductions in risk are still apparent. + +**Claim #2 (**[**5:13**](https://youtu.be/VYTjwPcNEcw?t=313)**):** + +>_There is an inverse association between red meat and total mortality in Asian populations._ + +**Red Herring** + +The aggregated difference in the lowest to highest red meat intake in this pooled analysis was ~60g/day, which is approximately two bites [[4](https://pubmed.ncbi.nlm.nih.gov/23902788/)]. It's unclear how this is capable of informing our judgements about the health value of red meat in the context of something like a Sapien Diet鈩. Not only that, but the contrast is occurring primarily at lower levels of intake. + +![][image2] +[image2]: /blog/sapiendiet/image2.png + +Generally speaking, contrasts in red meat intake exceeding 80-100g/day are typically required on a per-cohort basis to reveal the increased risk of cardiovascular disease mortality or even all-cause mortality. Contrasts that fall below this threshold often do not provide for the statistical power that is necessary to obtain a statistically significant estimate. + +Brian's own reference also confirms that meat intake in Asian populations is generally quite a bit lower than the United States. + +![][image3] +[image3]: /blog/sapiendiet/image3.png + +>_Per capita beef consumption has decreased to some degree in the past decade in the United States but still remains substantially higher than that in Asian countries. Beef consumption increased in China, Japan, and Korea from 1970 to 2007._ + +In actuality, when we select Asian populations with the widest contrasts in red meat intake, with sound multivariable adjustment models, appropriate population ages, and adequate follow-up time, we see the increase in total mortality with red meat very clearly [[5](https://pubmed.ncbi.nlm.nih.gov/33320898/)]. Even when diet and lifestyle covariates are balanced between ranges of intake. These results are also consistent with results we see in American cohorts that also balance diet and lifestyle covariates reasonably well, such as the Nurse's Health Study [[6](https://pubmed.ncbi.nlm.nih.gov/22412075/)]. + +**Potential Contradiction** + +Additionally, Brian has [stated publicly](https://twitter.com/FoodLiesOrg/status/1419347985935257601?s=20&t=_2uz8-vTlkgxnFPP4DCqtg) that steak is a good source of iron and can protect against iron deficiency. This claim is in accord with the available evidence on red meat consumption and iron deficiency anemia, with unprocessed red meat associating with a 20% decreased risk of anemia in the UK Biobank cohort [[7](https://pubmed.ncbi.nlm.nih.gov/33648505/)]. Interestingly, unprocessed red meat was also associated with a statistically significant increase in the risk of many other diseases as well. + +![][image4] +[image4]: /blog/sapiendiet/image4.png + +If the methods were sensitive enough to detect the inverse association with iron deficiency anemia, why not also conclude that the methods were also sensitive enough to detect the effect on heart disease as well? Why form differential beliefs about the causal nature of these associations? + +Furthermore, the association between red meat intake and heart disease is observable when meta-analyzed as well [[8](https://pubmed.ncbi.nlm.nih.gov/34284672/)]. For every 50g/day increase in red meat intake, there was a statistically significant dose-dependent relationship between red meat intake and heart disease. + +Almost all of the most highly powered studies found positive associations between heart disease risk and red meat. Altogether, those studies also had the highest contrast in red meat, with Asian countries having the lowest contrast, as mentioned earlier. The majority of the included studies included adjustments for diet quality, used validated food frequency questionnaires, and had adequate follow-up time. The greatest increase in risk was found among studies with follow-up times exceeding 10 years. Removing all of the more poorly powered cohorts leaves us with a remarkably consistent relationship overall. + +![][image5] +[image5]: /blog/sapiendiet/image5.png + +This one change results in a 38.3% attenuation in the I虏, going from 41.3% to 13%. Which suggests that of the variance that was attributable to heterogeneity, poor statistical power could explain about 68% of it. + +Lastly, when cohort studies from around the world are meta-analyzed, we see the same thing for all cause mortality [[9](https://pubmed.ncbi.nlm.nih.gov/24148709/)]. Overall, there is a non-significant increase in all-cause mortality risk when comparing the lowest red meat intakes to the highest red meat intakes. Whiteman, et al. (1999) was the only study that found a statistically significant decrease in risk, and is the sole reason for the non-significant finding. + +However, Whiteman, et al. also had one of the shortest follow-up times, one of the youngest populations (and thus one of the lowest death rates), and used a very poor adjustment model (only adjusting for three confounders). If a leave-one-out analysis is performed that excludes Whiteman, et al., a different picture is painted. + +![][image6] +[image6]: /blog/sapiendiet/image6.png + +Anybody who wishes to complain about this reanalysis is free to try to explain to me why increasing the potential for bias with poor multivariable adjustment is a desirable thing. But, it probably doesn't matter anyway. This meta-analysis was published in 2014, and more cohort studies have been published since then. If we add those results to the original forest plot conducted by Larsson et al., we would still get significant results. + +![][image7] +[image7]: /blog/sapiendiet/image7.png + +**Claim #3 (**[**5:22**](https://youtu.be/VYTjwPcNEcw?t=322)**):** + +>_We cannot use correlational studies to try to say that meat is bad._ + +**Category Error** + +It's unclear what this means. As per the Duhem-Quine thesis, all scientific findings are correlational in one way or another [[10](https://en.wikipedia.org/wiki/Duhem%E2%80%93Quine_thesis)]. As such, the state of being "correlational" is not a differential property between any two modes of scientific investigation. For example, intervention studies are a form of observational study, because you're observing what happens when you intervene. So this objection just seems like confusion, because if there ever was a study that showed meat to be "bad", it would be straightforwardly correlational in nature. Assuming that what Brian means by "correlational studies" is actually just nutritional epidemiology, even that would still be wrong. + +In 2021, Shwingshakl et al. published an enormous meta-analysis that compared the results of 950 nutritional randomized controlled trials to results from 750 prospective cohort studies [[11](https://pubmed.ncbi.nlm.nih.gov/34526355/)]. In the aggregate, results from nutritional epidemiology are consistent with results from nutritional randomized controlled trials approximately 92% of the time when comparing intakes to intakes (omitting supplements). + +![][image8] +[image8]: /blog/sapiendiet/image8.png + +Across 23 comparisons of meta-analytically summated findings from both bodies of evidence, only 2 comparisons showed discordance. This means that nutritional epidemiology tends to replicate in randomized controlled trials in the supermajority of cases. + +If not randomized controlled trials, I have no idea where Brian plants his goalpost for high evidential quality. Nevertheless, current evidence suggests that nutritional epidemiology is highly validated methodology if randomized controlled trials are used as the standard. If one places high credence in randomized controlled trials, it's unclear why they wouldn't also place high credence in nutritional epidemiology. + +**Claim #4 (**[**5:36**](https://youtu.be/VYTjwPcNEcw?t=336)**):** + +>_73% of hunter gatherers get over 50% of their diet from animal foods._ + +**Non Sequitur** + +I'm not sure why we should care. If this isn't cashing out into some sort of health claim, then it seems very much like a non sequitur. Assuming this is implying something about the health value of hunter-gatherer diets, it is also misleading. I've discussed [here](https://www.the-nutrivore.com/post/should-we-eat-like-hunter-gatherers) why positions like this ultimately fail. + +**Claim #5 (**[**5:51**](https://youtu.be/VYTjwPcNEcw?t=351)**):** + +>_We have beef as this highly bioavailable, easily digestible protein, and beans is one example of something that is touted as a pretty high protein food. But this is not the case._ + +**False Claim** + +This is just whacky, and it seems to be based on data from a 1950s textbook to which I cannot get access. However, we don't really need to in order to address this claim. Let's take a look at this table that Brian has generated. + +![][image9] +[image9]: /blog/sapiendiet/image9.png + +First of all, if these two foods are weight-standardized, then the protein content of navy beans only makes sense if the navy beans were considered raw. Navy beans can't even be consumed raw because they're hard as fucking rocks. So, immediately this table is potentially misleading, having possibly presented an unrealistic comparison between these two foods. But, that's not the most egregious part of Brian's table. It's actually completely unnecessary to consider digestibility and biological value separately as Brian has [[12](https://pubmed.ncbi.nlm.nih.gov/26369006/)]. + +> _"The PDCAAS value should predict the overall efficiency of protein utilization based on its two components, digestibility and biological value (BV; nitrogen retained divided by digestible nitrogen). The principle behind this approach is that the utilization of any protein will be first limited by digestibility, which determines the overall amount of dietary amino acid nitrogen absorbed, and BV describes the ability of the absorbed amino acids to meet the metabolic demand."_ + +Biological value is inherently captured by both of the standard protein quality scores, the protein digestibility-corrected amino acid score (PDCAAS) and the digestible indispensable amino acid score (DIAAS). This means that if you want to represent all the things that matter for a given protein in isolation (such as digestibility, biological value, and limiting amino acids), all you need is either a PDCAAS or DIAAS value for the proteins in question. But, the DIAAS is probably better. + +![][image10] +[image10]: /blog/sapiendiet/image10.png + +Aggregating DIAAS data across multiple protein foods paints a completely different picture than the one that Brian cobbled together [[13](https://pubmed.ncbi.nlm.nih.gov/28748078/)][[14](https://pubmed.ncbi.nlm.nih.gov/33333894/)][[15](https://pubmed.ncbi.nlm.nih.gov/34476569/)][[16](https://onlinelibrary.wiley.com/doi/full/10.1002/fsn3.1809)]. Some plant proteins actually do quite well. But what are these numbers really representing? Ultimately the scores are going to be truncated by limiting amino acids more than any other parameter, and pairing complementary proteins will increase the DIAAS value [[17](https://pubmed.ncbi.nlm.nih.gov/34685808/)]. In fact, this is also true of the PDCAAS, as combining different lower-scoring plant proteins will often result in perfect scores [[18](https://www.2000kcal.cz/lang/en/static/protein_quality_and_combining_pdcaas.php)]. + +![][image11] +[image11]: /blog/sapiendiet/image11.png + +If beef is awesome in virtue of it getting a perfect score for protein digestibility, biological value, and limiting amino acids, then navy beans and wild rice must also be awesome too. If not, then I don't know what the hell Brian is talking about, or why he even brings the point up. It's also worth pointing out that certain animal foods, like collagen, actually score a zero on the PDCAAS as well. + +As an aside, even if plant protein was generally inferior to animal protein by some evaluative standard (such as the PDCAAS or DIAAS), it would not necessarily mean that it would be more desirable to consume animal protein over plant protein. That would depend on one's goals. In fact, animal protein is associated with a number of chronic diseases in a dose-dependent manner, whereas plant protein is inversely associated, also in a dose-dependent manner [[19](https://pubmed.ncbi.nlm.nih.gov/32699048/)]. This also holds true for Japanese populations, by the way [[20](https://pubmed.ncbi.nlm.nih.gov/31682257/)]. + +**Claim #6 (**[**6:35**](https://youtu.be/VYTjwPcNEcw?t=395)**):** + +>_744 studies were excluded from consideration in the WHO's evaluation of meat as a carcinogen._ + +**Red Herring** + +Here, Brian is referring to an analysis on red meat and colorectal cancer risk that was conducted by the International Agency for Research on Cancer (IARC) [[21](https://pubmed.ncbi.nlm.nih.gov/26514947/)]. If you dig into the IARC's methods, you can see that they had very specific, sound inclusion-exclusion criteria, which involved selecting cohort studies with the widest contrasts in red meat intake, clear definitions, sufficient event rates and participant numbers, and adequate adjustment models. + +>_A meta-analysis including data from 10 cohort studies reported a statistically significant dose-response association between consumption of red meat and/or processed meat and cancer of the colorectum. The relative risks of cancer of the colorectum were 1.17 (95% CI, 1.05-1.31) for an increase in consumption of red meat of 100 g/day and 1.18 (95% CI, 1.10-1.28) for an increase in consumption of processed meat of 50 g/day. Based on the balance of evidence, and taking into account study design, size, quality, control of potential confounding, exposure assessment, and magnitude of risk, an increased risk of cancer of the colorectum was seen in relation to consumption of red meat and of processed meat." + +This is very sensible methodology for anyone familiar with epidemiology. Additionally, this is not the only reason Brian's claim is misleading, because there are not 744 cohort studies or RCTs combined on this question. Full stop. I can only imagine that he is referring to mechanistic studies or other weaker forms of evidence. He's never fully unpacked this claim, to my knowledge. + +**Claim #6 (**[**7:05**](https://youtu.be/VYTjwPcNEcw?t=425)**):** + +> _There were 15 studies showing that red meat was good and 14 studies showing that red meat was bad. I mean, it's basically a toss-up._ + +**Red Herring** + +Again, the IARC had very strict inclusion-exclusion criteria, and of the studies that met those criteria, the majority of them found statistically significant associations between red meat and colorectal cancer. This is after multivariable adjustment for known confounders and covariates, in populations that we'd expect to have an increased risk. It's straight up expected that not all of the available studies on a given research question will be included in a meta-analysis. + +**Red Herring** + +Brian then goes on to claim that the results are a toss-up simply because there were 15 studies ostensibly showing that red meat was "good" and 14 studies ostensibly showing that red meat was "bad". To imply that this is necessarily a "toss up" is just pure confusion. Even if you have double the studies showing that red meat is "good", that doesn't necessarily mean there is a lower probability that red meat is "bad". It depends on the strength of the studies included. Consider this forest plot. + +![][image12] +[image12]: /blog/sapiendiet/image12.png + +Here we see that despite the fact that there is a 2:1 ratio of studies that show a decreased risk with red meat to studies that show an increased risk with red meat, the summary effect measure still points toward a statistically significant increase in risk. This is because not every study has equal power or precision. Some findings are just less certain than others. + +**Claim #7 (**[**7:22**](https://youtu.be/VYTjwPcNEcw?t=442)**):** + +>_The risk factor of cancer from meat is 0.18%, whereas the risk factor of cancer from smoking is 10-30%._ + +**Unintelligible** + +This is truly bizarre. It's incredibly unclear what Brian is trying to say here, and he was unable to unpack it to me in [our verbal debate](https://www.youtube.com/watch?v=S8p39Gwct1Y), so I'm not even sure he knowns what the fuck he means. His use of the term "risk factor" here makes the utterance appear like a category error. However, if I really stretch my imagination, I may be able to cobble together an interpretation that isn't gibberish. + +**Equivocation** + +Firstly, this appears to be just a straight up equivocation of cancer types. Colorectal cancer and lung cancer are two different diseases, and the prevalence of these diseases are different in the general population. If Brian's criticism is that the relative risk of lung cancer from smoking is higher than the relative risk of colorectal cancer from red meat, then he's just confused. Massive differences in the magnitude of those effect estimates are expected, as the prevalence of a given disease will determine the maximum possible relative risk [[22](https://pubmed.ncbi.nlm.nih.gov/21402371/)]. + +![][image13] +[image13]: /blog/sapiendiet/image13.png + +Let's take a look at the prevalence of these diseases in Canada [[23](https://cancer.ca/en/cancer-information/cancer-types)]. The prevalence of lung cancer among Canadian non-smokers is 1 in 84 (1.19% prevalence). Prevalence of colorectal cancer, assuming red meat has nothing to do with colorectal cancer, is 1 in 16 (6.25% prevalence). The baseline prevalence of lung cancer is much smaller than the baseline prevalence of colorectal cancer, so comparing the two is dubious. + +In the case of lung cancer and colorectal cancer, the maximum possible relative risks would be ~53 and ~16, respectively. So it's not even mathematically possible for the relative risk of colorectal cancer from red meat to even approach the upper bounds for the relative risk of lung cancer from smoking that Brian submitted (assuming he meant 30x and not 30%). + +For this reason, it's best that we do an apples to apples comparison. In a massive 2009 analysis by Huxley, et al., which helped inform the IARC's analysis on meat and cancer, 26 cohort studies were included in their meta-analytic summation [[24](https://pubmed.ncbi.nlm.nih.gov/19350627/)]. Overall they showed a statistically significant 21% increase in risk of colorectal cancer with unprocessed red meat. + +However, they also included an analysis on smoking, which found a statistically significant 16% increase in the risk of colorectal cancer with smoking as well. Yes, that is right鈥 there was a slightly stronger association between red meat and colorectal cancer than there was between smoking and colorectal cancer. But the two were likely non-inferior. Huxley et al. also found around the same magnitude of effect for many other exposures. + +![][image14] +[image14]: /blog/sapiendiet/image14.png + +What's the symmetry breaker? Why form a causal belief with regards to smoking or physical inactivity or obesity and not red meat? If Brian argues that he doesn't infer causality for any of the exposures with non-inferior effect sizes to red meat, then the appropriate thing to do is honestly just to laugh at his absurdity and move on. + +If Brian argues that red meat has never been studied in the context of a junk-free diet, then we could just argue it in the opposite direction. For example, the smoking literature is also notoriously unadjusted for dietary covariates (which is something not many people appreciate about that body of evidence). As such, smoking arguably has never been studied in the context of a meat-free diet either, so perhaps the data on smoking is simply biased by red meat. Again, we need symmetry breakers. + +**Claim #8 (**[**7:37**](https://youtu.be/VYTjwPcNEcw?t=457)**):** + +> _Ancestral foods are better than processed foods._ + +**Appeal to Nature** + +Why should we be using anthropological data about ancestral diets to inform best practice in terms of modern diets for modern humans? And why is the property of being ancestral a reasonable sufficiency criteria for a food to be "better" than processed foods? This seems like a non sequitur. + +Favouring whole foods is heuristic, and not a rule. There are plenty of examples of processed foods being superior to whole foods, even foods that we could identify as ancestral. In fact, there are been specific analyses investigating the differential contributions of animal-based foods (red meat, poultry, fish, dairy, and eggs) and ultra-processed foods to disease risk within the context of a health-conscious population [[25](https://pubmed.ncbi.nlm.nih.gov/35199827/)]. + +![][image15] +[image15]: /blog/sapiendiet/image15.png + +Overall, ultra-processed foods and animal foods are non-inferior to one another for CVD mortality and cancer mortality risk. Animal based foods also seem to associate with the risk of endocrine disorders like T2DM, whereas ultra-processed foods did not. Once again, we require symmetry-breakers. Why form the belief that ultra-processed foods increase the risk of these diseases and not animal foods? + +# ENVIRONMENTAL CLAIMS + +**Claim #9 (**[**10:13**](https://youtu.be/VYTjwPcNEcw?t=613)**):** + +>_Grazing agricultural systems are better for the environment and sequester more carbon._ + +**False Claim** + +This claim is as hilarious as it is vague. Firstly, better compared to what? According to Brian's reference (which was an analyses of the association between White Oak Pastures' regenerative grazing methodology and carbon balance) it was assumed that carbon sequestration estimates were exclusively from beef, yet poultry accounted for almost half of the carcass weight (46.5%) of the entire system [[26](https://www.frontiersin.org/articles/10.3389/fsufs.2020.544984/full)]. They also can鈥檛 even attribute the sequestration to cows because the study was cross-sectional in design. + +This study isn't actually investigating temporal changes in soil carbon at all. To make matters worse, the author's darling figure, 鈭4.4kg CO鈧-e kg carcass weight鈭1 per year, was actually just produced from thin air, and the cross-sectional association between years of grazing and soil carbon stocks between pasturelands was just assumed to be reflecting grazing-mediated soil carbon sequestration. Utterly misleading sophistry. + +> _Importantly, if we were to attribute the soil C sequestration across the chronosequence to only cattle, MSPR beef produced in this system would be a net sink of 鈭4.4 kg CO2-e kg CW鈭1 annually._ + +Even just ignoring the fact that this methodology creates mathematically atrocious pigs and chickens in terms of carbon balance in their model, the data provided suggests that 20 years worth of carbon sequestration are roughly equal to three years of plant composting. In second figure of the publication, they show a cross-sectional analysis of seven different degraded lands (previously used for crops) that are in the process of being restored over a varied number of years. + +![][image16] +[image16]: /blog/sapiendiet/image16.png + +>_In years 1鈥3, these fields are minimally grazed and receive 1 cm of compost ha鈭1 yr鈭1. After year 3, exogenous inputs (hay and compost) were ceased, and the regeneration strategy shifted toward an animal-only approach, whereby animals were the primary mechanism of improving the land._ + +The third dot is roughly equal to that of the seventh dot on the chart, which represents three years of plant composting and 20 years of grazing, respectively. If we're assuming a causal relationship between grazing and soil carbon stock, why not also assume a causal relationship between composting and soil carbon stock? + +If composting can increase soil carbon sequestration that much, why are they even trying to argue for grazing agriculture as a solution? It would appear that plant agriculture waste could be a viable solution for restoring these degraded lands as well. This is also just granting that these associations are reflective of soil carbon sequestration over time at all, which they may not be. Again, this analysis is cross-sectional. + +It's convenient that the time scale of the investigation by Rowntree, et al. caps out at 20 years, because current literature suggests that there is a soil carbon saturation point at around 20 years, after which pasture grazing systems will yield diminishing returns. + +![][image17] +[image17]: /blog/sapiendiet/image17.png + +Here we see three different scenarios for soil carbon sequestration rates from grazing agriculture. Even under the most generous estimates (the larger black hashed line), soil carbon sequestration plateaus at around 20 years. + +However, current estimates suggest that if we switch to more plant-predominant diets by the year 2050, we could reforest a large proportion of current pastureland, which acts as a substantial carbon sink (~547GtCO2) [[27](https://www.nature.com/articles/s41893-020-00603-4)]. The effect of that over 30 years is to neutralize about 15 years of fossil fuel emissions and 12 years of total world GHG emissions. + +If we switch to plant-predominant diets by 2050 we could sequester -14.7 GtCO2 per year by reforesting pasture land, compared to other agricultural methods that make use of grazing land for pasture. Merely the introduction of pasture grazing increases land use by almost double compared to a vegan agricultural system [[28](https://experts.syr.edu/en/publications/carrying-capacity-of-us-agricultural-land-ten-diet-scenarios)]. + +![][image18] +[image18]: /blog/sapiendiet/image18.png + +In fact, there are stepwise decreases in the per-person carrying capacity of different agricultural scenarios as more pastureland is included in the model. However, vegan agricultural scenarios were largely comparable to both dairy-inclusive and egg-inclusive vegetarian models. + +![][image19] +[image19]: /blog/sapiendiet/image19.png + + +As mentioned earlier in this article, there are plant agriculture methods that are also touted as "regenerative", that also may have greater soil carbon sequestration potential per hectare than current "regenerative" grazing livestock methods [[29](https://www.nature.com/articles/ncomms6012)]. It would be interesting to see a head-to-head comparison of wheat versus meat, using "regenerative" methodology, on soil carbon sequestration overall. + +**Claim #10 (**[**13:15**](https://youtu.be/VYTjwPcNEcw?t=795)**):** + +>_We have enough land for grazing agricultural systems._ + +**False Claim** + +It has been calculated that even if all grasslands were repurposed for grazing, this could provide everyone on earth with 7-18g/day of animal protein per person on Earth [[30](https://www.oxfordmartin.ox.ac.uk/publications/grazed-and-confused/)]. The authors also provided a hyper-idealized, candy-land scenario they also calculated that 80g/day of animal protein per person on Earth. However, this would require all pasturable land on Earth being used. As an aside, the authors also calculated an additional scenario that included waste from plant agriculture, but it probably won't be very relevant to Brian's idealized world, because plant agriculture would be extremely minimal on the Sapien Diet鈩. + +The remaining two scenarios encounter some issues when we think of what would be required to sustain people on meat-heavy diets, because 80g of protein from the fattiest beef still would not provide enough calories per person. We would appear to need multiple planets. But we should use a grass-fed example to do the calculations, so I've chosen White Oak Pastures' ground beef as the example meat. We'll also be multiplying the results by 2.5 to account for the extra land used by rotational grazing and/or holistic management [[26](https://www.frontiersin.org/articles/10.3389/fsufs.2020.544984/full)]. + +![][image20] +[image20]: /blog/sapiendiet/image20.png + + +Under no plausible scenario (calculable from the 'Grazed and Confused?' report) would either continuous grazing or rotational grazing be tenable on a global scale. Even if the calorie allotment for animal foods in the EAT Lancet diet was occupied only by grass-fed beef, we'd still be exceeding the carrying capacity of the Earth by 70% for continuous grazing and 325% for rotational grazing. As for Brian's pet diet, the Sapien Diet鈩, we'd need over 10 Earths in the optimistic plausible scenario. + +Essentially, we would need to figure out a way to extend the pasturable land beyond the available land on Earth. Perhaps we could do this by terraforming Mars or ascending to a type 2 civilization on the Kardashev scale by building a megastructure in space, such as a Dyson sphere or an O'Neill cylinder. But, those options don't sound very ancestral at all. + +![][image21] +[image21]: /blog/sapiendiet/image21.png + +We're not even scratching the surface, though. The authors of 'Grazed and Confused?' likely did not consider the suitability of each grassland in their calculation, because current suitability thresholds are set for crop production, rather than livestock. The issue is that grass itself could be considered a crop, so it's unclear why suitability considerations that have been established for crop production wouldn't also apply to pasture-raised animal production. + +The IIASA/FAO define the suitability of a given grassland as a threshold of a 25% ratio of actual yield per acre and potential yield per acre [[31](https://pure.iiasa.ac.at/id/eprint/13290/)]. Had these suitability criteria been considered by the authors of 'Grazed and Confused?', their models likely would have produced much smaller estimates. This is because much of the available grassland is either unsuitable or poorly suitable to begin with. + +![][image22] +[image22]: /blog/sapiendiet/image22.png + +These suitability criteria have been used by livestock agriculture advocates to argue against the scalability of crop agriculture and for the scalability of grazing-based livestock agriculture [[32](https://www.sciencedirect.com/science/article/abs/pii/S2211912416300013)]. However, [Avi Bitterman](https://twitter.com/AviBittMD) demonstrated on his [Discord server](https://discord.gg/YtfQNPnk) that these individuals are not symmetrically applying this standard and it would actually turn out that current "regenerative" grazing systems wouldn't be likely to even meet the suitability standards themselves. + +According to figures produced by White Oak Pastures, their "regenerative" grazing system is far less efficient than conventional feedlot approaches [[33](https://blog.whiteoakpastures.com/hubfs/WOP-LCA-Quantis-2019.pdf)]. Overall, White Oak Pastures uses 150% more land than conventional approaches to yield only about 20% of what a conventional farm can produce, and only 90% of the average slaughter weight. + +![][image23] +[image23]: /blog/sapiendiet/image23.png + +This would give us a "suitability" estimate of around 7%, which would likely drastically reduce the amount of grassland that would be considered suitable for "regenerative" grazing agriculture as well. It would be doubly important to adhere to this standard when critiquing "regenerative" plant agricultural methods, in order to ensure an apples-to-apples comparison [[29](https://www.nature.com/articles/ncomms6012)]. + +**Claim #11 (**[**13:54**](https://youtu.be/VYTjwPcNEcw?t=834)**):** + +> _If we don't use all this cropland for corn, wheat, and soy...we can use some of this land for cows._ + +**False Claim** + +Here, Brian presents us a with figure from the USDA showing the available cropland in the United States as of 2007, and suggests that we simply have enough land for "regenerative" grazing. No analysis or even conceptual model of how this could be done was actually provided. He just expects us to take it for granted that the claim is true. But is it actually true? + +As with the issues for this narrative that were entailed from the land requirement estimates detailed in the 'Grazed and Confused?' report, this narrative again encounters similar issues here. Firstly, a complete grazing agriculture scenario has been modeled, and the results suggest that the United States wouldn't get anywhere close to plausibly being able to meet their current demand for beef with grazing agriculture [[34](https://iopscience.iop.org/article/10.1088/1748-9326/aad401)]. We'd simply need more land. About 30% more land. + +> _"Increases in cattle population, placements, and slaughter rates are demonstrated in figure 2. The increased slaughtering and placement numbers would also require a 24% increase in the size of the national beef cow-calf herd, proportional to the increased annual grass-finishing placement rate, in order to provide additional cattle to stock the grass-finishing stage. Increases in both the cow-calf herd and the grass-finishing population together would result in a total increase to the US cattle population of an additional 23 million cattle, or 30% more than the current US beef cattle population as a whole"_ + +![][image24] +[image24]: /blog/sapiendiet/image24.png + +If Brian wants to criticize vegans for indulging idealized pie-in-the-sky fantasies, what in the sweet holy blue fuck is this shit? The United States can't maintain their current demands for beef with the system that Brian is proposing. This is doubly problematic if you consider that the White Oak Pastures model for which Brian advocates probably requires even more land than the conventional grazing methods included in the above model. This means that 30% could very well be an underestimate. + +# ETHICAL CLAIMS + +**Claim #12 (**[**19:11**](https://youtu.be/VYTjwPcNEcw?t=1151)**):** + +> _Vegans kill animals too. It's death on a plate, there's just no blood._ + +**Appeal to Hypocrisy** + +It's not clear what point this is trying to make. It seems like a failed appeal to hypocrisy to me. But, let's try to tackle the proposition in the most charitable way possible. Let's assume that Brian means to say that the Sapien Diet鈩 leads to fewer animal deaths than vegan diets that rely on plant agriculture (which is a claim that he has made before). In this case, this is just an empirical claim and needs to be supported by some sort of evidence. + +In Brian's presentation, he supports this claim with a study of wood mouse predation after harvest, which showed that up to 80% of mice were preyed upon by predators upon the harvesting of cereal crops [[35](https://www.sciencedirect.com/science/article/abs/pii/000632079390060E?via%3Dihub)]. What Brian isn't taking into account is that this can actually be used to are for less mouse predation on cropland as opposed to pastureland. Let me explain. + +If you cut down your crop, you will expose the mice to predation. This is true. However, this also applies to pastureland. On pastureland, there is no substantial amount of tall forage that mice can use for shelter. The mice are exposed all year round. Which actually allows for the possibility that cropland could temporarily shelter mice from predators in a way that pastureland can't. + +Furthermore, during [my debate](https://www.youtube.com/watch?v=S8p39Gwct1Y) with Brian, his cited evidence was the single cow that was killed when he paid a visit to his friend's cattle farm. Needless to say, this is not very good evidence, and this is not the evidence we will be using to steelman Brian's position. Instead, let's actually look at literature that compares the wildlife carrying capacity of plant verses grazing agricultural scenarios. + +In 2020, Tucker et al. published a comprehensive comparative analysis of mammalian populations across a number of human-modified areas, such as cropland and pastureland [[36](https://onlinelibrary.wiley.com/doi/full/10.1111/ecog.05126)]. Overall, their findings suggest that there is higher taxonomic diversity with increasing pastureland as opposed to increasing cropland. + +![][image25] +[image25]: /blog/sapiendiet/image25.png + +In the absence of countervailing data, this actually counts against the hypothesis that pastureland entails less animal death than cropland. This is because increasing taxonomic diversity implies a higher number of trophic strata. A higher number of trophic strata implies higher levels of predation. Higher levels of predation thus imply higher levels of animal death. The land with the lesser carrying capacity should probably be assumed to entail less death. + +**Red Herring** + +Even if we granted Brian that pastureland entailed fewer animal deaths than cropland, it's not clear why vegans should necessarily care. If veganism is understood to be a social and politic movement that aims to extend human rights to animals when appropriate, it's not clear how the deaths entailed from cropland would be incompatible to those goals. In fact, we'd likely tolerate the killing of people who threatened our food supply in comparable ways as well. + +For example, if our food security was threatened by endless armies of humans with the intelligence of fieldmice or insects and we had no practical means of separating them from our food without killing them, I don't think we'd consider killing them to be a rights violation. In fact, we'd likely assume a similar defensive posture and similarly tolerate the loss of human life if a foreign country was also threatening to destroy our food. I doubt we'd even consider the enemy deaths entailed from such a defensive posture to constitute a rights violation. We have the right to defend our property against assailants, and I doubt Brian would even deny this himself. + +**Claim #13 (**[**19:19**](https://youtu.be/VYTjwPcNEcw?t=1159)**):** + +> _There is no life without death. This is how nature works...animals in nature either starve to death or are eaten alive...the animals are going to die either way, and it's not a good death...billions of people rely on animals for their livelihood._ + +**Potential Contradiction** + +This proposition is simple to address. If Brian believes that we are ethically justified in breeding sentient animals into existence for the explicit purpose of slaughtering them for food, but we would not be justified in condemning humans to likewise treatment, he must explain why. This same question can be asked of him regardless of the justification he uses for animal agriculture. + +During my debate with Brian, I submitted to him an argument for the non-exploitation of animals, which is essentially just a rephrasing of [Isaac Brown](https://twitter.com/askyourself92)'s [Name the Trait](https://drive.google.com/drive/folders/1tAjU2Bv1tsGbNLA2TfJesgbIh8JKh9zc) argument. + +![][argument1] +[argument1]: /blog/sapiendiet/argument1.png + +This argument for non-exploitation simply requires one to identify the property that is true of humans that also is untrue of animals, that if true of humans, would cause humans to lose sufficient moral value, such that we鈥檇 be justified in slaughtering them for food as well. Brian rejected P3, stating that "consciousness" was the property true of humans, but untrue of animals, such that animals were ethical to exploit for food but humans were not. This fails and entails a contradiction on Brian's part, because consciousness is not a differential property between humans and the animals he advocates farming for food. + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting! + +# BIBLIOGRAPHY""" + , articleReferences = + [ { author = "Cairo, Alberto" + , title = "Visualizing Amalgamation Paradoxes and Ecological Fallacies" + , journal = "" + , year = "2018" + , link = "http://www.thefunctionalart.com/2018/07/visualizing-amalgamation-paradoxes-and.html" + } + , { author = "" + , title = "What the World Eats" + , journal = "National Geographic" + , year = "" + , link = "http://www.nationalgeographic.com/what-the-world-eats/" + } + , { author = "Lo, Kenneth, et al." + , title = "Prospective Association of the Portfolio Diet with All-Cause and Cause-Specific Mortality Risk in the Mr. OS and Ms. OS Study" + , journal = "Nutrients" + , year = "2021" + , link = "https://doi.org/10.3390/nu13124360" + } + , { author = "Lee, Jung Eun, et al." + , title = "Meat Intake and Cause-Specific Mortality: A Pooled Analysis of Asian Prospective Cohort Studies" + , journal = "The American Journal of Clinical Nutrition" + , year = "2013" + , link = "https://doi.org/10.3945/ajcn.113.062638" + } + , { author = "Saito, Eiko, et al." + , title = "Association between Meat Intake and Mortality Due to All-Cause and Major Causes of Death in a Japanese Population" + , journal = "PloS One" + , year = "2020" + , link = "https://doi.org/10.1371/journal.pone.0244007" + } + , { author = "Pan, An, et al." + , title = "Red Meat Consumption and Mortality: Results from 2 Prospective Cohort Studies" + , journal = "Archives of Internal Medicine" + , year = "2012" + , link = "https://doi.org/10.1001/archinternmed.2011.2287" + } + , { author = "Papier, Keren, et al." + , title = "Meat Consumption and Risk of 25 Common Conditions: Outcome-Wide Analyses in 475,000 Men and Women in the UK Biobank Study" + , journal = "BMC Medicine" + , year = "2021" + , link = "https://doi.org/10.1186/s12916-021-01922-9" + } + , { author = "Papier, Keren, et al." + , title = "Meat Consumption and Risk of Ischemic Heart Disease: A Systematic Review and Meta-Analysis" + , journal = "Critical Reviews in Food Science and Nutrition" + , year = "2021" + , link = "https://doi.org/10.1080/10408398.2021.1949575" + } + , { author = "Larsson, Susanna C., and Nicola Orsini" + , title = "Red Meat and Processed Meat Consumption and All-Cause Mortality: A Meta-Analysis" + , journal = "American Journal of Epidemiology" + , year = "2014" + , link = "https://doi.org/10.1093/aje/kwt261" + } + , { author = "" + , title = "Duhem鈥換uine Thesis" + , journal = "Wikipedia" + , year = "2022" + , link = "https://en.wikipedia.org/w/index.php?title=Duhem%E2%80%93Quine_thesis&oldid=1105377595" + } + , { author = "Schwingshackl, Lukas, et al." + , title = "Evaluating Agreement between Bodies of Evidence from Randomised Controlled Trials and Cohort Studies in Nutrition Research: Meta-Epidemiological Study" + , journal = "BMJ (Clinical Research Ed.)" + , year = "2021" + , link = "https://doi.org/10.1136/bmj.n1864" + } + , { author = "" + , title = "Dietary Protein Quality Evaluation in Human Nutrition. Report of an FAQ Expert Consultation" + , journal = "FAO Food and Nutrition Paper" + , year = "2013" + , link = "https://www.fao.org/ag/humannutrition/35978-02317b979a686a57aa4593304ffc17f06.pdf" + } + , { author = "Nosworthy, Matthew G., et al." + , title = "Determination of the Protein Quality of Cooked Canadian Pulses" + , journal = "Food Science & Nutrition" + , year = "2017" + , link = "https://doi.org/10.1002/fsn3.473" + } + , { author = "Han, Fei, et al." + , title = "Digestible Indispensable Amino Acid Scores (DIAAS) of Six Cooked Chinese Pulses" + , journal = "Nutrients" + , year = "2020" + , link = "https://doi.org/10.3390/nu12123831" + } + , { author = "Fanelli, Natalia S., et al." + , title = "Digestible Indispensable Amino Acid Score (DIAAS) Is Greater in Animal-Based Burgers than in Plant-Based Burgers If Determined in Pigs" + , journal = "European Journal of Nutrition" + , year = "2022" + , link = "https://doi.org/10.1007/s00394-021-02658-1" + } + , { author = "Herreman, Laure, et al." + , title = "Comprehensive Overview of the Quality of Plant鈥 And Animal鈥恠ourced Proteins Based on the Digestible Indispensable Amino Acid Score" + , journal = "Food Science & Nutrition" + , year = "2020" + , link = "https://doi.org/10.1002/fsn3.1809" + } + , { author = "Han, Fei, et al." + , title = "The Complementarity of Amino Acids in Cooked Pulse/Cereal Blends and Effects on DIAAS" + , journal = "Plants (Basel, Switzerland)" + , year = "2021" + , link = "https://doi.org/10.3390/plants10101999" + } + , { author = "" + , title = "PDCAAS Calculator - 2000KCAL" + , journal = "" + , year = "" + , link = "https://www.2000kcal.cz/lang/en/static/protein_quality_and_combining_pdcaas.php" + } + , { author = "Naghshi, Sina, et al." + , title = "Dietary Intake of Total, Animal, and Plant Proteins and Risk of All Cause, Cardiovascular, and Cancer Mortality: Systematic Review and Dose-Response Meta-Analysis of Prospective Cohort Studies" + , journal = "BMJ (Clinical Research Ed.)" + , year = "2020" + , link = "https://doi.org/10.1136/bmj.m2412" + } + , { author = "Budhathoki, Sanjeev, et al." + , title = "Association of Animal and Plant Protein Intake With All-Cause and Cause-Specific Mortality in a Japanese Cohort" + , journal = "JAMA Internal Medicine" + , year = "2019" + , link = "https://doi.org/10.1001/jamainternmed.2019.2806" + } + , { author = "Bouvard, V茅ronique, et al." + , title = "Carcinogenicity of Consumption of Red and Processed Meat" + , journal = "The Lancet. Oncology" + , year = "2015" + , link = "https://doi.org/10.1016/S1470-2045(15)00444-1" + } + , { author = "Sainani, Kristin L." + , title = "Understanding Odds Ratios" + , journal = "PM & R: The Journal of Injury, Function, and Rehabilitation" + , year = "2011" + , link = "https://doi.org/10.1016/j.pmrj.2011.01.009" + } + , { author = "" + , title = "Cancer Types" + , journal = "Canadian Cancer Society" + , year = "" + , link = "https://cancer.ca/en/cancer-information/cancer-types" + } + , { author = "Huxley, Rachel R., et al." + , title = "The Impact of Dietary and Lifestyle Risk Factors on Risk of Colorectal Cancer: A Quantitative Overview of the Epidemiological Evidence" + , journal = "International Journal of Cancer" + , year = "2009" + , link = "https://doi.org/10.1002/ijc.24343" + } + , { author = "Orlich, Michael J., et al." + , title = "Ultra-Processed Food Intake and Animal-Based Food Intake and Mortality in the Adventist Health Study-2" + , journal = "The American Journal of Clinical Nutrition" + , year = "2022" + , link = "https://doi.org/10.1093/ajcn/nqac043" + } + , { author = "Rowntree, Jason E., et al." + , title = "Ecosystem Impacts and Productive Capacity of a Multi-Species Pastured Livestock System" + , journal = "Frontiers in Sustainable Food Systems" + , year = "2020" + , link = "https://www.frontiersin.org/articles/10.3389/fsufs.2020.544984" + } + , { author = "Hayek, Matthew N., et al." + , title = "The Carbon Opportunity Cost of Animal-Sourced Food Production on Land" + , journal = "Nature Sustainability" + , year = "2021" + , link = "https://doi.org/10.1038/s41893-020-00603-4" + } + , { author = "Peters, Christian J., et al." + , title = "Carrying Capacity of U.S. Agricultural Land: Ten Diet Scenarios" + , journal = "Elementa" + , year = "2016" + , link = "https://doi.org/10.12952/journal.elementa.000116" + } + , { author = "Gan, Yantai, et al." + , title = "Improving Farming Practices Reduces the Carbon Footprint of Spring Wheat Production" + , journal = "Nature Communications" + , year = "2014" + , link = "https://doi.org/10.1038/ncomms6012" + } + , { author = "" + , title = "Grazed and Confused?" + , journal = "Oxford Martin School" + , year = "" + , link = "https://www.oxfordmartin.ox.ac.uk/publications/grazed-and-confused/" + } + , { author = "Fischer, G., et al." + , title = "Global Agro-Ecological Zones (GAEZ v3.0)- Model Documentation" + , journal = "" + , year = "2012" + , link = "http://www.fao.org/soils-portal/soil-survey/soil-maps-and-databases/harmonized-world-soil-database-v12/en/" + } + , { author = "Mottet, Anne, et al." + , title = "Livestock: On Our Plates or Eating at Our Table? A New Analysis of the Feed/Food Debate" + , journal = "Global Food Security" + , year = "2017" + , link = "https://doi.org/10.1016/j.gfs.2017.01.001" + } + , { author = "" + , title = "Carbon Footprint Evaluation of Regenerative Grazing At White Oak Pastures: Results Presentation" + , journal = "Quantis - Environmental Sustainability Consultancy" + , year = "" + , link = "https://blog.whiteoakpastures.com/hubfs/WOP-LCA-Quantis-2019.pdf" + } + , { author = "Hayek, Matthew N., and Rachael D. Garrett" + , title = "Nationwide Shift to Grass-Fed Beef Requires Larger Cattle Population" + , journal = "Environmental Research Letters" + , year = "2018" + , link = "https://doi.org/10.1088/1748-9326/aad401" + } + , { author = "Tew, T. E., and D. W. Macdonald" + , title = "The Effects of Harvest on Arable Wood Mice Apodemus Sylvaticus" + , journal = "Biological Conservation" + , year = "1993" + , link = "https://doi.org/10.1016/0006-3207(93)90060-E" + } + , { author = "Tucker, Marlee A., et al." + , title = "Mammal Population Densities at a Global Scale Are Higher in Human鈥恗odified Areas" + , journal = "Ecography" + , year = "2021" + , link = "https://doi.org/10.1111/ecog.05126" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/SeedOils.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/SeedOils.elm new file mode 100755 index 0000000..297ac04 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/SeedOils.elm @@ -0,0 +1,2279 @@ +module Config.Pages.Blogs.MainBlog.SeedOils exposing (articleSeedOils) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleSeedOils : BlogArticle +articleSeedOils = + { articleName = "A Comprehensive Rebuttal to Seed Oil Sophistry" + , articleLink = Path.toString Path.Blog_Seedoils + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "seedoils" + , articlePublished = "Oct 31, 2021" + , articleBody = """ +The popular consciousness has accepted many dietary villains over the course of the last half century, ranging from fat, to protein, to salt, to carbohydrates. More often than not, dietary constituents that have fallen under such scrutiny have been exonerated in time, as more and more scientific data is brought to light. I suspect that there is a growing number of people who are now wrongfully demonizing vegetable oils as well. Both skepticism and generally negative attitudes toward these oils appear to have skyrocketed in recent years, and it can be seen seemingly everywhere. + +From what I can tell, almost all of the claims regarding the negative health effects of vegetable oils are essentially rooted in either mechanistic or ecological research. Mechanistic research includes studies such as cell culture studies, animal studies, in-vitro studies, or even some short term human experiments. Ecological research is merely investigating largely unadjusted associations between population-level exposures and outcomes, such as the association between vegetable oil availability in the food supply and type 2 diabetes incidence, for example. + +Despite the fact that it is absolutely true that these types of research can be incredibly valuable, it is also almost always extremely inappropriate to extrapolate from from these types of research to population-level health effects. In other words, in the absence of corroborating human outcome data, it is almost always dubious to make claims about what outcomes _will_ happen, based on speculation about intuitive mechanisms. Especially if there is no high internal validity population-level outcome data that actually agrees with the mechanistic speculation to begin with. + + +Ultimately, mechanistic studies carry virtually no information about actual human disease risk itself. Keep this in mind as we parse through the lower- and higher-quality evidence as we go along. This will be important as we explore the various claims made about vegetable oils and their interactions with human health. Let鈥檚 start with something familiar and dive into cardiovascular disease. + +# **ABBREVIATIONS** + +2-AG, 2-arachidonoylglycerol; 8-oxodG, 8-oxo-7,8-dihydro-20-deoxyguanosine; ACR, acrylamide; AMD, age-related macular degeneration; AMI, acute myocardial infarction; ANA, anti-nuclear antibody; ApoB, apolipoprotein B; BCC, basal cell carcinoma; BCSO, blackcurrant seed oil; CAO, canola oil; CAT, catalase; CB1, cannabinoid receptor 1; CD, conjugated dienes; CRP, C-reactive protein; EE, energy expenditure; EPO, evening primrose; FADS, fatty acid desaturase; FO, fish oil; GLA, gamma-linolenic acid; GPx, glutathione peroxidase; GR, glutathione reductase; HDL-C, high density lipoprotein cholesterol; HUB, healthy-user bias; IVLE, intravenous lipid emulsion; LA, linoleic acid; LAVAT, La Veterans Administration Hospital Study; LBM, lean body mass; LDL, low density lipoprotein; MCE, Minnesota Coronary Experiment; MDA, malondialdehyde; MS, multiple sclerosis; NSAID, nonsteroidal anti-inflammatory drugs; O2H2, hydroperoxides; O6:O3, omega-6/omega-3 ratio; PUFA, polyunsaturated fat; RA, rheumatoid arthritis; RCT, randomized controlled trials; RMR, resting metabolic rate; SCC; squamous cell carcinoma; SDHS, Sydney Diet Heart Study; SLE, systemic lupus erythematosus; SO, soybean oil; SOD, superoxide dismutase; SU, sunflower oil; T2DM, type 2 diabetes mellitus; TC, total cholesterol; TEF, thermic effect of feeding; TFA, trans-fat; TNF, tumor necrosis factor; TPN, total parenteral nutrition; VAT, visceral adipose tissue. + +# **CARDIOVASCULAR DISEASE** + +###### **LIPOPROTEIN OXIDATION** + +The primary mechanism by which vegetable oils are suggested to increase the risk of cardiovascular disease (CVD) is through the oxidation of polyunsaturated fats (PUFA), particularly linoleic acid (LA), in low density lipoprotein (LDL) phospholipid membranes. In the literature, this hypothesis seems to be largely spearheaded by DiNicolantonio and O'Keefe (2018) [[1](https://pubmed.ncbi.nlm.nih.gov/30364556/)]. The authors' case against vegetable oils begins with the claim that vegetable oils contain fatty acids, particularly LA, which increase the susceptibility of LDL to oxidize, and that CVD risk is mediated through the oxidation of LDL. + +It is also suggested that saturated fatty acids (SFA) are resistant to this sort of oxidative destruction, which subsequently implies that the substitution of SFA for LA in the diet might lower CVD risk. This hypothesis would seem to have many entailments that run contrary to the common understanding of how these different fats influence CVD risk. So, let's see if these claims and implication actually hold up to scrutiny. + +As it turns out, we've thoroughly investigated the effects of altering the fatty acid composition of the diet on LDL oxidation rates in humans. For example, Mata et al. (1996) explored this question with one of the most rigorous studies of its kind. No statistically significant differences between the effects of high-SFA diets and high-PUFA diets on the lag time to LDL oxidation were observed [[2](https://pubmed.ncbi.nlm.nih.gov/8911273/)]. + +![][image1] +[image1]: /blog/seedoils/image1.png + +However, diets high in monounsaturated fat (MUFA) diets might actually increase the lag time to LDL oxidation more than either SFA-rich or PUFA-rich diets. It would appear as though this effect could be explained due to the fact that MUFA might be better than SFA at replacing LA in LDL particles. So, it seems as though the implication that SFA could offer unique protection against LDL oxidation is less straightforward than originally suggested. + +![][image2] +[image2]: /blog/seedoils/image2.png + +When comparing LDL that were enriched with PUFA to LDL that were enriched with MUFA, Kratz et al. (2002) observed a stepwise decrease in LDL lag time to oxidation with increasing PUFA, specifically linoleic acid (LA) [[3](https://pubmed.ncbi.nlm.nih.gov/11840183/)]. These results cohere with the results of Mata el al., suggesting that MUFA increases the lag time to LDL oxidation more than SFA or PUFA. + +![][image3] +[image3]: /blog/seedoils/image3.png + +In short, it would at least seem to be true that vegetable oil consumption, when investigated in isolation, increases the susceptibility of LDL to oxidize. But, don't get too excited. As we will discuss, these are paltry changes compared to what can be accomplished with antioxidants. + +Despite Kratz et al. claiming that vitamin E doesn't mask the effects of dietary fatty acids on LDL susceptibility to oxidation, their reference for this claim does not clearly support this conclusion. The work of Reaven et al. (1994) was their supporting reference for this claim and it actually paints a slightly different picture [[4](https://pubmed.ncbi.nlm.nih.gov/8148354/)]. The Lag time to LDL oxidation with vitamin E supplementation was more than double that which was observed in the previous study (or nearly any other random population sample from any other study that I've seen for that matter). + +![][image4] +[image4]: /blog/seedoils/image4.png + +Reaven et al. discovered that the lag time to LDL oxidation was enormously high in all groups after a run-in diet that included 1200mg/day of vitamin E for three months before randomization. Compared to the previous study by Kratz et al. (2002), the LDL lag time to oxidation was 150% higher (~60 minutes to ~150 minutes). This is consistent with other research showing that the vitamin E content of LDL particles linearly increases the lag-time to LDL oxidation [[5](https://pubmed.ncbi.nlm.nih.gov/1985404/)]. + +The effect of dosing vitamin E on increasing the lag time to LDL oxidation observed by Reaven et al. is approximately 7.5x stronger than the effects observed by either Kratz et al. or Mata et al., which involved altering the fatty acid composition of the diet. This strongly suggests that antioxidants are a much stronger lever to pull if one wants to decrease the susceptibility of LDL to oxidize. + +All three studies used the same copper sulfate solution methodology to measure the lag-time to oxidation, as they both reference the same source for the methods developed by Esterbauer et al. (1989) [[6](https://pubmed.ncbi.nlm.nih.gov/2722022/)]. As such, it wouldn't seem that the increase in LDL lag-time to oxidation seen with vitamin E supplementation would be due to a difference in measurement methods. So we have a decent proof of concept that antioxidants like vitamin E can probably modulate the lag-time to LDL oxidation to an enormous degree. + +Which brings me back to the trial by Kratz et al. (2002), which compared olive oil (OO) versus sunflower oil (SU). Despite the fact that all diet groups were receiving roughly the same amount of vitamin E, the OO group ended up with significantly higher vitamin E status compared to the SU group. This is consistent with the observations that MUFA increases the lag time to LDL oxidation to a greater degree than SFA or PUFA. Which leads to higher vitamin E representation in the end. + +![][image5] +[image5]: /blog/seedoils/image5.png + +It is well understood that higher PUFA intakes increase vitamin E requirements in humans [[7](https://pubmed.ncbi.nlm.nih.gov/26291567/)]. However, the OO group also started with much higher status to begin with, which likely contributed to the effect. Lastly, the run-in diet was high in SFA. Such a diet is almost assuredly to be lower in vitamin E, which could exaggerate the effects of high-PUFA diets. + +As discussed earlier, SFA is not vulnerable to lipid peroxidation in any way similar to that of PUFA. However, SFA being less vulnerable to lipid peroxidation typically means that sources of SFA contain very low amounts of antioxidants [[8](https://pubmed.ncbi.nlm.nih.gov/14100992/)]. For example, both coconut oil and butter contain negligible vitamin E and have minimal polyphenols. The potential importance of polyphenol antioxidants in protecting LDL from oxidation has been demonstrated in research investigating OO [[9](https://pubmed.ncbi.nlm.nih.gov/15168036/)]. + +![][image6] +[image6]: /blog/seedoils/image6.png + +Figure 2 from Marrugat et al. (2004) shows that virgin OO increases the lag time to oxidation to a greater degree than that of refined OO, with the primary differences between these different OOs being their polyphenol content. Many polyphenols act as antioxidants once they're inside our bodies, so these results are not particularly surprising. + +It is likely that the overall dietary pattern matters more than PUFA, or even LA, in altering the susceptibility of LDL to oxidation. This principle has been demonstrated multiple times [[10](https://pubmed.ncbi.nlm.nih.gov/28371298/)][[11](https://pubmed.ncbi.nlm.nih.gov/17563030/)][[12](https://pubmed.ncbi.nlm.nih.gov/17887946/)][[13](https://pubmed.ncbi.nlm.nih.gov/30282925/)]. + +For example, in a trial by Aronis et al. (2007), diabetic subjects were placed on either a fast food diet that was formulated to be "Mediterranean diet-like" or assigned to follow their usual diet. There was also a third arm of non-diabetics placed on the Mediterranean-style fast food diet. Lag time to LDL oxidation was measured according to the same methodology as described above, with a copper sulfate solution. + +![][image7] +[image7]: /blog/seedoils/image7.png + +It should be noted that the foods were specifically formulated to increase the lag time to LDL oxidation. However, what makes these results more impressive is that the fast food groups (groups A and B) were consuming twice as much PUFA than they were at baseline. Despite this we see some of the longest lag times to LDL oxidation observed in the literature in a population that has not been primed with megadoses of vitamin E for three months. + +Altogether this would seem to divulge that diet quality matters more than PUFA, or even LA, for LDL oxidation in the aggregate. We've seen multiple times that low-PUFA or low-LA diets can be outperformed by high-PUFA or high-LA diets of better overall quality. Little things add up, and the effect of diet is greater than that of MUFA alone, SFA alone, or even polyphenols alone. Perhaps not vitamin E alone, though. + +But let's be clear. Measuring the lag time to LDL oxidation in this way is highly contrived, and probably not reflective of normal physiological conditions. When you plop the LDL particles in a copper sulfate solution, eventually all of the LDL will oxidize. There's no escaping it. Naturally, the high-PUFA LDL will oxidize marginally sooner. But ultimately, this does not tell us anything about what would happen to these LDL particles under physiological conditions. For that, it might be more useful to look at markers like oxLDL. + +A marker like oxLDL can give us a better sense of just how many oxidized LDL are likely to form in the blood after a particular intervention or in a particular context. This is important because merely looking at the lag time to oxidation could give us an exaggerated sense of what is likely to happen in vivo. + +For example, it may be the case that when you expose LDL particles to copper sulfate, they oxidize in under an hour. But under physiological conditions, that same oxidation could potentially take days. If the LDL are cleared from the blood before oxidation can occur, then the results of the copper sulfate test are probably not very informative. + +One particularly long crossover-style RCT by Palom盲ki et al. (2010) compared the effects of butter to that of canola oil (CAO) on oxLDL [[14](https://pubmed.ncbi.nlm.nih.gov/21122147/)]. Overall the butter diet resulted in higher LDL and higher oxLDL. I wasn't able to find many PUFA-SFA substitution trials that measured oxLDL beyond this one study, unfortunately. + +![][image8] +[image8]: /blog/seedoils/image8.png + +Again, I speculate that this is likely the result of SFA being a poor source of antioxidants. Or perhaps it's because baseline diets could have been higher in PUFA, and reducing vegetable oil intakes might just be cutting off robust sources of antioxidants and increasing LDL oxidation. There are not many studies investigating this, so it's not clear at the moment. + +But, just for the sake of argument let's assume that high-PUFA diets do increase LDL oxidation relative to high-SFA diets. Would that actually be a bad thing? Perhaps not. One study by O枚rni et al. (1997) has identified that oxidized LDL are less likely to be retained within the arterial intima when compared to native LDL [[15](https://pubmed.ncbi.nlm.nih.gov/9261142/)]. If the LDL are oxidizing in the serum, perhaps this just opens up more disposal pathways for LDL and lowers its chances of getting retained in the subendothelial space to begin with. + +Lastly, while we have established that vegetable oil consumption does appear to have an independent impact on LDL oxidation (though the effect is dwarfed by the effect of antioxidants), it is also true that oxLDL isn't actually a robust risk factor for CHD. Wu et al. (2006) discovered that the association between oxLDL and CHD does not survive adjustment for traditional risk factors like apolipoprotein (ApoB) or TC/high density lipoprotein cholesterol (HDL-C) [[16](https://pubmed.ncbi.nlm.nih.gov/16949489/)]. + +![][image9] +[image9]: /blog/seedoils/image9.png + +Essentially this means that after accounting for ApoB or TC/HDL, risk is more closely tracking ApoB or TC/HDL-C, and is not particularly likely to be tracking oxLDL at all. So even if it were the case that diets high in vegetable oils simply increased oxLDL, it wouldn't appear that it moves the needle for risk in the real world. It would also suggest that the hypothetical detriments of increasing LDL oxidation aren't significant enough to offset the LDL-lowering benefits of a high-PUFA diet. As we will discuss later in this section. + +In the above study by Wu et al. (2006), the Mercodia 4E6 antibody assay was used to measure oxLDL. Some have argued that this assay is invalid due to supposedly making poor distinctions between native LDL and oxLDL [[17](https://www.ahajournals.org/doi/full/10.1161/01.CIR.0000164264.00913.6D?related-urls=yes&legid=circulationaha%3B111%2F18%2Fe284)]. However, if the 4E6 assay was truly making poor distinctions between oxLDL and native LDL, the two biomarkers would essentially be proxying for one another to the point of being either interchangeable or even being the same thing. In this scenario, the results of the model would suggest extreme multicollinearity as indicated by similarly (extremely) wide confidence intervals for both results. + +If oxLDL and native LDL were truly proxying for one another in the model in this fashion, we'd expect the confidence intervals for each relative risk to be inflated and more likely non-significant. But, there is no evidence of extreme multicollinearity in the results. Therefore, it is unlikely that the 4E6 antibody assay is actually making poor distinctions between oxLDL and native LDL. This is important to consider, because the argument for extreme multicollinearity is the primary criticism used against the 4E6 antibody assay's usefulness. But the argument doesn't actually pan out. + +It is instead suggested by skeptics of the 4E6 antibody assay that measures of oxidized phospholipids, such as the E06 antibody assay, are more robust measures of oxLDL than the 4E6 antibody assay. However, the E06 antibody assay is actually more vulnerable to the exact type of confounding that has been suggested for the 4E6 antibody assay. This is explained on Mercodia's website [[18](https://www.mercodia.com/product/oxidized-ldl-elisa/#:~:text=Mercodia%20Oxidized%20LDL%20ELISA%20is,epitope%20in%20oxidized%20ApoB%2D100.&text=Substituting%20aldehydes%20can%20be%20produced,the%20generation%20of%20oxidized%20LDL)]. + +>_The proprietary mouse monoclonal antibody 4E6 is developed by professors Holvoet and Collen at the University of Leuven in Belgium. It is directed against a conformational epitope in the ApoB100 moiety of LDL that is generated as a consequence of substitution of at least 60 lysine residues of Apo B100 with aldehydes (Holvoet 2006). This number of substituted lysines corresponds to the minimal number required for scavenger-mediated uptake of oxidized LDL._ + +Essentially, the 4E6 antibody assay makes a clear distinction between native LDL and oxLDL by only binding to ApoB that has been modified sufficiently, as to not be recognizable by LDL receptors. As described on the Mercodia website, the 4E6 antibody only binds to ApoB particles that have >60 of their lysine residues modified by aldehydes, which is the threshold for initiating binding affinity with scavenger receptors, and foreclosing binding affinity with LDL receptors. This makes the 4E6 antibody assay an excellent assay for clearly distinguishing between native LDL and oxLDL. + +Mercodia goes on to discuss the reasons for why the E06 antibody assay could be problematic for assessing oxLDL. + +>_Substituting aldehydes can be produced by peroxidation of lipids of LDL, resulting in the generation of oxidized LDL. However, lipid peroxidation is not required. Indeed, aldehydes that are released by endothelial cells under oxidative stress or by activated platelets may also induce the oxidative modification of Apo B100 in the absence of lipid peroxidation of LDL._ + +Because lipid peroxidation of the LDL particle's phospholipid membrane is not required for an LDL particle to oxidize, a measurement of oxPL could easily mistake a minimally oxidized LDL particle as an oxLDL. For this reason, it is likely that the 4E6 antibody assay is likely to better reflect the actual number of oxLDL [[19](https://cms.mercodia.com/wp-content/uploads/2019/06/poster-oxldl-know-what-you-measure.pdf)]. + +This is relevant because the immune cells that mediate the formation of atherosclerotic plaques only tend to take up maximally oxidized LDL particles, not minimally oxidized LDL particles [[20](https://pubmed.ncbi.nlm.nih.gov/6838433/)][[21](https://pubmed.ncbi.nlm.nih.gov/24891335/)]. Maximally oxidized LDL have to be disposed of through scavenger receptor-mediated pathways, rather than LDL receptor-mediated pathways. + +![][image10] +[image10]: /blog/seedoils/image10.png + +If minimally oxidized LDL likely contribute as little to foam cell formation as native LDL, why favour measures of minimally oxidized LDL such as the E06 antibody assay over measures of maximally oxidized LDL such as the 4E6 antibody assay? + +Unfortunately, so far no studies have attempted to explore the relationship between oxLDL, as measured by the E06 antibody assay, and CHD outcomes after adjustment for total ApoB. The closest we have is a single study by Tsimikas et al. (2006) that found no correlation between oxPL/ApoB and ApoB [[22](https://pubmed.ncbi.nlm.nih.gov/16750687/)]. + +However, if ApoB and oxPL tend to vary in tandem, the oxPL/ApoB ratio might not be expected to change very much from subject to subject. If that is the case, then we would not expect oxPL/ApoB to correlate very well at all. It would be nice to see univariable and multivariable models presented that test for independent effects of these biomarkers. + +Nevertheless, if merely having more LA in your body meant that you would increase lipoprotein oxidation and thus get more CHD, we would not expect results like those of the meta-analysis conducted by Marklund et al. (2019) [[23](https://pubmed.ncbi.nlm.nih.gov/30971107/)]. When investigated closely, the higher your tissue representation, the lower your risk of both CHD and ischemic stroke. + +It鈥檚 important to note that there was not a single statistically significant increase in risk observed in any of the included cohorts when comparing the lowest tissue LA to the highest tissue LA. One of the more interesting findings was from a regression analysis of the Scottish Heart Health Extended Cohort by Wood et al. (1984), which found a strong inverse correlation between adipose LA and CHD incidence [[24](https://pubmed.ncbi.nlm.nih.gov/6146032/)]. + +![][image11] +[image11]: /blog/seedoils/image11.png + +This certainly isn't what we would expect if the chain of causality is LA -> OxLDL -> CHD. However, as we'll discuss in the next section, this is what we'd expect if the chain of causality is SFA -> LDL -> CHD. So, let's go ahead and dive into that data next. + +###### **HEART DISEASE** + +Now that we've established that there is scant evidence validating oxLDL as a robust, independent marker of CVD risk, let's move on to actual human outcomes. It is a common belief among certain diet camps that PUFA actually increases CVD risk, and that SFA may even lower the risk of CVD. But is there evidence for this claim? + +Let's start with the epidemiological evidence, being sure to keep the original question in mind鈥 does substituting PUFA for SFA lower CVD rates? There have been multiple meta-analyses that have aimed to answer this question, however the application of meta-analysis methods in this context can produce some significant interpretative challenges. Let me explain why. + +The relationship between SFA and CVD is nonlinear, and significantly influenced by the degree of replacement with PUFA. As such, the linear summation of prospective cohort studies can hide the nonlinear effect. For example, let's have a look at one of the most heavily-cited meta-analyses by Siri-Tarino et al. (2010), which investigated the relationship between SFA and CVD in prospective cohort studies [[25](https://pubmed.ncbi.nlm.nih.gov/20071648/)]. + +![][image12] +[image12]: /blog/seedoils/image12.png + +As we can see, the aggregated results are null (P = 0.22). However, the I虏 (a measure of heterogeneity) is 41%, and no attempt was made to investigate the source of that heterogeneity. If we take the time to calculate the intake ranges of each cohort study (when possible), we can test for nonlinearity. + +![][image13] +[image13]: /blog/seedoils/image13.png + +After stratifying the included studies by intake range, we see a statistically significant 30% increase in risk in subgroup one (~25卤15g/day) and null results for subgroups two and three (35卤15g/day and 45卤15g/day, respectively). This is precisely what we'd expect to see if the risk threshold presupposed by the Dietary Guidelines was correct. McGee et al. (1984) needed to be removed for this analysis because SFA intake ranges could not be determined from the provided data. + +But perhaps this is an isolated finding. There are many other meta-analyses on this subject [[26](https://pubmed.ncbi.nlm.nih.gov/27697938/)][[27](https://pubmed.ncbi.nlm.nih.gov/30954077/)][[28](https://pubmed.ncbi.nlm.nih.gov/32307197/)][29](https://pubmed.ncbi.nlm.nih.gov/19752542/)]. Maybe the other meta-analyses on this subject would find something different? Let's find out. + +![][image14] +[image14]: /blog/seedoils/image14.png + +Applying the same methodology to all of the available meta-analyses yields the same result. This time subgroup two is representing the intake threshold presupposed by the Dietary Guidelines (~25卤15g/day). We see similar increases in risk in the same subgroup across all published meta-analyses investigating the relationship between SFA and CVD (RR 1.14 [1.07-1.22], P<0.0001). + +You may be asking why subgroups one, three, and four are null, whereas subgroup two is not. The answer is quite simple. It's because those ranges are not crossing the threshold of effect. The range of intake represented in subgroup one exists below the threshold of effect, whereas subgroups three and four exist above the threshold of effect. As such, comparing lower intakes to higher intakes within those ranges does not show an additional increase in risk. The relationship between SFA and CVD is sigmoidal. + +![][image15] +[image15]: /blog/seedoils/image15.png + +Comparing intakes that exist on either the floor or ceiling of the risk curve will typically produce null results. Only when the middle intake range is investigated is the increase in risk observable. + +But how does PUFA play into this? To answer this question, let's make our own meta-analyses. Let's take all of the cohort studies that fall within that middle range and plot them out for both SFA and PUFA. + +**Inclusion Criteria:** + +- Prospective cohort studies investigating the relationship between SFA and/or PUFA and CVD. + +- Endpoints directly related to CVD, coronary heart disease, ischemic heart disease, or myocardial infarction (events, mortality, incidences, etc) are acceptable. + +- Risk estimates stratified from lowest to highest SFA and/or PUFA intakes. + +- Cohorts must fit into one of four intake categories: + + +1. 0-10g/day (lower range) to 20-30g/day (upper range) + +2. 10-20g/day (lower range) to 30-40g/day (upper range) + +3. 20-30g/day (lower range) to 40-50g/day (upper range) + +4. 30g/day+ (lower range). Min. 20g/day difference from lower to upper range + + +**Exclusion Criteria:** + +- Studies pooling results across multiple cohorts from different countries. + +- Risk adjustments controlling for serum cholesterol and hyperlipidemic medications. + +- Cohorts consisting of people with pre-existing CVD and/or currently taking hyperlipidemic medications. + +- Studies investigating the same cohorts as other included studies. Tie-breakers are decided based on differences in study quality (e.g., chosen subgroups, endpoints, multivariate adjustment models, etc). + + +Drag-netting the literature yielded a total of 74 studies. 20 studies were excluded due to reporting irrelevant endpoints (e.g., stroke, cerebral hemorrhage, atrial fibrillation, etc). Of the 41 remaining studies, 32 studies were excluded due to including duplicate cohorts, adjusting for blood lipids, being multinational, failing to specify intake ranges, or having an intake range that did not fall into one of the prespecified subgroups. + +**Results for Saturated Fat:** + +Altogether there were 21 studies that met all of the inclusion criteria [[30](https://doi.org/10.1161/01.atv.3.2.149)][[31](https://doi.org/10.1194/jlr.M044644)][[32](https://doi.org/10.1016/j.jacc.2006.03.001)][[33](https://doi.org/10.1161/CIRCULATIONAHA.118.038908)][[34](https://doi.org/10.3945/ajcn.115.116046)][[35](https://doi.org/10.3945/ajcn.2009.27725)][[36](https://doi.org/10.1136/bjsports-2016-096550)][[37](https://doi.org/10.1186/s12944-019-1035-2)][[38](https://doi.org/10.1016/j.clnu.2020.03.028)][[39](https://doi.org/10.1159/000229002)][[40](https://doi.org/10.1371/journal.pone.0000377)][[41](https://doi.org/10.3945/jn.112.161661)][[42](https://doi.org/10.1161/CIRCRESAHA.118.314038)][[43](https://doi.org/10.1159/000175862)][[44](https://doi.org/10.3945/ajcn.115.116046)][[45](https://doi.org/10.1093/aje/kwh193)][[46](https://doi.org/10.1136/bmj.i5796)][[47](https://doi.org/10.1136/hrt.78.5.450)][[48](https://doi.org/10.1017/S0007114517003889)][[49](https://doi.org/10.1097/HJR.0b013e3282a56c45)][[50](https://doi.org/10.1093/oxfordjournals.aje.a009047)]. Cohorts were stratified across four subgroups, based on absolute grams-per-day intakes of SFA. Total pooled results across all subgroups showed a non-significant increase in risk (RR 1.07 [0.97-1.18], P=0.16). Subgroup two was the only subgroup to reach statistical significance (RR 1.24 [1.10-1.40], P=0.0005). + +![][image16] +[image16]: /blog/seedoils/image16.png + +Again, we see the exact same thing. The increase in risk occurs in the same subgroup, in the same intake range鈥 the same intake range presupposed by the Dietary Guidelines to increase risk. + +**Results for Polyunsaturated Fat:** + +Altogether there were 10 studies that met all of the inclusion criteria. In order to preserve the PUFA to SFA ratio, cohorts were stratified across four subgroups, based on absolute grams-per-day intakes of SFA. Total pooled results across all subgroups showed a statistically significant reduction in CVD risk (RR 0.91 [0.83-1.00], P=0.04). Subgroup two was the only subgroup to reach statistical significance (RR 0.87 [0.80-0.93], P=0.0002). + +![][image17] +[image17]: /blog/seedoils/image17.png + +This second forest plot was not stratified by PUFA intake. As mentioned above, it was instead stratified by SFA intake. This way the ratio of SFA to PUFA would be better preserved. This is important for understanding the relationship between these two dietary fats. + +![][image18] +[image18]: /blog/seedoils/image18.png + +Both SFA and PUFA have inverse sigmoidal relationships with CVD. The more PUFA you replace with SFA, the higher your risk. The more SFA you replace with PUFA, the lower your risk. + +This is exactly the same relationship we see in the RCTs as well [[51](https://pubmed.ncbi.nlm.nih.gov/32827219/)]. Recently, Hooper et al. (2020) published an enormous meta-analysis and meta-regression analysis for the Cochrane Collaboration, which investigated CVD-related outcomes of many PUFA-SFA substitution RCTs. + +![][image19] +[image19]: /blog/seedoils/image19.png + +Their analysis shows that substituting SFA for PUFA, and crossing the 10% of energy threshold as SFA, increases CVD risk in the aggregate. Especially for CVD events, CVD mortality, CHD mortality, and non-fatal acute myocardial infarction (AMI). + +Cochrane also performed multiple meta-regression analyses on the included data. Meta-regression is a tool used to investigate the relationship between two variables when they are controlled by a moderator variable. In this case, the two variables in question are SFA intakes (or PUFA-SFA substitution) and CVD. Multiple moderator variables were modeled. + +![][image20] +[image20]: /blog/seedoils/image20.png + +The only statistically significant moderator variable was total cholesterol (TC) (P=0.04). This suggests that the chain of causality is SFA -> TC -> CVD. This therefore suggests that to the extent that a dietary modification reduces TC, reductions in CVD should follow. This is confirmed in their exploratory analysis later on in the paper. + +Additional exploratory meta-analyses by Hooper et al. (2020) also further divulge that SFA reduction lowers total CVD events (analysis 1.35), the best replacement for SFA is PUFA from vegetable oils (analysis 1.44), and the effect is likely via lowering TC (analysis 1.51). This evidence dovetails perfectly with the epidemiological evidence discussed above. + +Not included in many of Cochrane's analyses were two studies that are often offered up as damning counterevidence, and often cited in support the notion that vegetable oils increase CVD risk. These two trials are the Sydney Diet Heart Study (SDHS) by Woodhill et al. (1978) and the Minnesota Coronary Experiment (MCE) by Frantz et al. (1989) [[52](https://pubmed.ncbi.nlm.nih.gov/727035/)][[53](https://pubmed.ncbi.nlm.nih.gov/2643423/)]. These trials were both designed such that SFA was to be replaced with PUFA in the intervention groups in the form of vegetable oil-based margarines, and PUFA was to be replaced with SFA in the control groups. + +Both trials achieved significant differences in TC during the course of both of the trials. However, the SDHS did not achieve a significant difference in the magnitude of the reduction, and the final difference in TC was only around 12mg/dL. While statistically significant, it is questionable whether or not either of these changes in TC were clinically significant. On the other hand, the MCE saw significant reductions in TC. + +Neither trial saw a statistically significant difference in either CVD mortality or total mortality. + +![][image21] +[image21]: /blog/seedoils/image21.png + +However, in the aggregate, there is a significant increase in CVD mortality between the two trials. This is concerning, seeing as though these two trials are often touted as the best designed trials that have been conducted in the investigation of this research question, aside from the LA Veterans Administration Hospital Study (LAVAT) by Dayton et al. (1969) [[54](https://www.ahajournals.org/doi/10.1161/01.CIR.40.1S2.II-1)]. However, the MCE's design ended up allowing participants to enter in and exit out of the trial at their leisure, and this ended up resulting in a mean follow-up time of around 1.5 years. Which is abysmal. + +It should be noted that the SDHS was a secondary prevention trial, which means that the subjects had already had a single CVD event at the time of enrollment. Given the questionable clinical relevance of the final differences in TC, it is even more ambiguous how meaningful the findings were. It has been observed that differences in SFA intake don't always change CVD outcomes in high-risk populations [[55](https://www.nature.com/articles/s41598-021-86324-w)]. + +Nevertheless, we're left wondering precisely why we didn't see the predicted effect in either of these trials. Aside from the revolving door protocol that was used in the MCE, the designs were not particularly terrible as far as large-scale RCTs go. So, why didn't we see the effect that we see in nearly every other trial of similar design and quality, as mentioned above? + +The answer likely lies in the types of fat-based products that were provided to the vegetable oil groups in these two trials. The vegetable oil groups were the groups that were meant to increase PUFA intake. PUFA was provided to subjects primarily in the form of corn oil (CO) based margarines. This is a problem. Margarines are typically made primarily from unsaturated fats, which are liquid at room temperature. In order to make the product solid and spreadable, the oils need to be hardened. There are essentially two standard ways to achieve this effect. + +First, we can harden oils through hydrogenation or through emulsification. However, non-hydrogenated margarines were not commonplace on the market prior to the 1970s [[56](https://www.soyinfocenter.com/HSS/margarine2.php)]. Both the SDHS and the MCE were conducted during the 1960s. At the time, hydrogenation was the preferred method to harden margarines. However, this has the secondary effect of generating trans fatty acids (TFA). + +TFAs are associated with an increased risk of many diseases, including CVD. However, TFAs are the only known fatty acid subtypes that have been associated with increased CVD mortality when replacing SFA on a population-level [[57](https://pubmed.ncbi.nlm.nih.gov/30636521/)]. + +![][image22] +[image22]: /blog/seedoils/image22.png + +Basically, TFAs are fucking dangerous鈥 more dangerous than SFA. The CO-based margarine used in the SDHS was "Miracle" brand margarine [[58](https://pubmed.ncbi.nlm.nih.gov/23386268/)]. According to Dr. Robert Grenfell of the National Cardiovascular Health Director at the Australian Heart Foundation and the Deputy Chairman of the Sydney University Nutrition Research Foundation, Bill Shrapnel, Miracle brand margarine was up to 15% TFA at the time the study was conducted [[59](https://www.ausfoodnews.com.au/2013/02/11/heart-foundation-takes-swipe-at-butter-and-new-study-on-margarine.html)]. + +>_When this study began, Miracle margarine contained approximately 15 per cent trans fatty acids, which have the worst effect on heart disease risk of any fat. The adverse effect of the intervention in this study was almost certainly due to the increase in trans fatty acids in the diet_ + +If Woodhill et al. (1978) truly fed the subjects in the vegetable oil group (group F) as much of that margarine as they seem to be claiming to in their publication, that could be around 5.7g/day of TFA. + +![][image23] +[image23]: /blog/seedoils/image23.png + +The margarine used in the MCE was likely to be Fleischmann's Original, due to the availability and popularity at the time of the intervention. As well as the fact that the product was developed in direct response to pro-PUFA research that was being conducted at the time. + +![][image24] +[image24]: /blog/seedoils/image24.png + +The only other two margarines that were potentially available in the region at the time the MCE was conducted were Imperial margarine and Mazola margarine. Some Imperial products remained high in TFA until very recently [[60](https://abcnews.go.com/Business/story?id=8182555&page=1)]. Mazola was pretty much the only non-hydrogenated margarine on the market at the time. + +![][image25] +[image25]: /blog/seedoils/image25.png + +The answer to the question of which margarine was used in the MCE is anybody's guess at this point. But if I were generous, I'd say that based on the margarines that were available (and most likely to be used) at the time the MCE was conducted, there is roughly a 67% chance that the trial was potentially confounded by TFA in the vegetable oil diet. Though Ramsden et al. (2016) remain skeptical that confounding such as this was likely [[61](https://pubmed.ncbi.nlm.nih.gov/27071971/)]. + +However, even if the MCE was not confounded by TFA, we would still have a good reason to exclude it from consideration. Like I mentioned earlier, the trial was designed in such a way that the participants had the liberty to enter and exit the trial at their leisure. In the aggregate, there was only a 12-18 month follow-up time. As such, the trial has significantly less power than all other trials that investigated this particular sort of dietary substitution. + +Ramsden et al. have argued at length that the control group was likely confounded by TFA to a greater degree than the vegetable oil group. In their view, this could indicate that LA is actually worse for you than TFA. Essentially they claim that vegetable shortening was added to the control group in order to boost the SFA content of the diet, and because vegetable shortening is hydrogenated, it must have contained a large amount of TFA. This is dubious. + +Fully hydrogenated oils contain very little TFA [[62](https://pubmed.ncbi.nlm.nih.gov/26048727/)]. However, partially hydrogenated oils such as most soft margarines of the period contain high levels of TFA. Here is a selection of SOs taken from the USDA's SR28 Nutrient Database [[63](https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/sr11-sr28/)]. + +![][image26] +[image26]: /blog/seedoils/image26.png + +As you can see, a tablespoon of partially hydrogenated SO margarine contains 2200% more TFA than a tablespoon of fully hydrogenated SO shortening. + +Ramsden et al. (2016) also acknowledge that the vegetable oil group's diet used soft margarines that were likely to contain some TFA. However, they also under-appreciate the fact that fully hydrogenated vegetable shortening contains pretty much the same amount of TFA as its unadulterated, non-hydrogenated counterpart. In fact, this is precisely why fully hydrogenated shortenings are still on the market despite the TFA ban in most developed countries. It's because those fats never had much TFA to begin with. + +>_Because the trans fatty acid contents of MCE study diets are not available, one could speculate that the lack of benefit in the intervention group was because of increased consumption of trans fat. Indeed, in addition to liquid corn oil the intervention diet also contained a serum cholesterol lowering soft corn oil polyunsaturated margarine, which likely contained some trans fat. The MCE principal investigator (Ivan Frantz) and co-principal investigator (Ancel Keys), however, were well aware of the cholesterol raising effects of trans fat prior to initiating the MCE.77 Moreover, Frantz and Keys previously devised the diets used in the institutional arm of the National Diet Heart Feasibility Study (NDHS), which achieved the greatest reductions in serum cholesterol of all NDHS study sites.2 Hence, it is highly likely that this experienced MCE team selected products containing as little trans fat as possible to maximize the achieved degree of cholesterol lowering. Perhaps more importantly, it is clear from the MCE grant proposal that common margarines and shortenings (major sources of trans fat) were important components of the baseline hospital diets and the control diet (but not the intervention diet). Thus, confounding by dietary trans fat is an exceedingly unlikely explanation for the lack of benefit of the intervention diet._ + +Given that we can soundly infer that the SDHS study was confounded by TFA, and the MCE was likely to be confounded by TFA, the results of these trials start to make a lot more sense. The effect sizes, and the direction of effect, mirror what we see in epidemiological research, as well. When TFA replaces SFA, risk goes up. When PUFA replaces SFA, risk goes down. If it is still to be maintained by skeptics that vegetable oils increase the risk of CVD, rather than lowering it, they must satisfy the burden of proof with extraordinary evidence. + +I would surely be remiss if I did not briefly acknowledge one trial that was left out of the analysis by Hooper et al. (2020), which was the Lyon Diet Heart Study [[64](https://pubmed.ncbi.nlm.nih.gov/7911176/)]. The reason this trial is noteworthy is due to it being the only experimental investigation of the diet-heart hypothesis that actually made an effort to reduce LA alongside SFA. The trial also saw one of the largest reductions in CVD risk ever recorded in this body of literature, with a massive 73% reduction in CVD risk over four years. Skeptics of vegetable oils would like to attribute this effect to the lowering of LA in the diet, but is there any merit to this? + +The trial did achieve statistically significant differences in LA intake between groups, with 5.3% of energy as LA in the control group and only 3.6% of energy as LA in the intervention group [[65](https://pubmed.ncbi.nlm.nih.gov/9989963/)]. However, if we calculate the absolute intakes of LA for both groups using each group鈥檚 total daily calories, we discover that the absolute differences in LA intake between groups amounted to about 4.5g/day鈥 equal to approximately 1.5 teaspoons of SO. In the most clinical, scientific vernacular, this would be referred to as sweet fuck all. + +So, why did the trial see such a massive reduction in risk? Likely because, as far as multifactorial interventions go, this trial did its best to knock the ball out of the park. Just take a look at the diets. + +![][image27] +[image27]: /blog/seedoils/image27.png + +Firstly, the groups achieved a difference of 10g/day in SFA and the between-group differences in SFA cross the 25g/day threshold that we discussed earlier. Secondly, the intervention group was consuming significantly fewer foods that are positively associated with CVD, such as whole meat, processed meat, and butter. Lastly, the intervention group was consuming significantly higher amounts of fruit and vegetables (considered together), as well as unsaturated fats, which are strongly inversely associated with CVD. + +Bottom line is that there is a lot going on in these diets that could be strongly modifying CVD risk. To attribute the massive 73% reduction in CVD risk to 4.5g/day of LA is frankly dubious, and not replicated anywhere else in the literature, despite it being directly tested. Virtually all other trials that were well controlled found the opposite effect of increasing LA. Honestly, based on what is currently known about LA, I would sooner suspect that the lower LA in the intervention group was likely working against them, not for them. + +Lastly, the relationship between LA and CVD has been investigated using Mendelian randomization (MR). You can think of MR as being a method of investigation that is halfway between an RCT and an epidemiological study. Essentially, you find people with gene variants that influence a particular exposure (such as higher tissue LA) and compare their outcomes to other people who do not have those gene variants. + +The study methods of MR also assume that genes are randomly distributed in the population, and this should significantly mitigate the potential for certain types of confounding like the healthy-user bias (HUB). It is generally accepted that this methodology offers superior internal validity for these sorts of research questions than typical methods used in the field of epidemiology. It's essentially giving you the best idea of the magnitude of the effect, independent of confounding, that is achievable without lifelong RCTs. + +Even though MR data doesn't really need to be mentioned, because we have actual RCT data on this subject. However, it's worthwhile to add it in here just to hammer home how utterly consistent this evidence actually is. This time the data is being sourced from the UK Biobank, which is a massive prospective cohort study that also leverages a repository of biological samples from over 500,000 subjects [[66](https://pubmed.ncbi.nlm.nih.gov/33924952/)]. + +![][image28] +[image28]: /blog/seedoils/image28.png + +Here we see that Park et al. (2021) observed the same relationship yet again. Genetically elevated serum LA was inversely associated with AMI, whereas genetically elevated serum AA was positively associated with AMI. The gene variants that were investigated were related to the function of fatty acid desaturase (FADS) enzymes. + +It would seem that those who are less able to convert LA to AA have a decreased risk of AMD, whereas those who are more able to convert LA to AA have an increased risk. Considering the fact that AA conversion is highly regulated, as well as the fact that dietary LA is virtually unavoidable, it seems unlikely that modulating dietary LA would be a reliable way to modulate the conversion of LA into AA [[67](https://pubmed.ncbi.nlm.nih.gov/21663641/)]. On balance, these findings support increasing dietary LA for CVD prevention. + +Overall, the available evidence overwhelmingly favours the inclusion of vegetable oils in the diet, especially if consumed to the exclusion of SFA, for reducing CVD risk. The evidence that would need to be bought forward to topple this paradigm would need to be truly extraordinary. + +# **CANCER** + +###### **TOTAL CANCER** + +The data most often cited in support of the notion that vegetable oils increase the risk of cancer comes from a post-hoc analysis of the aforementioned study, the LAVAT, by Pearce et al. (1971) [[68](https://pubmed.ncbi.nlm.nih.gov/4100347/)]. This is likely because this is some of the only randomized controlled trial (RCT) data that actually shows this increase in risk [[69](https://pubmed.ncbi.nlm.nih.gov/21090384/)]. As we will discuss, this is quite easy to cherry-pick. + +The LAVAT was a double-blind RCT was first reported on by Dayton et al. (1969), and aimed to investigate the effects of substituting vegetable oils for animal fat on the risk of CVD. However, cancer was among their secondary endpoints. The researchers actually took enormous care to ensure that the substitution of vegetable oil for animal fat was the only substitution the subjects were making. Even going so far as providing ice cream made out of vegetable oils rather than dairy fat. + +It's important to preface this discussion with an acknowledgment that the trial observed statistically significant increases in dietary LA and LA tissue representation in the vegetable oil group. LA was higher across all measured tissue compartments when comparing subjects with an adherence of at least 88% to control. + +Essentially, the concern that increasing vegetable oils in the diet increases cancer risk originates from the following figure. Figure 1 from the original analysis by Pearce at al (1971) clearly shows that the cumulative deaths due to carcinoma rise faster in the vegetable oil group than in the control group after around two years into the study. + +![][image29] +[image29]: /blog/seedoils/image29.png + +I must admit that the graph looks pretty scary, and narratives surrounding the findings of this study had me convinced for a while too. However, this graph is incredibly misleading when taken out of context. + +Firstly, cancer deaths were not a pre-specified primary endpoint of the trial itself, which means it is questionable whether or not the study was even appropriately powered or equipped to investigate this endpoint in any rigorous way. Secondly, the results are not statistically significant, despite the above figure showing what appears to be a massive divergence in cancer outcomes. + +>_During the diet phase (see figure) there were 31 carcinoma deaths in the experimental group and 17 in the control group (蠂虏 = 3.668, p = 0.06)._ + +Pearce et al. also performed an analysis wherein they adjusted for the differences in relative adherence between groups. After the adjustment, the findings were consistent with what would be expected from random distribution. + +>_Many of the cancer deaths in the experimental group were among those who did not adhere closely to the diet. This reduces the possibility that the feeding of polyunsaturated oils was responsible for the excess carcinoma mortality observed in the experimental group. However, there were significantly more low adherers in the entire experimental group than in the controls (table VI). In both groups, the numbers of cancer deaths among the various adherence strata are compatible with random distribution (table V). A high incidence among high adherers would be expected if some constituent of the experimental diet were contributing to cancer fatality._ + +This basically means that the excess cancer deaths seen in the vegetable oil group were very likely due to chance, and wrongly attributed to poor adherence. For this reason the authors conclude that the high vegetable oil diet was not likely to be the cause of the increase in cancer mortality. In fact, they specifically mention that their findings were an outlier in the context of the wider literature of the time. + +Pearce et al. also included a table that stratifies cancer outcomes by the degree of adherence per group. + +![][image30] +[image30]: /blog/seedoils/image30.png + +As mentioned above, the vegetable oil group had significantly more low adherers. As we can see, about 33% of the excess cancer was occurring among low adherers in the vegetable oil group. Let's see what happens when we not only remove the low adherer subgroup, but also compare the between-group difference in carcinoma risk among the highest adherers. + +![][image31] +[image31]: /blog/seedoils/image31.png + +Removing the low adherers nullifies the effect of the vegetable oil diet on cancer outcomes. There are also other plausible explanations for the effect as well. For example, the vegetable oil group contained many more moderate smokers than the animal fat group. + +Moderate smokers were defined as those smoking 0.5-1 packs of cigarettes per day. As you can see, observed cancer among moderate smokers was 3x higher in the vegetable oil group, and this is where all the excess cancer risk is accumulating. + +![][image32] +[image32]: /blog/seedoils/image32.png + +This means that low adherers in the vegetable oil group were likely to be smokers, and the smokers were likely to get more cancer. As we would expect [[70](https://pubmed.ncbi.nlm.nih.gov/22943444/)]. + +To suggest that the results of the LAVAT demonstrate a higher cancer risk for those consuming vegetable oils is just to misunderstand or misrepresent the data that Pearce et al. reported. The study did not actually divulge an independent effect of vegetable oil intake on cancer mortality. In fact, if we only look at high adherers, there are no statistically significant differences in cancer. + +![][image33] +[image33]: /blog/seedoils/image33.png + +As the authors reported, if the increase in cancer risk was actually a consequence of the vegetable oil diet, we would see more cancer risk among higher adherers. But we don't. We see no statistically significant differences. + +Overall, there is insufficient evidence to declare higher vegetable oil intakes to be an independent risk factor for cancer. The available data suggests that, at worst, higher vegetable oil intakes likely have a neutral effect compared to high animal fat intakes. But, the LAVAT was not the only trial to report cancer as a secondary endpoint. Three other trials that substituted vegetable oils for SFA also reported cancer outcomes. + +![][image34] +[image34]: /blog/seedoils/image34.png + +When considering all of the studies in the aggregate (subgroup 2.1.1), we see that the effect of substituting vegetable oils for SFA on cancer is null. But, the LAVAT is still boasting its (dubiously) large effect size. When we remove the moderate smokers, the increased risk is nullified (subgroup 2.1.2). However, further excluding all regular smokers pushes the aggregated results to a non-significant decrease in cancer risk with substituting vegetable oils for SFA (subgroup 2.1.3). + +The direction of effect that we see is actually consistent with the wider epidemiology investigating the relationship between LA biomarkers and cancer mortality. Here we see a strong inverse association between tissue LA representation and cancer risk overall [[71](https://pubmed.ncbi.nlm.nih.gov/32020162/)]. + +![][image35] +[image35]: /blog/seedoils/image35.png + +However, this is total cancer. There is still some controversy surrounding whether or not vegetable oils may increase the risk of other cancers. So, let's dive into that literature next. + +###### **SKIN CANCER** + +There is a meta-analysis by Ruan et al. (2020) investigating the limited epidemiological research on the subject. The results suggest that higher intakes of PUFA could also increase the risk of skin cancer in prospective cohort studies [[72](https://pubmed.ncbi.nlm.nih.gov/31298947/)]. However, if we take a look at the author's data, we have some troubling findings. + +![][image36] +[image36]: /blog/seedoils/image36.png + +Increasing PUFA intake seems to increase the risk of squamous cell carcinoma (SCC). However, a single study by Park et al. (2018) is contributing 92.6% of the weight [[73](https://pubmed.ncbi.nlm.nih.gov/29636341/)]. + +![][image37] +[image37]: /blog/seedoils/image37.png + +This could be due to the fact that the study's adjustment model lacked several important covariates that may have plausibly changed the association. For example, the multivariate adjustment model adjusted for hair colour rather than skin tone. This is problematic because hair colour does not sufficiently capture the differential effects of skin tone on skin cancer [[74](https://pubmed.ncbi.nlm.nih.gov/23107311/)]. + +![][image38] +[image38]: /blog/seedoils/image38.png + +In at least one of the included prospective cohort studies by Ibiebele et al. (2009) that investigated the relationship between LA and skin cancer included adjustments for skin colour, and their results were null [[75](https://pubmed.ncbi.nlm.nih.gov/19462452/)]. This further casts doubt on the veracity of the findings reported by Park et al. (2018). + +In fact, when tissue representation of LA was investigated by Wallingford et al. (2013) in a separate cohort study, non-significant reduction in the risk of basal cell carcinoma (BCC) can be observed [[76](https://pubmed.ncbi.nlm.nih.gov/23885039/)]. Additionally, among those with previous skin cancers, higher tissue representation of LA was associated with a statistically significant decrease in risk of re-occurrence (RR 0.54 [0.35-0.82]) A very odd finding if having more LA inside your body is supposed to predispose you to developing skin cancer. + +There is also one study by Harris et al. (2005) that investigates the relationship between red blood cell cis-LA content and squamous cell carcinoma [[77](https://pubmed.ncbi.nlm.nih.gov/15824162/)]. While it is a case-control study and lacks the temporal component that is necessary to establish causality, it is some of the only human outcome data we have on the subject, and the results are null. + +![][image39] +[image39]: /blog/seedoils/image39.png + +If one still believes that higher intakes of LA increases the risk of skin cancer, I have a treat for them. Do you remember the LAVAT we mentioned in the cancer section? It turns out that skin cancer was actually one of their secondary endpoints. + +![][image40] +[image40]: /blog/seedoils/image40.png + +In table II from the post-hoc analysis by Pearce et al. (1971), we see that in the vegetable oil group, there were ten cases of skin cancer, whereas in the animal fat group there were 21. This produces a statistically significant increase in skin cancer risk for the animal fat group, whether or not we exclude or include the post-diet period (RR: 2.11 [1.01-4.43] and 2.09 [1.07-4.11], respectively). + +![][image41] +[image41]: /blog/seedoils/image41.png + +As we discussed earlier, there were no statistically significant differences in cancer risk among heavy smokers, of which there were only two cases in the animal fat group. However, there was a non-significant increase in cancer risk among moderate smokers, of which there were 19 cases in the vegetable oil group. + +This suggests that the increase in skin cancer seen in the animal fat group is not due to heavy smoking, as there were only two cases of cancer among heavy smokers in the animal fat group, and we have 21 cases of skin cancer. The vegetable oil group had lower rates of skin cancer despite the fact that there were more moderate smokers, and more cancer risk among moderate smokers, in the vegetable oil group. This increase in risk seen in the animal fat group can't be explained by differences in smoking habits. + +Additionally, the methods of MR have also been used by Seviiri et al. (2021) to investigate the relationship between elevated plasma LA and skin cancer [[78](https://pubmed.ncbi.nlm.nih.gov/34088753/)]. Data was collected for two different keratinocyte cancers, which were BCC and SCC, and the results are consistent with those found in the LAVAT. + +![][image42] +[image42]: /blog/seedoils/image42.png + +There was a statistically significant 6% reduction in BCC risk with genetically elevated plasma LA, whereas AA showed a statistically significant 4% increase in risk. Oddly, the effect size of eicosapentaenoic acid (EPA) was actually larger than that of AA, which would seem to be at odds with the RCT data on the subject [[79](https://pubmed.ncbi.nlm.nih.gov/24265065/)]. + +![][image43] +[image43]: /blog/seedoils/image43.png + +For SCC, the only statistically significant relationship between genetically elevated plasma PUFA was a 4% increased risk with plasma AA. The results for all other PUFA were null. + +In conclusion, it is true that there are some cohort studies suggesting that higher intakes of PUFA may increase the risk of skin cancer. However, the results from the LAVAT and MR are actually stronger evidence and concordant in the opposite direction. As such, it would not appear likely that increasing vegetable oil consumption is an independent risk factor for developing skin cancer. In fact, increasing vegetable oil intake could actually reduce the risk of skin cancer. + +# **ADIPOSITY** + +###### **2-ARACHIDONOYLGLYCEROL** + +The notion that vegetable oils are responsible for the obesity epidemic is extremely pervasive across a wide variety of niche diet communities. The hypothesis that dietary LA increases hunger through the passive production of an endocannabinoid known as 2-arachidonoylglycerol (2-AG) has been articulated by Watkins et al. (2015) [[80](https://pubmed.ncbi.nlm.nih.gov/25610411/)]. They suggest that this endocannabinoid interacts with cannabinoid receptor type 1 (CB1) and facilitates obesity by stimulating appetite. Essentially, vegetable oils supposedly give us "the munchies" similarly to marijuana, as the story goes. But, does this mechanism actually work? + +Indeed, this mechanism does appear to work鈥 in mice [[81](https://pubmed.ncbi.nlm.nih.gov/22334255/)]. In this study by Alvheim et al. (2012), mice were fed two different diets with varying fatty acid compositions. Essentially, mice were randomized to two diets that contained either moderate fat (35% of energy) or high fat (60% of energy). Within each diet group there were three distinct diet conditions. One of the diet conditions was low in LA (1% of energy), and the two remaining diet conditions were "high" in LA (8% of energy), with one of which also being supplemented with long-chain omega-3s. + +![][image44] +[image44]: /blog/seedoils/image44.png + +By the end of the study, the mice receiving 8% of their energy from LA had consistently higher body weight, with a slightly mitigating effect of supplemented omega-3s in the mice fed a high-fat diet (chart e). The increases in body weight in the mice that were fed high-LA diets was commensurate with increases in 2-AG. Ergo, consuming a high-LA diet will increase 2-AG and facilitate obesity鈥 in mice. But what about humans? + +A study by Bl眉her et al. (2006) involving 60 subjects explored the correlation between body fatness and a number of markers related to the endocannabinoid system. There ended up being significant correlations between circulating 2-AG and obesity [[82](https://pubmed.ncbi.nlm.nih.gov/17065342/)]. + +![][image45] +[image45]: /blog/seedoils/image45.png + +However, there is an issue. Unlike mice, circulating levels of the 2-AG precursor, ARA, did not differ between lean and obese subjects. For this reason, the authors go on to express skepticism toward the hypothesis that 2-AG synthesis is driven passively by the supply of precursors in humans. Instead, they point out that there is more evidence that obesity itself acts to inhibit the degradation of 2-AG. + +>_Which mechanisms lead to increased endocannabinoid levels in abdominal obesity? One possibility is the increased supply of precursors for endocannabinoid biosynthesis and/or increased activity of enzymes involved in endocannabinoid synthesis. When studying circulating levels of the precursor arachidonic acid and of oleoylethanolamide, a molecule with endocannabinoid structure and synthesized by the same enzymes that do not activate [cannabinoid] receptors, we did not find any significant correlation with measures of adiposity._ +> +>_Thus, decreased endocannabinoid degradation must be considered as a second possibility. Given the overwhelming mass of adipose tissue compared with other organs, a contribution of adipocytes to endocannabinoid inactivation, which may be disturbed in visceral obese subjects, is an attractive hypothesis._ + +This would not be surprising, considering that the impaired clearance and/or degradation of metabolic substrates is a well-characterized phenomenon in human obesity. Not only that, but there is also a large body of research divulging that the production of 2-AG from its precursors is regulated, not passive [[83](https://pubmed.ncbi.nlm.nih.gov/14595399/)]. + +While somewhat tangential to the point, it is interesting to note that we have tested the effects of selective CB1-antagonism in humans with a pharmaceutical called Rimonabant [[84](https://pubmed.ncbi.nlm.nih.gov/17054276/)]. Overall, this drug does appear to reduce energy intake and result in weight loss that is equal to just over a quarter-pound per week. + +![][image46] +[image46]: /blog/seedoils/image46.png + +The reason this is tangential is because CB-antagonists such as Rimonabant are not specifically targeting LA metabolism. All this research tells us is that the endocannabinoid system is involved with the regulation of body weight in humans, but it does not tell us what independent contributions are being made by 2-AG, or even dietary LA for that matter. + +###### **ENERGY INTAKE** + +If we wish to explore the effects of dietary LA on appetite, there have been a number of short-term fatty acid substitution trials investigating this question. One trial by Naughton et al. (2018) showed an effect of LA on hunger hormones, and a non-significant reduction in prospective energy intake compared to control and high-oleate diets [[85](https://www.ncbi.nlm.nih.gov/pubmed/30261617)]. However, the authors spuriously claim that there was no effect of the high-LA diet in reducing prospective energy intake. This is an example of the interaction fallacy, because there was actually non-inferiority between the high-LA diet and the other diet conditions. + +Of the trials that actually reported ad libitum energy intake in response to diets of varying fatty acid composition, no consistent effects are observed [[86](https://www.ncbi.nlm.nih.gov/pubmed/14694208)][[87](https://pubmed.ncbi.nlm.nih.gov/26331956/)][[88](https://pubmed.ncbi.nlm.nih.gov/10953671/)][[89](https://pubmed.ncbi.nlm.nih.gov/11040181/)][[90](https://pubmed.ncbi.nlm.nih.gov/23328113/)][[91](https://pubmed.ncbi.nlm.nih.gov/28760423/)]. All together, the short-term evidence is largely a wash. In fact, this was remarked upon by Strik et al. (2010) in table 4 of one such publication, and they included the aggregated findings across a number of different trials investigating the relationship between fatty acid saturation, satiety, and energy intake [[92](https://pubmed.ncbi.nlm.nih.gov/20492735/)]. Overall, when there was an effect of LA, it tended to decrease energy intake. + +![][image47] +[image47]: /blog/seedoils/image47.png + +In one particularly well-done trial by Strik et al., participants in the three groups were given unlimited access to muffins made using either SFA, MUFA, or PUFA. They would consume these muffins ad libitum one variety at a time, with a washout period between different muffin types. + +By the end, all three groups experienced all three muffin types. Each time researchers collected subjective data on satiety and the general satisfaction of the food experience. No differences in any parameters reached statistical significance. + +![][image48] +[image48]: /blog/seedoils/image48.png + +There were no statistically significant differences in hunger, fullness, satisfaction, or prospective consumption (how much more subjects suspected they could eat at that moment). It appeared as though SFA trended toward a decrease in fullness, perhaps. There were also no observed differences in ad libitum energy intake. + +>_Mean total [energy intake] and energy contributed by CHO, fat and protein respectively at the ad lib lunch is presented for each treatment in Figure \u{200B}3. There was no significant difference in total [energy intake] between lipid treatments (treatment, P > 0.05). Mean (SEM) [energy intake] at lunch was 5275.9 (286.5) kJ, 5227.7 (403.9) kJ, and 5215.6 (329.5) kJ following the SFA-, PUFA-, and MUFA-rich breakfasts respectively._ + +One interesting criticism is that the subjects' diets may have already been so high in LA that the hunger effects were blunted. This supposedly creates the illusion of equal satiety effects between fatty acids, because the hunger-generating effects are masked by a sort of LA tolerance, so to say. While this is possible, it doesn't seem like a particularly strong criticism. The researchers used a crossover-style design specifically to minimize this type of confounding. + +I have also heard it proposed that in order to study this effect, researchers may need to run-in the subjects on an LA-depleting diet for months (or even years) leading up to the satiety tests. Luckily, that's not necessary, as this was also investigated in the previously referenced trial by Dayton et al. (1969), the LAVAT. In this ad libitum double-blind RCT, normal weight subjects were randomized to one of two groups. The first group was placed on a vegetable oil containing diet that yielded approximately 42.3g/day of LA, whereas the second group was placed on an animal fat containing diet that yielded only approximately 10.8g/day. + +This difference in LA intake produced an enormous increase in adipose LA in the vegetable oil group. It's probably safe to say that these people reached a maximal saturation point, as evidenced by the hyperbolic curve in adipose LA representation over time. + +![][image49] +[image49]: /blog/seedoils/image49.png + +The median LA representation in adipose tissue increased from around 8-11% of total fatty acids to over 30% of total fatty acids across the eight year study. The baseline levels are consistent with levels found in traditional populations like the Tsimane, Inuit, and the Navajo aboriginals [[93](https://pubmed.ncbi.nlm.nih.gov/22624983/)][[95](https://onlinelibrary.wiley.com/doi/10.1002/cphy.cp050117)]. While the data published by Martin et al. (2012) is representing the fatty acid composition of breast milk in the Tsimane, it is also true that the LA contents of both breast milk and adipose tissue correlate extremely tightly [[96](https://pubmed.ncbi.nlm.nih.gov/16829413/)][[97](https://pubmed.ncbi.nlm.nih.gov/8237871/)][[98](https://pubmed.ncbi.nlm.nih.gov/9684741/)]. + +![][image50] +[image50]: /blog/seedoils/image50.png + +There were no statistically significant differences between the baseline tissue LA presentation in the LAVAT and measurements taken from either the Navajo or Tsimane (SD estimated for Navajo). However, tissue LA was statistically significantly higher among Inuit when compared to the baseline measurements observed in the LAVAT. + +From this, we can likely infer that the subjects in the LAVAT were largely starting from ancestral levels of tissue LA, and increasing tissue LA to approximately threefold higher levels over the eight year trial period. So how did this threefold increase in tissue LA affect their body weight over time? Long story short, it didn't. + +![][image51] +[image51]: /blog/seedoils/image51.png + +Some may speculate that perhaps the 10.8g of LA being consumed in the control group was simply too high, and that the hyperphagic effects of the LA could have been masked by both groups exceeding a particular threshold. This is difficult to reconcile with the fact that the LA intake of the animal fat group was perfectly within bounds when compared to all known estimates of preagricultural LA intakes, as mentioned above [[99](https://pubmed.ncbi.nlm.nih.gov/20860883/)]. Also, this was an ad libitum trial in normal weight subjects and body weight remained within 2% of baseline. + +The LA intakes in the vegetable oil group universally overshoot the upper bounds of all of those same estimates of preagricultural LA intakes. This means that the animal fat group was consuming levels of LA that were consistent with those consumed before the obesity epidemic occurred. However, the vegetable oil group was consuming a level of LA that far surpassed all known preagricultural estimates of LA consumption. + +This wasn't the only RCT that substituted vegetable oils for animal fat to measure body weight over time. According to the secondary endpoint analysis done by Hooper et al. 2020 with the Cochrane Collaboration, Olso Diet-Heart saw a 2.5kg reduction in body weight during their study period, whereas the Medical Research Council saw no change in body weight as well [[100](https://pubmed.ncbi.nlm.nih.gov/2607071/)][[101](https://pubmed.ncbi.nlm.nih.gov/4175085/)]. + +![][image52] +[image52]: /blog/seedoils/image52.png + +Altogether, it does not appear as though vegetable oils uniquely increase body weight in humans. So, while vegetable oils may increase 2-AG and induce obesity in mice, this does not appear to pan out in humans. Large scale RCTs in humans do not support the hypothesis that vegetable oils lead to weight gain over time in humans. + +###### **THERMOGENESIS** + +The effect of varying PUFA and SFA in the diet on measures of energy expenditure (EE) have been tested numerous times and show unambiguously consistent results [[102](https://pubmed.ncbi.nlm.nih.gov/24363161/)]. Overall, diets higher in PUFA and lower in SFA tend to increase EE in humans [[103](https://pubmed.ncbi.nlm.nih.gov/1556946/)][[104](https://pubmed.ncbi.nlm.nih.gov/9467221/)]. + +![][image53] +[image53]: /blog/seedoils/image53.png + +Here is an example from that body of literature. In this study by Lichtenbelt et al. (1997), we can clearly see a consistent effect across all six subjects with higher PUFA intakes increasing postprandial EE. The same trend was also observed for resting metabolic rate (RMR). Ultimately, high-SFA, low-PUFA diets tend to lower EE and RMR compared to high-PUFA, low-SFA diets. This finding is incredibly consistent, though PUFA and MUFA seem to trade blows in some studies, the overall trend of SFA being least thermogenic is clear. + +The effects of high-PUFA feeding on fat oxidation have also been studied by Casas-Agustench et al. (2009) as well [[105](https://pubmed.ncbi.nlm.nih.gov/19010571/)]. When using the respiratory quotient to compare the effects of diets that are high in PUFA, MUFA, and SFA on EE and fat oxidation, we see a similar trend emerge once again. + +![][image54] +[image54]: /blog/seedoils/image54.png + +High-PUFA feeding resulted in higher postprandial EE as well as a higher thermic effect of feeding (TEF). Though the differences in the rate of fat oxidation did not reach significance between groups, there was an obvious trend that reflected the degree of fatty acid saturation. PUFA was the most thermogenic, SFA was the least thermogenic, and MUFA was somewhere in between. + +The same results were observed by DeLany et al. (2000), only this time different dietary fats containing labeled carbon isotopes are used [[106](https://pubmed.ncbi.nlm.nih.gov/11010930/)]. You can measure these isotopes in the breath in order to measure how much of the dietary fat a subject has consumed was burned in the time after a meal. + +![][image55] +[image55]: /blog/seedoils/image55.png + +Using this methodology, we see that there is one type of SFA that is preferentially oxidized over all other FAs that were tested, and that is lauric acid. However, lauric acid might have ketogenic properties, so interpret with caution. Looking over the rest of the tested FAs, we see that PUFA once again has the highest oxidation rate, followed by MUFA, and SFA once again comes in last place. + +Vegetable oils don't appear to make you fat. But even if they did, it does not appear that their effects on thermogenesis and EE are likely to be mediating factors. In fact, vegetable oils appear as though they could potentially have the opposite effect. + +###### **TYPE 2 DIABETES MELLITUS** + +The idea that vegetable oils are the primary driver of obesity and/or type 2 diabetes mellitus (T2DM) has deep roots in many diet communities. However, the evidence cited to support this assertion is typically animal research investigating the effects of LA on hypothalamic function and energy intake. Not to mention that, as we discussed earlier, altering the fatty acid saturation of the diet has no discernable effect on ad libitum energy intake. So, let's investigate the effects on insulin sensitivity. + +![][image56] +[image56]: /blog/seedoils/image56.png + +When the relationship between tissue LA and insulin sensitivity was investigated by Iggman et al. (2010), the results are null for leaner individuals. However for overweight individuals, adipose LA is associated with a statistically significant increase in insulin sensitivity [[107](https://pubmed.ncbi.nlm.nih.gov/20127308/)]. + +This study into T2DM incidence is the closest thing I've been able to find investigating the association between adipose tissue fatty acids and insulin sensitivity that also adjusts for the fewest mediators of T2DM, such as energy intake. + +Again, we can turn our attention to well-conducted crossover RCTs for clearer answers to these sorts of questions. Fortunately, we have one such trial by Heine et al. (1989), investigating the effects of altering fatty acid saturation on measures of insulin sensitivity and glucose homeostasis [[108](https://pubmed.ncbi.nlm.nih.gov/2923077/)]. Subjects were placed on either a high-LA diet (10.9% of energy) or a low-LA diet (4.2% of energy) for 30 weeks, after which measures of plasma insulin and glucose clearance were taken. + +![][image57] +[image57]: /blog/seedoils/image57.png + +While there were no statistically significant differences between groups in most ways, the high-LA group has a significantly higher glucose clearance rate during the first infusion test. Overall, there was an obvious trend toward a benefit with the high-LA diet. + +Another trial by Zibaeenezhad et al. (2016) compared 15g of walnut oil (containing approximately 8g of LA) to no intervention, and measured a number of endpoints relevant to T2DM [[109](https://pubmed.ncbi.nlm.nih.gov/28115966/)]. Presumably, randomization balanced baseline LA between groups, so we can assume that the trial is effectively testing the effects of adding a tablespoon of walnut oil to the diet. + +![][image58] +[image58]: /blog/seedoils/image58.png + +By the end of the trial, the walnut oil diet improved both HbA1C and fasting blood glucose. There were also no statistically significant changes in body weight or BMI. Which suggests that these effects were independent of weight loss. This is not what we'd expect if the vegetable oils were increasing the risk of developing T2DM. + +We also have at least one study by Pertiwi et al. (2020) investigating the relationship between LA and both glycemic control and liver function [[110](https://pubmed.ncbi.nlm.nih.gov/32546275/)]. LA seems to have no association with glycemic control, and is associated with better liver function in the minimally adjusted model. The association is then null in model 2, which adjusts for a few T2D mediators. Lastly, after a better adjustment for diet quality, many of the associations gain significance again. + +There are a few more studies that do not adjust for many T2D mediators. In this study by Kr枚ger et al. (2011), the relationship between red blood cell LA and T2D incidence in the EPIC-Potsdam cohort was investigated [[111](https://pubmed.ncbi.nlm.nih.gov/20980488/)]. We see that the minimally adjusted model (which did not adjust for any T2D mediators) shows a statistically significant reduction in the risk of T2D. Whereas in the fully adjusted model the association is null, as we would expect. However, the trend toward a benefit of LA reached statistical significance. + +Ultimately, it appears that neither LA biomarkers nor intake associate with negative outcomes with regards to insulin sensitivity, obesity, T2D, or liver function. These results are pretty consistent with existing meta-analyses on this question (which I combed through to find minimally adjusted data) [[112](https://pubmed.ncbi.nlm.nih.gov/29032079/)]. + +![][image59] +[image59]: /blog/seedoils/image59.png + +These are not at all the results that we would expect to see if merely having more LA in either your body or your diet increased the risk of T2DM. Although, there are some who would claim that associations between LA biomarkers and diseases are unreliable. + +Essentially, the idea is that LA can oxidize for various reasons and potentially skew the biomarker in different directions. For example, if higher tissue representation of LA is inversely associated with a disease, but the disease itself predisposes LA to oxidation (and thus creates the potential for the LA biomarker to appear artificially lower), the data could be confounded. However, there is fascinating data that would seem to contradict this [[113](https://pubmed.ncbi.nlm.nih.gov/30987358/)]. + +![][image60] +[image60]: /blog/seedoils/image60.png + +In analysis of a prospective cohort study by Yepes-Calder贸n et al. (2019), levels of the LA peroxidation products, malondialdehyde (MDA), was strongly and inversely associated with new onset T2DM after kidney transplant. Even after applying seven different multivariate adjustment models, no adjustment succeeded in nullifying the effect. + +Perhaps the reason LA is inversely associated with T2DM is _because_ it undergoes peroxidation. Perhaps MDA is a signaling molecule that has some protective benefit for T2DM in the long run, despite lipid peroxidation sounding very bad and spooky. Who knows. I don't feel particularly bad for speculating. Many of my opponents in this debate often base entire positions almost entirely on speculation, and refer to much weaker evidence to boot. + +Lastly, in a multinational MR study of almost a million participants by Chen et al. (2017), there was an inverse association between elevated plasma LA levels and incidence of T2DM [[114](https://pubmed.ncbi.nlm.nih.gov/28032469/)]. + +![][image61] +[image61]: /blog/seedoils/image61.png + +Once again, we see the same thing that we saw in the MR studies investigating CVD. Genetically higher plasma LA is inversely associated with lower fasting blood glucose and T2DM incidence, whereas genetically higher plasma AA is positively associated with both higher fasting blood glucose and T2DM incidence. We also see in their subgroup analysis that the conversion of LA to AA through FADS is once again mediating. + +![][image62] +[image62]: /blog/seedoils/image62.png + +When excluding gene variants affecting the function of FADS, the association between genetically elevated plasma LA and T2DM is null. However, when FADS gene variants are considered, the association is statistically significant. This once again suggests a causal relationship between the conversion of LA to AA and disease incidence. Strangely, long chain omega-3s are positively associated as well, which is in contrast to the RCT data on the subject [[115](https://pubmed.ncbi.nlm.nih.gov/31434641/)]. + +Overall it would appear that higher intakes of LA are inversely associated with T2DM. In conclusion, LA does not appear to negatively affect body weight, ad libitum intake, EE, insulin sensitivity, or T2DM rates in humans. The current evidence does not support lowering vegetable oil intake for the purposes of preventing T2DM, and the evidence may even suggest that vegetable oils may play a role in T2DM prevention. + +# **FATTY LIVER DISEASES** + +###### **FAT OVERLOAD SYNDROME** + +Increased intakes of LA have been proposed by Santoro et al. (2013) as a mechanism by which non-alcoholic fatty liver disease (NALFD) may occur [[116](https://pubmed.ncbi.nlm.nih.gov/26405460/)]. The most direct evidence cited in support of this hypothesis comes from parenteral feeding studies. Typically these studies divulge that soybean oil (SO) based intravenous lipid emulsions (IVLE) have a tendency to produce a particular liver pathology called cholestasis in children on total parenteral nutrition (TPN) under certain conditions [[117](https://pubmed.ncbi.nlm.nih.gov/23520135/)]. On the other hand, Gura and Puder (2010) discovered that fish oil (FO) based IVLEs tend to prevent and/or abolish cholestasis during parenteral feeding [[118](https://pubmed.ncbi.nlm.nih.gov/20702846/)]. + +However, within this body of literature, the primary hypothesis that has been put forth to explain the cholestasis observed with SO-IVLEs implicates phytosterols as the primary driver [[119](https://pubmed.ncbi.nlm.nih.gov/26374182/)][[120](https://pubmed.ncbi.nlm.nih.gov/9437703/)]. Overall the evidence does not seem to strongly support LA as uniquely pathological in this regard, and most authors seem to reject this hypothesis. + +Because it would be unethical to truly test the effects of IVLE overfeeding in humans, we have to rely on animal models to provide us with insights. In one well-designed mouse study by Ksami et al. (2013), both SO- and FO-IVLEs were fed to mice with intestinal injuries [[121](https://pubmed.ncbi.nlm.nih.gov/24107776/)]. Except there were additional groups that were fed FO-IVLEs that also contained SO-derived phytosterols. Markers of liver pathology were comparable between phytosterol-containing FO-IVLEs and controls fed SO-IVLEs. + +![][image63] +[image63]: /blog/seedoils/image63.png + +When tested in humans at matched, eucaloric dosages, there are no clinically meaningful differences between SO-IVLEs and FO-IVLEs [[122](https://pubmed.ncbi.nlm.nih.gov/23770843/)][[123](https://pubmed.ncbi.nlm.nih.gov/22796064/)]. Across all of the markers investigated by Nehra et al. (2014), the only significant changes were increases in alkaline phosphatase, but they occurred in both groups. + +Since FO-IVLEs are extremely low in LA, it is unlikely that LA is the mediator of this change. Despite the fact that dosages were titrated down to tolerable levels, such to be compliant with current standards of care for IVLEs, tissue LA increased significantly in subjects receiving SO-IVLEs. + +To recap, the fatty liver observed in children receiving IVLEs while on TNP is likely a function of the direct intravenous administration of phytosterols, and it is unlikely that LA has any unique role to play here. + +###### **NON-ALCOHOLIC FATTY LIVER DISEASE** + +Outside of parenteral feeding, Van Name et al. (2020) has conducted a single-arm, non-randomized, unblinded trial involving 20 youths testing the effects of a low omega-6/omega-3 ratio (O6:O3) diet over 12 weeks [[124](https://pubmed.ncbi.nlm.nih.gov/32652034/)]. Aside from the obvious limitations of such a study, we'll give credit where it is due. The study overcame a significant hurdle that plagues literature of this sort. The subjects were kept largely weight stable during the 12 weeks, which is a success. However, despite this, they saw improvements in lipid peroxidation markers and insulin sensitivity with the low O6:O3 diet. + +There is just a tiny little problem, though. They actually weren't testing the effects of a low-LA diet, specifically. They were testing the effects of modifying the ratio of total omega-6 to total omega-3. They specifically achieved the lower O6:O3 by adding sources of omega-3, rather than omitting sources of omega-6. Information about the specific dietary changes can be found in their supplement [[125](https://www.ncbi.nlm.nih.gov/labs/pmc/articles/PMC7467848/bin/nxaa183_supplemental_files.zip)]. + +Ultimately, they likely did not significantly alter the LA content of the diet itself, as evidenced by the fact that tissue LA went largely unchanged throughout the duration of the trial. + +![][image64] +[image64]: /blog/seedoils/image64.png + +Fortunately, we do have better, more direct experiments investigating the effects of dietary fatty acid composition and fatty acid saturation on measures of liver fat in humans [[126](https://pubmed.ncbi.nlm.nih.gov/22492369/)]. First is an isocaloric feeding study by Bjermo et al. (2012) that largely found non-inferiority between LA and SFA on measures of visceral adipose tissue (VAT). However, the high-LA diet resulted in a greater overall improvement in the subjects' metabolic profile. + +The high-LA diet did result in lower waist circumference, PCSK9, cholesterol, serum insulin, and ALT, though it did not necessarily result in a difference in VAT compared to the high-SFA diet. The results are slightly different when looking at human overfeeding [[127](https://pubmed.ncbi.nlm.nih.gov/24550191/)]. In this trial by Rosqvist et al. (2014), which compared hypercaloric diets that were either high-LA or high-SFA, the high-LA diet did appear to be protective against VAT accumulation. + +![][image65] +[image65]: /blog/seedoils/image65.png + +The high-LA diet seemed to be uniquely protective against liver fat accumulation in particular. Additionally, the high-LA diet seemed to be associated with a greater increase in lean body mass (LBM) when compared to the high-SFA diet. But not only that, the high-LA diet seemed more resistant to fat gain overall compared to the high-SFA diet. These are not the results we'd expect if LA was uniquely causal in NAFLD. + +These human experimental finding are perfectly consistent with the observational evidence on the subject as well, which typically shows that either high-PUFA or high-LA diets protect against NAFLD at the population level as well [[128](https://pubmed.ncbi.nlm.nih.gov/22209679/)][[129](https://pubmed.ncbi.nlm.nih.gov/27618908/)]. + +![][image66] +[image66]: /blog/seedoils/image66.png + +Overall there is an inverse association between high-PUFA intake and measures of hepatic lipid concentrations. There is, however, an association between high-SFA diets, just like the experimental literature. There is also evidence from Wehmeyer et al. (2016) that suggests that the effect of total energy intake on NAFLD is greater than either high-PUFA or high-SFA diets [[130](https://pubmed.ncbi.nlm.nih.gov/27281105/)]. Regardless, there does not appear to be any clear or persuasive evidence that LA is uniquely causal of NAFLD. + +# **AUTOIMMUNE DISEASE** + +###### **RHEUMATOID ARTHRITIS** + +If you've spent any amount of time in any low carb or vegan diet community or blogosphere, you've undoubtedly heard someone claim that cutting out vegetable oils "cured" their rheumatoid arthritis (RA). It's a pervasive belief that these oils cause inflammatory pain, and may even be one of the primary causes of age-related inflammatory conditions, such as RA. Luckily, there is a boatload of literature on this. Even experimental literature. So, let's see what it says. + +There is an analysis of the Epidemiological Investigation of Rheumatoid Arthritis cohort by Lourdudoss et al. (2018) that investigated the relationship between dietary fatty acids and RA pain [[131](https://pubmed.ncbi.nlm.nih.gov/28371257/)]. As per the recurring theme throughout much of the dietary fat literature, a high O6:O3 ratio is associated with an increased risk of both unacceptable pain and refractory pain (RR 1.70 [1.03-2.82] and 2.33 [1.28-4.24], respectively. + +![][image67] +[image67]: /blog/seedoils/image67.png + +However, if we look at omega-3 we see that there is a statistically significant decrease in both unacceptable pain and refractory pain (RR 0.57 [0.35-0.95] and 0.47 [0.26-0.84], respectively). Whereas for omega-6, results for all three endpoints are null. If we do a little math (1/0.54 and 1/0.47), we see that the risk increase when going from the highest to lowest intakes of omega-3 for both unacceptable pain and refractory pain are pretty much the same as the risk ratios for the lowest to highest O6:O3 ratio. Which are 1.75 and 2.12, respectively. + +When considered together, this likely means that the effect of a high O6:O3 ratio has more to do with insufficient omega-3 than it has to do with excessive omega-6, which is consistent with the experimental literature on the subject [[132](https://pubmed.ncbi.nlm.nih.gov/29017507/)][[133](https://pubmed.ncbi.nlm.nih.gov/28067815/)]. However, these results are not consistent across all measures of RA, such as bone marrow lesions in those without RA at baseline [[134](https://pubmed.ncbi.nlm.nih.gov/19426478/)]. + +![][image68] +[image68]: /blog/seedoils/image68.png + +In an analysis of this Australian cohort by Wang et al. (2009), neither omega-3, omega-6, nor the O6:O3 ratio had a statistically significant effect on the incidence of bone marrow lesions. However, intakes of saturated fat were associated with a statistically significant increase in risk in both multivariate models (RR 2.62 [1.11-6.17] and 2.56 [1.03-6.37], respectively). + +As far as experimental evidence goes, the effects of all sorts of high-LA oils on RA-related endpoints have been investigated over the years. First we have 3-10.5g/day of blackcurrant seed oil (BCSO) [[135](https://pubmed.ncbi.nlm.nih.gov/8081671/)][[136](https://pubmed.ncbi.nlm.nih.gov/1397534/)]. BCSO has an LA content in excess of 40% by weight [[137](https://pubmed.ncbi.nlm.nih.gov/23341215/)]. Though most of these findings were null, there is one trial by Watson et al. (1993) that did have interesting results [[138](https://pubmed.ncbi.nlm.nih.gov/8252313/)]. + +Patients with RA were divided into two groups that received either 3g of BCSO or 3g of SO, and were compared to two healthy control groups consuming the same oils at the same dosages. The BCSO group, including both healthy subjects as well as those with RA saw a statistically significant decrease in tumor necrosis factor (TNF), whereas the SU group didn't. + +What's interesting about this study isn't really the BCSO group's results, if you're someone who thinks that vegetable oils increase the risk of RA. The group receiving SU saw no significant changes in their inflammatory markers in neither the RA patients nor the healthy controls, which is not what we'd expect if LA exposure is driving RA. + +Next up is evening primrose oil (EPO), which contains approximately 72% LA by weight [[139](https://pubmed.ncbi.nlm.nih.gov/30110920/)]. This oil has been tested at least twice in RA patients and consistently shows promising results for multiple endpoints. In a trial by Brzeski et al. (1991) using 6/day of EPO versus 6g/day of OO, there was a statistically significant reduction in morning stiffness and a non-significant reduction in articular index (a measure of flexibility) in the EPO group [[140](https://pubmed.ncbi.nlm.nih.gov/1913008/)]. However, the OO group saw statistically significant reductions in pain and articular index, but not morning stiffness. Suggesting potential complementary effects of both of these oils. + +However, EPO trials using this design have been criticized by Horrobin (1989) for having a number of potential methodological errors [[141](https://pubmed.ncbi.nlm.nih.gov/2688567/)]. In another trial by Belch et al. (1988) using more robust methodology and more complex comparisons, EPO seems to do quite well in moderate doses [[142](https://pubmed.ncbi.nlm.nih.gov/2833184/)]. In this trial, 49 subjects with RA, managed with nonsteroidal anti-inflammatory drugs (NSAID), were randomized to three groups. One group had 12g/day of EPO, another group received 12g/day of EPO+FO, and the final group was placed on a placebo. + +![][image69] +[image69]: /blog/seedoils/image69.png + +While EPO alone resulted in significant reduction in the use of NSAIDs, the largest reductions in NSAID usage was seen when EPO was paired with FO. Not only does this detract from the notion that LA increases RA, this also lends further credibility to the beneficial effects of increasing dietary omega-3. + +However, the double blind RCT conducted by Volker et al. (2000) would seem to contradict this finding [[143](https://pubmed.ncbi.nlm.nih.gov/11036827/)]. In this trial, it is claimed that FO may improve symptoms as long as the background diet is low in omega-6. However, it is unclear if these results are actually compared to a high omega-6 diet, or if all of the study subjects were on low omega-6 diets. These results seem odd, as there are plenty of studies using high omega-6 oils that show positive results [[144](https://pubmed.ncbi.nlm.nih.gov/28699499/)][[145](https://pubmed.ncbi.nlm.nih.gov/12548113/)][[146](https://pubmed.ncbi.nlm.nih.gov/29705470/)]. + +Bear in mind that most of these trials discussed in this section were small in size and relatively short in duration, and are plagued by a number of challenges that are common in nutrient supplement studies. However, one thing that seems clear is that omega-6 is not associated with the development of RA, nor is it associated with worsening RA symptoms. In clinical trials, high omega-6 oils do not uniquely increase the prevalence of RA symptoms, and may even be useful for RA management. + +Some would like to attribute the benefits of these oils to their gamma-linolenic acid (GLA) content. Which may be true, seeing as though pure SO didn't seem to do anything to inflammatory markers and serves as a decent control in this case. However, the primary sources of GLA in the diet are CAO, SO, and margarine. As such, attributing the anti-inflammatory effect of EPO to GLA seems tantamount to suggesting that the aforementioned commodity oils are also anti-inflammatory. In fact, some of them have less LA than EPO. Personally, I think it is likely that the effect is conferred via GLA, but I also don't think this evidence suggests that LA is uniquely inflammatory, either. + +Seeing as though high-LA SO was not uniquely pro-inflammatory in healthy subjects, it seems more and more unlikely that LA itself confers an independent inflammatory effect. Rather, it seems likely that sources of GLA could be anti-inflammatory, and some of those sources are common commodity vegetable oils that are supposedly making everyone sick and inflamed. See the issue? + +###### **SYSTEMIC LUPUS ERYTHEMATOSUS** + +Very little is understood about how dietary inputs affect systemic lupus erythematosus (SLE). Especially regarding exposures as esoteric as LA, PUFA, or vegetable oils. However, there is some data on the subject, and it's a mess. The studies are mostly cross-sectional or case-control in design and largely show contradictory findings that are difficult to reconcile. + +The first study, by Gorczyca et al. (2021), is cross-sectional and exploratory in design, and found a significant correlation between serum LA and anti-nuclear antibody (ANA) [[147](https://pubmed.ncbi.nlm.nih.gov/34169789/)]. + +While ANA is an important part of the diagnostic criteria for SLE, I would take this correlation with a grain of salt. There was no assessment of baseline diet, and subjects were not followed prospectively and thus the study lacks the temporal component necessary to inform a causal inference. This is something the authors acknowledge. + +>_Another drawback is the assessment of PUFA profiles at a single time-point. A prospective analysis in this type of study would be more informative. Our findings suggest the need for a profound metabolomic analysis._ + +Not only that, but there was no multivariable adjustment to ascertain whether or not high serum LA was merely a correlate for other dietary habits that actually do increase risk. It's impossible to tell from this data alone. + +Puzzlingly, in stark contrast to these findings, other cross-sectional data seems to suggest that LA has either a neutral or beneficial effect on SLE, at least once people are diagnosed [[148](https://pubmed.ncbi.nlm.nih.gov/31074595/)][[149](https://pubmed.ncbi.nlm.nih.gov/26848399/)]. In the first paper by Charoenwoodhipong et al. (2020), it was observed that LA had no association with worsening SLE-related symptoms. + +![][image70] +[image70]: /blog/seedoils/image70.png + +As you can see in Figure 3, there is no consistent relationship between LA and SLE-related symptoms in either direction. However, a consistent trend toward favourable outcomes was observed with higher omega-3, and the inverse of which was observed with a high O6:O3. This suggests that while a high O6:O3 is a correlate for worse outcomes, it does not appear to be a function of LA, but rather a function of insufficient omega-3. This is a consistent trend in the literature so far. + +There is also evidence from Vordenb盲umen et al. (2020) suggesting that among SLE patients, LA is associated with higher C-reactive protein (CRP), which is a marker of systemic inflammation [[150](https://pubmed.ncbi.nlm.nih.gov/32188303/)]. + +However, this correlation may be spurious considering that people diagnosed with SLE who maintain higher CRP are more likely to have poor dietary habits overall [[151](https://pubmed.ncbi.nlm.nih.gov/30282476/)]. Without multivariable adjustment to help control for some of these factors, it is again unclear if LA is merely acting as a correlate for a poor diet or if omega-3 is merely acting as a correlate for a good diet. + +Again, at the risk of sounding like a broken record, the inverse of this has been suggested in additional research by Lourdudoss et al. (2016) investigating the relationship between LA and the risk of increasing glucocorticoids [[152](https://pubmed.ncbi.nlm.nih.gov/26848399/)]. + +![][image71] +[image71]: /blog/seedoils/image71.png + +This is particularly odd since LA was associated with systemic inflammation in the previous study. Like I said in the beginning, the data is a mess. Nothing seems congruent, because most of it is either cross-sectional or completely uncontrolled or unadjusted. However, there are a few prospective studies investigating SLE and vegetable oil intake. + +First up is a study by Shin et al. (2017) involving 82 subjects which aimed to explore the differences in plasma fatty acids between those with SLE and those without [[153](https://pubmed.ncbi.nlm.nih.gov/30830319/)]. Ultimately, they discovered that plasma SFAs are more likely to be elevated in those with SLE, whereas plasma PUFA鈥 particularly LA鈥 was more likely to be reduced. + +![][image72] +[image72]: /blog/seedoils/image72.png + +At first glance, this may seem like a win for PUFA, or LA more specifically, but there are some interpretive challenges here. For example, PUFA concentrations in tissue could plausibly reduce in the presence of lipid peroxidation cascades, and there is evidence from Shah et al. (2014) that lipid peroxidation metabolites are higher in subjects with SLE [[154](https://pubmed.ncbi.nlm.nih.gov/24636579/)]. + +However, the authors remarked that antioxidant status plays an important role in the severity of lipid peroxidation when it does occur. It has been shown that antioxidant supplementation significantly reduces markers of lipid peroxidation in subjects with SLE [[155](https://pubmed.ncbi.nlm.nih.gov/17143589/)][[156](https://pubmed.ncbi.nlm.nih.gov/17143589/)]. It has also been shown by Bae et al. (2002) that antioxidant status can be impaired in subjects with SLE [[157](https://pubmed.ncbi.nlm.nih.gov/12426662/)]. + +The second prospective study, analyzed by Minami et al. (2003), is quite a bit larger than the previous studies, with a decent follow-up time [[158](https://pubmed.ncbi.nlm.nih.gov/12672194/)]. Basically, the relationship between dietary intakes and active SLE incidence were investigated over four years in 279 female participants with diagnosed SLE. Overall, there was no association between SLE activity and vegetable fat intake. + +However, echoing the sentiments toward antioxidants that have been discussed in some of the wider SLE literature, there was a statistically significant protective effect of vitamin C in reducing SLE activity. There were also non-significant risk reductions with fibre and vitamin A (but not retinol). To hammer this point home, Western dietary patterns are generally considered to be high in LA, but neither Western dietary patterns nor healthier dietary patterns associate either positively or negatively with SLE [[159](https://pubmed.ncbi.nlm.nih.gov/32936999/)][[160](https://pubmed.ncbi.nlm.nih.gov/31718449/)]. + +Much to my surprise, the relationship between both SLE and RA have been investigated using MR. In this MR study by Zhao and Schooling (2019), three different statistical tests across two gene variant subgroups were performed [[161](https://pubmed.ncbi.nlm.nih.gov/30409829/)]. + +![][image73] +[image73]: /blog/seedoils/image73.png + +Generally speaking, statistically significant inverse associations between genetically elevated plasma LA and both RA and SLE were consistently found. The only inconsistency was when the Egger MR or the MR PRESSO methods were applied. The application of the Egger MR method seemed to nullify the effect in all cases, and the application of the MR PRESSO method only seemed to nullify the effect for RA in the second subgroup analysis. + +Overall, the epidemiological data seems suggestive that antioxidant status likely matters more for SLE than PUFA or LA intakes, or even Western diets for that matter. However, the most robust evidence we have on the subject is the MR data, which suggests that genetically elevated plasma LA may even lower the risk of both SLE and RA. + +# **DEGENERATIVE DISEASES** + +###### **AGE-RELATED MACULAR DEGENERATION** + +Knobbe and Stojanoska (2017) have suggested that "harmful" vegetable oils such as oils derived from soybeans, corn, cottonseed, and rapeseed, are the primary culprits for age-related macular degeneration (AMD) [[162](https://pubmed.ncbi.nlm.nih.gov/29150284/)]. However, the data presented is purely ecological, and not very robust. One of the authors, Chris Knobbe, true to his name has published an entire book that details the pathophysiology of AMD, and cites a number of epidemiological studies to support his inferences [[163](https://www.amazon.ca/Ancestral-Dietary-Strategy-Prevent-Degeneration/dp/0578579545)]. + +When I checked his supporting references, I noticed that a number of prospective cohort studies were missing, and had seemed to be replaced with a hodgepodge of case-control studies. This was odd, because a number of cohort studies don't show the same results as the ones he cited. There are many prospective cohort studies (which are stronger evidence than case-control studies) that investigate the relationship between vegetable oils and AMD. + +So, as I do, I decided to gather all the data I could and compile a meta-analysis. + +**Inclusion Criteria:** + +- Prospective cohort studies investigating the relationship between either vegetable oils, PUFA, LA or TFA and early- or late-AMD. + + +**Results:** + +Altogether, 10 prospective cohort studies were included in the analysis. With respect to the exposures specified in the inclusion criteria, Delcourt et al. (2007) reported only on PUFA [[164](https://pubmed.ncbi.nlm.nih.gov/17299457/)]. Whereas Seddon et al. (2003) investigated both PUFA and vegetable fat [[165](https://pubmed.ncbi.nlm.nih.gov/14662593/)]. Chong et al. (2009), Chua et al. (2006), Cho et al. (2000), and Tan et al. (2009) all explored LA, PUFA, and TFA in their analyses [[166](https://pubmed.ncbi.nlm.nih.gov/19433719/)][[167](https://pubmed.ncbi.nlm.nih.gov/16832021/)][[168](https://pubmed.ncbi.nlm.nih.gov/11157315/)][[169](https://pubmed.ncbi.nlm.nih.gov/19433717/)]. Parekh et al. (2009) additionally included vegetable fat in their analysis, but did not investigate TFA [[170](https://pubmed.ncbi.nlm.nih.gov/19901214/)]. Similarly, Sasaki et al. (2020) reported on LA and PUFA, but did not report on TFA or vegetable fat [[171](https://pubmed.ncbi.nlm.nih.gov/32181798/)]. Both Christen et al. (2011) and Mares-Perlman et al. (1995) studied associations pertaining to both LA and PUFA [[172](https://pubmed.ncbi.nlm.nih.gov/21402976/)][[173](https://pubmed.ncbi.nlm.nih.gov/7786215/)]. There was significant heterogeneity across all investigated exposures, and no single exposure reached statistical significance. + +![][image74] +[image74]: /blog/seedoils/image74.png + +Among the studies with the longest follow-up time, largest cohort size, best adjustment models, and the widest exposure contrasts, the results tended to be null. For example, Chong et al. (2009) adjusted for lutein, zeaxanthin, and sources of omega-3, which are inversely associated with late AMD [[174](https://pubmed.ncbi.nlm.nih.gov/21899805/)][[175](https://pubmed.ncbi.nlm.nih.gov/18541848/)]. Their results were null for every exposure. + +The strongest study of all was Christen et al. (2011). Their analysis included three different adjustment models that help us better ascertain the relationship between AMD and vegetable oils. For example, their analysis showed that LA was associated with AMD only before adjustment for AMD risk factors, and that the association was likely a function of insufficient omega-3. + +>_Women in the highest tertile of LA intake, relative to the lowest, had an age- and treatment-adjusted RR of 1.41 (95% CI, 1.03-1.94; P for trend=.03). However, the RR was attenuated and no longer significant after additional adjustment for AMD risk factors and other fats. The ratio of -6 to -3 fatty acids was directly associated with the risk of AMD, and the association was strengthened when the denominator term for-3 fatty acids included only DHA and EPA (Table 2)._ + +Essentially, vegetable oils may be acting as a correlate for poor diet quality overall. The vegetable oils themselves are not independently increasing risk, but they tend to associate with dietary patterns that lack characteristics that decrease risk. Diets that are high in vegetable oils tend to be low in carotenoids and omega-3, for example. After adjusting for those confounders, the association vanishes. + +There is also MR data from Wang et al. (2021) investigating the relationship between genetically elevated LA biomarkers and AMD [[176](https://pubmed.ncbi.nlm.nih.gov/33982092/)]. In this multinational MR study of 8631 participants they applied three different statistical tests across two subgroups investigating different combinations of gene variants. + +In the aggregate, genetically increased plasma LA was consistently associated with a reduced risk of AMD, regardless of the test or gene variant subgrouping. Interestingly enough, tissue AA was actually positively associated with AMD, like we saw earlier with the previously mentioned MR research. + +Altogether, prospective cohort studies investigating the relationship between LA and AMD show a null association. However, more robust evidence from MR suggests that higher plasma LA might actually protect against AMD in the long run. The current evidence does not support lowering vegetable oil intake for AMD prophylaxis, and may actually suggest that increasing vegetable oil intake could have benefits. + +###### **COGNITIVE DECLINE** + +I almost forgot to investigate the relationship between vegetable oils and cognitive disorders like dementia and Alzheimer's disease. It must be all of these vegetable oils in my diet that are clouding my memory. Fortunately, after eating two coconuts and half a beehive, I'm as sharp as a tack and ready to dive into it. + +I'm not sure what sort of mechanistic speculation buttresses the narrative that vegetable oils make one demented, but seeing as though this is a popular claim that is made by many vegetable oil skeptics, the question seemed worthwhile to investigate nonetheless. So let's dive in. + +**Inclusion Criteria:** + +- Prospective cohort studies or RCTs investigating the relationship between vegetable oils, PUFA, or LA and either cognitive decline and/or dementia and/or Alzheimer's disease. + +- Exposure can be measured either by biomarkers or by assessment of dietary intake. + +- In the case of cognitive decline, composite endpoints such as global cognition scores, rather than verbal memory scores in particular, will be favoured. + + +**Exclusion Criteria:** + +- Trials that compare PUFA to other forms of PUFA (such as omega-3 supplements versus a high-LA placebo) will be excluded. + + +**Results:** + +Altogether 43 studies were obtained from a PubMed and Google Scholar literature search. All but 15 prospective cohort studies were excluded due to either having irrelevant endpoints or insufficient specificity with regards to vegetable oil related exposures. No RCTs were found. Of the 15 studies, four were included in an analysis on Alzheimer's disease [[177](https://pubmed.ncbi.nlm.nih.gov/16710090/)[[178](https://pubmed.ncbi.nlm.nih.gov/12580703/)][[179](https://pubmed.ncbi.nlm.nih.gov/12164721/)][180](https://pubmed.ncbi.nlm.nih.gov/22713770/)]. Whereas the remainder were included in an analysis of general dementia, which included global cognitive decline. The majority of the included studies reported on both dietary LA and dietary PUFA [[181](https://pubmed.ncbi.nlm.nih.gov/17413112/)[[182](https://pubmed.ncbi.nlm.nih.gov/20001761/)][[183](https://pubmed.ncbi.nlm.nih.gov/8982020/)][[184](https://pubmed.ncbi.nlm.nih.gov/34392373/)][[185](https://pubmed.ncbi.nlm.nih.gov/33386799/)]. However, both Heude et al. (2003) and Samieri et al. (2008) used biomarker LA and PUFA in their analysis, rather than dietary intake [[186](https://pubmed.ncbi.nlm.nih.gov/12663275/)][[187](https://pubmed.ncbi.nlm.nih.gov/18779288/)]. Dietary PUFA, rather than dietary LA or vegetable fat, was investigated by Okereke et al. (2012), Roberts et al. (2012), and Solfrizzi et al. (2006) [[188](https://pubmed.ncbi.nlm.nih.gov/22605573/)][[189](https://pubmed.ncbi.nlm.nih.gov/16697546/)][[190](https://pubmed.ncbi.nlm.nih.gov/22810099/)]. Lastly, only Laitinen et al. (2006) explored the association between vegetable fat and cognitive decline [[191](https://pubmed.ncbi.nlm.nih.gov/16710090/)]. + +**Alzheimer's Disease:** + +![][image75] +[image75]: /blog/seedoils/image75.png + +For Alzheimer's disease, results across all exposures were null. However, there were not many studies per subgroup. When the subgrouping is removed the results still don't reach statistical significance (RR 0.74 [0.43-1.26], P=0.26). There is also decently high heterogeneity between the included studies. For example, R枚nnemaa et al. (2012), saw a non-significant increase in Alzheimer's risk with increasing LA intake, but Morris saw a statistically significant decrease in Alzheimer's risk with increasing vegetable oil intake. + +The adjustment model used by R枚nnemaa et al. (2012) includes no adjustments for dietary covariates. As a consequence, it would be dubious to infer that we're observing an independent effect of LA, as LA might simply be a correlate for a different, undisclosed dietary exposure that is actually increasing risk. It is unknown. However, Morris et al. (2003) found an opposite, statistically significant effect of vegetable fats and did include some adjustments for diet quality. + +Included in the fully adjusted model were adjustments for other dietary fatty acids. Among these findings, only two were statistically significant. The first is a statistically significant decrease in the risk of Alzheimer's disease with vegetable fats after an adjustment for other fatty acids. The other is a statistically significant increase in the risk of Alzheimer's disease with TFA, after an adjustment for other fatty acids. + +Given that the two datasets that were investigated in these two studies were primarily including data that was collected during the 90s, before the TFA ban, it's possible that the increase in Alzheimer's risk with LA in R枚nnemaa et al. (2012) is a consequence of confounding from TFA in many vegetable oil products. + +**Dementia:** + +![][image76] +[image76]: /blog/seedoils/image76.png + +Again, we see null findings across all of the investigated exposures. The only statistically significant study, Beydoun et al. (2007), found a 23% reduction in the risk of cognitive decline (RR 0.77 [0.65-0.91], P=0.002). What sets this study apart from most of the others was its robust multivariate adjustment model. In fact, the adjustment model was so comprehensive, it was given its own section in the paper. + +In fairness, Okereke et al. (2012), found a non-significant increase in cognitive decline with increasing PUFA intake, and also had a reasonably good multivariate adjustment model. The multivariate adjustment model included TFA as a covariate, and even considered a number of micronutrients and comorbidities. + +However, the cohort study had half as much follow-up time and used different methods for assessing cognitive function. Beydoun et al. (2007) used in-person interviewers to assess cognitive function, whereas Okereke et al. (2012) used telephone interviews to assess cognitive impairment. Though this might not matter very much [[192](https://pubmed.ncbi.nlm.nih.gov/29042492/)]. Regardless, their findings were null and the aggregated results of this meta-analysis are also null. + +**Total Dementia:** + +![][image77] +[image77]: /blog/seedoils/image77.png + +Results are slightly different when Alzheimer's disease, cognitive decline, and general dementia are all considered together, however. It is noteworthy to point out that when all of the studies are aggregated, vegetable fat associates with a statistically significant 58% reduction in total dementia (RR 0.42 [0.21-0.84], P=0.01). Though, to be clear, more than two thirds of the weight are derived from a single study, so interpret with caution. + +In conclusion, it does not appear as though LA, PUFA, or vegetable fat are associated with an increased risk of Alzheimer's disease, cognitive decline, or dementia in humans. These results are consistent with previous meta-analyses by Cao et al. (2019) and Ruan et al. (2018) investigating these particular relationships [[193](https://pubmed.ncbi.nlm.nih.gov/31062836/)][[194](https://pubmed.ncbi.nlm.nih.gov/29701155/)]. However, when all endpoints are considered together, vegetable fat seems to be associated with a reduced risk of total dementia. + +# **MECHANISTIC AUTOFELLATIO** + +###### **INFLAMMATION** + +The notion that modern culinary oils containing high amounts of PUFA, particularly LA, are inflammatory is an idea that has managed to permeate virtually every diet camp imaginable. The paleo/ancestral nuts believe it. The vegan/plant-based nuts believe it. The keto/carnivore nuts believe it. Zealots belonging to Ray Peat's diet cult definitely believe it too. But is there actually evidence for this claim from human experiments? + +I scoured the literature for as many LA substitution trials as I could find. Altogether I found 15 trials that used high-LA oils as either the intervention or the control, with CRP as a primary or secondary endpoint. From those 15 trials, I had to exclude ten of them. + +**Inclusion Criteria:** + +1. Design must be a RCT. + +2. High-LA diet must have >20g/day of LA. + +3. Both pre- and post-intervention CRP must be reported. + + +**Exclusion Criteria:** + +1. High-LA diet must not be compared to other PUFA or other types of LA. + +2. Low-LA diet must not have >10g/day of LA. + + +Four studies met the inclusion criteria and were included in the analysis [[195](https://pubmed.ncbi.nlm.nih.gov/11246548/)][[196](https://pubmed.ncbi.nlm.nih.gov/15168040/)][[197](https://pubmed.ncbi.nlm.nih.gov/26016869/)][[198](https://pubmed.ncbi.nlm.nih.gov/25319187/)]. The LA intakes in the high-LA diets ranged from 22.2g/day with Vafeiadou et al. (2015) to 50.8g/day with Junker et al. (2001), with an average of 33.5g/day, across all included studies. The LA intakes in the low-LA diets ranged from 4.8g/day with Iggman et al. (2014) to 7.8g/day with Junker et al. (2001), with an average of 6.4g/day, across all included studies. The average contrast in LA intake was 27g/day across all included studies. + +![][image78] +[image78]: /blog/seedoils/image78.png + +There were 12 studies that were captured by the exclusion criteria and had to be excluded from the analysis. + +![][image79] +[image79]: /blog/seedoils/image79.png + +**Results:** + +![][image80] +[image80]: /blog/seedoils/image80.png + +Altogether, high-LA diets yielded a non-significant increase in CRP when compared to control (P=0.15). The results are ultimately null. However, it may still be possible that the true effect of LA on CRP is hidden. It's plausible that high-LA diets do increase CRP, but they don't tend to increase CRP much more than control. + +![][image81] +[image81]: /blog/seedoils/image81.png + +When the effects of high-LA diets are compared to baseline, the results are almost squarely null (P=0.62). Even Junker, 2001, which saw the widest contrast in LA intake ultimately had a null result. But, we're not out of the woods yet. There are still other possibilities to consider. What if the subjects' usual diets are already high in LA that dosing more in an intervention trial doesn't actually do anything to CRP? Perhaps the comparator diets could still prove to be anti-inflammatory in some way. + +![][image82] +[image82]: /blog/seedoils/image82.png + +Comparing the effects of low-LA diets to baseline yielded a non-significant decrease in CRP (P=0.21). Again, the results are ultimately null. So, at present it does not appear as though low-LA diets are terribly protective compared to high-LA diets on measures of CRP. + +But there is one last thing to discuss. Junker et al. (2001), saw the widest contrast in LA intake and was also the only study to show a statistically significant increase in CRP when comparing a high-LA diet to a low-LA diet. However, this effect likely isn't accurate. Let me explain. + +>_For all parameters, mean and standard deviation (SD) or median and range (if non-normally distributed) were calculated. Intragroup differences between week 4 and week 0 were compared using the Mann-Whitney-Wilcoxon test (non-normally distributed variables) or the t-test for unpaired samples (if normally distributed), whereas intergroup differences at week 0 and at week 4 were compared using the Mann-Whitney-U test (non-normally distributed variables) or the t-test (normally distributed variables)._ + +As described in the Statistical Analyses section, the Mann-Whitney-Wilcoxon test was used to test for statistical significance when distributions were non-normal. This test is specifically designed for non-normal distributions, and applying this test is also best practice in this case. + +![][image83] +[image83]: /blog/seedoils/image83.png + +Here we see that CRP is actually reported as median and range, because the distributions of CRP were non-normal. We can also see that all three groups saw non-significant decreases in median CRP from baseline, falling from 0.9 (0.17-5.9) to 0.75 (0.17-7.7). However, the upper bounds for CRP during the starting week of the trial are unusually high in the OO group. This means that estimating the mean and standard deviation will actually yank the variance and the mean much higher than it rightfully should be. + +This gives the illusion that the drop in CRP in the OO group was much larger than it actually was, which in turn bloats the treatment effect seen when using estimated means and standard deviations [[199](https://pubmed.ncbi.nlm.nih.gov/15840177/)]. This also happened in the SU group. The range is much narrower at baseline than it was post-intervention, which pulled the variance and the mean toward showing an increase in CRP that didn't actually happen. In reality, the OO and SU groups saw a non-significant decrease in CRP. + +In conclusion, both high-LA and low-LA diets appear to have no particularly noteworthy effect on CRP, even when LA intakes are extremely high. The results of this meta-analysis suggest that avoiding high-LA diets on the basis of inflammation appears to be unwarranted. + +###### **LIPID PEROXIDATION** + +An unbelievable number of diet gurus, quacks, and ne'er-do-wells believe that PUFA found in vegetable oils are toxic to humans, especially at higher doses. To these clowns, PUFA are responsible for everything bad that could ever happen to the human body鈥 doesn't matter if it's obesity, diabetes, heart disease, or limp dick. If you got it, PUFA caused it. + +"But why?", you might ask. Good question. The primary mechanism of action proposed by these lunatics is lipid peroxidation. PUFA are unique among fatty acids in that they have multiple double-bonds. The carbons between these double-bonds are uniquely vulnerable to oxidation. This essentially destroys the PUFA and creates a lot of byproducts鈥 toxic byproducts to be fair. + +It is not at all disputed that PUFA behaves in this fashion. We know they do. They're fragile and they break apart really easily in isolation when exposed to different sorts of reactants, like oxygen. That is an indisputable fact. However, indisputable mechanisms don't necessarily translate into indisputable clinical relevance. + +To test this, I scoured the literature for any randomized controlled trials (RCT) that investigated the effects of different dietary fatty acids on measures of lipid peroxidation. The outcomes assessed were markers of lipid peroxidation, including 8-oxo-7,8-dihydro-20-deoxyguanosine (8-oxodG), glutathione reductase (GR), glutathione peroxidase (GPx), superoxide dismutase (SOD), conjugated dienes (CD), malondialdehyde (MDA), and catalase (CAT). + +**Inclusion Criteria:** + +1. RCT design. + +2. At least one of the chosen endpoints must be reported. + +3. Study design must be comparing high-PUFA to low-PUFA controls. + +4. Low-PUFA controls must replace PUFA with monounsaturated or saturated fat. + + +Altogether, five studies were included in the analysis. The vast majority of data was collected from Freese et al. (2008), which included data for 8-oxodG, GR, GPx, and CAT [[200](https://pubmed.ncbi.nlm.nih.gov/17671440/)]. Whereas Jenkinson et al. (1999) additionally investigated SOD and LO2 in their investigation [[201](https://pubmed.ncbi.nlm.nih.gov/10452406/)]. Exploration of MDA was contributed by both de Kok et al. (2003) and S枚dergren et al. (2001) [[202](https://pubmed.ncbi.nlm.nih.gov/12504167/)][[203](https://pubmed.ncbi.nlm.nih.gov/11641740/)]. Lastly, Parfitt et al. (1994) contributed data for CD [[204](https://pubmed.ncbi.nlm.nih.gov/8181259/)]. + +![][image84] +[image84]: /blog/seedoils/image84.png + +**Results:** + +Normally when I see a bunch of null results I feel like I may have wasted my time. However, these results make me giggle. The only significant finding was an effect of PUFA lowering 8-oxodG compared to baseline (P=0.02), however the results were null when compared to control (P=0.83). This means that both the high-PUFA and low-PUFA diets lowered this marker of lipid peroxidation. + +**8-oxo-7,8-dihydro-20-deoxyguanosine (8-oxodG) vs Control** + +![][image85] +[image85]: /blog/seedoils/image85.png + +**8-oxo-7,8-dihydro-20-deoxyguanosine (8-oxodG) vs Baseline** + +![][image86] +[image86]: /blog/seedoils/image86.png + +**Glutathione Reductase (GR) vs Control** + +![][image87] +[image87]: /blog/seedoils/image87.png + +**Glutathione Reductase (GR) vs Baseline** + +![][image88] +[image88]: /blog/seedoils/image88.png + +**Glutathione Peroxidase (GPx) vs Control** + +![][image89] +[id]: /blog/seedoils/image89.png + +**Glutathione Peroxidase (GPx) vs Baseline** + +![][image90] +[image90]: /blog/seedoils/image90.png + +**Superoxide Dismutase (SOD) vs Control** + +![][image91] +[image91]: /blog/seedoils/image91.png + +**Superoxide Dismutase (SOD) vs Baseline** + +![][image92] +[image92]: /blog/seedoils/image92.png + +**Malondialdehyde (MDA) vs Control** + +![][image93] +[image93]: /blog/seedoils/image93.png + +**Malondialdehyde (MDA) vs Baseline** + +![][image94] +[image94]: /blog/seedoils/image94.png + +**Catalase (CAT) vs Control** + +![][image95] +[image95]: /blog/seedoils/image95.png + +**Catalase (CAT) vs Baseline** + +![][image96] +[image96]: /blog/seedoils/image96.png + +**Conjugated Dienes (CD) vs Control** + +![][image97] +[image97]: /blog/seedoils/image97.png + +**Conjugated Dienes (CD) vs Baseline** + +![][image98] +[image98]: /blog/seedoils/image98.png + +The only statistically significant finding was a reduction in 8-oxodG with high-PUFA diets (P=0.02). Which is interesting, because 8-oxodG is a marker of DNA damage, and as such its implications extend far beyond oxidative stress. I thought PUFA was supposed to destroy your DNA with all of those highly reactive, toxic byproducts they create when they oxidize? Well, apparently, like most mechanistic reasoning, that shit just doesn't pan out in the real world. + +In fact, even if we ignored the P-values and just looked at trends or directionality, the results would overwhelmingly favour high-PUFA diets over low-PUFA diets. Especially for MDA, which saw non-significant decreases for high-PUFA diets compared to baseline (P=0.11). + +In conclusion, mechanistic speculation regarding the toxic, in vivo effects of PUFA on lipid peroxidation in humans doesn't pan out in real life. PUFA does not seem to negatively affect markers of lipid peroxidation, and may even improve some of them. + +# DISCUSSION + +It may be true that vegetable oils are food items that represent a stark divergence from traditional dietary norms. However, it does not appear as though these oils are uniquely causal of the chronic diseases we face in the modern, industrialized world. In fact, vegetable oils likely have a beneficial role to play in the prevention of many diseases鈥 particularly heart disease, type 2 diabetes mellitus, and potentially skin cancer. Vegetable oils could plausibly have a beneficial role to play in preventing degeneration of the macula, fatty liver disease, and perhaps some auto-immune diseases. + +This in-depth analysis could find no persuasive evidence of harm with vegetable oils for any of the investigated endpoints. Vegetable oils seemed to have no consistent effect on the risk of breast cancer, colorectal cancer, obesity, or cognitive decline. Though there are many proposed mechanisms by which vegetable oils have been suggested to be harmful to humans, the actual human outcome data does not seem to support the importance of these mechanisms for these endpoints. If the outcomes consistently contradict our mechanistic speculations, the mechanisms are probably not interacting with those outcomes in the way we suspect. + +In conclusion, vegetable oils appear to be a health-promoting addition to the diet, and seem to offer a range of health benefits and little to no apparent health risks to the general population. However, one should exercise caution when navigating the current food environment, as vegetable oils are included in many foods that are not particularly health-promoting. If one chooses to consume vegetable oils, it would probably be wise to integrate them into a healthy eating pattern in ways that do not promote the overconsumption of calories. Some possible healthy ways to include vegetable oils in the diet could be in the form of salad dressings or as cooking oils for sauteed vegetables. + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting! + +# BIBLIOGRAPHY""" + , articleReferences = + [ { author = "DiNicolantonio, James J., and James H. O鈥橩eefe" + , year = "2018" + , title = "Omega-6 Vegetable Oils as a Driver of Coronary Heart Disease: The Oxidized Linoleic Acid Hypothesis" + , journal = "Open Heart" + , link = "https://doi.org/10.1136/openhrt-2018-000898" + } + , { author = "Mata, P., et al." + , year = "1996" + , title = "Effect of Dietary Fat Saturation on LDL Oxidation and Monocyte Adhesion to Human Endothelial Cells in Vitro" + , journal = "Arteriosclerosis, Thrombosis, and Vascular Biology" + , link = "https://doi.org/10.1161/01.atv.16.11.1347" + } + , { author = "Kratz, M., et al." + , year = "2002" + , title = "Effects of Dietary Fatty Acids on the Composition and Oxidizability of Low-Density Lipoprotein" + , journal = "European Journal of Clinical Nutrition" + , link = "https://doi.org/10.1038/sj.ejcn.1601288" + } + , { author = "Reaven, P. D., et al." + , year = "1994" + , title = "Effects of Linoleate-Enriched and Oleate-Enriched Diets in Combination with Alpha-Tocopherol on the Susceptibility of LDL and LDL Subfractions to Oxidative Modification in Humans" + , journal = "Arteriosclerosis and Thrombosis: A Journal of Vascular Biology" + , link = "https://doi.org/10.1161/01.atv.14.4.557" + } + , { author = "Esterbauer, H., et al." + , year = "1991" + , title = "Role of Vitamin E in Preventing the Oxidation of Low-Density Lipoprotein" + , journal = "The American Journal of Clinical Nutrition" + , link = "https://doi.org/10.1093/ajcn/53.1.314S" + } + , { author = "Esterbauer, H., et al." + , year = "1989" + , title = "Continuous Monitoring of in Vitro Oxidation of Human Low Density Lipoprotein" + , journal = "Free Radical Research Communications" + , link = "https://doi.org/10.3109/10715768909073429" + } + , { author = "Raederstorff, Daniel, et al." + , year = "2015" + , title = "Vitamin E Function and Requirements in Relation to PUFA" + , journal = "The British Journal of Nutrition" + , link = "https://doi.org/10.1017/S000711451500272X" + } + , { author = "Herting, D. C., and E. J. Drury" + , year = "1963" + , title = "VITAMIN E CONTENT OF VEGETABLE OILS AND FATS" + , journal = "The Journal of Nutrition" + , link = "https://doi.org/10.1093/jn/81.4.335" + } + , { author = "Marrugat, Jaume, et al." + , year = "2004" + , title = "Effects of Differing Phenolic Content in Dietary Olive Oils on Lipids and LDL Oxidation--a Randomized Controlled Trial" + , journal = "European Journal of Nutrition" + , link = "https://doi.org/10.1007/s00394-004-0452-8" + } + , { author = "Hern谩ez, 脕lvaro, et al." + , year = "2017" + , title = "The Mediterranean Diet Decreases LDL Atherogenicity in High Cardiovascular Risk Individuals: A Randomized Controlled Trial" + , journal = "Molecular Nutrition & Food Research" + , link = "https://doi.org/10.1002/mnfr.201601015" + } + , { author = "Fit贸, Montserrat, et al." + , year = "2007" + , title = "Effect of a Traditional Mediterranean Diet on Lipoprotein Oxidation: A Randomized Controlled Trial" + , journal = "Archives of Internal Medicine" + , link = "https://doi.org/10.1001/archinte.167.11.1195" + } + , { author = "Aronis, Pantelis, et al." + , year = "2007" + , title = "Effect of Fast-Food Mediterranean-Type Diet on Human Plasma Oxidation" + , journal = "Journal of Medicinal Food" + , link = "https://doi.org/10.1089/jmf.2006.235" + } + , { author = "Kiokias, Sotirios, et al." + , year = "2018" + , title = "Effect of Natural Food Antioxidants against LDL and DNA Oxidative Changes" + , journal = "Antioxidants (Basel, Switzerland)" + , link = "https://doi.org/10.3390/antiox7100133" + } + , { author = "Palom盲ki, Ari, et al." + , year = "2010" + , title = "Effects of Dietary Cold-Pressed Turnip Rapeseed Oil and Butter on Serum Lipids, Oxidized LDL and Arterial Elasticity in Men with Metabolic Syndrome" + , journal = "Lipids in Health and Disease" + , link = "https://doi.org/10.1186/1476-511X-9-137" + } + , { author = "O枚rni, K., et al." + , year = "1997" + , title = "Oxidation of Low Density Lipoprotein Particles Decreases Their Ability to Bind to Human Aortic Proteoglycans. Dependence on Oxidative Modification of the Lysine Residues" + , journal = "The Journal of Biological Chemistry" + , link = "https://doi.org/10.1074/jbc.272.34.21303" + } + , { author = "Wu, Tianying, et al." + , year = "2006" + , title = "Is Plasma Oxidized Low-Density Lipoprotein, Measured with the Widely Used Antibody 4E6, an Independent Predictor of Coronary Heart Disease among U.S. Men and Women?" + , journal = "Journal of the American College of Cardiology" + , link = "https://doi.org/10.1016/j.jacc.2006.03.057" + } + , { author = "van Tits, Lambertus J., et al." + , year = "2005" + , title = "Letter Regarding Article by Tsimikas et al, 鈥楬igh-Dose Atorvastatin Reduces Total Plasma Levels of Oxidized Phospholipids and Immune Complexes Present on Apolipoprotein B-100 in Patients With Acute Coronary Syndromes in the MIRACL Trial.鈥" + , journal = "Circulation" + , link = "https://doi.org/10.1161/01.CIR.0000164264.00913.6D" + } + , { author = "Mercodia" + , year = "2020" + , title = "Mercodia Oxidized LDL ELISA monoclonal antibody 4E6" + , journal = "Mercodia" + , link = "https://www.mercodia.com/product/oxidized-ldl-elisa/#:~:text=Mercodia%20Oxidized%20LDL%20ELISA%20is,epitope%20in%20oxidized%20ApoB%2D100.&text=Substituting%20aldehydes%20can%20be%20produced,the%20generation%20of%20oxidized%20LDL" + } + , { author = "Annika Carlsson and Jeanette" + , year = "2008" + , title = "Oxidized LDL - Know what you measure" + , journal = "3rd Joint Meeting of the French, German and Swiss Atherosclerosis Societies" + , link = "https://cms.mercodia.com/wp-content/uploads/2019/06/poster-oxldl-know-what-you-measure.pdf" + } + , { author = "Henriksen, T., et al." + , year = "1983" + , title = "Enhanced Macrophage Degradation of Biologically Modified Low Density Lipoprotein" + , journal = "Arteriosclerosis (Dallas, Tex.)" + , link = "https://doi.org/10.1161/01.atv.3.2.149" + } + , { author = "Meyer, Jason M., et al." + , year = "2014" + , title = "Minimally Oxidized LDL Inhibits Macrophage Selective Cholesteryl Ester Uptake and Native LDL-Induced Foam Cell Formation" + , journal = "Journal of Lipid Research" + , link = "https://doi.org/10.1194/jlr.M044644" + } + , { author = "Tsimikas, Sotirios, et al." + , year = "2006" + , title = "Oxidized Phospholipids Predict the Presence and Progression of Carotid and Femoral Atherosclerosis and Symptomatic Cardiovascular Disease: Five-Year Prospective Results from the Bruneck Study" + , journal = "Journal of the American College of Cardiology" + , link = "https://doi.org/10.1016/j.jacc.2006.03.001" + } + , { author = "Marklund, Matti, et al." + , year = "2019" + , title = "Biomarkers of Dietary Omega-6 Fatty Acids and Incident Cardiovascular Disease and Mortality" + , journal = "Circulation" + , link = "https://doi.org/10.1161/CIRCULATIONAHA.118.038908" + } + , { author = "Wood, D. A., et al." + , title = "Adipose tissue and platelet fatty acids and coronary heart disease in Scottish men" + , journal = "Lancet (London, England)" + , year = "1984" + , link = "https://doi.org/10.1016/s0140-6736(84)91044-4" + } + , { author = "Siri-Tarino, P. W., et al." + , title = "Meta-analysis of prospective cohort studies evaluating the association of saturated fat with cardiovascular disease" + , journal = "The American Journal of Clinical Nutrition" + , year = "2010" + , link = "https://doi.org/10.3945/ajcn.2009.27725" + } + , { author = "Harcombe, Z., et al." + , title = "Evidence from prospective cohort studies does not support current dietary fat guidelines: A systematic review and meta-analysis" + , journal = "British Journal of Sports Medicine" + , year = "2017" + , link = "https://doi.org/10.1136/bjsports-2016-096550" + } + , { author = "Zhu, Y., et al." + , title = "Dietary total fat, fatty acids intake, and risk of cardiovascular disease: A dose-response meta-analysis of cohort studies" + , journal = "Lipids in Health and Disease" + , year = "2019" + , link = "https://doi.org/10.1186/s12944-019-1035-2" + } + , { author = "Mazidi, M., et al." + , title = "Association of types of dietary fats and all-cause and cause-specific mortality: A prospective cohort study and meta-analysis of prospective studies with 1,164,029 participants" + , journal = "Clinical Nutrition (Edinburgh, Scotland)" + , year = "2020" + , link = "https://doi.org/10.1016/j.clnu.2020.03.028" + } + , { author = "Skeaff, C. M., & Miller, J." + , title = "Dietary fat and coronary heart disease: Summary of evidence from prospective cohort and randomised controlled trials" + , journal = "Annals of Nutrition & Metabolism" + , year = "2009" + , link = "https://doi.org/10.1159/000229002" + } + , { author = "Henderson, S. O., et al." + , title = "Established risk factors account for most of the racial differences in cardiovascular disease mortality" + , journal = "PloS One" + , year = "2007" + , link = "https://doi.org/10.1371/journal.pone.0000377" + } + , { author = "Nakamura, Y., et al." + , title = "Fatty acid intakes and coronary heart disease mortality in Japan: NIPPON DATA90, 1990-2005" + , journal = "Current Nutrition & Food Science" + , year = "2013" + , link = "" + } + , { author = "Zhuang, P., et al." + , title = "Dietary fats in relation to total and cause-specific mortality in a prospective cohort of 521,120 individuals with 16 years of follow-up" + , journal = "Circulation Research" + , year = "2019" + , link = "https://doi.org/10.1161/CIRCRESAHA.118.314038" + } + , { author = "Goldbourt, U., et al." + , title = "Factors predictive of long-term coronary heart disease mortality among 10,059 male Israeli civil servants and municipal employees: A 23-year mortality follow-up in the Israeli Ischemic Heart Disease Study" + , journal = "Cardiology" + , year = "1993" + , link = "https://doi.org/10.1159/000175862" + } + , { author = "Guasch-Ferr茅, M., et al." + , title = "Dietary fat intake and risk of cardiovascular disease and all-cause mortality in a population at high risk of cardiovascular disease" + , journal = "The American Journal of Clinical Nutrition" + , year = "2015" + , link = "https://doi.org/10.3945/ajcn.115.116046" + } + , { author = "Jakobsen, M. U., et al." + , title = "Dietary fat and risk of coronary heart disease: Possible effect modification by gender and age" + , journal = "American Journal of Epidemiology" + , year = "2004" + , link = "https://doi.org/10.1093/aje/kwh193" + } + , { author = "Zong, G., et al." + , title = "Intake of individual saturated fatty acids and risk of coronary heart disease in US men and women: Two prospective longitudinal cohort studies" + , journal = "BMJ (Clinical Research Ed.)" + , year = "2016" + , link = "https://doi.org/10.1136/bmj.i5796" + } + , { author = "Mann, J. I., et al." + , title = "Dietary determinants of ischaemic heart disease in health conscious individuals" + , journal = "Heart (British Cardiac Society)" + , year = "1997" + , link = "https://doi.org/10.1136/hrt.78.5.450" + } + , { author = "Ricci, C., et al." + , title = "Type of dietary fat intakes in relation to all-cause and cause-specific mortality in US adults: An iso-energetic substitution analysis from the American National Health and Nutrition Examination Survey linked to the US mortality registry" + , journal = "The British Journal of Nutrition" + , year = "2018" + , link = "https://doi.org/10.1017/S0007114517003889" + } + , { author = "Posner, B. M., et al." + , title = "Dietary lipid predictors of coronary heart disease in men. The Framingham Study" + , journal = "Archives of Internal Medicine" + , year = "1991" + , link = "" + } + , { author = "Praagman, J., et al." + , title = "The association between dietary saturated fatty acids and ischemic heart disease depends on the type and source of fatty acid in the European Prospective Investigation into Cancer and Nutrition-Netherlands cohort" + , journal = "The American Journal of Clinical Nutrition" + , year = "2016" + , link = "https://doi.org/10.3945/ajcn.115.122671" + } + , { author = "Praagman, J., et al." + , title = "Dietary saturated fatty acids and coronary heart disease risk in a Dutch middle-aged and elderly population" + , journal = "Arteriosclerosis, Thrombosis, and Vascular Biology" + , year = "2016" + , link = "https://doi.org/10.1161/ATVBAHA.116.307578" + } + , { author = "Santiago, S., et al." + , title = "Fat quality index and risk of cardiovascular disease in the Sun Project" + , journal = "The Journal of Nutrition, Health & Aging" + , year = "2018" + , link = "https://doi.org/10.1007/s12603-018-1003-y" + } + , { author = "Schoenaker, D. A. J. M., et al." + , title = "Dietary saturated fat and fibre and risk of cardiovascular disease and all-cause mortality among type 1 diabetic patients: The EURODIAB prospective complications study" + , journal = "Diabetologia" + , year = "2012" + , link = "https://doi.org/10.1007/s00125-012-2550-0" + } + , { author = "Leosdottir, M., et al." + , title = "Cardiovascular event risk in relation to dietary fat intake in middle-aged individuals: Data from The Malm枚 Diet and Cancer Study" + , journal = "European Journal of Cardiovascular Prevention and Rehabilitation" + , year = "2007" + , link = "https://doi.org/10.1097/HJR.0b013e3282a56c45" + } + , { author = "Pietinen, P., et al." + , title = "Intake of Fatty Acids and Risk of Coronary Heart Disease in a Cohort of Finnish Men. The Alpha-Tocopherol, Beta-Carotene Cancer Prevention Study" + , journal = "American Journal of Epidemiology" + , year = "1997" + , link = "https://doi.org/10.1093/oxfordjournals.aje.a009047" + } + , { author = "Nagata, Chisato, et al." + , title = "Total Fat Intake Is Associated with Decreased Mortality in Japanese Men but Not in Women" + , journal = "The Journal of Nutrition" + , year = "2012" + , link = "https://doi.org/10.3945/jn.112.161661" + } + , { author = "Yamagishi, Kazumasa, et al." + , title = "Dietary Intake of Saturated Fatty Acids and Incident Stroke and Coronary Heart Disease in Japanese Communities: The JPHC Study" + , journal = "European Heart Journal" + , year = "2013" + , link = "https://doi.org/10.1093/eurheartj/eht043" + } + , { author = "Yamagishi, Kazumasa, et al." + , title = "Dietary Intake of Saturated Fatty Acids and Mortality from Cardiovascular Disease in Japanese: The Japan Collaborative Cohort Study for Evaluation of Cancer Risk (JACC) Study" + , journal = "The American Journal of Clinical Nutrition" + , year = "2010" + , link = "https://doi.org/10.3945/ajcn.2009.29146" + } + , { author = "Virtanen, Jyrki K., et al." + , title = "Dietary Fatty Acids and Risk of Coronary Heart Disease in Men: The Kuopio Ischemic Heart Disease Risk Factor Study" + , journal = "Arteriosclerosis, Thrombosis, and Vascular Biology" + , year = "2014" + , link = "https://doi.org/10.1161/ATVBAHA.114.304082" + } + , { author = "Laaksonen, David E., et al." + , title = "Prediction of Cardiovascular Mortality in Middle-Aged Men by Dietary and Serum Linoleic and Polyunsaturated Fatty Acids" + , journal = "Archives of Internal Medicine" + , year = "2005" + , link = "https://doi.org/10.1001/archinte.165.2.193" + } + , { author = "Hooper, Lee, et al." + , title = "Reduction in Saturated Fat Intake for Cardiovascular Disease" + , journal = "The Cochrane Database of Systematic Reviews" + , year = "2020" + , link = "https://doi.org/10.1002/14651858.CD011737.pub3" + } + , { author = "Woodhill, J. M., et al." + , title = "Low Fat, Low Cholesterol Diet in Secondary Prevention of Coronary Heart Disease" + , journal = "Advances in Experimental Medicine and Biology" + , year = "1978" + , link = "https://doi.org/10.1007/978-1-4684-0967-3_18" + } + , { author = "Frantz, I. D., et al." + , title = "Test of Effect of Lipid Lowering by Diet on Cardiovascular Risk. The Minnesota Coronary Survey" + , journal = "Arteriosclerosis (Dallas, Tex.)" + , year = "1989" + , link = "https://doi.org/10.1161/01.atv.9.1.129" + } + , { author = "Dayton, Seymour, et al." + , title = "A Controlled Clinical Trial of a Diet High in Unsaturated Fat in Preventing Complications of Atherosclerosis" + , journal = "Circulation" + , year = "1969" + , link = "https://doi.org/10.1161/01.CIR.40.1S2.II-1" + } + , { author = "Laguzzi, Federica, et al." + , title = "Intake of Food Rich in Saturated Fat in Relation to Subclinical Atherosclerosis and Potential Modulating Effects from Single Genetic Variants" + , journal = "Scientific Reports" + , year = "2021" + , link = "https://doi.org/10.1038/s41598-021-86324-w" + } + , { author = "William Shurtleff and Akiko Aoyagi" + , title = "History of Soy Oil Margarine - Part 2" + , journal = "A Chapter from the Unpublished Manuscript, History of Soybeans and Soyfoods, 1100 B.C. to the 1980s" + , year = "2004" + , link = "https://www.soyinfocenter.com/HSS/margarine2.php" + } + , { author = "Zhuang, Pan, et al." + , title = "Dietary Fats in Relation to Total and Cause-Specific Mortality in a Prospective Cohort of 521\u{2009}120 Individuals With 16 Years of Follow-Up" + , journal = "Circulation Research" + , year = "2019" + , link = "https://doi.org/10.1161/CIRCRESAHA.118.314038" + } + , { author = "Ramsden, Christopher E., et al." + , title = "Use of Dietary Linoleic Acid for Secondary Prevention of Coronary Heart Disease and Death: Evaluation of Recovered Data from the Sydney Diet Heart Study and Updated Meta-Analysis" + , journal = "BMJ (Clinical Research Ed.)" + , year = "2013" + , link = "https://doi.org/10.1136/bmj.e8707" + } + , { author = "Heart Foundation Takes Swipe at Butter and New Study on Margarine | Australian Food News" + , title = "Heart Foundation Takes Swipe at Butter and New Study on Margarine" + , journal = "Australian Food News" + , year = "2013" + , link = "https://www.ausfoodnews.com.au/2013/02/11/heart-foundation-takes-swipe-at-butter-and-new-study-on-margarine.html" + } + , { author = "News, A. B. C." + , title = "Unilever Gets All the Trans Fat out of Its Margarines" + , journal = "ABC News" + , year = "" + , link = "https://abcnews.go.com/Business/story?id=8182555&page=1" + } + , { author = "Ramsden, Christopher E., et al." + , title = "Re-Evaluation of the Traditional Diet-Heart Hypothesis: Analysis of Recovered Data from Minnesota Coronary Experiment (1968-73)" + , journal = "BMJ (Clinical Research Ed.)" + , year = "2016" + , link = "https://doi.org/10.1136/bmj.i1246" + } + , { author = "Kadhum, Abdul Amir H., and M. Najeeb Shamma" + , title = "Edible Lipids Modification Processes: A Review" + , journal = "Critical Reviews in Food Science and Nutrition" + , year = "2017" + , link = "https://doi.org/10.1080/10408398.2013.848834" + } + , { author = "SR11-SR28: USDA ARS" + , title = "SR11-SR28" + , journal = "USDA ARS" + , year = "" + , link = "https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/methods-and-application-of-food-composition-laboratory/mafcl-site-pages/sr11-sr28/" + } + , { author = "de Lorgeril, M., et al." + , title = "Mediterranean Alpha-Linolenic Acid-Rich Diet in Secondary Prevention of Coronary Heart Disease" + , journal = "Lancet (London, England)" + , year = "1994" + , link = "https://doi.org/10.1016/s0140-6736(94)92580-1" + } + , { author = "de Lorgeril, M., et al." + , title = "Mediterranean Diet, Traditional Risk Factors, and the Rate of Cardiovascular Complications after Myocardial Infarction: Final Report of the Lyon Diet Heart Study" + , journal = "Circulation" + , year = "1999" + , link = "https://doi.org/10.1161/01.cir.99.6.779" + } + , { author = "Park, Sehoon, et al." + , title = "Causal Effects of Serum Levels of N-3 or n-6 Polyunsaturated Fatty Acids on Coronary Artery Disease: Mendelian Randomization Study" + , journal = "Nutrients" + , year = "2021" + , link = "https://doi.org/10.3390/nu13051490" + } + , { author = "Rett, Brian S., and Jay Whelan." + , title = "Increasing Dietary Linoleic Acid Does Not Increase Tissue Arachidonic Acid Content in Adults Consuming Western-Type Diets: A Systematic Review" + , journal = "Nutrition & Metabolism" + , year = "2011" + , link = "https://doi.org/10.1186/1743-7075-8-36" + } + , { author = "Pearce, M. L., and S. Dayton." + , title = "Incidence of Cancer in Men on a Diet High in Polyunsaturated Fat" + , journal = "Lancet (London, England)" + , year = "1971" + , link = "https://doi.org/10.1016/s0140-6736(71)91086-5" + } + , { author = "Ederer, F., et al." + , title = "Cancer among Men on Cholesterol-Lowering Diets: Experience from Five Clinical Trials" + , journal = "Lancet (London, England)" + , year = "1971" + , link = "https://doi.org/10.1016/s0140-6736(71)90911-1" + } + , { author = "Lee, Peter N., et al." + , title = "Systematic Review with Meta-Analysis of the Epidemiological Evidence in the 1900s Relating Smoking to Lung Cancer" + , journal = "BMC Cancer" + , year = "2012" + , link = "https://doi.org/10.1186/1471-2407-12-385" + } + , { author = "Li, Jun, et al." + , title = "Dietary Intake and Biomarkers of Linoleic Acid and Mortality: Systematic Review and Meta-Analysis of Prospective Cohort Studies" + , journal = "The American Journal of Clinical Nutrition" + , year = "2020" + , link = "https://doi.org/10.1093/ajcn/nqz349" + } + , { author = "Ruan, Liang, et al." + , title = "Dietary Fat Intake and the Risk of Skin Cancer: A Systematic Review and Meta-Analysis of Observational Studies" + , journal = "Nutrition and Cancer" + , year = "2020" + , link = "https://doi.org/10.1080/01635581.2019.1637910" + } + , { author = "Park, Min Kyung, et al." + , title = "Fat Intake and Risk of Skin Cancer in U.S. Adults" + , journal = "Cancer Epidemiology, Biomarkers & Prevention: A Publication of the American Association for Cancer Research, Cosponsored by the American Society of Preventive Oncology" + , year = "2018" + , link = "https://doi.org/10.1158/1055-9965.EPI-17-0782" + } + , { author = "Gogia, Ravinder, et al." + , title = "Fitzpatrick Skin Phototype Is an Independent Predictor of Squamous Cell Carcinoma Risk after Solid Organ Transplantation" + , journal = "Journal of the American Academy of Dermatology" + , year = "2013" + , link = "https://doi.org/10.1016/j.jaad.2012.09.030" + } + , { author = "Ibiebele, Torukiri I., et al." + , title = "Dietary Fat Intake and Risk of Skin Cancer: A Prospective Study in Australian Adults" + , journal = "International Journal of Cancer" + , year = "2009" + , link = "https://doi.org/10.1002/ijc.24481" + } + , { author = "Wallingford, Sarah C., et al." + , title = "Plasma Omega-3 and Omega-6 Concentrations and Risk of Cutaneous Basal and Squamous Cell Carcinomas in Australian Adults" + , journal = "Cancer Epidemiology, Biomarkers & Prevention: A Publication of the American Association for Cancer Research, Cosponsored by the American Society of Preventive Oncology" + , year = "2013" + , link = "https://doi.org/10.1158/1055-9965.EPI-13-0434" + } + , { author = "Harris, Robin B., et al." + , title = "Fatty Acid Composition of Red Blood Cell Membranes and Risk of Squamous Cell Carcinoma of the Skin" + , journal = "Cancer Epidemiology, Biomarkers & Prevention: A Publication of the American Association for Cancer Research, Cosponsored by the American Society of Preventive Oncology" + , year = "2005" + , link = "https://doi.org/10.1158/1055-9965.EPI-04-0670" + } + , { author = "Seviiri, Mathias, et al." + , title = "Polyunsaturated Fatty Acid Levels and the Risk of Keratinocyte Cancer: A Mendelian Randomization Analysis" + , journal = "Cancer Epidemiology, Biomarkers & Prevention: A Publication of the American Association for Cancer Research, Cosponsored by the American Society of Preventive Oncology" + , year = "2021" + , link = "https://doi.org/10.1158/1055-9965.EPI-20-1765" + } + , { author = "Noel, Sophie E., et al." + , title = "Consumption of Omega-3 Fatty Acids and the Risk of Skin Cancers: A Systematic Review and Meta-Analysis" + , journal = "International Journal of Cancer" + , year = "2014" + , link = "https://doi.org/10.1002/ijc.28630" + } + , { author = "Watkins, Bruce A., and Jeffrey Kim." + , title = "The Endocannabinoid System: Directing Eating Behavior and Macronutrient Metabolism" + , journal = "Frontiers in Psychology" + , year = "2014" + , link = "https://doi.org/10.3389/fpsyg.2014.01506" + } + , { author = "Alvheim, Anita R., et al." + , title = "Dietary Linoleic Acid Elevates Endogenous 2-AG and Anandamide and Induces Obesity" + , journal = "Obesity (Silver Spring, Md.)" + , year = "2012" + , link = "https://doi.org/10.1038/oby.2012.38" + } + , { author = "Bl眉her, Matthias, et al." + , title = "Dysregulation of the Peripheral and Adipose Tissue Endocannabinoid System in Human Abdominal Obesity" + , journal = "Diabetes" + , year = "2006" + , link = "https://doi.org/10.2337/db06-0812" + } + , { author = "Piomelli, Daniele." + , title = "The Molecular Logic of Endocannabinoid Signalling" + , journal = "Nature Reviews. Neuroscience" + , year = "2003" + , link = "https://doi.org/10.1038/nrn1247" + } + , { author = "Curioni, C., and C. Andr茅." + , title = "Rimonabant for Overweight or Obesity" + , journal = "The Cochrane Database of Systematic Reviews" + , year = "2006" + , link = "https://doi.org/10.1002/14651858.CD006162.pub2" + } + , { author = "Naughton, Shaan S., et al." + , title = "The Acute Effect of Oleic- or Linoleic Acid-Containing Meals on Appetite and Metabolic Markers; A Pilot Study in Overweight or Obese Individuals" + , journal = "Nutrients" + , year = "2018" + , link = "https://doi.org/10.3390/nu10101376" + } + , { author = "Flint, Anne, et al." + , title = "Effects of Different Dietary Fat Types on Postprandial Appetite and Energy Expenditure" + , journal = "Obesity Research" + , year = "2003" + , link = "https://doi.org/10.1038/oby.2003.194" + } + , { author = "Stevenson, Jada L., et al." + , title = "Hunger and Satiety Responses to High-Fat Meals of Varying Fatty Acid Composition in Women with Obesity" + , journal = "Obesity (Silver Spring, Md.)" + , year = "2015" + , link = "https://doi.org/10.1002/oby.21202" + } + , { author = "Lawton, C. L., et al." + , title = "The Degree of Saturation of Fatty Acids Influences Post-Ingestive Satiety" + , journal = "The British Journal of Nutrition" + , year = "2000" + , link = "" + } + , { author = "French, S. J., et al." + , title = "The Effects of Intestinal Infusion of Long-Chain Fatty Acids on Food Intake in Humans" + , journal = "Gastroenterology" + , year = "2000" + , link = "https://doi.org/10.1053/gast.2000.18139" + } + , { author = "MacIntosh, Beth A., et al." + , title = "Low-n-6 and Low-n-6 plus High-n-3 Diets for Use in Clinical Research" + , journal = "The British Journal of Nutrition" + , year = "2013" + , link = "https://doi.org/10.1017/S0007114512005181" + } + , { author = "Stevenson, Jada L., et al." + , title = "Hunger and Satiety Responses to High-Fat Meals after a High-Polyunsaturated Fat Diet: A Randomized Trial" + , journal = "Nutrition (Burbank, Los Angeles County, Calif.)" + , year = "2017" + , link = "https://doi.org/10.1016/j.nut.2017.03.008" + } + , { author = "Strik, Caroline M., et al." + , title = "No Evidence of Differential Effects of SFA, MUFA or PUFA on Post-Ingestive Satiety and Energy Intake: A Randomised Trial of Fatty Acid Saturation" + , journal = "Nutrition Journal" + , year = "2010" + , link = "https://doi.org/10.1186/1475-2891-9-24" + } + , { author = "Martin, Melanie A., et al." + , title = "Fatty Acid Composition in the Mature Milk of Bolivian Forager-Horticulturalists: Controlled Comparisons with a US Sample" + , journal = "Maternal & Child Nutrition" + , year = "2012" + , link = "https://doi.org/10.1111/j.1740-8709.2012.00412.x" + } + , { author = "McLaughlin, Joe, et al." + , title = "Adipose Tissue Triglyceride Fatty Acids and Atherosclerosis in Alaska Natives and Non-Natives" + , journal = "Atherosclerosis" + , year = "2005" + , link = "https://doi.org/10.1016/j.atherosclerosis.2005.01.019" + } + , { author = "Hirsch, Jules." + , title = "Fatty Acid Patterns in Human Adipose Tissue" + , journal = "Comprehensive Physiology" + , year = "2011" + , link = "https://doi.org/10.1002/cphy.cp050117" + } + , { author = "Heldenberg, D., et al." + , title = "Breast Milk and Adipose Tissue Fatty Acid Composition in Relation to Maternal Dietary Intake" + , journal = "Clinical Nutrition (Edinburgh, Scotland)" + , year = "1983" + , link = "https://doi.org/10.1016/0261-5614(83)90036-5" + } + , { author = "Martin, J. C., et al." + , title = "Dependence of Human Milk Essential Fatty Acids on Adipose Stores during Lactation" + , journal = "The American Journal of Clinical Nutrition" + , year = "1993" + , link = "https://doi.org/10.1093/ajcn/58.5.653" + } + , { author = "Demmelmair, H., et al." + , title = "Metabolism of U13C-Labeled Linoleic Acid in Lactating Women" + , journal = "Journal of Lipid Research" + , year = "1998" + , link = "" + } + , { author = "Kuipers, Remko S., et al." + , title = "Estimated Macronutrient and Fatty Acid Intakes from an East African Paleolithic Diet" + , journal = "The British Journal of Nutrition" + , year = "2010" + , link = "https://doi.org/10.1017/S0007114510002679" + } + , { author = "Leren, P." + , title = "Prevention of Coronary Heart Disease: Some Results from the Oslo Secondary and Primary Intervention Studies" + , journal = "Journal of the American College of Nutrition" + , year = "1989" + , link = "https://doi.org/10.1080/07315724.1989.10720315" + } + , { author = "" + , title = "Controlled Trial of Soya-Bean Oil in Myocardial Infarction" + , journal = "Lancet (London, England)" + , year = "1968" + , link = "" + } + , { author = "Krishnan, Sridevi, and Jamie A. Cooper." + , title = "Effect of Dietary Fatty Acid Composition on Substrate Utilization and Body Weight Maintenance in Humans" + , journal = "European Journal of Nutrition" + , year = "2014" + , link = "https://doi.org/10.1007/s00394-013-0638-z" + } + , { author = "Jones, P. J., et al." + , title = "Influence of Dietary Fat Polyunsaturated to Saturated Ratio on Energy Substrate Utilization in Obesity" + , journal = "Metabolism: Clinical and Experimental" + , year = "1992" + , link = "https://doi.org/10.1016/0026-0495(92)90074-k" + } + , { author = "van Marken Lichtenbelt, W. D., et al." + , title = "The Effect of Fat Composition of the Diet on Energy Metabolism" + , journal = "Zeitschrift Fur Ernahrungswissenschaft" + , year = "1997" + , link = "https://doi.org/10.1007/BF01617803" + } + , { author = "Casas-Agustench, P., et al." + , title = "Acute Effects of Three High-Fat Meals with Different Fat Saturations on Energy Expenditure, Substrate Oxidation and Satiety" + , journal = "Clinical Nutrition (Edinburgh, Scotland)" + , year = "2009" + , link = "https://doi.org/10.1016/j.clnu.2008.10.008" + } + , { author = "DeLany, J. P., et al." + , title = "Differential Oxidation of Individual Dietary Fatty Acids in Humans" + , journal = "The American Journal of Clinical Nutrition" + , year = "2000" + , link = "https://doi.org/10.1093/ajcn/72.4.905" + } + , { author = "Iggman, D., et al." + , title = "Adipose Tissue Fatty Acids and Insulin Sensitivity in Elderly Men" + , journal = "Diabetologia" + , year = "2010" + , link = "https://doi.org/10.1007/s00125-010-1669-0" + } + , { author = "Heine, R. J., et al." + , title = "Linoleic-Acid-Enriched Diet: Long-Term Effects on Serum Lipoprotein and Apolipoprotein Concentrations and Insulin Sensitivity in Noninsulin-Dependent Diabetic Patients." + , journal = "The American Journal of Clinical Nutrition" + , year = "1989" + , link = "https://doi.org/10.1093/ajcn/49.3.448" + } + , { author = "Zibaeenezhad, Mohammadjavad, et al." + , title = "The Effect of Walnut Oil Consumption on Blood Sugar in Patients With Diabetes Mellitus Type 2." + , journal = "International Journal of Endocrinology and Metabolism" + , year = "2016" + , link = "https://doi.org/10.5812/ijem.34889" + } + , { author = "Pertiwi, Kamalita, et al." + , title = "Associations of Linoleic Acid with Markers of Glucose Metabolism and Liver Function in South African Adults." + , journal = "Lipids in Health and Disease" + , year = "2020" + , link = "https://doi.org/10.1186/s12944-020-01318-3" + } + , { author = "Kr枚ger, Janine, et al." + , title = "Erythrocyte Membrane Phospholipid Fatty Acids, Desaturase Activity, and Dietary Fatty Acids in Relation to Risk of Type 2 Diabetes in the European Prospective Investigation into Cancer and Nutrition (EPIC)-Potsdam Study." + , journal = "The American Journal of Clinical Nutrition" + , year = "2011" + , link = "https://doi.org/10.3945/ajcn.110.005447" + } + , { author = "Wu, Jason H. Y., et al." + , title = "Omega-6 Fatty Acid Biomarkers and Incident Type 2 Diabetes: Pooled Analysis of Individual-Level Data for 39,740 Adults from 20 Prospective Cohort Studies." + , journal = "The Lancet. Diabetes & Endocrinology" + , year = "2017" + , link = "https://doi.org/10.1016/S2213-8587(17)30307-8" + } + , { author = "Yepes-Calder贸n, Manuela, et al." + , title = "Plasma Malondialdehyde and Risk of New-Onset Diabetes after Transplantation in Renal Transplant Recipients: A Prospective Cohort Study." + , journal = "Journal of Clinical Medicine" + , year = "2019" + , link = "https://doi.org/10.3390/jcm8040453" + } + , { author = "Chen, Cai, et al." + , title = "Association between Omega-3 Fatty Acids Consumption and the Risk of Type 2 Diabetes: A Meta-Analysis of Cohort Studies." + , journal = "Journal of Diabetes Investigation" + , year = "2017" + , link = "https://doi.org/10.1111/jdi.12614" + } + , { author = "Brown, Tracey J., et al." + , title = "Omega-3, Omega-6, and Total Dietary Polyunsaturated Fat for Prevention and Treatment of Type 2 Diabetes Mellitus: Systematic Review and Meta-Analysis of Randomised Controlled Trials." + , journal = "BMJ (Clinical Research Ed.)" + , year = "2019" + , link = "https://doi.org/10.1136/bmj.l4697" + } + , { author = "Santoro, Nicola, et al." + , title = "Oxidized Metabolites of Linoleic Acid as Biomarkers of Liver Injury in Nonalcoholic Steatohepatitis." + , journal = "Clinical Lipidology" + , year = "2013" + , link = "https://doi.org/10.2217/clp.13.39" + } + , { author = "Hojsak, Iva, and Sanja Kola膷ek." + , title = "Fat Overload Syndrome after the Rapid Infusion of SMOFlipid Emulsion." + , journal = "JPEN. Journal of Parenteral and Enteral Nutrition" + , year = "2014" + , link = "https://doi.org/10.1177/0148607113482001" + } + , { author = "Gura, Kathleen M., and Mark Puder." + , title = "Rapid Infusion of Fish Oil-Based Emulsion in Infants Does Not Appear to Be Associated with Fat Overload Syndrome." + , journal = "Nutrition in Clinical Practice: Official Publication of the American Society for Parenteral and Enteral Nutrition" + , year = "2010" + , link = "https://doi.org/10.1177/0884533610373770" + } + , { author = "Fell, Gillian L., et al." + , title = "Intravenous Lipid Emulsions in Parenteral Nutrition." + , journal = "Advances in Nutrition (Bethesda, Md.)" + , year = "2015" + , link = "https://doi.org/10.3945/an.115.009084" + } + , { author = "Clayton, P. T., et al." + , title = "The Role of Phytosterols in the Pathogenesis of Liver Complications of Pediatric Parenteral Nutrition." + , journal = "Nutrition (Burbank, Los Angeles County, Calif.)" + , year = "1998" + , link = "https://doi.org/10.1016/s0899-9007(97)00233-5" + } + , { author = "El Kasmi, Karim C., et al." + , title = "Phytosterols Promote Liver Injury and Kupffer Cell Activation in Parenteral Nutrition-Associated Liver Disease." + , journal = "Science Translational Medicine" + , year = "2013" + , link = "https://doi.org/10.1126/scitranslmed.3006898" + } + , { author = "Nehra, Deepika, et al." + , title = "A Comparison of 2 Intravenous Lipid Emulsions: Interim Analysis of a Randomized Controlled Trial." + , journal = "JPEN. Journal of Parenteral and Enteral Nutrition" + , year = "2014" + , link = "https://doi.org/10.1177/0148607113492549" + } + , { author = "Klek, Stanislaw, et al." + , title = "Four-Week Parenteral Nutrition Using a Third Generation Lipid Emulsion (SMOFlipid)--a Double-Blind, Randomised, Multicentre Study in Adults." + , journal = "Clinical Nutrition (Edinburgh, Scotland)" + , year = "2013" + , link = "https://doi.org/10.1016/j.clnu.2012.06.011" + } + , { author = "Van Name, Michelle A., et al." + , title = "A Low 蠅-6 to 蠅-3 PUFA Ratio (n-6:N-3 PUFA) Diet to Treat Fatty Liver Disease in Obese Youth." + , journal = "The Journal of Nutrition" + , year = "2020" + , link = "https://doi.org/10.1093/jn/nxaa183" + } + , { author = "Van Name, Michelle A., et al." + , title = "A Low 蠅-6 to 蠅-3 PUFA Ratio (n-6:N-3 PUFA) Diet to Treat Fatty Liver Disease in Obese Youth (Supplement)." + , journal = "The Journal of Nutrition" + , year = "2020" + , link = "https://pmc.ncbi.nlm.nih.gov/articles/instance/7467848/bin/nxaa183_supplemental_files.zip" + } + , { author = "Bjermo, Helena, et al." + , title = "Effects of N-6 PUFAs Compared with SFAs on Liver Fat, Lipoproteins, and Inflammation in Abdominal Obesity: A Randomized Controlled Trial." + , journal = "The American Journal of Clinical Nutrition" + , year = "2012" + , link = "https://doi.org/10.3945/ajcn.111.030114" + } + , { author = "Rosqvist, Fredrik, et al." + , title = "Overfeeding Polyunsaturated and Saturated Fat Causes Distinct Effects on Liver and Visceral Fat Accumulation in Humans." + , journal = "Diabetes" + , year = "2014" + , link = "https://doi.org/10.2337/db13-1622" + } + , { author = "Petit, J. M., et al." + , title = "Increased Erythrocytes N-3 and n-6 Polyunsaturated Fatty Acids Is Significantly Associated with a Lower Prevalence of Steatosis in Patients with Type 2 Diabetes." + , journal = "Clinical Nutrition (Edinburgh, Scotland)" + , year = "2012" + , link = "https://doi.org/10.1016/j.clnu.2011.12.007" + } + , { author = "Cheng, Yipeng, et al." + , title = "Associations between Dietary Nutrient Intakes and Hepatic Lipid Contents in NAFLD Patients Quantified by 1H-MRS and Dual-Echo MRI" + , journal = "Nutrients" + , year = "2016" + , link = "https://doi.org/10.3390/nu8090527" + } + , { author = "Wehmeyer, Malte H., et al." + , title = "Nonalcoholic Fatty Liver Disease Is Associated with Excessive Calorie Intake Rather than a Distinctive Dietary Pattern" + , journal = "Medicine" + , year = "2016" + , link = "https://doi.org/10.1097/MD.0000000000003887" + } + , { author = "Lourdudoss, Cecilia, et al." + , title = "Dietary Intake of Polyunsaturated Fatty Acids and Pain in Spite of Inflammatory Control Among Methotrexate-Treated Early Rheumatoid Arthritis Patients" + , journal = "Arthritis Care & Research" + , year = "2018" + , link = "https://doi.org/10.1002/acr.23245" + } + , { author = "Navarini, Luca, et al." + , title = "Polyunsaturated Fatty Acids: Any Role in Rheumatoid Arthritis?" + , journal = "Lipids in Health and Disease" + , year = "2017" + , link = "https://doi.org/10.1186/s12944-017-0586-3" + } + , { author = "Senftleber, Ninna K., et al." + , title = "Marine Oil Supplements for Arthritis Pain: A Systematic Review and Meta-Analysis of Randomized Trials" + , journal = "Nutrients" + , year = "2017" + , link = "https://doi.org/10.3390/nu9010042" + } + , { author = "Wang, Yuanyuan, et al." + , title = "Dietary Fatty Acid Intake Affects the Risk of Developing Bone Marrow Lesions in Healthy Middle-Aged Adults without Clinical Knee Osteoarthritis: A Prospective Cohort Study" + , journal = "Arthritis Research & Therapy" + , year = "2009" + , link = "https://doi.org/10.1186/ar2688" + } + , { author = "Leventhal, L. J., et al." + , title = "Treatment of Rheumatoid Arthritis with Blackcurrant Seed Oil" + , journal = "British Journal of Rheumatology" + , year = "1994" + , link = "https://doi.org/10.1093/rheumatology/33.9.847" + } + , { author = "Byars, M. L., et al." + , title = "Blackcurrant Seed Oil as a Source of Polyunsaturated Fatty Acids in the Treatment of Inflammatory Disease" + , journal = "Biochemical Society Transactions" + , year = "1992" + , link = "https://doi.org/10.1042/bst020139s" + } + , { author = "艩avikin, Katarina P., et al." + , title = "Variation in the Fatty-Acid Content in Seeds of Various Black, Red, and White Currant Varieties" + , journal = "Chemistry & Biodiversity" + , year = "2013" + , link = "https://doi.org/10.1002/cbdv.201200223" + } + , { author = "Watson, J., et al." + , title = "Cytokine and Prostaglandin Production by Monocytes of Volunteers and Rheumatoid Arthritis Patients Treated with Dietary Supplements of Blackcurrant Seed Oil" + , journal = "British Journal of Rheumatology" + , year = "1993" + , link = "https://doi.org/10.1093/rheumatology/32.12.1055" + } + , { author = "Timoszuk, Magdalena, et al." + , title = "Evening Primrose (Oenothera Biennis) Biological Activity Dependent on Chemical Composition" + , journal = "Antioxidants (Basel, Switzerland)" + , year = "2018" + , link = "https://doi.org/10.3390/antiox7080108" + } + , { author = "Brzeski, M., et al." + , title = "Evening Primrose Oil in Patients with Rheumatoid Arthritis and Side-Effects of Non-Steroidal Anti-Inflammatory Drugs" + , journal = "British Journal of Rheumatology" + , year = "1991" + , link = "https://doi.org/10.1093/rheumatology/30.5.370" + } + , { author = "Horrobin, D. F." + , title = "Effects of Evening Primrose Oil in Rheumatoid Arthritis" + , journal = "Annals of the Rheumatic Diseases" + , year = "1989" + , link = "https://doi.org/10.1136/ard.48.11.965" + } + , { author = "Belch, J. J., et al." + , title = "Effects of Altering Dietary Essential Fatty Acids on Requirements for Non-Steroidal Anti-Inflammatory Drugs in Patients with Rheumatoid Arthritis: A Double Blind Placebo Controlled Study" + , journal = "Annals of the Rheumatic Diseases" + , year = "1988" + , link = "https://doi.org/10.1136/ard.47.2.96" + } + , { author = "Volker, D., et al." + , title = "Efficacy of Fish Oil Concentrate in the Treatment of Rheumatoid Arthritis" + , journal = "The Journal of Rheumatology" + , year = "2000" + , link = "https://doi.org/10.1136/ard.47.2.96" + } + , { author = "Essouiri, Jamila, et al." + , title = "Effectiveness of Argan Oil Consumption on Knee Osteoarthritis Symptoms: A Randomized Controlled Clinical Trial" + , journal = "Current Rheumatology Reviews" + , year = "2017" + , link = "https://doi.org/10.2174/1573397113666170710123031" + } + , { author = "Khallouki, F., et al." + , title = "Consumption of Argan Oil (Morocco) with Its Unique Profile of Fatty Acids, Tocopherols, Squalene, Sterols and Phenolic Compounds Should Confer Valuable Cancer Chemopreventive Effects" + , journal = "European Journal of Cancer Prevention: The Official Journal of the European Cancer Prevention Organisation (ECP)" + , year = "2003" + , link = "https://doi.org/10.1097/00008469-200302000-00011" + } + , { author = "Tuna, Halil Ibrahim, et al." + , title = "Investigation of the Effect of Black Cumin Oil on Pain in Osteoarthritis Geriatric Individuals" + , journal = "Complementary Therapies in Clinical Practice" + , year = "2018" + , link = "https://doi.org/10.1016/j.ctcp.2018.03.013" + } + , { author = "Gorczyca, D., et al." + , title = "Serum Levels of N-3 and n-6 Polyunsaturated Fatty Acids in Patients with Systemic Lupus Erythematosus and Their Association with Disease Activity: A Pilot Study" + , journal = "Scandinavian Journal of Rheumatology" + , year = "2021" + , link = "https://doi.org/10.1080/03009742.2021.1923183" + } + , { author = "Charoenwoodhipong, Prae, et al." + , title = "Dietary Omega Polyunsaturated Fatty Acid Intake and Patient-Reported Outcomes in Systemic Lupus Erythematosus: The Michigan Lupus Epidemiology and Surveillance Program" + , journal = "Arthritis Care & Research" + , year = "2020" + , link = "https://doi.org/10.1002/acr.23925" + } + , { author = "Lourdudoss, Cecilia, et al." + , title = "The Association between Diet and Glucocorticoid Treatment in Patients with SLE" + , journal = "Lupus Science & Medicine" + , year = "2016" + , link = "https://doi.org/10.1136/lupus-2015-000135" + } + , { author = "Vordenb盲umen, Stefan, et al." + , title = "Erythrocyte Membrane Polyunsaturated Fatty Acid Profiles Are Associated with Systemic Inflammation and Fish Consumption in Systemic Lupus Erythematosus: A Cross-Sectional Study" + , journal = "Lupus" + , year = "2020" + , link = "https://doi.org/10.1177/0961203320912326" + } + , { author = "Pocovi-Gerardino, G., et al." + , title = "Diet Quality and High-Sensitivity C-Reactive Protein in Patients With Systemic Lupus Erythematosus" + , journal = "Biological Research for Nursing" + , year = "2019" + , link = "https://doi.org/10.1177/1099800418803176" + } + , { author = "Lourdudoss, Cecilia, et al." + , title = "The Association between Diet and Glucocorticoid Treatment in Patients with SLE" + , journal = "Lupus Science & Medicine" + , year = "2016" + , link = "https://doi.org/10.1136/lupus-2015-000135" + } + , { author = "Shin, Tae Hwan, et al." + , title = "Analysis of the Free Fatty Acid Metabolome in the Plasma of Patients with Systemic Lupus Erythematosus and Fever" + , journal = "Metabolomics: Official Journal of the Metabolomic Society" + , year = "2017" + , link = "https://doi.org/10.1007/s11306-017-1308-6" + } + , { author = "Shah, Dilip, et al." + , title = "Oxidative Stress and Its Biomarkers in Systemic Lupus Erythematosus" + , journal = "Journal of Biomedical Science" + , year = "2014" + , link = "https://doi.org/10.1186/1423-0127-21-23" + } + , { author = "Tam, Lai S., et al." + , title = "Effects of Vitamins C and E on Oxidative Stress Markers and Endothelial Function in Patients with Systemic Lupus Erythematosus: A Double Blind, Placebo Controlled Pilot Study" + , journal = "The Journal of Rheumatology" + , year = "2005" + , link = "https://doi.org/10.1136/ard.47.2.96" + } + , { author = "Maeshima, Etsuko, et al." + , title = "The Efficacy of Vitamin E against Oxidative Damage and Autoantibody Production in Systemic Lupus Erythematosus: A Preliminary Study" + , journal = "Clinical Rheumatology" + , year = "2007" + , link = "https://doi.org/10.1007/s10067-006-0477-x" + } + , { author = "Bae, Sang-Cheol, et al." + , title = "Impaired Antioxidant Status and Decreased Dietary Intake of Antioxidants in Patients with Systemic Lupus Erythematosus" + , journal = "Rheumatology International" + , year = "2002" + , link = "https://doi.org/10.1007/s00296-002-0241-8" + } + , { author = "Minami, Yuko, et al." + , title = "Diet and Systemic Lupus Erythematosus: A 4 Year Prospective Study of Japanese Patients" + , journal = "The Journal of Rheumatology" + , year = "2003" + , link = "https://doi.org/10.1136/ard.48.11.965" + } + , { author = "Barbhaiya, Medha, et al." + , title = "Association of Dietary Quality With Risk of Incident Systemic Lupus Erythematosus in the Nurses鈥 Health Study and Nurses鈥 Health Study II" + , journal = "Arthritis Care & Research" + , year = "2021" + , link = "https://doi.org/10.1002/acr.24443" + } + , { author = "Tedeschi, S. K., et al." + , title = "Dietary Patterns and Risk of Systemic Lupus Erythematosus in Women" + , journal = "Lupus" + , year = "2020" + , link = "https://doi.org/10.1177/0961203319888791" + } + , { author = "Zhao, Jie V., and C. Mary Schooling" + , title = "Role of Linoleic Acid in Autoimmune Disorders: A Mendelian Randomisation Study" + , journal = "Annals of the Rheumatic Diseases" + , year = "2019" + , link = "https://doi.org/10.1136/annrheumdis-2018-214519" + } + , { author = "Knobbe, Chris A., and Marija Stojanoska" + , title = "The 鈥楧isplacing Foods of Modern Commerce鈥 Are the Primary and Proximate Cause of Age-Related Macular Degeneration: A Unifying Singular Hypothesis" + , journal = "Medical Hypotheses" + , year = "2017" + , link = "https://doi.org/10.1016/j.mehy.2017.10.010" + } + , { author = "Knobbe, Chris a." + , title = "Ancestral Dietary Strategy to Prevent and Treat Macular Degeneration: Full-Color Hardcover Edition" + , journal = "Cure AMD Foundation" + , year = "2019" + , link = "https://www.cureamdfoundation.org" + } + , { author = "Delcourt, C., et al." + , title = "Dietary Fat and the Risk of Age-Related Maculopathy: The POLANUT Study" + , journal = "European Journal of Clinical Nutrition" + , year = "2007" + , link = "https://doi.org/10.1038/sj.ejcn.1602685" + } + , { author = "Seddon, Johanna M., et al." + , title = "Progression of Age-Related Macular Degeneration: Association with Dietary Fat, Transunsaturated Fat, Nuts, and Fish Intake" + , journal = "Archives of Ophthalmology (Chicago, Ill.: 1960)" + , year = "2003" + , link = "https://doi.org/10.1001/archopht.121.12.1728" + } + , { author = "Chong, Elaine W. T., et al." + , title = "Fat Consumption and Its Association with Age-Related Macular Degeneration" + , journal = "Archives of Ophthalmology (Chicago, Ill.: 1960)" + , year = "2009" + , link = "https://doi.org/10.1001/archophthalmol.2009.60" + } + , { author = "Chua, Brian, et al." + , title = "Dietary Fatty Acids and the 5-Year Incidence of Age-Related Maculopathy" + , journal = "Archives of Ophthalmology (Chicago, Ill.: 1960)" + , year = "2006" + , link = "https://doi.org/10.1001/archophthalmol.124.7.981" + } + , { author = "Cho, E., et al." + , title = "Prospective Study of Dietary Fat and the Risk of Age-Related Macular Degeneration" + , journal = "The American Journal of Clinical Nutrition" + , year = "2001" + , link = "https://doi.org/10.1093/ajcn/73.2.209" + } + , { author = "Tan, Jennifer S. L., et al." + , title = "Dietary Fatty Acids and the 10-Year Incidence of Age-Related Macular Degeneration: The Blue Mountains Eye Study" + , journal = "Archives of Ophthalmology (Chicago, Ill.: 1960)" + , year = "2009" + , link = "https://doi.org/10.1001/archophthalmol.2009.76" + } + , { author = "Parekh, Niyati, et al." + , title = "Association between Dietary Fat Intake and Age-Related Macular Degeneration in the Carotenoids in Age-Related Eye Disease Study (CAREDS): An Ancillary Study of the Women鈥檚 Health Initiative" + , journal = "Archives of Ophthalmology (Chicago, Ill.: 1960)" + , year = "2009" + , link = "https://doi.org/10.1001/archophthalmol.2009.130" + } + , { author = "Sasaki, Mariko, et al." + , title = "Dietary Saturated Fatty Acid Intake and Early Age-Related Macular Degeneration in a Japanese Population" + , journal = "Investigative Ophthalmology & Visual Science" + , year = "2020" + , link = "https://doi.org/10.1167/iovs.61.3.23" + } + , { author = "Christen, William G., et al." + , title = "Dietary 蠅-3 Fatty Acid and Fish Intake and Incident Age-Related Macular Degeneration in Women" + , journal = "Archives of Ophthalmology (Chicago, Ill.: 1960)" + , year = "2011" + , link = "https://doi.org/10.1001/archophthalmol.2011.34" + } + , { author = "Mares-Perlman, J. A., et al." + , title = "Dietary Fat and Age-Related Maculopathy" + , journal = "Archives of Ophthalmology (Chicago, Ill.: 1960)" + , year = "1995" + , link = "https://doi.org/10.1001/archopht.1995.01100060069034" + } + , { author = "Ma, Le, et al." + , title = "Lutein and Zeaxanthin Intake and the Risk of Age-Related Macular Degeneration: A Systematic Review and Meta-Analysis" + , journal = "The British Journal of Nutrition" + , year = "2012" + , link = "https://doi.org/10.1017/S0007114511004260" + } + , { author = "Chong, Elaine W. T., et al." + , title = "Dietary Omega-3 Fatty Acid and Fish Intake in the Primary Prevention of Age-Related Macular Degeneration: A Systematic Review and Meta-Analysis" + , journal = "Archives of Ophthalmology (Chicago, Ill.: 1960)" + , year = "2008" + , link = "https://doi.org/10.1001/archopht.126.6.826" + } + , { author = "Wang, Kai, et al." + , title = "Causal Effects of N-6 Polyunsaturated Fatty Acids on Age-Related Macular Degeneration: A Mendelian Randomization Study" + , journal = "The Journal of Clinical Endocrinology and Metabolism" + , year = "2021" + , link = "https://doi.org/10.1210/clinem/dgab338" + } + , { author = "Laitinen, M. H., et al." + , title = "Fat Intake at Midlife and Risk of Dementia and Alzheimer鈥檚 Disease: A Population-Based Study" + , journal = "Dementia and Geriatric Cognitive Disorders" + , year = "2006" + , link = "https://doi.org/10.1159/000093478" + } + , { author = "Morris, Martha Clare, et al." + , title = "Dietary Fats and the Risk of Incident Alzheimer Disease" + , journal = "Archives of Neurology" + , year = "2003" + , link = "https://doi.org/10.1001/archneur.60.2.194" + } + , { author = "Luchsinger, Jose A., et al." + , title = "Caloric Intake and the Risk of Alzheimer Disease" + , journal = "Archives of Neurology" + , year = "2002" + , link = "https://doi.org/10.1001/archneur.59.8.1258" + } + , { author = "R枚nnemaa, E., et al." + , title = "Serum Fatty-Acid Composition and the Risk of Alzheimer鈥檚 Disease: A Longitudinal Population-Based Study" + , journal = "European Journal of Clinical Nutrition" + , year = "2012" + , link = "https://doi.org/10.1038/ejcn.2012.63" + } + , { author = "Beydoun, May A., et al." + , title = "Plasma N-3 Fatty Acids and the Risk of Cognitive Decline in Older Adults: The Atherosclerosis Risk in Communities Study" + , journal = "The American Journal of Clinical Nutrition" + , year = "2007" + , link = "https://doi.org/10.1093/ajcn/85.4.1103" + } + , { author = "Gonz谩lez, Sonia, et al." + , title = "The Relationship between Dietary Lipids and Cognitive Performance in an Elderly Population" + , journal = "International Journal of Food Sciences and Nutrition" + , year = "2010" + , link = "https://doi.org/10.3109/09637480903348098" + } + , { author = "Kalmijn, S., et al." + , title = "Polyunsaturated Fatty Acids, Antioxidants, and Cognitive Function in Very Old Men" + , journal = "American Journal of Epidemiology" + , year = "1997" + , link = "https://doi.org/10.1093/oxfordjournals.aje.a009029" + } + , { author = "Vercambre, Marie-No毛l, et al." + , title = "Long-Term Association of Food and Nutrient Intakes with Cognitive and Functional Decline: A 13-Year Follow-up Study of Elderly French Women" + , journal = "The British Journal of Nutrition" + , year = "2009" + , link = "https://doi.org/10.1017/S0007114508201959" + } + , { author = "Nozaki, Shoko, et al." + , title = "Association Between Dietary Fish and PUFA Intake in Midlife and Dementia in Later Life: The JPHC Saku Mental Health Study" + , journal = "Journal of Alzheimer鈥檚 Disease: JAD" + , year = "2021" + , link = "https://doi.org/10.3233/JAD-191313" + } + , { author = "Heude, Barbara, et al." + , title = "Cognitive Decline and Fatty Acid Composition of Erythrocyte Membranes--The EVA Study" + , journal = "The American Journal of Clinical Nutrition" + , year = "2003" + , link = "https://doi.org/10.1093/ajcn/77.4.803" + } + , { author = "Samieri, C茅cilia, et al." + , title = "Low Plasma Eicosapentaenoic Acid and Depressive Symptomatology Are Independent Predictors of Dementia Risk" + , journal = "The American Journal of Clinical Nutrition" + , year = "2008" + , link = "https://doi.org/10.1093/ajcn/88.3.714" + } + , { author = "Okereke, Olivia I., et al." + , title = "Dietary Fat Types and 4-Year Cognitive Change in Community-Dwelling Older Women" + , journal = "Annals of Neurology" + , year = "2012" + , link = "https://doi.org/10.1002/ana.23593" + } + , { author = "Solfrizzi, Vincenzo, et al." + , title = "Dietary Fatty Acids Intakes and Rate of Mild Cognitive Impairment. The Italian Longitudinal Study on Aging" + , journal = "Experimental Gerontology" + , year = "2006" + , link = "https://doi.org/10.1016/j.exger.2006.03.017" + } + , { author = "Roberts, Rosebud O., et al." + , title = "Relative Intake of Macronutrients Impacts Risk of Mild Cognitive Impairment or Dementia" + , journal = "Journal of Alzheimer鈥檚 Disease: JAD" + , year = "2012" + , link = "https://doi.org/10.3233/JAD-2012-120862" + } + , { author = "Laitinen, M. H., et al." + , title = "Fat Intake at Midlife and Risk of Dementia and Alzheimer鈥檚 Disease: A Population-Based Study" + , journal = "Dementia and Geriatric Cognitive Disorders" + , year = "2006" + , link = "https://doi.org/10.1159/000093478" + } + , { author = "Zietemann, Vera, et al." + , title = "Validation of the Telephone Interview of Cognitive Status and Telephone Montreal Cognitive Assessment Against Detailed Cognitive Testing and Clinical Diagnosis of Mild Cognitive Impairment After Stroke" + , journal = "Stroke" + , year = "2017" + , link = "https://doi.org/10.1161/STROKEAHA.117.017519" + } + , { author = "Cao, G. Y., et al." + , title = "Dietary Fat Intake and Cognitive Function among Older Populations: A Systematic Review and Meta-Analysis" + , journal = "The Journal of Prevention of Alzheimer鈥檚 Disease" + , year = "2019" + , link = "https://doi.org/10.14283/jpad.2019.9" + } + , { author = "Ruan, Yue, et al." + , title = "Dietary Fat Intake and Risk of Alzheimer鈥檚 Disease and Dementia: A Meta-Analysis of Cohort Studies" + , journal = "Current Alzheimer Research" + , year = "2018" + , link = "https://doi.org/10.2174/1567205015666180427142350" + } + , { author = "Junker, R., et al." + , title = "Effects of Diets Containing Olive Oil, Sunflower Oil, or Rapeseed Oil on the Hemostatic System" + , journal = "Thrombosis and Haemostasis" + , year = "2001" + , link = "" + } + , { author = "Freese, Riitta, et al." + , title = "No Difference in Platelet Activation or Inflammation Markers after Diets Rich or Poor in Vegetables, Berries and Apple in Healthy Subjects" + , journal = "European Journal of Nutrition" + , year = "2004" + , link = "https://doi.org/10.1007/s00394-004-0456-4" + } + , { author = "Vafeiadou, Katerina, et al." + , title = "Replacement of Saturated with Unsaturated Fats Had No Impact on Vascular Function but Beneficial Effects on Lipid Biomarkers, E-Selectin, and Blood Pressure: Results from the Randomized, Controlled Dietary Intervention and VAScular Function (DIVAS) Study" + , journal = "The American Journal of Clinical Nutrition" + , year = "2015" + , link = "https://doi.org/10.3945/ajcn.114.097089" + } + , { author = "Iggman, David, et al." + , title = "Role of Dietary Fats in Modulating Cardiometabolic Risk during Moderate Weight Gain: A Randomized Double-Blind Overfeeding Trial (LIPOGAIN Study)" + , journal = "Journal of the American Heart Association" + , year = "2014" + , link = "https://doi.org/10.1161/JAHA.114.001095" + } + , { author = "Hozo, Stela Pudar, et al." + , title = "Estimating the Mean and Variance from the Median, Range, and the Size of a Sample" + , journal = "BMC Medical Research Methodology" + , year = "2005" + , link = "https://doi.org/10.1186/1471-2288-5-13" + } + , { author = "Freese, R., et al." + , title = "No Effect on Oxidative Stress Biomarkers by Modified Intakes of Polyunsaturated Fatty Acids or Vegetables and Fruit" + , journal = "European Journal of Clinical Nutrition" + , year = "2008" + , link = "https://doi.org/10.1038/sj.ejcn.1602865" + } + , { author = "Jenkinson, A., et al." + , title = "Dietary Intakes of Polyunsaturated Fatty Acids and Indices of Oxidative Stress in Human Volunteers" + , journal = "European Journal of Clinical Nutrition" + , year = "1999" + , link = "https://doi.org/10.1038/sj.ejcn.1600783" + } + , { author = "de Kok, T. M. C. M., et al." + , title = "Analysis of Oxidative DNA Damage after Human Dietary Supplementation with Linoleic Acid" + , journal = "Food and Chemical Toxicology: An International Journal Published for the British Industrial Biological Research Association" + , year = "2003" + , link = "https://doi.org/10.1016/s0278-6915(02)00237-5" + } + , { author = "S枚dergren, E., et al." + , title = "A Diet Containing Rapeseed Oil-Based Fats Does Not Increase Lipid Peroxidation in Humans When Compared to a Diet Rich in Saturated Fatty Acids" + , journal = "European Journal of Clinical Nutrition" + , year = "2001" + , link = "https://doi.org/10.1038/sj.ejcn.1601246" + } + , { author = "Parfitt, V. J., et al." + , title = "Effects of High Monounsaturated and Polyunsaturated Fat Diets on Plasma Lipoproteins and Lipid Peroxidation in Type 2 Diabetes Mellitus" + , journal = "Diabetic Medicine: A Journal of the British Diabetic Association" + , year = "1994" + , link = "https://doi.org/10.1111/j.1464-5491.1994.tb00235.x" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/Shenangians.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/Shenangians.elm new file mode 100755 index 0000000..5dcee17 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/Shenangians.elm @@ -0,0 +1,260 @@ +module Config.Pages.Blogs.MainBlog.Shenangians exposing (articleShenanigans) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleShenanigans : BlogArticle +articleShenanigans = + { articleName = "Cuckery 101: Cate Shanahan's Masterclass in Debate Dodging" + , articleLink = Path.toString Path.Blog_Shenanigans + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = True + , articleImage = "shenanigans" + , articlePublished = "Jun 6, 2024" + , articleBody = """ +It's basically a sound induction at this point that anti-seed oil clowns won't debate me. My comprehensive, 15,000+ word, 200+ reference [article](https://www.the-nutrivore.com/post/a-comprehensive-rebuttal-to-seed-oil-sophistry) on seed oils is almost three years old, and since it was published, nobody from the opposition has offered even a shred of substantive criticism toward it. A few have tried, but ultimately their efforts were akin to taking halfhearted swats at low-hanging fruit and ultimately failing, rather than actually meaningfully engaging with my core findings and the arguments underpinning my interpretations. They really are just a pathetically weak lot of human beings. + +At the risk of sounding self-aggrandizing, I think I have a pretty good idea why these people won't debate me鈥擨 have the tools to dismantle them. I'm well-versed on the relevant empirics, I'm intimately familiar with several formal systems of reasoning, I use semantic analysis to make sure my interlocutor's term meanings and usages are understood and remain consistent, I have decent knowledge of philosophy and, more specifically, scientific epistemology, and I deploy an algorithmic debate strategy. I am essentially kryptonite to anti-seed oil quacks. That's probably why they never show up to debate. + +My most recent exposure to anti-seed oil cuckery was so profoundly egregious that it warranted writing about it here on my main blog. This extra special example of subhuman behavior comes from Cate Shanahan herself, or as I like to call her, Cate Shenanigans. If you want more info on Cate Shenanigans' history of debate-dodging, I have compiled an inventory [here](https://www.the-nutrivore.com/dodgers). For now, let me start from the beginning. + +Nearly a year ago, I was [invited](https://x.com/zbitter/status/1668413822388916224) by Zach Bitter, via X, to debate the proposition "seed oils are not a significant, independent concern for public health" on his podcast with a willing interlocutor. Cate Shenanigans was [tagged](https://x.com/NTxLoneRider/status/1673811898645598211) in this post but did not reply. In fact, every single high-profile seed oil skeptic who responded to the thread declined my invite, while others, like Cate Shenanigans, were pinged and never replied. The nutrition debate arena was a ghost town that day. Not an ounce of courage was to be found among the anti-seed oil clowns. + +# THE DEBATE INVITATION + +However, nearly a year after that, Cate Shenanigans put out a general [invite](https://x.com/drcateshanahan/status/1773836787196346592) to debate. Even going so far as to [suggest](https://x.com/drcateshanahan/status/1774490576362062311) that I was scared to face her, to which I replied. Shortly after, she actually decided to engage and [replied](https://x.com/drcateshanahan/status/1774681584907559220) to me, encouraging me to DM her (presumably to work out the details of the debate). After some minor miscommunications, she instructed me in another [reply](https://x.com/drcateshanahan/status/1774830896006185446) to contact her via email. I did. I never received a reply. Some time passed, and Zach Bitter once again started [prodding](https://x.com/zbitter/status/1778171569967190413) at Cate Shenanigans about the status of her debate invitation to me (presumably with the intention of once again offering to host it). A day later, after a brief back and forth, Cate Shenanigans [replied](https://x.com/drcateshanahan/status/1778430104617603232) with what seemed like an alteration in the conditions to debate. At least this is how I interpreted it, as someone who has an interest in her arguments. I [pressed](https://x.com/upRootNutrition/status/1778456234078662984) her for clarification, and even quoted her in a [post](https://x.com/upRootNutrition/status/1778490825124552875) later that day about it, and received no reply. But not before she made her own [post](https://x.com/drcateshanahan/status/1778483241755787308) in a different thread, which I didn't initially see, wherein she withdrew from the debate that day. What a bizarre series of behaviours. + +# THE EMAIL EXCHANGE + +Fast forward to June 2nd, 2024, and I was DMed by another third party looking to coordinate yet another debate between Cate Shenanigans and myself. I won't reveal this person's identity and throw this individual under the bus, because they were nothing but cordial and respectful to me. After a short exchange, I was CC'd into an email chain with Cate Shenanigans, and this is where the fun begins. But rather than narrate the exchange, I'll just post it here: + +**Host:** + +> Hi cate +> +> Nick, CCed, would be down to do the seed oil debate for my show鈥 Are you game? If so my team, CCed, can help to arrange鈥 + +**Nick:** + +> If the debate proposition is clear and I disagree with it, then absolutely. I generally won't debate anything vague or normative, though. I'll happily debate a proposition like "seed oil consumption increases the risk of heart disease", for example. + +**Shenanigans:** + +> HI Host +> +> Someone else wanted to set up a debate on their podcast between myself and Nick. But what was proposed looked more like just an unstructured argument, and that is not something I鈥檓 interested in. I don鈥檛 know if the disconnect was with that host or with Nick鈥.? So I鈥檇 like to make sure we鈥檙e all on the same page about what a debate is. +> +> A debate starts with an assertion and the two participants who are debating take opposing sides. +> +> So if Nick wants to debate, then the assertion could be 鈥淩BD vegetable oils are part of a healthy diet.鈥 +> +> Sound good? + +**Host:** + +> What do you think Nick? + +**Nick:** + +> First of all, it's not just that someone else has previously wanted to set up a debate between Cate and myself. Cate herself put out what I (quite reasonably) interpreted as a general invitation to those challenging her positions, which can be found [here](https://x.com/drcateshanahan/status/1773836787196346592), on March 29th. I accepted the invite, to which Cate replied on March 31st with an invitation to me to DM her (presumably to set up a debate), which can be found [here](https://x.com/drcateshanahan/status/1774681584907559220). I responded via email on April 1st, after she invited me to do so [here](https://x.com/drcateshanahan/status/1774830896006185446), on the same day. There was no third party present at this time. This was Cate clearly inviting me, personally, to debate. Just to be clear about the facts. +> +> Furthermore, while we're being clear about the facts, Cate also presumably withdrew from the debate for what would be completely bizarre reasons that are ultimately orthogonal to the debate itself, which can be found [here](https://x.com/drcateshanahan/status/1778483241755787308). But, not before implying that she had altered the necessary conditions for a debate, which can be found [here](https://x.com/upRootNutrition/status/1778490825124552875). Whatever the case, declining to debate someone on an empirical position because they disagree with you on an unrelated normative position is **beyond** strange, and honestly it was so outlandish that I just flagged it as a blatant excuse not to debate. I hope, Host, you can also see that this is the most reasonable interpretation of her behaviour. +> +> Now that that's out of the way and clarified, I'd be happy to debate Cate on a number of propositions. So long as she's done making excuses. Specifically, I might want to debate against [this](https://x.com/drcateshanahan/status/1516786219841073153) proposition: +> +> "current levels of seed oil consumption are the main driver of the obesity and chronic disease epidemics that now represent an existential threat to human populations around the world. +> +> Out of all of her claims, this could easily be one of the most egregious, depending on how the semantics are unpacked. So, I'd need some of those semantics clarified. Cate, when you say seed oils are the main driver, do you mean that in a counterfactual scenario wherein all the seed oils in the food supply were replaced with low-PUFA alternatives like butter or tallow, those same diseases epidemics would be less likely to occur? If yes, I disagree with the proposition and will happily debate it. If not, what do you mean? +> +> As for the stuff about what the debate would be. I typically don't do "structured" debates in the traditional sense. They seem closer to theatrics than debates, with time limits and scheduled topic shifts, opening statements, closing statements, etc. I prefer a linear, continuous Socratic debate format where the truth value of a proposition can be scrutinized to completion with no get-out-of-jail free cards granted by the clock. If it takes many hours to reach a concession, so be it. Other formats typically just make sophistry and dodging easier to get away with, because one party can just filibuster until the clock runs out. +> +> Also, Cate, my debate style is far from unstructured. My debate algorithm can be found [here](https://drive.google.com/file/d/1QQaN6HRwzp3kY2DAcnHVBxeX6jBhrvkw/view). So everyone knows what to expect of me. No rational person would look at this and conclude that my approach to debate is unstructured. I just refuse to debate with my hands tied behind my back, or debate under conditions where the proposition can't be scrutinized to completion. + +**Host:** + +> Thanks Nick! +> Cate, you game to schedule? + +**Shenanigans:** + +> Dear Nick and Host, +> +> Nick, my tweet "sure I鈥檒l take all comers,鈥 was a casual proposition subject to agreeing on further details, which we have yet to do. +> +> Host, from Nick's email it looks like he wants to argue against a primary thesis of my book, without having read my book. That doesn鈥檛 seem like a debate to me.\u{00A0} +> +> In Dark Calories\u{00A0}I lay out the groundwork to support my claims across multiple chapters, each with scores of scientific references to support the arguments I make in the book. I can鈥檛 skip that information and jump right into a debate on my conclusions.\u{00A0} +> +> Maybe an analogy will help, here. Let鈥檚 say, hypothetically, that after publishing his theory of relativity, Einstein announced in a public forum 鈥淗ey everyone I think E=MC squared. Read my paper for supporting arguments." And then, someone wanted to debate his paper without having read it. Einstein would have been in a position to have to spell out many details of his complex thesis, including technical information that would probably not be interesting to a lay audience. (Not when presented in debate format. A good documentarian or science writer would be able to make it interesting, however.) In order to 鈥渨in鈥 the debate, Einstein may even have had to defend the veracity of fundamental principles of physics. That would take the form of a lecture, or a series of lectures. That鈥檚 not a debate. It鈥檚 a college course. +> +> Therefore, I鈥檝e proposed we debate this: 鈥淰egetable oils are heart healthy.鈥 After all, that is what the AHA claims. It鈥檚 also what docctors learn, and it is influencing public policy, what American farmers grow, and what every child and adult eats. It鈥檚 an important topic that merits debate. I would argue against and Nick would argue for. +> +> Nick, are you willing to do that? + +**Host:** + +> I love that proposition 鈥淰egetable oils are heart healthy.鈥 +> +> What do u think Nick? + +**Nick:** + +> Just ignoring the fact that, in a blatant display of unbridled narcissism, Cate has unabashedly compared herself to Einstein, and her work to Einstein's theory of relativity, I'd like to ask Cate a few questions: +> +> 1. If I read your book, Dark Calories, will you debate the proposition I suggested (provided you actually unpack your semantics in a way that leads me to disagree with it)? If yes, surely you'd be willing to provide me with a free PDF of Dark Calories for me to scrutinize, no? +> +> 2. If you wish to debate what I believe on the subject, surely you've done me the likewise courtesy of reading my [article](https://www.the-nutrivore.com/post/a-comprehensive-rebuttal-to-seed-oil-sophistry) on the subject, right? If yes, why did you not suggest a proposition directly from my work? +> +> I also have some further objections to Cate's reasoning. Unlike Einstein's theories and models, the predictions of which could only be confirmed many decades later (if not a century later in some cases), Cate's thesis has been tested (and ultimately falsified with respect to human outcome data), which is why the debate would likely lead heavily into empirics and not require a whole book's worth of lectures on fundamentals. So no, I don't need to read her book to show that the proposition is false. Her reasoning here is ridiculous. +> +> Respectfully, Host and Cate, "vegetable oils are heart healthy" is an awful proposition, for a number of reasons: +> +> 1. It's not my proposition. +> 2. I don't represent the AHA. +> 3. I don't even care what the AHA says about seed oils. +> 4. I don't even know what it means because it's so semantically vague. +> 5. I can think and reason for myself and can defend my own propositions, thank you. +> +> How about we narrow the scope of the proposition I suggested down to a single disease? Since Cate quantifies the detrimental effects of seed oils over the entire scope of chronic diseases that qualify as epidemics, it is entailed logically that we could choose any disease within that scope. So, how about we meet half way on the subject and debate this proposition: +> +> "current levels of seed oil consumption are the main driver of heart disease." +> +> To the degree that Cate affirms that heart disease is an epidemic, she should affirm that the proposition is true. I affirm that the proposition is false. So, we simply exchange the relevant empirics and have the debate. EZPZ. + +**Shenanigans:** + +> Dear Host and Nick, +> +> I am interested in a debate on the topic I proposed. But I feel this particular email chain is no longer constructive.\u{00A0} +> +> Resorting to character attacks during what should be a civil conversation is outside the realm of what I consider acceptable discourse. +> +> Respectfully, +> Cate + +**Nick:** + +> You've attacked my character on multiple occasions, Cate. I don't care about that. Let's just discuss the arguments, and hammer out a path toward a productive debate. +> +> It's also ridiculous to imply that I'm not contributing productively to the conversation. I literally suggested a proposition that seems to satisfy us both. If I've failed to do that, please explain how so I can improve upon further suggestions. +> +> Just give me a yay or nay, Cate. I don't want to waste my time if you're not interested in actually defending your views or answering any clarifying questions. + +**Shenanigans:** + +> Nick, +> +> As I said two emails ago, because most people, including you, are not familiar with the scientific underpinnings of my work I would first need to explain them, and that is not a debate. +> +> What I proposed is a debate. If you are not interested in that debate then I believe we have reached the conclusion of this discussion. +> +> Best wishes to you. + +**Nick:** + +> And I explained to you how that's a dodge. Again, I don't need a lecture on the theoretical underpinnings when the predictions of the hypothesis have been tested and there is tons of empirical data on it. We only need to have a discussion about the empirics that test the hypothesis' fruitfulness, not the theoretical underpinnings. Insisting that I read your book is just filibustering. +> +> But hey, I'm still super curious to hear the answer to this question that I already asked you. If I were to read your book, would you debate the prop? Yes or no. If yes, then would you be willing to supply me with a free PDF of your book as a good faith gesture that you're interested in having your work scrutinized? Yes or no. +> +> I'm likewise super curious to hear the answer to this further question that I also already asked you. If you instead want to debate my beliefs, have you paid me the likewise courtesy of reading my work? Yes or no. If yes, then why haven't you picked a prop that has been extracted from my work directly? Why in the world do you want me to defend the AHA's prop and not a prop of my own? + +**Shenanigans:** + +> Nick I am responding to your questions and only your questions and I hope that can be the end of it. +> +> "And I explained to you how that's a dodge. Again, I don't need a lecture on the theoretical underpinnings when the predictions of the hypothesis have been tested and there is tons of empirical data on it. We only need to have a discussion about the empirics that test the hypothesis' fruitfulness, not the theoretical underpinnings. Insisting that I read your book is just filibustering. +> +> But hey, I'm still super curious to hear the answer to this question that I already asked you. If I were to read your book, would you debate the prop? Yes or no." +> +> No. For reasons I explained. Just because you鈥檝e read the book does not mean the audience has and I will still be in the position to essentially give a lecture on the topics in my books. Its simply not suitable for normal debate format. Furthermore, I鈥檓 not interested in debating someone who thinks familiarizing himself with the basic underpinnings of the topic being debated is optional. +> +> "If yes, then would you be willing to supply me with a free PDF of your book as a good faith gesture that you're interested in having your work scrutinized? Yes or no. +> +> N/A +> +> "I'm likewise super curious to hear the answer to this further question that I also already asked you. If you instead want to debate my beliefs, have you paid me the likewise courtesy of reading my work? +> +> I am familiar with your thoughts. You cite the same type of evidence that the AHA uses to support its heart healthy claim. +> +> "Yes or no. If yes, then why haven't you picked a prop that has been extracted from my work directly? +> +> Not all propositions are equally interesting. I want to debate something interesting. +> +> "Why in the world do you want me to defend the AHA's prop and not a prop of my own? +> +> See above. Additionally, keep in mind that I did not bring you into this conversation. + +**Nick:** + +> So basically you're just dodging. Got it. +> +> Before we killscreen the entire enterprise, I would like one more answer to a question, because it might provide for a way forward. With respect to the AHA prop that you bizarrely want me to defend, what does it mean to say that seed oils are heart healthy? For example, does that mean that seed oils decrease the risk of heart disease? +> +> Because if that prop cashes out into a prop that I'd be willing to defend, then I don't see a reason why we couldn't debate it. If it means what I think it means, it'll just lead into the exact same empirical debate that you're currently dodging, so it makes no difference to me. + +**Host's Producer:** + +> Hi Nick and Cate, +> +> Host's Producer here; I'm the producer at [redacted]. Host and I agreed that we would like to conclude this discussion and explore other debate topics. The tone of the email discourse is not what we had in mind for our debut episode of this new podcast. +> +> We appreciate your consideration. + +**Nick:** + +> I'd be happy to debate cordially with somebody who is not a sophist. Cate, unfortunately, is one of the most dishonest actors in this entire space and deserves zero respect from anybody (though I would give her more than what she deserves and actually be respectful to her in a verbal discussion for the betterment of your podcast). There are people I could recommend who disagree with me who I don't think are dishonest but rather just confused about the empirics. If you guys are still interested in having a productive seed oil debate, I'd be happy to provide a list. +> +> Also if you're worried about my tone during the debate, you need not be concerned. I don't think anybody can actually find more than a single example of me being rude to my interlocutor across what is probably dozens of verbal debates by now. Other than that one exception, which I actually think was justified anyway, I am always polite and cordial with my interlocutor in verbal discussions. + +This is where the email exchange ended. So much of what Cate Shenanigans said was just brain-dead lunacy. Let's go through the list. + +# CATE'S RETARDATION + +**A) Suggesting that I defend a proposition that isn't my own** + +Why? Why in the world would I be asked to defend a proposition that I, myself, am not even sure I affirm? I'm not even sure what the proposition "seed oils are heart healthy" even means. Does it mean that seed oils will increase your VO2 max? Does it mean seed oils will cure hypertension? Who the hell knows. It was just beyond strange that it was even suggested and demonstrates to me that Cate Shenanigans is operating with a level-zero debate meta. + +Furthermore, if she was truly interested in contesting my views, why did she not pay me the likewise courtesy of reading my article and selecting a proposition directly from my own writing? Seems not only to be ridiculously stupid, but also a ridiculously stupid double-standard. Yet another example of Shenanigans-level cuckery. + +**B) Shifting the goalpost three times** + +Months ago, she dodged me on the grounds that I haven't read her book and that reading her book was necessary to have a debate. I [offered](https://x.com/upRootNutrition/status/1778490825124552875) to read her book then to satisfy the criteria and got no reply. Now, she dodged me for the second time on these grounds, and when I directly offered to read her book and satisfy her criteria, she shifted the goalpost a third time. Apparently, it's not good enough that I read her book, but now the entire audience needs to read her book in order for us to debate. This is just the most cuckish form of sophistry imaginable, and she should be ashamed. + +**C) Her goalposts are dumb anyway** + +To anyone with even a modicum of understanding with respect to scientific epistemology, it should be quite clear that Cate Shenanigans is dodging. Essentially, the strength of a scientific hypothesis does not rest upon its complexity, its elegance, its creativity, or any other such quality. It rests upon how scientifically virtuous it is, and this is determined by testing the hypothesis' compatibility with the theoretical virtues of science. I wrote a lengthy article on the subject [here](https://www.the-nutrivore.com/post/the-hitchhiker-s-guide-to-quack-smashing). + +To determine if a hypothesis is strong, we should ask three fundamental questions, compared to other hypotheses: + +1. Does this hypothesis make more novel predictions? + +2. Does this hypothesis explain a wider breadth of phenomena? + +3. Does this hypothesis make fewer overall assumptions? + + +There are other questions some philosophers think we should ask, but generally speaking, philosophers of science do not disagree about these three core questions. So, let's take them one by one. + +Firstly, the hypothesis doesn't really seem to make very many novel predictions at all. In fact, as I had previously discussed in another blog [article](https://www.the-nutrivore.com/post/a-comprehensive-rebuttal-to-seed-oil-sophistry), the overall weight of the literature heavily favours the negation of Cate Shenanigans' hypothesis. When confronted with this fact on a [podcast](https://gimletmedia.com/shows/science-vs/mehwdgww) (33:00), Cate Shenanigans had no compelling answers and merely insisted that it "didn't make any sense" and that every single study on the subject (150-300 studies by her count) was "flawed". Very persuasive, Dr. Shenanigans. Gold fucking star. + +As for the second question, the scope of her hypothesis is actually quite impressive. As she stated in the linked podcast above, seed oils literally have a causal role to play in every disease. That is quite an impressive scope. Think of all the phenomena this accounts for. Looks great for the hypothesis, except when we try to answer the third question. + +With respect to the final question we're asking, every disease Cate Shenanigans blames on seed oils in an attempt to inflate her scope, she piles on more and more assumptions. Assumptions that empirically verifiable pathophysiological mechanisms that explain a number of diseases, that have nothing to do with seed oils, are either wrong or so incomplete that they might as well be wrong. This produces an insane amount of assumptions. And that's not even counting the assumptions that are stacked in virtue of the hypothesis' failures to make novel predictions. + +As I explained in a previous article, The Hitchhiker's Guide to Quack-Smashing, quacks will often inflate scope at the expense of parsimony and/or fruitfulness. They want to be able to capture the widest scope of phenomena with their hypothesis without actually having evidence or having to explain a damn thing. + +No, Dr. Shenanigans, I don't need to read your book in order to debate your proposition that seed oils are responsible for all disease, or chronic disease, or even just heart disease. As I explained in the email exchange, the only thing that is required is an investigation into the empirical data that tests your hypothesis. We can test the fruitfulness, we can test the scope, and we can test the parsimony. You're just dodging because you are scared. + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting!""" + , articleReferences = + [ { author = "" + , title = "" + , journal = "" + , year = "" + , link = "" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/SweetDeception.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/SweetDeception.elm new file mode 100755 index 0000000..3e01037 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/SweetDeception.elm @@ -0,0 +1,383 @@ +module Config.Pages.Blogs.MainBlog.SweetDeception exposing (articleSweetDeception) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +articleSweetDeception : BlogArticle +articleSweetDeception = + { articleName = "Sweet Deception: Debunking Meme Diabetes Diets" + , articleLink = Path.toString Path.Blog_Sweetdeception + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "sweetdeception" + , articlePublished = "Apr 16, 2024" + , articleBody = """ +Because every online diet camp purports that their pet diet cures every disease known to mankind, naturally each one will give you some fantastical mechanistic story about how said diet cures type 2 diabetes mellitus (T2DM). In the paleo/keto/carnivore camp, people will often claim that T2DM is caused by chronic exposure to refined sugar, with some even going so far as to claim that it is caused by exposure to carbohydrates (CHO) more broadly (including foods like apples and even carrots). However, these days it is more trendy in that group to blame T2DM on vegetable oils, but I have previously debunked this on my blog. Over in the "whole food plant-based" (WFPB) cult, it is routinely remarked that T2DM is caused by intramyocellular lipid (IMCL), and that chronic exposure to the saturated fat (SFA) in animal products is responsible for the condition. + +In this article, I'll go over the mechanistic reasoning and experiment and/or observational support for these hypotheses, as well as provide an accounting of the leading hypothesis and its supporting evidence. Let's start off by tackling the fantastical notions dreamed up by our vegan friends, and address the IMCL hypothesis. + +## THE INTRAMYOCELLULAR LIPID HYPOTHESIS + +The core idea with this hypothesis is that IMCL, primarily in the form of triglycerides (TG) stored within lipid droplets in muscle cells, act through various pathways to disrupt insulin signaling. The IMCL hypothesis has drawn attention to the role of diet in modulating IMCL levels. High intakes of certain types of fats, particularly SFAs found abundantly in animal products, have been implicated by the proponents of this hypothesis in elevating IMCL levels and contributing to insulin resistance. + +This association is often highlighted in discussions on the benefits of WFPB diets for reducing the risk of T2DM and improving insulin sensitivity. Advocates of WFPB diets suggest that such a diet, which is typically lower in SFA and higher in unsaturated fats like monounsaturated fats (MUFA) and polyunsaturated fats (PUFA), which can purportedly help reduce IMCL accumulation and make traction against insulin resistance. + +The dietary focus is on whole grains, legumes, fruits, vegetables, nuts, and seeds, with minimal or no intake of animal products. The concern with animal products stems from their content of SFAs, dietary cholesterol, and perhaps even certain supposed inflammatory mediators (possibly Neu5Gc), which may contribute to increased IMCL levels and insulin resistance. WFPB proponents argue that replacing animal products with plant-based sources of protein and fat can mitigate these risks. But is it true? + +The IMCL hypothesis attempts to highlight the potential impact of IMCL accumulation on insulin resistance and physiological markers of T2DM. While WFPB are promoted as strategies to reduce IMCL and improve metabolic health, it's important to consider the broader literature and where this hypothesis lands with respect to epistemic virtues over other, possibly more prevailing hypotheses for which there is more evidence. + +The mechanistic case for the IMCL hypothesis was first outlined in the late 1990s with two small studies by Jacob, et al. and Perseghin, et al., which discovered relationships between IMCL and insulin resistance in T2DM-free subjects who were born of parents with T2DM [[1](https://pubmed.ncbi.nlm.nih.gov/10331418/)][[2](https://pubmed.ncbi.nlm.nih.gov/10426379/)]. In these experiments, the offspring of those with T2DM were subjected to the gold-standard measure of whole-body insulin sensitivity, the hyperinsulinemic-euglycemic clamp test (HEC). It was discovered that there was an inverse association between IMCL and insulin sensitivity, which led researchers to suspect that perhaps this biomarker was relevant to the pathophysiology of T2DM. + +![][image1] +[image1]: /blog/sweetdeception/image1.png + +Fast forward to 2004, and another small study from van Loon, et al. would introduce the hypothesis' first paradox [[3](https://pubmed.ncbi.nlm.nih.gov/15165998/)]. In this experiment, muscle biopsies and less precise (but still adequate) measures of insulin sensitivity were deployed in an investigation of subjects who were either sedentary, afflicted with T2DM, or who were trained athletes. The study found that the IMCL concentrations of IMCL were actually statistically significantly higher in athletic subjects compared to either sedentary or T2DM-afflicted subjects. Yet, the athletic subjects did not suffer from impaired insulin sensitivity or the hyperglycemia that is characteristic of T2DM. + +![][image2] +[image2]: /blog/sweetdeception/image2.png + +Researchers Coen and Goodpaster attempted to reconcile the findings in 2012 [[4](https://pubmed.ncbi.nlm.nih.gov/22721584/)]. They hypothesized that IMCL behaves differently in the context of T2DM, and that while IMCL serves as a fuel source in athletic subjects, in sedentary subjects with T2DM the IMCL seems to produce more disruptive mediators like ceramides and diacylglycerols. However, the authors tend to play fast and loose with their causal inferences, often citing animal research to buttress clear implications about what holds true in human beings. In fact, the majority of their supporting evidence is derived from mice, despite mice generally being poor facsimiles for human subjects [[5](https://pubmed.ncbi.nlm.nih.gov/31307492/)]. + +Some of the only human research they can cite are studies wherein there was an observed association between intramyocellular ceramides (IMCC) and insulin resistance. However, there are many biomarkers that serve as proxies for insulin resistance, and there did not seem to be a clear reason proposed by the authors to favour IMCC as causal or mediating. In fact, they cite research that offered conflicting evidence with a broader sample of human subjects, showing that IMCC has no clear association with insulin sensitivity [[6](https://pubmed.ncbi.nlm.nih.gov/18458871/)]. + +Additionally, Itani, et al (2002) discovered that the concentrations of IMCC do not differ substantially between subjects with varying degrees of insulin sensitivity [[7](https://pubmed.ncbi.nlm.nih.gov/12086926/)]. In fact, these researchers challenged subjects with lipids during a HEC to try to alter lipid states in muscle tissue, and ceramides did not change. However, a legitimate criticism of this study is that the lipid challenge done using Liposyn II, which is an intravenous lipid product consisting of 50% soybean oil and 50% safflower oil, making it over half PUFA in its composition. Coen and Goodpaster also cited research on diacylglycerols, but they themselves admit that the human data isn't particularly conclusive on the matter. + +To my knowledge there are no recent landmark human experiments that persuasively show that T2DM pathology can be modulated up or down with varying animal products, or even SFA, in the diet. Altogether, the hypothesis has a lot of failed predictions and phenomena to reconcile before it can be taken seriously and can even begin to be seen as epistemically virtuous compared to some other, more scientifically grounded hypotheses. What we need to see is a study that shows that removing SFA and/or animal products from the diets of those with T2DM actually makes traction against pathophysiological markers of T2DM. Ideally this would be done while also controlling for potential confounders or mediators that other competing hypotheses predict would make an impact. The aim is to demonstrate independent effects, and so far no research on the IMCL hypothesis persuasively does this. + +# THE SUGAR HYPOTHESIS + +Even though I have touched on this hypothesis five years ago [[8](https://thenutrivore.blogspot.com/2019/10/sugar-doesnt-cause-diabetes-and-ketosis.html)], it bears repeating, with updated epistemic and philosophical rigour. For a recap, my original article challenges perceptions about T2DM that are common in the low carb (LC) diet sphere. I argue against the notions that sugar causes T2DM and that ketosis can somehow reverse it. But we're going to go a little deeper today. So, what is the hypothesis and how does it work? Basically, the hypothesis supposes that chronic exposure to refined sugar or insulin-stimulating CHO leads to T2DM through prolonged over-stimulation of the pancreas. This hypothesis involves several key mechanisms. + +Firstly, regular intake of high-sugar or high-glycemic CHOs prompts frequent blood insulin excursions by via the pancreas. To be clear, insulin is the hormone responsible for signaling cells to absorb glucose from the bloodstream for energy or storage. The idea is that over time, constant demand for more and more insulin can lead to insulin resistance via negative feedback. This is when cells become less responsive to insulin's signals because insulin levels are too high. This requires the pancreas to produce even more insulin to achieve the same effect, placing stress on the pancreatic beta cells (which are responsible for insulin secretion). + +Secondly, chronic over-stimulation of the pancreas due to persistent high sugar/CHO intake and supposed, resultant insulin resistance can lead to beta-cell dysfunction (which is characteristic of advanced T2DM). Over time, the beta cells' capacity to produce insulin can diminish due to the increased demand, oxidative stress, and subsequent glucotoxicity (toxicity due to hyperglycemia). This dysfunction contributes to the progression of T2DM, where insulin production eventually becomes insufficient to control blood sugar levels effectively. + +Lastly, high levels of circulating glucose (glucotoxicity) and fatty acids (lipotoxicity) are actually detrimental to pancreatic beta cells. High glucose levels can lead to the formation of reactive oxygen species (ROS), causing an inflammatory cascade effect, damaging beta cells and impairing insulin secretion. Similarly, elevated free fatty acids (FFAs) can accumulate in non-adipose tissues, including the pancreas, causing cellular dysfunction. + +The mechanisms, epidemiological, and experimental evidence for this hypothesis were most succinctly summarized by Stanhope in 2016 [[9](https://pubmed.ncbi.nlm.nih.gov/26376619/)]. This review discusses the evidence and controversies surrounding the impact of sugar consumption on T2DM, including mechanisms by which excess sugar intake may promote the development of T2DM directly and indirectly. It covers the direct metabolic pathways through which fructose, a component of table sugar, sucrose, can lead to intrahepatic lipid (IHL) accumulation and decreased insulin sensitivity, contributing to the pathophysiology of T2DM independent of total caloric intake. + +The author first refers to literature they themselves conducted, including three primary human trials demonstrating disturbances to energy expenditure, markers of liver function, as well as measures of IHL accumulation [[10](https://pubmed.ncbi.nlm.nih.gov/26376619/)][[11](https://pubmed.ncbi.nlm.nih.gov/21952692/)][[12](https://pubmed.ncbi.nlm.nih.gov/22828276/)]. The first trial discovered that isocaloric feeding of fructose compared to glucose over a ten-week period significantly increased hepatic fat. + +![][image3] +[image3]: /blog/sweetdeception/image3.png + +However, it's unclear what the clinical significance of this finding is, considering that the fructose-based intervention resulted in significant overfeeding and only increased fasting glucose by 5% compared to the glucose-based control. Seems like the authors tried pretty damn hard to induce a T2DM phenotype feeding fructose to subjects, and were ultimately unable to achieve that. In fact, they weren't really able to get close. Even the oral glucose tolerance test results, though far from ideal, showed an altogether normal blood glucose curve for the fructose group. + +![][image4] +[image4]: /blog/sweetdeception/image4.png + +The second trial was unremarkable, and suggested that fructose consumption may decrease energy expenditure over time when isocalorically compared to glucose. Again, it's interesting, but it's far from demonstrating a cause and effect relationship between T2DM and sugar. The third trial is a bit more complicated to unpack. Basically, subjects were split into two groups, 25% of calories as either fructose or glucose as parts of eucaloric diets over 10 weeks, with the primary endpoints beings measures of liver function. Overall, the results of the trial suggest a significantly detrimental effect of fructose compared to glucose on a number of markers related to liver function. However, it's slightly more complicated than that. + +While it's true that the treatment effect showed a benefit of glucose over fructose, it's also true that the marker of liver function that was negatively perturbed was gamma-glutamyl transferase (GTT). The change in GGT was also barely statistically significant compared to baseline, while markers such as aspartate aminotransferase (AST) and alanine aminotransferase (ALT) showed a non-significant decrease. Glucose showed greater reductions that were barely statistically significantly different from that of fructose. + +![][image5] +[image5]: /blog/sweetdeception/image5.png + +Other than that, fructose did seem to increase uric acid levels to a statistically significant degree, making fructose a potential aggravating factor for conditions such as gout. But again, this is a far cry from causally linking fructose consumption to the development of T2DM, especially since fructose seemed to do nothing particularly interesting to markers of liver function. It is true that sugar intake is severely negatively associated with health outcomes [[13](https://pubmed.ncbi.nlm.nih.gov/34444794/)]. However, while this is a consistent finding, clinical trials on sugar consistently fail to demonstrate a connection between sugar intake and the development of T2DM. + +We can indirectly test the sugar hypothesis by looking at long-term data in those following ketogenic diets for T2DM remission. If subjects cut nearly all carbohydrates out of their diets, presumably this subsumes sugar, and could present a valid test of the hypothesis. One such study might be the Virta Health trial [[14](https://pubmed.ncbi.nlm.nih.gov/29417495/)]. In this trial, a non-randomized, self-selected sample of eager subjects elected to participate in a cutting-edge, individualized dietary intervention program, with the aim of nutritional ketosis, called the Continuous Care Intervention (CCI), utilizing a web-app, ketone-verified adherence monitoring, and constant patient support. + +> Other aspects of the diet were individually prescribed to ensure safety, effectiveness, and satisfaction, including consumption of 3鈥5 servings of non-starchy vegetables and adequate mineral and fluid intake for the ketogenic state. At onset of dietary changes, participants were advised to consume a multivitamin, 1000鈥2000 IU vitamin D3, and up to 1000 mg omega-3 daily. If participants exhibited signs of magnesium depletion (e.g., muscle twitches or cramps), daily supplementation (500 mg magnesium oxide or 200 mg magnesium chloride) was suggested. If participants exhibited headaches, constipation, or lightheadedness, adequate sodium and fluid intake was recommended. + +Suffice it to say, there would be little, if any, room for sugar while on such a diet. These subjects were followed up for one year, and, as expected (given the high potential for bias with such a study design), results were impressive. By the end of the first year, the control group was floundering and the CCI group managed to achieve a massive 1.3% reduction in HbA1c, which effectively pushed the once diabetic group into the non-diabetic range on average. However, this change was commensurate with a 14.3% drop in body weight, which we'll revisit in a later section of this article. + +Despite these improvements, recidivism continued to climb. As of two years, the CCI group had crept back into the diabetic range on average [[15](https://pubmed.ncbi.nlm.nih.gov/31231311/)]. By, 3.5 years, the CCI group was once again firmly within the diabetic range on average, having regained a significant amount of weight [[16](https://www.hsrd.research.va.gov/publications/esp/virtual-diet-brief.pdf)][[17](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7208790/)]. + +![][image6] +[image6]: /blog/sweetdeception/image6.png + +To be clear, there was a clear distinction between remission and reversal, as defined by the authors. Remission was a much more robust measure of traction against T2DM than reversal, even though it sounds like the latter is stronger than the former. Remission was defined in two parts; partial remission and complete remission. Partial remission was defined as "sub-diabetic hyperglycemia of at least 1 year duration, HbA1c level between 5.7-6.5%, without any medications (two HbA1c measurements)" and complete remission was defined as "Normoglycemia of at least 1 year duration, HbA1c below 5.7%, without any medications (two HbA1c measurements)". Reversal was defined more loosely, as "sub-diabetic hyperglycemia and normoglycemia (HbA1c below 6.5%), without medications except metformin" (Athinarayanan, et al., (2019), Supplement Table 2). + +Unfortunately, all but the second year remission data is either aggregated or ambiguous, so it's difficult to make distinctions between partial and complete remission for years one and 3.5. However, at year two only 6.7% of the cohort had achieved complete remission. It's not clear what percentage of the cohort achieved complete remission by year 3.5. Furthermore, reversal rates, as they're defined, are probably just reflecting attrition rates (which were 26%), as the criteria for reversal is having achieved a sub-diabetic blood glucose at least once throughout the trial. It's actually not clear how meaningful that data even is on that definition. + +While a 9% weight reduction over 3.5 years is impressive, I'll reiterate the limitations鈥 the subjects were self-selected, and highly motivated to participate in the CCI. In fact, the patients were paying customers of Virta Health's cutting-edge primary care service. This significantly challenges the external validity of the findings, as impressive as they are, to the general population. What we're seeing are results in the context of what is likely to be extraordinary ambition to succeed, and should be interpreted with caution. + +As for how these results relate to the sugar hypothesis, it's difficult to tell, had the subjects managed to control their weight. However, adherence rates to the diet dropped significantly by year two, with nutritional ketosis being achieved in 96% of CCI subjects in year one to only 14.1% by the end of year two. This non-adherence makes it difficult to infer the degree of sugar avoidance actually observed by the cohort on average, and makes cause and effect conclusions difficult to draw. There was no 3.5 year data on ketosis rates, and one can only speculate as to why. But given the poor adherence at two years, it's probably not unreasonable to assume it's because the numbers didn't look very good. + +## THE OXIDATION HYPOTHESIS + +The underlying premise is that PUFAs, particularly omega-6 fatty acids found in seed oils, are susceptible to oxidation. When oxidized, these fatty acids can form reactive compounds such as malondialdehyde (MDA) and other harmful products, leading to cellular damage and oxidative stress. In the context of the pancreas and liver, organs that, as previously mentioned, are crucial for glucose metabolism and insulin regulation, such oxidative stress could impair their function, contributing to insulin resistance and 尾-cell dysfunction鈥 key features of T2DM. A tidy little bundle of sophistry indeed. + +Since I've already covered how the human outcome data flies in the face of this hypothesis in a previous article [[18](https://www.the-nutrivore.com/post/a-comprehensive-rebuttal-to-seed-oil-sophistry)], I won't rehash all of it here. But, essentially there is no human outcome data supporting this effect across multiple cohort studies and multiple RCTs. In the epidemiology, tight markers of seed oil consumption show a consistent inverse association with T2DM [[19](https://pubmed.ncbi.nlm.nih.gov/29032079/)]. + +![][image7] +[image7]: /blog/sweetdeception/image7.png + +Additionally, there have been several interventions feeding large amounts of PUFA to subjects, to the exclusion of SFA, and measuring long term effects on insulin sensitivity [[20](https://www.sciencedirect.com/science/article/abs/pii/0163782781900709)][[21](https://pubmed.ncbi.nlm.nih.gov/1347091/)]. In both Houtsmuller, et al. (1979) and Watts, et al. (1992), long term feeding of PUFA was associated with improvements in insulin sensitivity. In the case of the former trial, the insulin sensitivity measure, an oral glucose tolerance test (OGTT), showed improvement to glucose tolerance among diabetics over time. These results were aggregated by Hooper, et al. back in 2020 in an exploratory analysis [[22](https://pubmed.ncbi.nlm.nih.gov/32428300/)]. + +![][image8] +[image8]: /blog/sweetdeception/image8.png + +Additionally, we can also see that Ley, et al. (2004) showed an improvement in OGTT results, but with the substitution of CHO for SFA, rather than PUFA for SFA (which is kinda funny) [[23](https://pubmed.ncbi.nlm.nih.gov/14739050/)]. + +## THE TWIN CYCLES HYPOTHESIS + +The prevailing hypothesis, or the hypothesis that has been given the most credence in this domain, is the twin cycles hypothesis (TCH), which was spearheaded by Prof. Roy Taylor. It is closely interconnected with another concept from Prof. Taylor's work, known as the personal fat threshold (PFT). So what are these things? Let's start with the TCH. The TCH postulates that there are two stages, or "cycles", to T2DM development. The TCH was first discussed in a 2011 paper by Lim, et al. (coauthored by Prof. Taylor) detailing the development of the hypothesis from previous clinical trials performed on patients with T2DM [[24](https://pubmed.ncbi.nlm.nih.gov/21656330/)]. This trial would come to be known as the Counteracting Pancreatic Inhibition by Triglyceride (CounterPoint) study, and would be reviewed in greater detail two years later by the same authors [[25](https://pubmed.ncbi.nlm.nih.gov/23075228/)]. + +The first cycle originates in the liver, where chronic, excess calorie intake leads to ectopic fat accumulation, causing hepatic insulin resistance. The reason for this is because tissues that are energy replete will resist the action of insulin, which is a signalling hormone responsible for facilitating energy deposition in tissues. The second cycle concerns the pancreas, where the continued excess fat spills over to the pancreas (primarily via nonesterified fatty acids (NEFA), leading to lipotoxicity and subsequently impairing 尾-cell function. Ultimately, this contributes to 尾-cell dysfunction, rather than outright 尾-cell death, as the pivotal event in diabetes progression. + +In fact, the TCH originally came about by appreciating that the assumptions typically relied upon when inferring 尾-cell death in T2DM patients may be faulty. Usually, we infer to 尾-cell death by staining pancreatic tissue for insulin; no insulin, no 尾-cells. However, what if the 尾-cells aren't really dead? What if the diabetic pancreas is just so dysfunctional that the 尾-cells aren't producing as much insulin? Those assumptions would have us believing that the 尾-cells are dead when in fact they are merely dormant due to lipotoxicity鈥 waiting to be brought back to life upon fat mass loss. Which brings us to the next piece of the puzzle. + +Now let's discuss the PFT, and how it ties into the overall picture. Essentially, the PFT posits that hepatic and pancreatic fat deposition are facilitated by accumulating more subcutaneous body fat (SBF) than one's body can tolerate, regardless of whether their body mass index (BMI) categorizes them as overweight or obese [[26](https://pubmed.ncbi.nlm.nih.gov/25515001/)]. In basic terms, after non-hepatic, non-pancreatic tissues get too fat, there is a spillover of fat (precipitated by chronic calorie excess) onto the liver and the pancreas, which initiates the T2DM phenotype. + +Think about it. There's just nowhere left for the energy substrates to go, be it glucose, triglycerides (TG), or even amino acids. They're all increased with T2DM, because all the tissues are energy replete. The liver and the peripheral tissues essentially play a never-ending game of ping pong with the energy substrates because no tissues are able to take on the extra calories. This hypothesis was tested with vindicating results in a recent trial by Taylor, et al. in 2024 [[27](https://pubmed.ncbi.nlm.nih.gov/37593846/)]. Essentially, it seems that T2DM development and remission have very little, if anything, to do with BMI, and BMI may be a very poor risk factor for T2DM, due to the individual variation in the PFT from person to person. + +Now that we have a clear understanding of the model, let's discuss the overwhelming evidence in favour of it. The clinical trials that first gave rise to the TCH were human experiments that involved both pharmaceutical and dietary means of reducing hepatic fat [[28](https://pubmed.ncbi.nlm.nih.gov/18535187/)][[29](https://pubmed.ncbi.nlm.nih.gov/15734833/)]. + +For the first study by Ravikumar, et al., a single-arm trial of 10 subjects, the drug pioglitazone was investigated for its effects on markers of T2DM, particularly postprandial endogenous glucose production (EGP) using isotope labeled glucose, as well as IHL. After 16 weeks of treatment, the pioglitazone group experienced an increase in total body weight equal to +6.2kg on average. Yet, the pioglitazone group also experienced a decrease in IHL. + +![][image9] +[image9]: /blog/sweetdeception/image9.png + +However, to be fair, the pioglitazone group also experienced a significant decrease in IMCL as well, however there was no significant correlation between decreases in IMCL and EGP. There was however, a direct association between IHL and EGP. Although this trial was not controlled, it certainly doesn't produce results expected on the IMCL hypothesis, and it lends further credence to the TCH. Additionally, many markers of T2DM subsequently improved, such as plasma glucose, hemoglobin A1c (HbA1c), and even TGs, with the changes being -2.3mmol/L, -1.9%, and 0.4mmol/L, respectively. + +![][image10] +[image10]: /blog/sweetdeception/image10.png + +It can also be inferred that there was a meaningful increase in insulin sensitivity, given the fact that plasma glucose dropped despite the same amount of insulin being produced by subject. Essentially, glucose disposal per unit insulin went up, implying that insulin signalling had improved. + +![][image11] +[image11]: /blog/sweetdeception/image11.png + +In the second study by Petersen, et al., eight subjects with T2DM were compared to 10 healthy volunteers in a non-randomized weight loss trial over an average of seven weeks. Essentially, subjects were followed up until normoglycemia was achieved, so not every subject was subjected to the same amount of weight loss for the same time period. In this time, body weight dropped by an average of 8kg in the T2DM group. This was marked with commensurate drops in plasma glucose, plasma insulin, and TG, at -2.4mmol/L, -108pmol/L, and -0.3mmol/L, respectively. + +![][image12] +[image12]: /blog/sweetdeception/image12.png + +The most interesting and surprising finding was that there was no significant change in IMCL despite weight loss. But, subjects did end up achieving normoglycemia and near normal insulin sensitivity as determined by a HEC. However, much like the previous study, insulin sensitivity was directly associated with IHL reduction. Once again, this flies in the face of the IMCL hypothesis, and offers further support for the TCH as the T2DM approached nearly normal levels of IHL. Although neither of these papers directly test for evidence of the sugar or oxidation hypotheses, it should be noted that both of these trials involve the consumption of both sugar and most likely animal products. + +In light of this evidence, Steven and Taylor conducted another preliminary human trial, the CounterBalance study, involving 29 subjects in 2015 to test the effects of the same intervention in those with long- versus short-term T2DM [[30](https://pubmed.ncbi.nlm.nih.gov/25683066/)]. Both groups experienced similar weight loss (short-duration: 14.8%, long-duration: 14.4%), indicating that the VLCD was effective for weight reduction regardless of diabetes duration. These results were also durable throughout the six month post-intervention follow-up. + +In terms of other T2DM markers, such as plasma glucose, the response to the diet was heterogeneous among participants with long-term T2DM. Some showed similar responses to those in the short-term group and some responded slowly. By the end of the study, 87% of the short-term group and 50% of the long-term group achieved non-T2DM fasting plasma glucose levels. HbA1c levels also decreased in both groups, with a more significant reduction observed in the short-term group. However, there was an unforeseen result鈥 about half of subjects did not respond to the treatment at all, which was not expected given nearly all previous research. + +![][image13] +[image13]: /blog/sweetdeception/image13.png + +Given these results and Prof. Taylor's previous characterization of the PFT concept, the most likely hypothesis seemed clear鈥 these people just needed to lose more weight, which we'll get to later. For now, there was enough evidence of the effectiveness of weight loss for T2DM treatment that Prof. Taylor and his colleagues decided it was time to test the efficacy of the treatment in a real-world outpatient scenario. A cluster-randomized experiment was designed and undertaken, and would come to be known as the Diabetes Remission Clinical Trial (DiRECT) [[31](https://pubmed.ncbi.nlm.nih.gov/29221645/)]. + +![][image14] +[image14]: /blog/sweetdeception/image14.png + +The DiRECT trial involved 298 subjects across 49 primary care practices (or clusters) randomized two groups, a control group receiving the standard of care for T2DM management, and the treatment group receiving a three stage program: stage one, total diet replacement; stage two, food reintroduction; phase three, weight maintenance. For the first stage, the treatment group received a liquid diet consisting of four packets of meal replacement formula, which totaled around 825-853 kcal/day for three to five months (depending on patient-specific goals). For the second stage, after subjects completed the first weight loss phase of the trial, food was gradually reintroduced over a period of two weeks to two months. During the last stage, patients were followed up over the course of around a year. The results were encouraging. + +Over the course of the trial, the treatment group lost an average of 10kg, with over 86% of them achieving T2DM remission by the end of the first year. An interesting finding was that on average, at the end of the first year, the treatment group still technically qualified as obese, despite the vast majority of them achieving T2DM remission. This would come to be the first nail in the coffin with respect to the idea that T2DM was somehow coupled to BMI. Additionally, patients experienced significant improvements to quality of life without serious side effects or complications. Altogether the treatment was successful, well-tolerated, and produced impressive rates of T2DM remission that was durable long-term. + +However, Prof. Taylor's group published two follow-up, long term durability studies on the DiRECT trial [[32](https://pubmed.ncbi.nlm.nih.gov/30852132/)][[33](https://pubmed.ncbi.nlm.nih.gov/38423026/)]. The results of these follow-up studies was bitter-sweet. At the two-year follow-up, only 41% of the treatment group remained in remission compared to the previous year, and only 10% at five years of follow-up. These results were not promising for the treatment over time once people were reintroduced to their previous diets and left without practitioner support. Even after the two-year follow-up, 94 or the remaining 101 subjects in the treatment group were given access to extended care, which only resulted in 13% remission rates within the extended care group at five years. + +It sounds bleak, but let's think about it. Prof. Taylor's research was essentially testing two things at the end of the day鈥 the conceptual model of T2DM, encompassing the TCH and the PFT, as well as the efficacy of radical weight loss in an outpatient setting. With respect to the former, Taylor's work has been a resounding success, and it buttresses the strongest model of T2DM development and progression that we currently have. In regards to the latter, radical supervised weight loss with the practitioner support did not yield terribly promising results beyond two years. All isn't lost, though. + +The important thing is that we now have a firm grasp about what causes T2DM. It isn't sugar, seed oils, animal fat, or any other harebrained dietary boogeyman. It's just energy poisoning, with a simple, easy-to-understand etiology; if you gain more fat than your body can tolerate, you develop the phenotype of T2DM. If at that point you do indeed lose enough body fat to fall back below the maximum your body can withstand, T2DM remission follows. The last piece of the puzzle is figuring out what factors cause over-consumption, and how to durably address excessive body fat. + +## DISCUSSION + +In conclusion, while a myriad of hypotheses continue to circulate within nutritional and diabetic research spheres regarding the genesis and treatment of T2DM, it becomes increasingly clear that simplicity often guides the best practice. The TCH, underscored by the PFT, offers a cogent framework suggesting that T2DM is not merely a product of specific dietary components like sugars, SFA, or PUFA, but rather a complex interplay of caloric excess leading to dysfunctional energy storage and insulin response. As emerging studies, such as those by Prof. Taylor and his colleagues, indicate, interventions aiming at substantial and sustained weight loss may hold the key to reversing T2DM, provided these interventions are maintained with consistent medical oversight and support. + +While the exploration of dietary influence on T2DM remains important, we also have to acknowledge the apparently lack of elasticity of our food culture and the stark tendency toward recidivism with dietary intervenions. Emerging pharmacological interventions, particularly GLP-1 receptor agonists, are presenting promising frontiers in the management and potential reversal of this condition. As we advance, the integration of such pharmaceutical approaches alongside dietary management could revolutionize the treatment landscape of T2DM. Emphasizing the synergy between medication and lifestyle changes will likely be pivotal in crafting effective, personalized treatment plans that address both the biochemical and lifestyle facets of diabetes care. + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting! + +# BIBLIOGRAPHY""" + , articleReferences = + [ { author = "Jacob, S., et al." + , title = "Association of Increased Intramyocellular Lipid Content with Insulin Resistance in Lean Nondiabetic Offspring of Type 2 Diabetic Subjects" + , journal = "Diabetes" + , year = "1999" + , link = "https://doi.org/10.2337/diabetes.48.5.1113" + } + , { author = "Perseghin, G., et al." + , title = "Intramyocellular Triglyceride Content Is a Determinant of in Vivo Insulin Resistance in Humans: A 1H-13C Nuclear Magnetic Resonance Spectroscopy Assessment in Offspring of Type 2 Diabetic Parents" + , journal = "Diabetes" + , year = "1999" + , link = "https://doi.org/10.2337/diabetes.48.8.1600" + } + , { author = "van Loon, Luc J. C., et al." + , title = "Intramyocellular Lipid Content in Type 2 Diabetes Patients Compared with Overweight Sedentary Men and Highly Trained Endurance Athletes" + , journal = "American Journal of Physiology. Endocrinology and Metabolism" + , year = "2004" + , link = "https://doi.org/10.1152/ajpendo.00464.2003" + } + , { author = "Coen, Paul M., and Bret H. Goodpaster" + , title = "Role of Intramyocelluar Lipids in Human Health" + , journal = "Trends in Endocrinology and Metabolism: TEM" + , year = "2012" + , link = "https://doi.org/10.1016/j.tem.2012.05.009" + } + , { author = "Leenaars, Cathalijn H. C., et al." + , title = "Animal to Human Translation: A Systematic Scoping Review of Reported Concordance Rates" + , journal = "Journal of Translational Medicine" + , year = "2019" + , link = "https://doi.org/10.1186/s12967-019-1976-2" + } + , { author = "Skovbro, M., et al." + , title = "Human Skeletal Muscle Ceramide Content Is Not a Major Factor in Muscle Insulin Sensitivity" + , journal = "Diabetologia" + , year = "2008" + , link = "https://doi.org/10.1007/s00125-008-1014-z" + } + , { author = "Itani, Samar I., et al." + , title = "Lipid-Induced Insulin Resistance in Human Muscle Is Associated with Changes in Diacylglycerol, Protein Kinase C, and IkappaB-Alpha" + , journal = "Diabetes" + , year = "2002" + , link = "https://doi.org/10.2337/diabetes.51.7.2005" + } + , { author = "\"The Nutrivore\"" + , title = "The Nutrivore: Sugar Doesn鈥檛 Cause Diabetes, and Ketosis Doesn鈥檛 Reverse It" + , journal = "The Nutrivore" + , year = "2019" + , link = "https://thenutrivore.blogspot.com/2019/10/sugar-doesnt-cause-diabetes-and-ketosis.html" + } + , { author = "Stanhope, Kimber L." + , title = "Sugar Consumption, Metabolic Disease and Obesity: The State of the Controversy" + , journal = "Critical Reviews in Clinical Laboratory Sciences" + , year = "2016" + , link = "https://doi.org/10.3109/10408363.2015.1084990" + } + , { author = "Stanhope, Kimber L., et al." + , title = "Consuming Fructose-Sweetened, Not Glucose-Sweetened, Beverages Increases Visceral Adiposity and Lipids and Decreases Insulin Sensitivity in Overweight/Obese Humans" + , journal = "The Journal of Clinical Investigation" + , year = "2009" + , link = "https://doi.org/10.1172/JCI37385" + } + , { author = "Cox, C. L., et al." + , title = "Consumption of Fructose-Sweetened Beverages for 10 Weeks Reduces Net Fat Oxidation and Energy Expenditure in Overweight/Obese Men and Women" + , journal = "European Journal of Clinical Nutrition" + , year = "2012" + , link = "https://doi.org/10.1038/ejcn.2011.159" + } + , { author = "Cox, Chad L., et al." + , title = "Consumption of Fructose- but Not Glucose-Sweetened Beverages for 10 Weeks Increases Circulating Concentrations of Uric Acid, Retinol Binding Protein-4, and Gamma-Glutamyl Transferase Activity in Overweight/Obese Humans" + , journal = "Nutrition & Metabolism" + , year = "2012" + , link = "https://doi.org/10.1186/1743-7075-9-68" + } + , { author = "Meng, Yantong, et al." + , title = "Sugar- and Artificially Sweetened Beverages Consumption Linked to Type 2 Diabetes, Cardiovascular Diseases, and All-Cause Mortality: A Systematic Review and Dose-Response Meta-Analysis of Prospective Cohort Studies" + , journal = "Nutrients" + , year = "2021" + , link = "https://doi.org/10.3390/nu13082636" + } + , { author = "Hallberg, Sarah J., et al." + , title = "Effectiveness and Safety of a Novel Care Model for the Management of Type 2 Diabetes at 1 Year: An Open-Label, Non-Randomized, Controlled Study" + , journal = "Diabetes Therapy: Research, Treatment and Education of Diabetes and Related Disorders" + , year = "2018" + , link = "https://doi.org/10.1007/s13300-018-0373-9" + } + , { author = "Athinarayanan, Shaminie J., et al." + , title = "Long-Term Effects of a Novel Continuous Remote Care Intervention Including Nutritional Ketosis for the Management of Type 2 Diabetes: A 2-Year Non-Randomized Clinical Trial" + , journal = "Frontiers in Endocrinology" + , year = "2019" + , link = "https://doi.org/10.3389/fendo.2019.00348" + } + , { author = "Veazie, S., Vela, K., & Helfand, M." + , title = "Evidence Brief: Virtual Diet Programs for Diabetes" + , journal = "Evidence Synthesis Program (ESP)" + , year = "2020" + , link = "http://www.hsrd.research.va.gov/publications/esp/" + } + , { author = "McKenzie, Amy, et al." + , title = "SUN-LB113 A Continuous Remote Care Intervention Utilizing Carbohydrate Restriction Including Nutritional Ketosis Improves Markers of Metabolic Risk and Reduces Diabetes Medication Use in Patients With Type 2 Diabetes Over 3.5 Years" + , journal = "Journal of the Endocrine Society" + , year = "2020" + , link = "https://doi.org/10.1210/jendso/bvaa046.2302" + } + , { author = "Hiebert, Nick" + , title = "A Comprehensive Rebuttal to Seed Oil Sophistry" + , journal = "The Nutrivore" + , year = "2021" + , link = "https://www.the-nutrivore.com/post/a-comprehensive-rebuttal-to-seed-oil-sophistry" + } + , { author = "Wu, Jason H. Y., et al." + , title = "Omega-6 Fatty Acid Biomarkers and Incident Type 2 Diabetes: Pooled Analysis of Individual-Level Data for 39,740 Adults from 20 Prospective Cohort Studies" + , journal = "The Lancet. Diabetes & Endocrinology" + , year = "2017" + , link = "https://doi.org/10.1016/S2213-8587(17)30307-8" + } + , { author = "Houtsmuller, A. J., et al." + , title = "Favorable Influences of Linoleic Acid on the Progression of Diabetic Micro- and Macroangiopathy in Adult Onset Diabetes Mellitus" + , journal = "Progress in Lipid Research" + , year = "1981" + , link = "https://doi.org/10.1016/0163-7827(81)90070-9" + } + , { author = "Watts, G. F., et al." + , title = "Effects on Coronary Artery Disease of Lipid-Lowering Diet, or Diet plus Cholestyramine, in the St Thomas鈥 Atherosclerosis Regression Study (STARS)" + , journal = "Lancet (London, England)" + , year = "1992" + , link = "https://doi.org/10.1016/0140-6736(92)90863-x" + } + , { author = "Hooper, Lee, et al." + , title = "Reduction in Saturated Fat Intake for Cardiovascular Disease" + , journal = "The Cochrane Database of Systematic Reviews" + , year = "2020" + , link = "https://doi.org/10.1002/14651858.CD011737.pub2" + } + , { author = "Ley, Sarah J., et al." + , title = "Long-Term Effects of a Reduced Fat Diet Intervention on Cardiovascular Disease Risk Factors in Individuals with Glucose Intolerance" + , journal = "Diabetes Research and Clinical Practice" + , year = "2004" + , link = "https://doi.org/10.1016/j.diabres.2003.09.001" + } + , { author = "Lim, E. L., et al." + , title = "Reversal of Type 2 Diabetes: Normalisation of Beta Cell Function in Association with Decreased Pancreas and Liver Triacylglycerol" + , journal = "Diabetologia" + , year = "2011" + , link = "https://doi.org/10.1007/s00125-011-2204-7" + } + , { author = "Taylor, R." + , title = "Banting Memorial Lecture 2012: Reversing the Twin Cycles of Type 2 Diabetes" + , journal = "Diabetic Medicine: A Journal of the British Diabetic Association" + , year = "2013" + , link = "https://doi.org/10.1111/dme.12039" + } + , { author = "Taylor, Roy, and Rury R. Holman" + , title = "Normal Weight Individuals Who Develop Type 2 Diabetes: The Personal Fat Threshold" + , journal = "Clinical Science (London, England: 1979)" + , year = "2015" + , link = "https://doi.org/10.1042/CS20140553" + } + , { author = "Taylor, Roy, et al." + , title = "Aetiology of Type 2 Diabetes in People with a 鈥榥ormal鈥 Body Mass Index: Testing the Personal Fat Threshold Hypothesis" + , journal = "Clinical Science (London, England: 1979)" + , year = "2023" + , link = "https://doi.org/10.1042/CS20230586" + } + , { author = "Ravikumar, Balasubramanian, et al." + , title = "Pioglitazone Decreases Fasting and Postprandial Endogenous Glucose Production in Proportion to Decrease in Hepatic Triglyceride Content" + , journal = "Diabetes" + , year = "2008" + , link = "https://doi.org/10.2337/db07-1828" + } + , { author = "Petersen, Kitt Falk, et al." + , title = "Reversal of Nonalcoholic Hepatic Steatosis, Hepatic Insulin Resistance, and Hyperglycemia by Moderate Weight Reduction in Patients with Type 2 Diabetes" + , journal = "Diabetes" + , year = "2005" + , link = "https://doi.org/10.2337/diabetes.54.3.603" + } + , { author = "Steven, S., and R. Taylor" + , title = "Restoring Normoglycaemia by Use of a Very Low Calorie Diet in Long- and Short-Duration Type 2 Diabetes" + , journal = "Diabetic Medicine: A Journal of the British Diabetic Association" + , year = "2015" + , link = "https://doi.org/10.1111/dme.12722" + } + , { author = "Lean, Michael Ej, et al." + , title = "Primary Care-Led Weight Management for Remission of Type 2 Diabetes (DiRECT): An Open-Label, Cluster-Randomised Trial" + , journal = "Lancet (London, England)" + , year = "2018" + , link = "https://doi.org/10.1016/S0140-6736(17)33102-1" + } + , { author = "Lean, Michael E. J., et al." + , title = "Durability of a Primary Care-Led Weight-Management Intervention for Remission of Type 2 Diabetes: 2-Year Results of the DiRECT Open-Label, Cluster-Randomised Trial" + , journal = "The Lancet. Diabetes & Endocrinology" + , year = "2019" + , link = "https://doi.org/10.1016/S2213-8587(19)30068-3" + } + , { author = "Lean, Michael Ej, et al." + , title = "5-Year Follow-up of the Randomised Diabetes Remission Clinical Trial (DiRECT) of Continued Support for Weight Loss Maintenance in the UK: An Extension Study" + , journal = "The Lancet. Diabetes & Endocrinology" + , year = "2024" + , link = "https://doi.org/10.1016/S2213-8587(23)00385-6" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/Template.elm b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/Template.elm new file mode 100755 index 0000000..38fa1d9 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/MainBlog/Template.elm @@ -0,0 +1,29 @@ +module Config.Pages.Blogs.MainBlog.Template exposing (article) + +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Route.Path as Path + + +article : BlogArticle +article = + { articleName = "" + , articleLink = Path.toString Path.Blog_ + , articleAuthor = "Nick Hiebert" + , isNewTabLink = False + , hasReferences = True + , hasTableOfContents = True + , articleImage = "" + , articlePublished = "" + , articleBody = """ + + +Thank you for reading! If you like what you've read and want help me create more content like this, consider pledging your [Support](https://www.uprootnutrition.com/donate). Every little bit helps! I hope you found the content interesting!""" + , articleReferences = + [ { author = "" + , title = "" + , journal = "" + , year = "" + , link = "" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Blogs/Types.elm b/packages/website/frontend/src/Config/Pages/Blogs/Types.elm new file mode 100755 index 0000000..84312a8 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Blogs/Types.elm @@ -0,0 +1,17 @@ +module Config.Pages.Blogs.Types exposing (BlogArticle) + +import Config.Helpers.Articles.Types exposing (References) + + +type alias BlogArticle = + { articleName : String + , articleBody : String + , articleImage : String + , articleLink : String + , articleAuthor : String + , isNewTabLink : Bool + , hasReferences : Bool + , hasTableOfContents : Bool + , articlePublished : String + , articleReferences : List References + } diff --git a/packages/website/frontend/src/Config/Pages/Contact/Records.elm b/packages/website/frontend/src/Config/Pages/Contact/Records.elm new file mode 100755 index 0000000..d31b0af --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Contact/Records.elm @@ -0,0 +1,34 @@ +module Config.Pages.Contact.Records exposing (..) + +import Config.Pages.Contact.Types exposing (Contact) +import Route.Path as Path + + +contactInquiry : Contact +contactInquiry = + { contactName = "General Inquiries" + , contactImage = "email" + , contactDescription = "To submit any inquiries, including service purchases, general questions, guest appearances, webinars, public speaking, please reach out via email by clicking here. You may also submit Discord ban appeals here if you wish. To submit any criticism of the content on this site, follow the Criticism link below." + , contactLink = Path.toString Path.Contact_Inquiry + , isNewTabLink = False + } + + +contactCriticism : Contact +contactCriticism = + { contactName = "Criticism" + , contactImage = "discord" + , contactDescription = "To submit critiques of my arguments, reasoning, blog articles, video content, or public statements, please follow this link and adhere to the instructions precisely. Before pursuing any criticism, consider that misuse of this option may result in an immediate Discord ban with no opportunity for appeal." + , contactLink = Path.toString Path.Contact_Criticism + , isNewTabLink = False + } + + +contactMain : Contact +contactMain = + { contactName = "Contact" + , contactImage = "" + , contactDescription = "" + , contactLink = "" + , isNewTabLink = True + } diff --git a/packages/website/frontend/src/Config/Pages/Contact/Types.elm b/packages/website/frontend/src/Config/Pages/Contact/Types.elm new file mode 100755 index 0000000..22f9fb1 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Contact/Types.elm @@ -0,0 +1,10 @@ +module Config.Pages.Contact.Types exposing (Contact) + + +type alias Contact = + { contactName : String + , contactImage : String + , contactLink : String + , contactDescription : String + , isNewTabLink : Bool + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/List.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/List.elm new file mode 100755 index 0000000..2a28de9 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/List.elm @@ -0,0 +1,113 @@ +module Config.Pages.Debate.Arguments.List exposing (argumentList) + +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Records.Abortion exposing (argumentAbortion) +import Config.Pages.Debate.Arguments.Records.Agnosticism exposing (argumentAgnosticism) +import Config.Pages.Debate.Arguments.Records.AgriculturalPredation exposing (argumentAgriculturalPredation) +import Config.Pages.Debate.Arguments.Records.AnabolicKeto exposing (argumentAnabolicKeto) +import Config.Pages.Debate.Arguments.Records.AnimalRights exposing (argumentAnimalRights) +import Config.Pages.Debate.Arguments.Records.AntagonisticPleiotropy exposing (argumentAntagonisticPleiotropy) +import Config.Pages.Debate.Arguments.Records.AntiRewilding exposing (argumentAntiRewilding) +import Config.Pages.Debate.Arguments.Records.AntiVandalism exposing (argumentAntiVandalism) +import Config.Pages.Debate.Arguments.Records.ApoBCVD exposing (argumentApoBCVD) +import Config.Pages.Debate.Arguments.Records.BoobyTrapPagers exposing (argumentBoobyTrapPagers) +import Config.Pages.Debate.Arguments.Records.CarbsObesity exposing (argumentCarbsObesity) +import Config.Pages.Debate.Arguments.Records.CateUpfReductio exposing (argumentCateUpfReductio) +import Config.Pages.Debate.Arguments.Records.ColonizingNature exposing (argumentColonizingNature) +import Config.Pages.Debate.Arguments.Records.CropDeaths exposing (argumentCropDeaths) +import Config.Pages.Debate.Arguments.Records.DairyCowRape exposing (argumentDairyCowRape) +import Config.Pages.Debate.Arguments.Records.DietaryCholesterol exposing (argumentDietaryCholesterol) +import Config.Pages.Debate.Arguments.Records.Dummy exposing (argumentDummy) +import Config.Pages.Debate.Arguments.Records.EfilismPatrolSquad exposing (argumentEfilismPatrolSquad) +import Config.Pages.Debate.Arguments.Records.EpidemiologyCausality exposing (argumentEpidemiologyCausality) +import Config.Pages.Debate.Arguments.Records.EthicalSlurs exposing (argumentEthicalSlurs) +import Config.Pages.Debate.Arguments.Records.FineTuning exposing (argumentFineTuning) +import Config.Pages.Debate.Arguments.Records.FlatEarthDebunk exposing (argumentFlatEarthDebunk) +import Config.Pages.Debate.Arguments.Records.FructoseNAFLD exposing (argumentFructoseNAFLD) +import Config.Pages.Debate.Arguments.Records.HealthPromotingFoods exposing (argumentHealthPromotingFoods) +import Config.Pages.Debate.Arguments.Records.HealthSeeker exposing (argumentHealthSeeker) +import Config.Pages.Debate.Arguments.Records.HealthyChocolate exposing (argumentHealthyChocolate) +import Config.Pages.Debate.Arguments.Records.HealthyDairy exposing (argumentHealthyDairy) +import Config.Pages.Debate.Arguments.Records.HealthyFattyFish exposing (argumentHealthyFattyFish) +import Config.Pages.Debate.Arguments.Records.HealthyFibre exposing (argumentHealthyFibre) +import Config.Pages.Debate.Arguments.Records.HealthyFood exposing (argumentHealthyFood) +import Config.Pages.Debate.Arguments.Records.HealthyPlantFoods exposing (argumentHealthyPlantFoods) +import Config.Pages.Debate.Arguments.Records.HealthySeedOils exposing (argumentHealthySeedOils) +import Config.Pages.Debate.Arguments.Records.HealthySoy exposing (argumentHealthySoy) +import Config.Pages.Debate.Arguments.Records.ImmortalityReductio exposing (argumentImmortalityReductio) +import Config.Pages.Debate.Arguments.Records.LuigiTerrorist exposing (argumentLuigiTerrorist) +import Config.Pages.Debate.Arguments.Records.Malondialdehyde exposing (argumentMalondialdehyde) +import Config.Pages.Debate.Arguments.Records.OddOrderPredators exposing (argumentOddOrderPredators) +import Config.Pages.Debate.Arguments.Records.Omega3Omega6Ratio exposing (argumentOmega3Omega6Ratio) +import Config.Pages.Debate.Arguments.Records.Ostroveganism exposing (argumentOstroveganism) +import Config.Pages.Debate.Arguments.Records.PlantBasedCVDReversal exposing (argumentPlantBasedCVDReversal) +import Config.Pages.Debate.Arguments.Records.PollinationReductio exposing (argumentPollinationReductio) +import Config.Pages.Debate.Arguments.Records.PolyphenolReductio exposing (argumentPolyphenolReductio) +import Config.Pages.Debate.Arguments.Records.ScratcherPioneers exposing (argumentScratcherPioneers) +import Config.Pages.Debate.Arguments.Records.SodiumCVD exposing (argumentSodiumCVD) +import Config.Pages.Debate.Arguments.Records.TMAOCausality exposing (argumentTMAOCausality) +import Config.Pages.Debate.Arguments.Records.Template exposing (argument) +import Config.Pages.Debate.Arguments.Records.TransPeople exposing (argumentTransPeople) +import Config.Pages.Debate.Arguments.Records.TruncatedMeta exposing (argumentTruncatedMeta) +import Config.Pages.Debate.Arguments.Records.UnhealthyCoconutOil exposing (argumentUnhealthyCoconutOil) +import Config.Pages.Debate.Arguments.Records.UnhealthyProcessedMeat exposing (argumentUnhealthyProcessedMeat) +import Config.Pages.Debate.Arguments.Records.UnhealthyRedMeat exposing (argumentUnhealthyRedMeat) +import Config.Pages.Debate.Arguments.Records.UnhealthySaturatedFat exposing (argumentUnhealthySaturatedFat) +import Config.Pages.Debate.Arguments.Records.VeganSocietyReductio exposing (argumentVeganSocietyReductio) +import Config.Pages.Debate.Arguments.Types exposing (..) + + +argumentList : List Argument +argumentList = + [ argumentApoBCVD + , argumentAnabolicKeto + , argumentAntagonisticPleiotropy + , argumentCarbsObesity + , argumentCateUpfReductio + , argumentDietaryCholesterol + , argumentFructoseNAFLD + , argumentHealthPromotingFoods + , argumentHealthSeeker + , argumentHealthyChocolate + , argumentHealthyDairy + , argumentHealthyFattyFish + , argumentHealthyFibre + , argumentHealthyFood + , argumentHealthyPlantFoods + , argumentHealthySeedOils + , argumentHealthySoy + , argumentMalondialdehyde + , argumentOmega3Omega6Ratio + , argumentPlantBasedCVDReversal + , argumentLuigiTerrorist + , argumentPolyphenolReductio + , argumentSodiumCVD + , argumentTMAOCausality + , argumentUnhealthyCoconutOil + , argumentUnhealthyProcessedMeat + , argumentUnhealthyRedMeat + , argumentUnhealthySaturatedFat + , argumentAbortion + , argumentAgnosticism + , argumentAgriculturalPredation + , argumentAnimalRights + , argumentAntiRewilding + , argumentAntiVandalism + , argumentColonizingNature + , argumentCropDeaths + , argumentDairyCowRape + , argumentEfilismPatrolSquad + , argumentEthicalSlurs + , argumentFineTuning + , argumentImmortalityReductio + , argumentOddOrderPredators + , argumentOstroveganism + , argumentPollinationReductio + , argumentScratcherPioneers + , argumentTransPeople + , argumentVeganSocietyReductio + , argumentBoobyTrapPagers + , argumentEpidemiologyCausality + , argumentFlatEarthDebunk + , argumentTruncatedMeta + ] diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Abortion.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Abortion.elm new file mode 100755 index 0000000..bde3e63 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Abortion.elm @@ -0,0 +1,70 @@ +module Config.Pages.Debate.Arguments.Records.Abortion exposing (argumentAbortion) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentAbortion : Argument +argumentAbortion = + { argumentTitle = toTitleCase "Argument Against Sentient Abortions" + , propositionTitle = "One's whims are not a sufficient justification for the termination of sentient human life." + , propositionReductio = "" + , propositionSummary = "Consenting to becoming pregnant, or at least implicitly accepting the risks of pregnancy by engaging in reckless sex, should disqualify one from having the opportunity to a abort a sentient fetus if the pregnancy doesn't pose a significant health risk to the mother." + , proofLink = "https://www.umsu.de/trees/#(P~2Q~5R),(P),(Q),((R~1F~1~3H)~5M),(F),(~3H),(M~5~3W)%7C=(~3W)" + , argumentCertainty = 6 + , argumentImage = "abortion" + , argumentHashtags = [ PoliticsAbortion, PhilosophySentience, PhilosophyEthics ] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "one consents to becoming pregnant" + } + , { definiendum = "Q" + , definiens = "one consensually engages in sexual activity without contraception" + } + , { definiendum = "R" + , definiens = "one is implicitly committed to at least accepting the average risks for the average pregnancy" + } + , { definiendum = "F" + , definiens = "one's pregnancy persists long enough for fetal sentience to develop" + } + , { definiendum = "H" + , definiens = "one's risk profile during pregnancy is high" + } + , { definiendum = "M" + , definiens = "one is morally bound to carrying the pregnancy to term" + } + , { definiendum = "W" + , definiens = "one's whims are a sufficient justification for the termination of sentient human life" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If one consents to becoming pregnant or one consensually engages in sexual activity without contraception, then one is implicitly committed to at least accepting the average risks for the average pregnancy." + , notation = "P鈭≦鈫扲" + } + , { premise = "One consents to becoming pregnant." + , notation = "P" + } + , { premise = "One consensually engages in sexual activity without contraception." + , notation = "Q" + } + , { premise = "If one is implicitly committed to at least accepting the average risks for the average pregnancy and one's pregnancy persists long enough for fetal sentience to develop and one's risk profile during pregnancy is not high, then one is morally bound to carrying the pregnancy to term." + , notation = "R鈭鈭琀鈫扢" + } + , { premise = "One's pregnancy persists long enough for fetal sentience to develop." + , notation = "F" + } + , { premise = "One's risk profile during pregnancy is not high." + , notation = "卢H" + } + , { premise = "If one is morally bound to carrying the pregnancy to term, then one's whims are not a sufficient justification for the termination of sentient human life." + , notation = "M鈫捖琖" + } + ] + , conclusion = "Therefore, one's whims are not a sufficient justification for the termination of sentient human life." + , conclusionNotation = "卢W" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Agnosticism.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Agnosticism.elm new file mode 100755 index 0000000..8944015 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Agnosticism.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.Agnosticism exposing (argumentAgnosticism) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentAgnosticism : Argument +argumentAgnosticism = + { argumentTitle = toTitleCase "Agnosticism Consistency Checker" + , propositionTitle = "An interlocutor (who cannot unpack what evidence would lead them to change their doxastic attitude on a proposition) should temporarily withhold the belief that the proposition at hand is true." + , propositionReductio = "" + , propositionSummary = "Listen, if one doesn't know what would change their mind on a topic, about which they form strong opinions, then it's not clear why they'd even hold said opinions strongly in the first place. Given this, it would make more sense just to suspend your judgement in the meantime and form no opinions on the subject." + , proofLink = "https://www.umsu.de/trees/#(~6x~6y(~3Pxy~5~3Qxy)),(~6x~6y(~3Qxy~5Rxy)),(~3Por)|=(Ror)" + , argumentCertainty = 9 + , argumentImage = "agnostic" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x,y)" + , definiens = "(x) can unpack what evidence would lead them to change their doxastic attitude on (y)" + } + , { definiendum = "Q(x,y)" + , definiens = "(x) knows why they believe that (y) is true" + } + , { definiendum = "R(x,y)" + , definiens = "(x) should temporarily withhold the belief that (y) is true" + } + , { definiendum = "x" + , definiens = "a person" + } + , { definiendum = "y" + , definiens = "a proposition" + } + , { definiendum = "o" + , definiens = "the interlocutor" + } + , { definiendum = "r" + , definiens = "the proposition at hand" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If one cannot unpack what evidence would lead them to change their doxastic attitude on a proposition, then one does does not know why they believe that a proposition is true." + , notation = "鈭x鈭y(卢Pxy鈫捖琎xy)" + } + , { premise = "If one does not know why they believe that a proposition is true, then one should temporarily withhold the belief that a proposition is true." + , notation = "鈭x鈭y(卢Qxy鈫扲xy)" + } + , { premise = "The interlocutor cannot unpack what evidence would lead them to change their doxastic attitude on the proposition at hand." + , notation = "(卢Por)" + } + ] + , conclusion = "Therefore, the interlocutor should temporarily withhold the belief that the proposition at hand is true." + , conclusionNotation = "Ror" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AgriculturalPredation.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AgriculturalPredation.elm new file mode 100755 index 0000000..50f99e2 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AgriculturalPredation.elm @@ -0,0 +1,73 @@ +module Config.Pages.Debate.Arguments.Records.AgriculturalPredation exposing (argumentAgriculturalPredation) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentAgriculturalPredation : Argument +argumentAgriculturalPredation = + { argumentTitle = toTitleCase "Argument for Animal Agrirculture as Predation" + , propositionTitle = "Animal agriculture counts as predation." + , propositionReductio = "" + , propositionSummary = "Some vegans suggest that killing odd order predators is wrong because predation is permissible. However, if animal agriculture also counts as predation, it's analytically entailed that animal agriculture is permissible as well." + , proofLink = "https://www.umsu.de/trees/#(~6x~6y~6z(Px~4Qxyz~1(Rxyz~2Sxyz)~1Wxyz)),(Qahl),(Rahl~2Sahl),(Wahl)%7C=(Pa)" + , argumentCertainty = 10 + , argumentImage = "predatoragriculture" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) counts as predation" + } + , { definiendum = "Q(x,y,z)" + , definiens = "(x) involves a (y) regularly capturing a (z)" + } + , { definiendum = "R(x,y,z)" + , definiens = "(x) involves a (y) regularly killing a (z)" + } + , { definiendum = "S(x,y,z)" + , definiens = "(x) involves a (y) regularly subduing a (z)" + } + , { definiendum = "W(x,y,z)" + , definiens = "(x) involves a (y) regularly consuming, to the captor's benefit, a (z)" + } + , { definiendum = "x" + , definiens = "an action" + } + , { definiendum = "y" + , definiens = "an animal" + } + , { definiendum = "z" + , definiens = "another animal" + } + , { definiendum = "a" + , definiens = "animal agriculture" + } + , { definiendum = "h" + , definiens = "humans" + } + , { definiendum = "l" + , definiens = "livestock" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "Something counts as predation if, and only if, something involves an animal regularly capturing, killing or subduing, and consuming, to the captor's benefit, another animal." + , notation = "鈭x鈭y鈭z(Px鈫擰xyz鈭(Rxyz鈭⊿xyz)鈭xyz)" + } + , { premise = "Animal agriculture involves humans regularly capturing livestock." + , notation = "Qahl" + } + , { premise = "Animal agriculture involves humans regularly killing or subduing livestock." + , notation = "Rahl鈭⊿ahl" + } + , { premise = "Animal agriculture involves humans regularly consuming, to the captors' benefit, livestock." + , notation = "Wahl" + } + ] + , conclusion = "Therefore, animal agriculture counts as predation." + , conclusionNotation = "Pa" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AnabolicKeto.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AnabolicKeto.elm new file mode 100755 index 0000000..af9b24a --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AnabolicKeto.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Arguments.Records.AnabolicKeto exposing (argumentAnabolicKeto) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentAnabolicKeto : Argument +argumentAnabolicKeto = + { argumentTitle = toTitleCase "Anabolic Opportunity Cost on Keto" + , propositionTitle = "Ketogenic diets are likely to cost anabolic potential compared to non-ketogenic diets." + , propositionReductio = "" + , propositionSummary = "A higher proportion of amino acids are spent on gluconeogenesis while on ketogenic diets, reducing the amount available for hypertrophy. This likely costs anabolic potential on ketogenic diets compared to non-ketogenic diets." + , proofLink = "https://www.umsu.de/trees/#(P~5Q),(P),(Q~5R)|=(R)" + , argumentCertainty = 5 + , argumentImage = "anabolicketo" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "a higher proportion of amino acids are spent on gluconeogenesis while on ketogenic diets compared to non-ketogenic diets" + } + , { definiendum = "Q" + , definiens = "a lower proportion of amino acids are available for hypertrophy on ketogenic diets compared to non-ketogenic diets" + } + , { definiendum = "R" + , definiens = "ketogenic diets are likely to cost anabolic potential compared to non-ketogenic diets" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If a higher proportion of amino acids are spent on gluconeogenesis while on ketogenic diets compared to non-ketogenic diets, then a lower proportion of amino acids are available for hypertrophy on ketogenic diets compared to non-ketogenic diets." + , notation = "P鈫扱" + } + , { premise = "If a lower proportion of amino acids are available for hypertrophy on ketogenic diets compared to non-ketogenic diets, then ketogenic diets are likely to cost anabolic potential compared to non-ketogenic diets." + , notation = "Q鈫扲" + } + , { premise = "A higher proportion of amino acids are spent on gluconeogenesis while on ketogenic diets compared to non-ketogenic diets." + , notation = "P" + } + ] + , conclusion = "Therefore, ketogenic diets are likely to cost anabolic potential compared to non-ketogenic diets." + , conclusionNotation = "R" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AnimalRights.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AnimalRights.elm new file mode 100755 index 0000000..7c824fa --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AnimalRights.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.AnimalRights exposing (argumentAnimalRights) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentAnimalRights : Argument +argumentAnimalRights = + { argumentTitle = toTitleCase "Argument for Animal Rights" + , propositionTitle = "We should not exploit animals to any greater degree than we would tolerate for humans." + , propositionReductio = "" + , propositionSummary = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. As such, if one wants to deny that animals should be given these trait-adjusted rights, they'll have to name a trait that accounts for the differential normative evaluation. Typically this is done by rejecting P3 and saying something retarded." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~5~3Qx)),(~3Pa~5~7t(Rta~5(Rth~5~3Ph))),(~3~7t(Rta~5(Rth~5~3Ph))),(Pa)|=(~3Qa)" + , argumentCertainty = 10 + , argumentImage = "animalrights" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has moral worth" + } + , { definiendum = "Q(x)" + , definiens = "we should exploit (x) to any greater degree than we would tolerate for trait-adjusted humans" + } + , { definiendum = "R(t,x)" + , definiens = "there exists a (t) that is absent in (x)" + } + , { definiendum = "x" + , definiens = "a being" + } + , { definiendum = "t" + , definiens = "trait" + } + , { definiendum = "a" + , definiens = "animal" + } + , { definiendum = "h" + , definiens = "human" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a being has moral worth, then we should not exploit it to any greater degree than we would tolerate for trait-adjusted humans." + , notation = "鈭x(Px鈫捖琎x)" + } + , { premise = "If animals don鈥檛 have moral worth, then there exists a trait that is absent in animals such that if it were absent in humans, humans wouldn鈥檛 have moral worth." + , notation = "卢Pa鈫掆垉t(Rta鈫(Rth鈫捖琍h))" + } + , { premise = "There doesn鈥檛 exist a trait that is absent in animals such that if it were absent in humans, humans wouldn鈥檛 have moral worth." + , notation = "卢鈭僼(Rta鈫(Rth鈫捖琍h))" + } + ] + , conclusion = "Therefore, we should not exploit animals to any greater degree than we would tolerate for trait-adjusted humans." + , conclusionNotation = "卢Qa" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AntagonisticPleiotropy.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AntagonisticPleiotropy.elm new file mode 100755 index 0000000..87cdcec --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AntagonisticPleiotropy.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Arguments.Records.AntagonisticPleiotropy exposing (argumentAntagonisticPleiotropy) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentAntagonisticPleiotropy : Argument +argumentAntagonisticPleiotropy = + { argumentTitle = toTitleCase "Argument Against Ancestral Diets" + , propositionTitle = "Ancestral diets have inherent disadvantages over novel diets" + , propositionReductio = "" + , propositionSummary = "Humans have more genetic adaptations to ancestral foods than novel foods, which makes the long-term negative consequences of antagonistic pleiotropy a greater concern for ancestral foods." + , proofLink = "https://www.umsu.de/trees/#(P~5Q),(Q~5R),(P)|=(R)" + , argumentCertainty = 6 + , argumentImage = "antagonisticpleiotropy" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "humans have more genetic adaptations to ancestral foods than novel foods" + } + , { definiendum = "Q" + , definiens = "antagonistic pleiotropy is more of a concern for ancestral foods than novel foods" + } + , { definiendum = "R" + , definiens = "ancestral foods have inherent disadvantages over novel foods" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If humans have more genetic adaptations to ancestral foods than novel foods, then antagonistic pleiotropy is more of a concern for ancestral foods than novel foods." + , notation = "P鈫扱" + } + , { premise = "If antagonistic pleiotropy is more of a concern for ancestral foods than novel foods, then ancestral diets have inherent disadvantages over novel diets." + , notation = "Q鈫扲" + } + , { premise = "Humans have more genetic adaptations to ancestral foods than novel foods." + , notation = "P" + } + ] + , conclusion = "Therefore, ancestral foods have inherent disadvantages over novel foods." + , conclusionNotation = "R" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AntiRewilding.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AntiRewilding.elm new file mode 100755 index 0000000..6266515 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AntiRewilding.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.AntiRewilding exposing (argumentAntiRewilding) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentAntiRewilding : Argument +argumentAntiRewilding = + { argumentTitle = toTitleCase "Argument Against Rewilding" + , propositionTitle = "Rewilding sentient animals is immoral." + , propositionReductio = "" + , propositionSummary = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. I think humans have the right not to be bred into wild circumstances where they're faced with the full brutality of the natural world, and by extension I think non-human animals have this right too." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~5~3Qx)),(Pa),(~3Qa~5~3R),(~3R~5Sa)|=(Sa)" + , argumentCertainty = 10 + , argumentImage = "rewilding" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has negative rights" + } + , { definiendum = "Q(x)" + , definiens = "we should defend (x) from rights violations to any lesser degree than we would tolerate for humans" + } + , { definiendum = "R" + , definiens = "it is permissible to subject animals to conditions that are likely to involve predation, starvation, or death due to environmental exposure to any greater degree than we would tolerate for humans" + } + , { definiendum = "S(a)" + , definiens = "rewilding sentient animals is immoral" + } + , { definiendum = "x" + , definiens = "a being" + } + , { definiendum = "a" + , definiens = "sentient animals" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a being has negative rights, then we should not defend a being from rights violations to any lesser degree than we would tolerate for humans." + , notation = "鈭x(Px鈫捖琎x)" + } + , { premise = "Sentient animals have negative rights." + , notation = "Pa" + } + , { premise = "If we should not defend sentient animals from rights violations to any lesser degree than we would tolerate for humans, then it is not permissible to subject sentient animals to conditions that are likely to involve predation, starvation, or death due to environmental exposure to any greater degree than we would tolerate for humans." + , notation = "卢Qa鈫捖琑" + } + , { premise = "If it is not permissible to subject sentient animals to conditions that are likely to involve predation, starvation, or death due to environmental exposure to any greater degree than we would tolerate for humans, then rewilding sentient animals is immoral." + , notation = "卢R鈫扴a" + } + ] + , conclusion = "Therefore, rewilding sentient animals is immoral." + , conclusionNotation = "Sa" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AntiVandalism.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AntiVandalism.elm new file mode 100755 index 0000000..c98e8f8 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/AntiVandalism.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Arguments.Records.AntiVandalism exposing (argumentAntiVandalism) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentAntiVandalism : Argument +argumentAntiVandalism = + { argumentTitle = toTitleCase "Argument Against Zoo Vandalism" + , propositionTitle = "Vandalizing zoos increases the probability of harming the animals they keep." + , propositionReductio = "" + , propositionSummary = "The more we pressure institutions that hold innocent animals captive to direct their funds to endeavours or projects unrelated to animal care, the less money those institutions are going to have to devote to animal care." + , proofLink = "https://www.umsu.de/trees/#(P~5Q),(P),(Q~5R)%7C=(R)" + , argumentCertainty = 8 + , argumentImage = "antivandalism" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "zoos must spend extra money cleaning graffiti" + } + , { definiendum = "Q" + , definiens = "zoos will have less money to devote to animal care" + } + , { definiendum = "R" + , definiens = "vandalizing zoos increases the probability of harming the animals they keep" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If zoos must spend extra money cleaning graffiti, then zoos will have less money to devote to animal care." + , notation = "P鈫扱" + } + , { premise = "If zoos will have less money to devote to animal care, then vandalizing zoos increases the probability of harming the animals they keep." + , notation = "Q鈫扲" + } + , { premise = "Zoos must spend extra money cleaning graffiti." + , notation = "P" + } + ] + , conclusion = "Therefore, vandalizing zoos increases the probability of harming the animals they keep." + , conclusionNotation = "R" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ApoBCVD.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ApoBCVD.elm new file mode 100755 index 0000000..ce57e82 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ApoBCVD.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Arguments.Records.ApoBCVD exposing (argumentApoBCVD) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentApoBCVD : Argument +argumentApoBCVD = + { argumentTitle = toTitleCase "Argument for Atherogenic ApoB" + , propositionTitle = "ApoB-containing lipoproteins dose-dependently cause atherosclerosis." + , propositionReductio = "" + , propositionSummary = "ApoB-containing lipoproteins consistently and proportionately associate with increased plaque volume after controlling for relevant confounders, which satisfies the conditions outlined for an exposure to cause atherosclerosis." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(Qw)|=(Pw)" + , argumentCertainty = 9 + , argumentImage = "lipoprotein" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) dose-dependently causes atherosclerosis" + } + , { definiendum = "Q(x)" + , definiens = "(x) consistently, linearly, and proportionately associates with increased plaque volume after adjustment or control over relevant confounders and covariates" + } + , { definiendum = "x" + , definiens = "a substance" + } + , { definiendum = "w" + , definiens = "ApoB-containing lipoproteins" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, a substance dose-dependently causes atherosclerosis if, and only if, a substance consistently, linearly, and proportionately associates with increased plaque volume after adjustment or control over relevant confounders and covariates." + , notation = "鈭x(Px鈫擰x)" + } + , { premise = "ApoB-containing lipoproteins consistently, linearly, and proportionately associates with increased plaque volume after adjustment or control over relevant confounders and covariates." + , notation = "Qw" + } + ] + , conclusion = "Therefore, ApoB-containing lipoproteins dose-dependently cause atherosclerosis." + , conclusionNotation = "Pw" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/BoobyTrapPagers.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/BoobyTrapPagers.elm new file mode 100755 index 0000000..2f12dcc --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/BoobyTrapPagers.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.BoobyTrapPagers exposing (argumentBoobyTrapPagers) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentBoobyTrapPagers : Argument +argumentBoobyTrapPagers = + { argumentTitle = toTitleCase "Argument Against Israeli Pagers as Booby-Traps" + , propositionTitle = "The Israeli pagers were not booby-traps." + , propositionReductio = "" + , propositionSummary = "Based on the definitions found in the IHL Databases, it's unlikely that the Israeli pager bombs qualify as booby-traps. However, there is sufficient ambiguity in the language that I'm not convinced it's necessarily an analytical truth." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4(Qx~1Rx~1Sx))),(Qp),(Rp),(~3Sp)|=(~3Pp)" + , argumentCertainty = 4 + , argumentImage = "pagers" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) is a booby-trap" + } + , { definiendum = "Q(x)" + , definiens = "(x) is a device or material" + } + , { definiendum = "R(x)" + , definiens = "(x) is designed, constructed, or adapted to kill or injure" + } + , { definiendum = "S(x)" + , definiens = "(x) functions (as a device or material that was designed, constructed, or adapted to kill or injure) when a person disturbs or approaches an apparently safe act" + } + , { definiendum = "x" + , definiens = "a device" + } + , { definiendum = "p" + , definiens = "Israeli pagers" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, a device is a booby-trap if, and only if, the device is a device or material AND the device is designed, constructed, or adapted to kill or injure AND x functions (as a device or material that was designed, constructed, or adapted to kill or injure) when a person disturbs or approaches an apparently safe act." + , notation = "鈭x(Px鈫(Qx鈭x鈭x))" + } + , { premise = "The Israeli pagers were devices or materials." + , notation = "Qp" + } + , { premise = "The Israeli pagers were designed, constructed, or adapted to kill or injure." + , notation = "Rp" + } + , { premise = "The Israeli pagers did not function (as devices or materials that were designed, constructed, or adapted to kill or injure) when a person disturbs or approaches an apparently safe act." + , notation = "卢Sp" + } + ] + , conclusion = "Therefore, the Israeli pagers were not booby-traps." + , conclusionNotation = "卢Pp" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/CarbsObesity.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/CarbsObesity.elm new file mode 100755 index 0000000..5a8c826 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/CarbsObesity.elm @@ -0,0 +1,40 @@ +module Config.Pages.Debate.Arguments.Records.CarbsObesity exposing (argumentCarbsObesity) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentCarbsObesity : Argument +argumentCarbsObesity = + { argumentTitle = toTitleCase "Argument Against the Obesogenic Carbohydrates" + , propositionTitle = "Carbohydrates do not uniquely cause fat accumulation or obesity." + , propositionReductio = "" + , propositionSummary = "There are a number of predictions made from the hypothesis that carbohydrates uniquely cause obesity. One of those predictions is that obesity would track with carbohydrate intake, but it doesn't" + , proofLink = "https://www.umsu.de/trees/#(P~5Q),(~3Q)|=(~3P)" + , argumentCertainty = 9 + , argumentImage = "carbobesity" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "carbs uniquely cause fat accumulation or obesity" + } + , { definiendum = "Q" + , definiens = "populations with high carb diets have uniquely higher rates of obesity after adjustment or control over relevant confounders and covariates" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If carbohydrates uniquely cause fat accumulation or obesity, then, populations with high carbohydrate diets have uniquely higher rates of obesity after adjustment or control over relevant confounders and covariates." + , notation = "P鈫扱" + } + , { premise = "Populations with high carbohydrate diets do not have uniquely higher rates of obesity after adjustment or control over relevant confounders and covariates." + , notation = "卢Q" + } + ] + , conclusion = "Therefore, carbs do not uniquely cause fat accumulation or obesity." + , conclusionNotation = "卢P" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/CateUpfReductio.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/CateUpfReductio.elm new file mode 100755 index 0000000..7f1794a --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/CateUpfReductio.elm @@ -0,0 +1,49 @@ +module Config.Pages.Debate.Arguments.Records.CateUpfReductio exposing (argumentCateUpfReductio) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentCateUpfReductio : Argument +argumentCateUpfReductio = + { argumentTitle = toTitleCase "Cate's Ultraprocessed Food Reductio" + , propositionTitle = "Reducing the dietary intake of red meat and butter will be good for us all." + , propositionReductio = "" + , propositionSummary = "Cate Shanahan affirmed P1 in a post on X. The position is basically that if an ingredient is included in ultraprocessed foods, then reducing the intake of that ingredient (presumably inside and outside of the ultraprocessed food context) is a good thing." + , proofLink = "https://www.umsu.de/trees/#~6x(Px~5Qx),Pr~1Pb|=Qr~1Qb" + , argumentCertainty = 10 + , argumentImage = "cateupfreductio" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) is an ingredient in ultraprocessed foods" + } + , { definiendum = "Q(x)" + , definiens = "reducing the dietary intake of (x) will be good for us all" + } + , { definiendum = "x" + , definiens = "a substance" + } + , { definiendum = "r" + , definiens = "red meat" + } + , { definiendum = "b" + , definiens = "butter" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If a substance is an ingredient in ultraprocessed foods, then reducing the dietary intake of that substance will be good for us all." + , notation = "鈭x(Px鈫扱x)" + } + , { premise = "Red meat and butter are ingredients in ultraprocessed foods." + , notation = "Pr鈭b" + } + ] + , conclusion = "Therefore, reducing the dietary intake of red meat and butter will be good for us all." + , conclusionNotation = "Qr鈭b" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ColonizingNature.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ColonizingNature.elm new file mode 100755 index 0000000..3927e65 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ColonizingNature.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.ColonizingNature exposing (argumentColonizingNature) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentColonizingNature : Argument +argumentColonizingNature = + { argumentTitle = toTitleCase "Argument for Colonizing Nature" + , propositionTitle = "We are justified in displacing nature into non-existence" + , propositionReductio = "" + , propositionSummary = "All else equal, is a world where sentient beings are getting torn to shreds and eaten alive or starving to death if they don't succumb to this fate better than a world where this does not happen? I'd argue not. As such, I advocate for non-violently displacing nature into non-existence." + , proofLink = "https://www.umsu.de/trees/#(P~1~3Q~1~3R~1~3S~5W),(P),(~3Q),(~3R),(~3S)%7C=(W)" + , argumentCertainty = 10 + , argumentImage = "colonizingnature" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "the natural world contains intolerable rights violations" + } + , { definiendum = "Q" + , definiens = "we know that nature is net positive or net negative for utility" + } + , { definiendum = "R" + , definiens = "there is any known practical means by which to end the rights violations beyond the use of force" + } + , { definiendum = "S" + , definiens = "the natural world is currently instrumentally vital to facilitating human flourishing" + } + , { definiendum = "W" + , definiens = "we are justified in non-violently displacing nature into non-existence" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If the natural world contains intolerable rights violations and we do not know that nature is net positive or net negative for utility and there is not any known practical means by which to end the rights violations beyond the use of force and the natural world is not currently instrumentally vital to facilitating human flourishing, then we are justified in non-violently displacing nature into non-existence." + , notation = "(P鈭琎鈭琑鈭琒)鈫扺" + } + , { premise = "Nature entails intolerable rights violations." + , notation = "P" + } + , { premise = "We do not know if nature is net positive or net negative for utility." + , notation = "卢Q" + } + , { premise = "There is not any known practical means by which to end the rights violations beyond the use of force." + , notation = "卢R" + } + , { premise = "The natural world is not currently instrumentally vital to facilitating human flourishing." + , notation = "卢S" + } + ] + , conclusion = "Therefore, we are justified in non-violently displacing nature into non-existence." + , conclusionNotation = "W" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/CropDeaths.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/CropDeaths.elm new file mode 100755 index 0000000..cab54f2 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/CropDeaths.elm @@ -0,0 +1,40 @@ +module Config.Pages.Debate.Arguments.Records.CropDeaths exposing (argumentCropDeaths) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentCropDeaths : Argument +argumentCropDeaths = + { argumentTitle = toTitleCase "Cropland vs Wildland Argument" + , propositionTitle = "Proposition" + , propositionReductio = "" + , propositionSummary = "We can't claim to know that cropland kills more animals than wildland, because if we did know this, there would be evidence for it, and there isn't any such evidence." + , proofLink = "https://www.umsu.de/trees/#(P~5Q),(~3Q)%7C=(~3P)" + , argumentCertainty = 9 + , argumentImage = "cropdeaths" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "it is known that cropland leads to more animal death than wildland" + } + , { definiendum = "Q" + , definiens = "there is evidence that cropland leads to more animal death than wildland" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If it is known that cropland leads to more animal death than wildland, then there is evidence that cropland leads to more animal death than wildland." + , notation = "P鈫扱" + } + , { premise = "There is not evidence that cropland leads to more animal death than wildland." + , notation = "P" + } + ] + , conclusion = "Therefore, it is not known that cropland leads to more animal death than wildland." + , conclusionNotation = "卢P" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/DairyCowRape.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/DairyCowRape.elm new file mode 100755 index 0000000..2ed5b5f --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/DairyCowRape.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.DairyCowRape exposing (argumentDairyCowRape) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentDairyCowRape : Argument +argumentDairyCowRape = + { argumentTitle = toTitleCase "Argument for Animal Sex Counting as Rape" + , propositionTitle = "An animal mating with another animal qualifies as rape." + , propositionReductio = "" + , propositionSummary = "It's not clear that non-human animal procreation isn't an example of rape if we take sexual interaction in the absence of informed consent to be rape. So, it seems to follow that a bull mating with a cow is rape, for example." + , proofLink = "https://www.umsu.de/trees/#(~6x~6y(Px~4(Qxy~1~3Ryx))),(Qae),(~3Rea)|=(Pa)" + , argumentCertainty = 10 + , argumentImage = "cowrape" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) qualifies as rape" + } + , { definiendum = "Q(x,y)" + , definiens = "(x) involves sexual contact with (y)" + } + , { definiendum = "R(y,x)" + , definiens = "(y) renders informed consent for (x)" + } + , { definiendum = "x" + , definiens = "an action" + } + , { definiendum = "y" + , definiens = "an involved party" + } + , { definiendum = "a" + , definiens = "an animal mating with another animal" + } + , { definiendum = "e" + , definiens = "another animal" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "An action qualifies as rape if, and only if, the action involves sexual contact with an involved party and the involved party does not render informed consent for the action." + , notation = "鈭x鈭y(Px鈫(Qxy鈭琑yx))" + } + , { premise = "An animal mating with another animal involves sexual contact with another animal." + , notation = "Qae" + } + , { premise = "Said animal does not render informed consent to an animal mating with them." + , notation = "卢Rea" + } + ] + , conclusion = "Therefore, an animal mating with another animal qualifies as rape." + , conclusionNotation = "Pa" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/DietaryCholesterol.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/DietaryCholesterol.elm new file mode 100755 index 0000000..19c13f3 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/DietaryCholesterol.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Arguments.Records.DietaryCholesterol exposing (argumentDietaryCholesterol) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentDietaryCholesterol : Argument +argumentDietaryCholesterol = + { argumentTitle = toTitleCase "Argument for Atherogenic Dietary Cholesterol" + , propositionTitle = "Consuming high amounts of dietary cholesterol increases heart disease risk." + , propositionReductio = "" + , propositionSummary = "LDL causally associates with heart disease in a linear and proportional manner, and in all cases exposures that durably increase LDL over time produce likewise increases in heart disease risk. Dietary cholesterol is one such exposure." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~5Qx)),(Pd)|=(Qd)" + , argumentCertainty = 9 + , argumentImage = "dietarycholesterol" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "consuming high amounts of (x) increases LDL" + } + , { definiendum = "Q(x)" + , definiens = "(x) increases heart disease risk" + } + , { definiendum = "x" + , definiens = "a substance" + } + , { definiendum = "d" + , definiens = "dietary cholesterol" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if consuming high amounts of a substance increases LDL, then consuming high amounts of a substance increases heart disease risk." + , notation = "鈭x(Px鈫扱x)" + } + , { premise = "Consuming high amounts of dietary cholesterol increases LDL." + , notation = "Pd" + } + ] + , conclusion = "Therefore, consuming high amounts of dietary cholesterol increases heart disease risk." + , conclusionNotation = "Qd" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Dummy.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Dummy.elm new file mode 100755 index 0000000..1580444 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Dummy.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.Dummy exposing (argumentDummy) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentDummy : Argument +argumentDummy = + { argumentTitle = toTitleCase "" + , propositionTitle = "" + , propositionReductio = "" + , propositionSummary = "" + , proofLink = "" + , argumentCertainty = 6 + , argumentImage = "" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If evidence that is stronger than the best animal food epidemiology is required to demonstrate causality and confounding is a causal concept, then evidence that is stronger than the best animal food epidemiology is required to validate potential confounders." + , notation = "(P鈭鈫扲)" + } + , { premise = "Evidence that is stronger than the best animal food epidemiology is required to demonstrate causality." + , notation = "P" + } + , { premise = "Confounding is a causal concept." + , notation = "Q" + } + ] + , conclusion = "Therefore, evidence that is stronger than the best animal food epidemiology is required to validate potential confounders." + , conclusionNotation = "R" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/EfilismPatrolSquad.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/EfilismPatrolSquad.elm new file mode 100755 index 0000000..69e655d --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/EfilismPatrolSquad.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.EfilismPatrolSquad exposing (argumentEfilismPatrolSquad) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentEfilismPatrolSquad : Argument +argumentEfilismPatrolSquad = + { argumentTitle = toTitleCase "The Eternal Intergalactic Sentience Patrol Squad" + , propositionTitle = "Efilists are committed to pragmatic natalism." + , propositionReductio = "Efilists fundamentally believe that sentient life is inherently characterized by suffering and that the most ethical action is to prevent the creation of any new sentient beings, ultimately aiming to completely eliminate all conscious life in the universe to end suffering permanently." + , propositionSummary = "If efilists follow their own logic to its ultimate conclusion, they would paradoxically be committed to a form of pragmatic natalism - the very opposite of their core philosophical stance." + , proofLink = "https://www.umsu.de/trees/#(P~5Q),(~3Q),(~3P~1R~5~3S),(R),(~3S~5W)|=(W)" + , argumentCertainty = 10 + , argumentImage = "efilism" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "humans abstaining from procreation maximally reduces rights violations" + } + , { definiendum = "Q" + , definiens = "humans have sterilized all sentient life in the universe" + } + , { definiendum = "R" + , definiens = "many more generations are required to sterilize all sentient life in the universe" + } + , { definiendum = "S" + , definiens = "efilists should abstain from procreation until all sentient life in the universe is sterilized" + } + , { definiendum = "W" + , definiens = "efilists are committed to pragmatic natalism" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If humans abstaining from procreation maximally reduces rights violations, then humans have sterilized all sentient life in the universe." + , notation = "P鈫扱" + } + , { premise = "Humans have not sterilized all sentient life in the universe." + , notation = "卢Q" + } + , { premise = "If humans abstaining from procreation does not maximally reduce rights violations and many more generations are required to sterilize all sentient life in the universe, then efilists should not abstain from procreation until all sentient life in the universe is sterilized." + , notation = "卢P鈭鈫捖琒" + } + , { premise = "Many more generations are required to sterilize all sentient life in the universe." + , notation = "R" + } + , { premise = "If efilists should not abstain from procreation until all sentient life in the universe is sterilized, then efilists are committed to pragmatic natalism." + , notation = "卢S鈫扺" + } + ] + , conclusion = "Therefore, efilists are committed to pragmatic natalism." + , conclusionNotation = "W" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/EpidemiologyCausality.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/EpidemiologyCausality.elm new file mode 100755 index 0000000..4236b15 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/EpidemiologyCausality.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Arguments.Records.EpidemiologyCausality exposing (argumentEpidemiologyCausality) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentEpidemiologyCausality : Argument +argumentEpidemiologyCausality = + { argumentTitle = toTitleCase "Argument for Nutritional Epidemiology" + , propositionTitle = "Nutritional epidemiology generally provides good causal estimates." + , propositionReductio = "" + , propositionSummary = "It's just straightforwardly the case that nutritional epidemiology has outstanding translation rates with randomized controlled trials, or at least these is overwhelmingly consistent compatibility in the results. If randomized controlled trials are the standard against which other research methods are to be evaluated, it's not clear why nutritional epidemiology wouldn't be trustworthy in the aggregate." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~5Qx)),(Pe)|=(Qe)" + , argumentCertainty = 8 + , argumentImage = "epidemiologycausality" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) consistently identifies associations that are later confirmed by randomized controlled trials" + } + , { definiendum = "Q(x)" + , definiens = "(x) generally provides good causal estimates" + } + , { definiendum = "x" + , definiens = "a research method" + } + , { definiendum = "e" + , definiens = "nutritional epidemiology" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a research method consistently identifies associations that are later confirmed by randomized controlled trials, then the research method generally provides good causal estimates." + , notation = "鈭x(Px鈫扱x)" + } + , { premise = "Nutritional epidemiology consistently identifies associations that are later confirmed by randomized controlled trials." + , notation = "Pe" + } + ] + , conclusion = "Therefore, nutritional epidemiology generally provides good causal estimates." + , conclusionNotation = "Qe" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/EthicalSlurs.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/EthicalSlurs.elm new file mode 100755 index 0000000..0c0fefa --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/EthicalSlurs.elm @@ -0,0 +1,64 @@ +module Config.Pages.Debate.Arguments.Records.EthicalSlurs exposing (argumentEthicalSlurs) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentEthicalSlurs : Argument +argumentEthicalSlurs = + { argumentTitle = toTitleCase "Argument for Using the Term Retard" + , propositionTitle = "It is generally permissible to use the term retard with an altered non-bigoted meaning." + , propositionReductio = "" + , propositionSummary = "The only historical examples of bigoted terms, such as slurs, becoming non-harmful to the demographics toward which they were historically targeted involve literally changing the usage of the term to something non-bigoted. I don鈥檛 see any historical precedent for a methodology that has been as successful in achieving this goal as altering the term's usage. Such as using the term \"nigga\" to mean \"friend\", for example." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(~6x(~3Px~5Rx)),(~3Pr),(~3Qr~1Rr~5Sr),(Sr~5Wr)|=(Wr)" + , argumentCertainty = 7 + , argumentImage = "ethicalslurs" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x)'s negative connotations have been neutralised" + } + , { definiendum = "Q(x)" + , definiens = "(x) has been rendered non-bigoted via altered usage" + } + , { definiendum = "R(x)" + , definiens = "oppressed people will continue to suffer from the use of (x)" + } + , { definiendum = "S(x)" + , definiens = "it is permissible to neutralise the term retard's negative connotations" + } + , { definiendum = "W(x)" + , definiens = "it is generally permissible to use the term retard with an altered non-bigoted meaning" + } + , { definiendum = "x" + , definiens = "a slur" + } + , { definiendum = "r" + , definiens = "retard" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all slurs, a slur's negative connotations have been neutralised if, and only if, slur has been rendered non-bigoted via altered usage." + , notation = "鈭x(Px鈫擰x)" + } + , { premise = "For all slurs, if it is not the case that slur's negative connotations have been neutralised, then oppressed people will continue to suffer from the use of slur." + , notation = "鈭x(卢Px鈫扲x)" + } + , { premise = "It is not the case that the term retard's negative connotations have been neutralised." + , notation = "卢Pr" + } + , { premise = "If the term retard has not been rendered non-bigoted via altered usage and oppressed people will continue to suffer from the use of the term retard, then it is permissible to neutralise the term retard's negative connotations." + , notation = "卢Qr鈭r鈫扴r" + } + , { premise = "If it is permissible to neutralise the term retard's negative connotations, then It is generally permissible to use the term retard with an altered non-bigoted meaning." + , notation = "Sr鈫扺r" + } + ] + , conclusion = "Therefore, it is generally permissible to use the term retard with an altered non-bigoted meaning." + , conclusionNotation = "Wr" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/FineTuning.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/FineTuning.elm new file mode 100755 index 0000000..ebf8133 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/FineTuning.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.FineTuning exposing (argumentFineTuning) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentFineTuning : Argument +argumentFineTuning = + { argumentTitle = toTitleCase "Fine Tuning Debunk" + , propositionTitle = "Fine tuning is an infinitely regressive explanation for God" + , propositionReductio = "" + , propositionSummary = "It's not clear why God's constitution wouldn't count as finely tuned, and to the extent that it does count as finely-tuned, it's by extension unclear why fine-tuning wouldn't be an infinitely regressive argument for God's existence." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~5Qx)),(Pg),(Qg~5R)%7C=(R)" + , argumentCertainty = 10 + , argumentImage = "finetuning" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) is finely tuned" + } + , { definiendum = "Q(x)" + , definiens = "(x) has a designer" + } + , { definiendum = "R" + , definiens = "fine tuning is an infinitely regressive explanation for God" + } + , { definiendum = "x" + , definiens = "a thing" + } + , { definiendum = "g" + , definiens = "God's constitution" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If something is finely tuned, then something has a designer." + , notation = "鈭x(Px鈫扱x)" + } + , { premise = "God's constitution is finely tuned." + , notation = "Pg" + } + , { premise = "If God's constitution has a designer, then fine tuning is an infinitely regressive explanation for God." + , notation = "Qg鈫扲" + } + ] + , conclusion = "Therefore, fine tuning is an infinitely regressive explanation for God." + , conclusionNotation = "R" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/FlatEarthDebunk.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/FlatEarthDebunk.elm new file mode 100755 index 0000000..a09b4e3 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/FlatEarthDebunk.elm @@ -0,0 +1,67 @@ +module Config.Pages.Debate.Arguments.Records.FlatEarthDebunk exposing (argumentFlatEarthDebunk) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentFlatEarthDebunk : Argument +argumentFlatEarthDebunk = + { argumentTitle = toTitleCase "Flat Earth Internal Critique" + , propositionTitle = "The stars in the sky will not be perceived as rotating clockwise from anywhere else on the flat Earth, as long as you are looking towards the rotational plane." + , propositionReductio = "" + , propositionSummary = "The argument is structured to demonstrate that, within the context of a flat Earth model, if the stars are perceived as rotating counter-clockwise from the center, they cannot also be perceived as rotating clockwise from any point on the Earth." + , proofLink = "https://www.umsu.de/trees/#(~6x~6y~6z(Pxy~5(Qyz~5Rxz))),(Pkt~1Qta),(Rka~5~3Ska)|=(~3Ska)" + , argumentCertainty = 10 + , argumentImage = "flatearth" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x,y)" + , definiens = "(x) is perceived as rotating counter-clockwise from point (y)" + } + , { definiendum = "Q(y,z)" + , definiens = "(y) is on the same side of the rotational plane as (z)" + } + , { definiendum = "R(x,z)" + , definiens = "(x) will be perceived as rotating counter-clockwise from (z), as long as you are looking towards the plane" + } + , { definiendum = "S(x,z)" + , definiens = "(x) will be perceived as rotating clockwise from (z), as long as you are looking towards the plane" + } + , { definiendum = "x" + , definiens = "an object" + } + , { definiendum = "y" + , definiens = "vantage point A" + } + , { definiendum = "z" + , definiens = "vantage points B" + } + , { definiendum = "k" + , definiens = "stars in the sky" + } + , { definiendum = "t" + , definiens = "the center of the flat Earth" + } + , { definiendum = "a" + , definiens = "anywhere else on the flat Earth" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If an object is perceived as rotating counter-clockwise from vantage point A, then, for all vantage points B, if vantage point A is on the same side of the rotational plane as vantage points B, then the object will be perceived as rotating counter-clockwise from vantage points B, as long as you are looking towards the rotational plane." + , notation = "鈭x鈭y鈭z(Pxy鈫(Qyz鈫扲xz))" + } + , { premise = "The stars in the sky are perceived as rotating counter-clockwise from the center of the flat Earth and the center of the flat Earth is on the same side of the rotational plane as anywhere else on the flat Earth." + , notation = "Pkt鈭ta" + } + , { premise = "If the stars in the sky are perceived as rotating counter-clockwise from anywhere else on the flat Earth, as long as you are looking towards the rotational plane, then the stars in the sky will not be perceived as rotating clockwise from anywhere else on the flat Earth, as long as you are looking towards the rotational plane." + , notation = "Rka鈫捖琒ka" + } + ] + , conclusion = "Therefore, the stars in the sky will not be perceived as rotating clockwise from anywhere else on the flat Earth, as long as you are looking towards the rotational plane." + , conclusionNotation = "卢Ska" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/FructoseNAFLD.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/FructoseNAFLD.elm new file mode 100755 index 0000000..7ce5c49 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/FructoseNAFLD.elm @@ -0,0 +1,40 @@ +module Config.Pages.Debate.Arguments.Records.FructoseNAFLD exposing (argumentFructoseNAFLD) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentFructoseNAFLD : Argument +argumentFructoseNAFLD = + { argumentTitle = toTitleCase "Argument Against Lipogenic Fructose" + , propositionTitle = "Fructose doesn't seem to uniquely cause fatty liver disease." + , propositionReductio = "" + , propositionSummary = "Experimental investigations into fructose overfeeding have consistently failed to produce a fatty liver phenotype in humans. This suggests that fructose, contrary to popular belief in some domains, does not uniquely cause fatty liver disease." + , proofLink = "https://www.umsu.de/trees/#(P~5~3Q),(P)|=(~3Q)" + , argumentCertainty = 8 + , argumentImage = "fructosenafld" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "experimental investigations into fructose overfeeding consistently fail to recreate a fatty liver phenotype in humans" + } + , { definiendum = "Q" + , definiens = "fructose seems to uniquely cause fatty liver disease" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If experimental investigations into fructose overfeeding consistently fail to recreate a fatty liver phenotype in humans, then fructose does not seem to uniquely cause fatty liver disease." + , notation = "P鈫捖琎" + } + , { premise = "Experimental investigations into fructose overfeeding consistently fail to recreate a fatty liver phenotype in humans." + , notation = "P" + } + ] + , conclusion = "Therefore, fructose does not seem to uniquely cause fatty liver disease." + , conclusionNotation = "卢Q" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthPromotingFoods.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthPromotingFoods.elm new file mode 100755 index 0000000..fdcb2f2 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthPromotingFoods.elm @@ -0,0 +1,40 @@ +module Config.Pages.Debate.Arguments.Records.HealthPromotingFoods exposing (argumentHealthPromotingFoods) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentHealthPromotingFoods : Argument +argumentHealthPromotingFoods = + { argumentTitle = toTitleCase "Argument for Food's Inherent Health Value" + , propositionTitle = "All foods are definitionally health-promoting." + , propositionReductio = "" + , propositionSummary = "Given that food is, by its very definition, material that provides essential nutrients and energy to sustain bodily functions and growth, it follows that anything classified as food must be inherently health-promoting by its very nature." + , proofLink = "https://www.umsu.de/trees/#(P~5Q),(P)|=(Q)" + , argumentCertainty = 10 + , argumentImage = "healthfoods" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "food is defined as material consisting essentially of protein, carbohydrate, and/or fat used in the body of an organism to sustain growth, repair, and vital processes and to furnish energy" + } + , { definiendum = "Q" + , definiens = "all foods are definitionally health-promoting" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If food is defined as material consisting essentially of protein, carbohydrate, and/or fat used in the body of an organism to sustain growth, repair, and vital processes and to furnish energy, then all foods are definitionally health-promoting." + , notation = "P鈫扱" + } + , { premise = "Food is defined as material consisting essentially of protein, carbohydrate, and/or fat used in the body of an organism to sustain growth, repair, and vital processes and to furnish energy." + , notation = "P" + } + ] + , conclusion = "Therefore, all foods are definitionally health-promoting." + , conclusionNotation = "Q" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthSeeker.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthSeeker.elm new file mode 100755 index 0000000..9cb8d6a --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthSeeker.elm @@ -0,0 +1,55 @@ +module Config.Pages.Debate.Arguments.Records.HealthSeeker exposing (argumentHealthSeeker) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentHealthSeeker : Argument +argumentHealthSeeker = + { argumentTitle = toTitleCase "Ancestral Health Consistency Checker" + , propositionTitle = "If someone (who favours consuming ancestral foods to the exclusion of novel foods because they value reducing disease risk) is not in favour of consuming a novel food (that reduces disease risk when replacing an ancestral food), then that person would be acting against their values." + , propositionReductio = "" + , propositionSummary = "If someone values consuming ancestral foods over novel foods because they have the overall value of reducing disease risk, but a novel food reduces disease risk when replacing an ancestral food, they would be acting against their values by rejecting the novel food." + , proofLink = "https://www.umsu.de/trees/#(~7x(Px)~1~7y(Qy)~5~6x~6y(~3Rxy~5Sx)),(~7x(Px)),(~7y(Qy))|=(~6x~6y(~3Rxy~5Sx))" + , argumentCertainty = 10 + , argumentImage = "healthseeker" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) favours consuming ancestral foods to the exclusion of (y) because they value reducing disease risk" + } + , { definiendum = "Q(y)" + , definiens = "(y) reduces disease risk when replacing an ancestral food" + } + , { definiendum = "R(x,y)" + , definiens = "(x) is in favour of consuming that (y)" + } + , { definiendum = "S(x)" + , definiens = "(x) would be acting against their values" + } + , { definiendum = "x" + , definiens = "someone" + } + , { definiendum = "y" + , definiens = "novel food" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If there exists someone who favours consuming ancestral foods to the exclusion of novel foods because they value reducing disease risk, and there exists a novel food that reduces disease risk when replacing an ancestral food, then if that person is not in favour of consuming that novel food, then that person would be acting against their values." + , notation = "鈭儀(Px)鈭р垉y(Qy)鈫掆垁x鈭y(卢Rxy鈫扴x)" + } + , { premise = "There exists someone who favours consuming ancestral foods to the exclusion of novel foods because they value reducing disease risk." + , notation = "鈭儀(Px)" + } + , { premise = "There exists a novel food that reduces disease risk when replacing an ancestral food." + , notation = "鈭儁(Qy)" + } + ] + , conclusion = "Therefore, if that person is not in favour of consuming that novel food, then that person would be acting against their values." + , conclusionNotation = "鈭x鈭y(卢Rxy鈫扴x)" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyChocolate.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyChocolate.elm new file mode 100755 index 0000000..5875dfe --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyChocolate.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.HealthyChocolate exposing (argumentHealthyChocolate) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentHealthyChocolate : Argument +argumentHealthyChocolate = + { argumentTitle = toTitleCase "Argument for Healthy Chocolate" + , propositionTitle = "Chocolate does not cause atherosclerosis." + , propositionReductio = "" + , propositionSummary = "Despite chocolate containing high amounts of saturated fat, populations that consume more chocolate do not exhibit higher rates of atherosclerosis, suggesting that chocolate does not have the same effect on heart disease risk as most other saturated fat sources." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~5Qx)),(~3Qc)|=(~3Pc)" + , argumentCertainty = 7 + , argumentImage = "chocolate" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controlling for relevant variables." + } + , { definiendum = "Q(x)" + , definiens = "there is a dearth of epistemically countervailing data on (x)." + } + , { definiendum = "R(x)" + , definiens = "it is more reasonable to believe that (x) is healthy than it is to believe the opposite." + } + , { definiendum = "x" + , definiens = "a food" + } + , { definiendum = "c" + , definiens = "chocolate" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a food has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controling for relevant variables and there is a dearth of epistemically countervailing data on that food, then it is more reasonable to believe that the food is healthy than it is to believe the opposite." + , notation = "鈭x((Px鈭x)鈫扲x)" + } + , { premise = "Chocolate has a strong tendency to associate with a reduced risk of morbidity and mortality after adjustment and/or controlling for relevant variables." + , notation = "Pc" + } + , { premise = "There is a dearth of epistemically countervailing data on chocolate." + , notation = "Qc" + } + ] + , conclusion = "Therefore, it is more reasonable to believe that chocolate is healthy than it is to believe the opposite." + , conclusionNotation = "Rc" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyDairy.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyDairy.elm new file mode 100755 index 0000000..f47b502 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyDairy.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Arguments.Records.HealthyDairy exposing (argumentHealthyDairy) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentHealthyDairy : Argument +argumentHealthyDairy = + { argumentTitle = toTitleCase "Argument for Healthy Dairy Products" + , propositionTitle = "Non-churned, non-homogenized dairy do not cause atherosclerosis." + , propositionReductio = "" + , propositionSummary = "The diet-heart hypothesis would predict that populations consuming more dairy foods should have higher rates of the disease. However, even when you account for factors that could plausibly influence the results, non-churned, non-homogenized dairy have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease and colorectal cancer." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~5Qx)),(~3Qh)|=(~3Ph)" + , argumentCertainty = 7 + , argumentImage = "dairy" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) causes atherosclerosis" + } + , { definiendum = "Q(x)" + , definiens = "populations consuming more (x) have higher rates of atherosclerosis after adjustment or control over relevant confounders and covariates" + } + , { definiendum = "x" + , definiens = "high saturated fat food" + } + , { definiendum = "h" + , definiens = "non-churned, non-homogenized dairy" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a high saturated fat food causes atherosclerosis, then populations consuming more of the high saturated fat food have higher rates of atherosclerosis after adjustment or control over relevant confounders and covariates." + , notation = "鈭x(Px鈫扱x)" + } + , { premise = "Populations consuming more non-churned, non-homogenized dairy do not have higher rates of atherosclerosis after adjustment or control over relevant confounders and covariates." + , notation = "卢Qh" + } + ] + , conclusion = "Therefore, non-churned, non-homogenized dairy do not cause atherosclerosis." + , conclusionNotation = "卢Ph" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFattyFish.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFattyFish.elm new file mode 100755 index 0000000..a288a2f --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFattyFish.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.HealthyFattyFish exposing (argumentHealthyFattyFish) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentHealthyFattyFish : Argument +argumentHealthyFattyFish = + { argumentTitle = toTitleCase "Argument for Healthy Fatty Fish" + , propositionTitle = "Fatty fish is healthy." + , propositionReductio = "" + , propositionSummary = "Even when you account for factors that could plausibly influence the results, fatty fish have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(Qf)|=(Pf)" + , argumentCertainty = 8 + , argumentImage = "fattyfish" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controlling for relevant variables." + } + , { definiendum = "Q(x)" + , definiens = "there is a dearth of epistemically countervailing data on (x)." + } + , { definiendum = "R(x)" + , definiens = "it is more reasonable to believe that (x) is healthy than it is to believe the opposite." + } + , { definiendum = "x" + , definiens = "a food" + } + , { definiendum = "t" + , definiens = "fatty fish" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a food has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controling for relevant variables and there is a dearth of epistemically countervailing data on that food, then it is more reasonable to believe that the food is healthy than it is to believe the opposite." + , notation = "鈭x((Px鈭x)鈫扲x)" + } + , { premise = "Fatty fish have a strong tendency to associate with a reduced risk of morbidity and mortality after adjustment and/or controlling for relevant variables." + , notation = "Pt" + } + , { premise = "There is a dearth of epistemically countervailing data on fatty fish." + , notation = "Qt" + } + ] + , conclusion = "Therefore, it is more reasonable to believe that fatty fish are healthy than it is to believe the opposite." + , conclusionNotation = "Rt" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFibre.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFibre.elm new file mode 100755 index 0000000..08b1848 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFibre.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.HealthyFibre exposing (argumentHealthyFibre) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentHealthyFibre : Argument +argumentHealthyFibre = + { argumentTitle = toTitleCase "Argument for Healthy Fibre" + , propositionTitle = "Fibre, whether whole or refined, is healthy." + , propositionReductio = "" + , propositionSummary = "Even when you account for factors that could plausibly influence the results, both refined and whole fibre have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(Qb)|=(Pb)" + , argumentCertainty = 9 + , argumentImage = "fibre" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controlling for relevant variables." + } + , { definiendum = "Q(x)" + , definiens = "there is a dearth of epistemically countervailing data on (x)." + } + , { definiendum = "R(x)" + , definiens = "it is more reasonable to believe that (x) is healthy than it is to believe the opposite." + } + , { definiendum = "x" + , definiens = "a food" + } + , { definiendum = "f" + , definiens = "fibre" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a food has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controling for relevant variables and there is a dearth of epistemically countervailing data on that food, then it is more reasonable to believe that the food is healthy than it is to believe the opposite." + , notation = "鈭x((Px鈭x)鈫扲x)" + } + , { premise = "Fibre has a strong tendency to associate with a reduced risk of morbidity and mortality after adjustment and/or controlling for relevant variables." + , notation = "Pf" + } + , { premise = "There is a dearth of epistemically countervailing data on fibre." + , notation = "Qf" + } + ] + , conclusion = "Therefore, it is more reasonable to believe that fibre is healthy than it is to believe the opposite." + , conclusionNotation = "Rf" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFood.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFood.elm new file mode 100755 index 0000000..1fbae59 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyFood.elm @@ -0,0 +1,64 @@ +module Config.Pages.Debate.Arguments.Records.HealthyFood exposing (argumentHealthyFood) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentHealthyFood : Argument +argumentHealthyFood = + { argumentTitle = toTitleCase "Argument For Healthy Food Substitution" + , propositionTitle = "Pepsi is healthy compared to leafy greens when trapped on a desert island." + , propositionReductio = "" + , propositionSummary = "A food is considered healthier than another in a specific context if it increases the time before illness or disease sets in when replacing the other food. On a desert island, since Pepsi can extend the time before starvation compared to leafy greens, it is considered healthier than leafy greens in that context." + , proofLink = "https://www.umsu.de/trees/#(~6x~6y~6z~6w(Pxyw~4Qwxzy)),(Qdpsl)|=(Ppld)" + , argumentCertainty = 10 + , argumentImage = "foodsubstitution" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x,y,w)" + , definiens = "(x) is healthy compared to (w) when in (y)" + } + , { definiendum = "Q(x,y,z,w)" + , definiens = "when within a (y), the consumption of (x) is likely to increase the lag-time to the onset of (z) when replacing (w)" + } + , { definiendum = "x" + , definiens = "a food" + } + , { definiendum = "y" + , definiens = "a another food" + } + , { definiendum = "z" + , definiens = "an illness or disease" + } + , { definiendum = "w" + , definiens = "a context" + } + , { definiendum = "p" + , definiens = "Pepsi" + } + , { definiendum = "d" + , definiens = "trapped on a desert island" + } + , { definiendum = "s" + , definiens = "starvation" + } + , { definiendum = "l" + , definiens = "leafy greens" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "A given a food is healthy compared to another given food when in a given context if, and only if, when within that context, the consumption of that given a food is likely to increase the lag-time to the onset of illness, disease, or infirmity when replacing a given other food." + , notation = "鈭x鈭y鈭z鈭w(Pxyw鈫擰wxzy)" + } + , { premise = "When trapped on a desert island the consumption of Pepsi increases the lag-time to the onset of starvation when replacing leafy greens." + , notation = "Qdpsl" + } + ] + , conclusion = "Therefore, Pepsi is healthy compared to leafy greens when trapped on a desert island." + , conclusionNotation = "Ppld" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyPlantFoods.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyPlantFoods.elm new file mode 100755 index 0000000..8259635 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthyPlantFoods.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.HealthyPlantFoods exposing (argumentHealthyPlantFoods) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentHealthyPlantFoods : Argument +argumentHealthyPlantFoods = + { argumentTitle = toTitleCase "Argument for Healthy Plant Foods" + , propositionTitle = "Whole plant foods are healthy." + , propositionReductio = "" + , propositionSummary = "Since whole plant foods consistently consistently associate with reduced risk of illness and death, it is reasonable to conclude that whole plant foods are healthy." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(Qf)|=(Pf)" + , argumentCertainty = 9 + , argumentImage = "plantfoods" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controlling for relevant variables." + } + , { definiendum = "Q(x)" + , definiens = "there is a dearth of epistemically countervailing data on (x)." + } + , { definiendum = "R(x)" + , definiens = "it is more reasonable to believe that (x) is healthy than it is to believe the opposite." + } + , { definiendum = "x" + , definiens = "a food" + } + , { definiendum = "w" + , definiens = "whole plant foods" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a food has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controling for relevant variables and there is a dearth of epistemically countervailing data on that food, then it is more reasonable to believe that the food is healthy than it is to believe the opposite." + , notation = "鈭x((Px鈭x)鈫扲x)" + } + , { premise = "Whole plant foods have a strong tendency to associate with a reduced risk of morbidity and mortality after adjustment and/or controlling for relevant variables." + , notation = "Pw" + } + , { premise = "There is a dearth of epistemically countervailing data on whole plant foods." + , notation = "Qw" + } + ] + , conclusion = "Therefore, it is more reasonable to believe that whole plant foods are healthy than it is to believe the opposite." + , conclusionNotation = "Rw" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySeedOils.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySeedOils.elm new file mode 100755 index 0000000..3d812e1 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySeedOils.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.HealthySeedOils exposing (argumentHealthySeedOils) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentHealthySeedOils : Argument +argumentHealthySeedOils = + { argumentTitle = toTitleCase "Argument for Healthy Seed Oils" + , propositionTitle = "Non-hydrogenated vegetable oils are healthy." + , propositionReductio = "" + , propositionSummary = "Even when you account for known factors, or model a reasonable accounting of unknown factors, that could plausibly influence the results (such as with adjustment models in prospective cohort studies or randomization in controlled trials), non-hydrogenated vegetable oils have been shown to consistently reduce the risk of morbidity and mortality in both prospective cohort studies and randomized controlled trials, strongly suggesting that they directly contribute to better health outcomes." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~5Qx)),(Pv)|=(Qv)" + , argumentCertainty = 9 + , argumentImage = "seedoils" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controlling for relevant variables." + } + , { definiendum = "Q(x)" + , definiens = "there is a dearth of epistemically countervailing data on (x)." + } + , { definiendum = "R(x)" + , definiens = "it is more reasonable to believe that (x) is healthy than it is to believe the opposite." + } + , { definiendum = "x" + , definiens = "a food" + } + , { definiendum = "v" + , definiens = "non-hydrogenated vegetable oils" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a food has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controling for relevant variables and there is a dearth of epistemically countervailing data on that food, then it is more reasonable to believe that the food is healthy than it is to believe the opposite." + , notation = "鈭x((Px鈭x)鈫扲x)" + } + , { premise = "Non-hydrogenated vegetable oils have a strong tendency to associate with a reduced risk of morbidity and mortality after adjustment and/or controlling for relevant variables." + , notation = "Pv" + } + , { premise = "There is a dearth of epistemically countervailing data on non-hydrogenated vegetable oils." + , notation = "Qv" + } + ] + , conclusion = "Therefore, it is more reasonable to believe that non-hydrogenated vegetable oils are healthy than it is to believe the opposite." + , conclusionNotation = "Rv" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySoy.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySoy.elm new file mode 100755 index 0000000..034b74a --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/HealthySoy.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.HealthySoy exposing (argumentHealthySoy) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentHealthySoy : Argument +argumentHealthySoy = + { argumentTitle = toTitleCase "Argument for Healthy Soy Products" + , propositionTitle = "Soy products are healthy." + , propositionReductio = "" + , propositionSummary = "Even when you account for factors that could plausibly influence the results, non-hydrogenated soy products have been shown to consistently reduce the risk of morbidity and mortality, strongly suggesting that they directly contribute to better health outcomes, particularly with respect to cardiovascular disease." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(Qs)|=(Ps)" + , argumentCertainty = 7 + , argumentImage = "soyproducts" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controlling for relevant variables." + } + , { definiendum = "Q(x)" + , definiens = "there is a dearth of epistemically countervailing data on (x)." + } + , { definiendum = "R(x)" + , definiens = "it is more reasonable to believe that (x) is healthy than it is to believe the opposite." + } + , { definiendum = "x" + , definiens = "a food" + } + , { definiendum = "s" + , definiens = "soy products" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a food has a strong tendency to associate with a reduced risk of morbidity and/or mortality after adjusting and/or controling for relevant variables and there is a dearth of epistemically countervailing data on that food, then it is more reasonable to believe that the food is healthy than it is to believe the opposite." + , notation = "鈭x((Px鈭x)鈫扲x)" + } + , { premise = "Soy products have a strong tendency to associate with a reduced risk of morbidity and mortality after adjustment and/or controlling for relevant variables." + , notation = "Ps" + } + , { premise = "There is a dearth of epistemically countervailing data on soy products." + , notation = "Qs" + } + ] + , conclusion = "Therefore, it is more reasonable to believe that soy products are healthy than it is to believe the opposite." + , conclusionNotation = "Rs" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ImmortalityReductio.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ImmortalityReductio.elm new file mode 100755 index 0000000..70a991c --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ImmortalityReductio.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.ImmortalityReductio exposing (argumentImmortalityReductio) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentImmortalityReductio : Argument +argumentImmortalityReductio = + { argumentTitle = toTitleCase "Appeal to Nature Immortality Reductio" + , propositionTitle = "Senescence does not result in death." + , propositionReductio = "People who appeal to nature in this fashion assert that death cannot result from natural biological processes. Usually this is asserted in order to avoid accepting that LDL is causative of atherosclerosis." + , propositionSummary = "If one commits to this variation of the appeal to nature fallacy, it's unclear why they wouldn't be subsequently committed to affirm that humans are immortal, like Connor fucking MacLeod." + , proofLink = "https://www.umsu.de/trees/#(~6x~6y(Hx~5~3Rxy)),(Hs)%7C=(~3Rsd)" + , argumentCertainty = 10 + , argumentImage = "immortality" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "humans undergo (x)" + } + , { definiendum = "Q(x,y)" + , definiens = "(x) results in (y)" + } + , { definiendum = "x" + , definiens = "normal physiological process" + } + , { definiendum = "y" + , definiens = "negative health outcome" + } + , { definiendum = "s" + , definiens = "senescence" + } + , { definiendum = "d" + , definiens = "death" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If humans undergo a normal physiological process, then the normal physiological process does not result in a negative health outcome." + , notation = "鈭x鈭y(Px鈫捖琎xy)" + } + , { premise = "Humans undergo senescence." + , notation = "Ps" + } + ] + , conclusion = "Therefore, senescence does not result in death." + , conclusionNotation = "卢Qsd" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/LuigiTerrorist.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/LuigiTerrorist.elm new file mode 100755 index 0000000..14dd507 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/LuigiTerrorist.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Arguments.Records.LuigiTerrorist exposing (argumentLuigiTerrorist) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentLuigiTerrorist : Argument +argumentLuigiTerrorist = + { argumentTitle = toTitleCase "Argumnent for Luigi Mangione Being a Terrorist" + , propositionTitle = "Luigi Mangione is a domestic terrorist" + , propositionReductio = "" + , propositionSummary = "According to the FBI's definition of a \" domestic terrorist \", it is quite clear that Luigi Mangione qualifies, based on his actions. It just seems like an analytic truth." + , proofLink = "https://www.umsu.de/trees/#~6x(Px~4Qx),Qm|=Pm" + , argumentCertainty = 10 + , argumentImage = "luigiterrorist" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) commits violent, criminal acts to further ideological goals stemming from domestic influence" + } + , { definiendum = "Q(x)" + , definiens = "(x) is a domestic terrorist" + } + , { definiendum = "x" + , definiens = "an individual" + } + , { definiendum = "m" + , definiens = "Luigi Mangione" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "An individual is a domestic terrorist if, and only if, the individual commits violent, criminal acts to further ideological goals stemming from domestic influences." + , notation = "鈭x(Px鈫擰x)" + } + , { premise = "Luigi Mangione committed violent, criminal acts to further ideological goals stemming from domestic influence." + , notation = "Qm" + } + ] + , conclusion = "Therefore, Luigi Mangione is a domestic terrorist." + , conclusionNotation = "Pm" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Malondialdehyde.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Malondialdehyde.elm new file mode 100755 index 0000000..423ba3b --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Malondialdehyde.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.Malondialdehyde exposing (argumentMalondialdehyde) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentMalondialdehyde : Argument +argumentMalondialdehyde = + { argumentTitle = toTitleCase "Atherogenic Omega-3 Reductio" + , propositionTitle = "Omega-3s are atherogenic." + , propositionReductio = "Certain anti-seed oil proponents assert that seed oils cause atherosclerosis via omega-6-derived malondialdehyde, and that this is the only cause of atherosclerosis. However, they often also assert that omega-3 fatty acids are anti-atherogenic, despite the fact that omega-3s actually produce more malondialdehyde than omega-6s." + , propositionSummary = "If one takes the view that in order for a substance to increase the risk of atherosclerosis, it must facilitate the oxidative modification of LDL particles via malondialdehyde production, and one also affirms that omega-3s are anti-atherogenic, then this would imply that all fatty acids that produce malondialdehyde, including omega-3s, must also be atherogenic, which contradicts the their belief that omega-3s are heart-healthy." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(Qm),(Pm~5~6x(Rx))%7C=(Ro)" + , argumentCertainty = 6 + , argumentImage = "mda" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) increases the risk of atherosclerosis" + } + , { definiendum = "Q(x)" + , definiens = "(x) facilitates the oxidative modification of LDL particles" + } + , { definiendum = "R(x)" + , definiens = "all (x) are atherogenic" + } + , { definiendum = "x" + , definiens = "a substance" + } + , { definiendum = "y" + , definiens = "malondialdehyde-producing fatty acids" + } + , { definiendum = "m" + , definiens = "malondialdehyde" + } + , { definiendum = "o" + , definiens = "omega-3s" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "A substance increases the risk of atherosclerosis if, and only if, that substance facilitates the oxidative modification of LDL particles." + , notation = "鈭x(Px鈫擰x)" + } + , { premise = "Malondialdehyde facilitates the oxidative modification of LDL particles." + , notation = "Qm" + } + , { premise = "If malondialdehyde increases the risk of atherosclerosis, then all malondialdehyde-producing fatty acids are atherogenic." + , notation = "Pm鈫掆垁y(Ry)" + } + ] + , conclusion = "Therefore, omega-3s are atherogenic." + , conclusionNotation = "Ro" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/OddOrderPredators.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/OddOrderPredators.elm new file mode 100755 index 0000000..9ab6e41 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/OddOrderPredators.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.OddOrderPredators exposing (argumentOddOrderPredators) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentOddOrderPredators : Argument +argumentOddOrderPredators = + { argumentTitle = toTitleCase "Argument for Culling Odd Order Predators" + , propositionTitle = "It is permissible to prevent predation with lethal force to the same degree we would tolerate for humans." + , propositionReductio = "" + , propositionSummary = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. I think humans have the right not to be exposed to circumstances where they're hunted for food, and I think it is permissible to use lethal force to save the lives of the hunted, all else equal. By extension I think non-human animals have this right too." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~5~3Qx)),(Pa),(~3Qa~5R)%7C=(R)" + , argumentCertainty = 10 + , argumentImage = "oddorderpredators" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has negative rights" + } + , { definiendum = "Q(x)" + , definiens = "we should defend (x) from rights violations to any lesser degree than we would tolerate for trait-adjusted humans" + } + , { definiendum = "R(x)" + , definiens = "it is permissible to prevent predation with lethal force to the same degree we would tolerate for trait-adjusted humans" + } + , { definiendum = "x" + , definiens = "a being" + } + , { definiendum = "a" + , definiens = "animal" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if something has negative rights, then we should not defend it from rights violations to any lesser degree than we would tolerate for trait-adjusted humans." + , notation = "鈭x(Px鈫捖琎x)" + } + , { premise = "Animals have negative rights." + , notation = "Pa" + } + , { premise = "If we should not defend animals from rights violations to any lesser degree than we would tolerate for humans, then it is permissible to prevent predation with lethal force to the same degree we would tolerate for trait-adjusted humans." + , notation = "卢Qa鈫扲" + } + ] + , conclusion = "Therefore, it is permissible to prevent predation with lethal force to the same degree we would tolerate for trait-adjusted humans." + , conclusionNotation = "R" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Omega3Omega6Ratio.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Omega3Omega6Ratio.elm new file mode 100755 index 0000000..ac9a3eb --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Omega3Omega6Ratio.elm @@ -0,0 +1,40 @@ +module Config.Pages.Debate.Arguments.Records.Omega3Omega6Ratio exposing (argumentOmega3Omega6Ratio) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentOmega3Omega6Ratio : Argument +argumentOmega3Omega6Ratio = + { argumentTitle = toTitleCase "Argument Against the Omega-6/Omega-3 Ratio" + , propositionTitle = "The omega-6/omega-3 ratio is unlikely to matter for health." + , propositionReductio = "" + , propositionSummary = "More often than not, the associated risks of a high omega-6/omega-3 ratio are better explained by omega-3 alone. In multivariable analyses, the ratio looks like it matters, but in univariable anaylses, low omega-3 is almost always driving the risk via lowering the denominator." + , proofLink = "https://www.umsu.de/trees/#(P~5Q),(~3Q)|=(~3P)" + , argumentCertainty = 7 + , argumentImage = "omega6omega3ratio" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "increases or decreases in disease risk associated with a high or low omega-6/omega-3 ratio are better explained by changes in omega-3 alone" + } + , { definiendum = "Q" + , definiens = "the omega-6/omega-3 ratio is likely to matter for health" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If increases or decreases in disease risk associated with a high or low omega-6/omega-3 ratio are better explained by changes in omega-3 alone, then the omega-6/omega-3 ratio is not likely to matter for health." + , notation = "P鈫捖琎" + } + , { premise = "Increases or decreases in disease risk associated with a high or low omega-6/omega-3 ratio are better explained by changes in omega-3 alone." + , notation = "P" + } + ] + , conclusion = "Therefore, the omega-6/omega-3 ratio is not likely to matter for health." + , conclusionNotation = "卢Q" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Ostroveganism.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Ostroveganism.elm new file mode 100755 index 0000000..b5a6118 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Ostroveganism.elm @@ -0,0 +1,67 @@ +module Config.Pages.Debate.Arguments.Records.Ostroveganism exposing (argumentOstroveganism) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentOstroveganism : Argument +argumentOstroveganism = + { argumentTitle = toTitleCase "Argument for Vegan Bivalves" + , propositionTitle = "Bivalves are not likely to be sentient." + , propositionReductio = "" + , propositionSummary = "I view animal rights as the logical extension of trait-adjusted human rights to non-human animals. However, I do not believe that non-sentient human bodies, such as brainless or brain-dead human bodies, have such human rights. By extension, I don't believe that non-human animals that lack brains possess these rights either." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx~1Rx~1(Sx~2Wx))),(Qc~1~3Rc~1Sc~1~3Wc),(~3Pc~5~6x(~3Tx))|=(~3Tb)" + , argumentCertainty = 10 + , argumentImage = "ostroveganism" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) counts as a brain" + } + , { definiendum = "Q(x)" + , definiens = "(x) is a complex network of interconnected neurons" + } + , { definiendum = "R(x)" + , definiens = "(x) integrates neuronal pathways from multiple sensory organs" + } + , { definiendum = "S(x)" + , definiens = "(x) presents with distinct functional regions" + } + , { definiendum = "W(x)" + , definiens = "(x) presents with nuclei with white matter tracts that facilitate inter-regional communication" + } + , { definiendum = "T(x)" + , definiens = "the corresponding (y) is likely to be sentient" + } + , { definiendum = "x" + , definiens = "an object" + } + , { definiendum = "y" + , definiens = "brainless biological system into which cerebral ganglia are integrated" + } + , { definiendum = "c" + , definiens = "cerebral ganglia" + } + , { definiendum = "b" + , definiens = "bivalves" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "Something counts as a brain if, and only if, something is a complex network of interconnected neurons, integrates neuronal pathways from multiple sensory organs, and presents with distinct functional regions or nuclei with white matter tracts that facilitate inter-regional communication." + , notation = "鈭x(Px鈫(Qx鈭x鈭(Sx鈭╓x)))" + } + , { premise = "Cerebral ganglia meet criteria one and three, but not criteria two and four." + , notation = "Qc鈭琑c鈭c鈭琖c" + } + , { premise = "If cerebral ganglia do not count as brains, then the corresponding brainless biological system into which the cerebral ganglia are integrated is not likely to be sentient." + , notation = "卢Pc鈫掆垁x(卢Tx)" + } + ] + , conclusion = "Therefore, bivalves are not likely to be sentient." + , conclusionNotation = "卢Tb" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/PlantBasedCVDReversal.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/PlantBasedCVDReversal.elm new file mode 100755 index 0000000..f93d346 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/PlantBasedCVDReversal.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Arguments.Records.PlantBasedCVDReversal exposing (argumentPlantBasedCVDReversal) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentPlantBasedCVDReversal : Argument +argumentPlantBasedCVDReversal = + { argumentTitle = toTitleCase "Argument Against Plant-Based CVD Reversal" + , propositionTitle = "Plant-based diets do not appear to clinically reverse atherosclerosis." + , propositionReductio = "" + , propositionSummary = "To date, there is not a single case of supposed heart disease reversal from a plant-based diet that is actually compatible with established definitions of heart disease reversal in the literature." + , proofLink = "https://www.umsu.de/trees/#(P~1~3Q~5~3R),(P),(~3Q)|=(~3R)" + , argumentCertainty = 8 + , argumentImage = "plantbasedcvd" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "there are established definitions for atherosclerosis reversal in the domain of cardiology" + } + , { definiendum = "Q" + , definiens = "current research on plant-based diets and atherosclerosis reversal satisfy the definitions for atherosclerosis reversal in the domain of cardiology" + } + , { definiendum = "R" + , definiens = "plant-based diets do not appear to clinically reverse atherosclerosis" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If there are established definitions for atherosclerosis reversal in the domain of cardiology and current research on plant-based diets and atherosclerosis reversal do not satisfy the definitions for atherosclerosis reversal in the domain of cardiology, then plant-based diets do not appear to clinically reverse atherosclerosis." + , notation = "P鈭琎鈫捖琑" + } + , { premise = "There are established definitions for atherosclerosis reversal in the domain of cardiology." + , notation = "P" + } + , { premise = "Current research on plant-based diets and atherosclerosis reversal do not satisfy the definitions for atherosclerosis reversal in the domain of cardiology." + , notation = "卢Q" + } + ] + , conclusion = "Therefore, plant-based diets do not appear to clinically reverse atherosclerosis." + , conclusionNotation = "卢R" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/PollinationReductio.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/PollinationReductio.elm new file mode 100755 index 0000000..790eff7 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/PollinationReductio.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.PollinationReductio exposing (argumentPollinationReductio) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentPollinationReductio : Argument +argumentPollinationReductio = + { argumentTitle = toTitleCase "Vegan Anti-Pollination Reductio" + , propositionTitle = "Apples are not vegan" + , propositionReductio = "Some vegans hold to a deontic principle that any form of animal exploitation is wrong, and the products of exploitation are to be boycotted and designated non-vegan." + , propositionSummary = "If one accepts that no animal exploitation is permissible, they're committed to some truly hilarious positions, such as apples not being vegan because we exploit the natural behaviour of bees to pollinate our apple trees." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4~3Qx)),(Qb),(~3Pb~5~6y(~3Ry))|=(~3Ra)" + , argumentCertainty = 10 + , argumentImage = "pollinationreductio" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) is vegan" + } + , { definiendum = "Q(x)" + , definiens = "(x) involves human on non-human animal exploitation" + } + , { definiendum = "R(y)" + , definiens = "(y) generated are vegan" + } + , { definiendum = "x" + , definiens = "a being" + } + , { definiendum = "y" + , definiens = "a product" + } + , { definiendum = "b" + , definiens = "bees pollinating human crops" + } + , { definiendum = "a" + , definiens = "apples" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "Something is vegan if, and only if, something does not involve human on non-human animal exploitation." + , notation = "鈭x(Px鈫斅琎x)" + } + , { premise = "Bees pollinating human crops involves human on non-human exploitation." + , notation = "Qb" + } + , { premise = "If bees pollinating human crops is not vegan, then the products generated are not vegan." + , notation = "卢Pb鈫掆垁y(卢Ry)" + } + ] + , conclusion = "Therefore, apples are not vegan." + , conclusionNotation = "卢Ra" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/PolyphenolReductio.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/PolyphenolReductio.elm new file mode 100755 index 0000000..82e5f47 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/PolyphenolReductio.elm @@ -0,0 +1,70 @@ +module Config.Pages.Debate.Arguments.Records.PolyphenolReductio exposing (argumentPolyphenolReductio) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentPolyphenolReductio : Argument +argumentPolyphenolReductio = + { argumentTitle = toTitleCase "Anti-Polyphenol Reductio" + , propositionTitle = "Anti-polyphenol, ancestral diet advocates are committed to favouring GMOs." + , propositionReductio = "Some carnivore diet proponents suggest that phytochemical compounds, such as polyphenols, are actually harmful to human beings." + , propositionSummary = "If one is committed to the notions that polyphenols in plants are bad for humans, and that grass-fed red meat is the healthiest available type of red meat, then they're pragmatically committed to being pro-GMO to lower the grass-derived polyphenol content of grass-fed beef." + , proofLink = "https://www.umsu.de/trees/#(~6x~6y(Px~1Qxy~5Rxy)),(Pp),(Qpg),(Rpg~5Spg),(Spg~5Wp)|=(Wp)" + , argumentCertainty = 7 + , argumentImage = "polyphenolreductio" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) is harmful" + } + , { definiendum = "Q(x,y)" + , definiens = "(x) is contained in (y)" + } + , { definiendum = "R(x,y)" + , definiens = "(x) renders (y) harmful" + } + , { definiendum = "S(p,g)" + , definiens = "genetic modification that removes (p) from grass renders (g) less harmful" + } + , { definiendum = "W(p)" + , definiens = "health-conscious, anti-polyphenol, ancestral diet advocates are committed to favouring GMOs" + } + , { definiendum = "x" + , definiens = "plant defense chemicals" + } + , { definiendum = "y" + , definiens = "a food" + } + , { definiendum = "p" + , definiens = "polyphenols" + } + , { definiendum = "g" + , definiens = "grass-fed beef" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If plant defense chemicals are harmful and plant defense chemicals are contained in a food, then plant defense chemicals render the food harmful." + , notation = "鈭x鈭y(Px鈭xy鈫扲xy)" + } + , { premise = "Polyphenols from grass are harmful." + , notation = "Pp" + } + , { premise = "Polyphenols from grass are contained in grass-fed beef." + , notation = "Qpg" + } + , { premise = "If polyphenols from grass render grass-fed beef harmful, then genetic modification that removes polyphenols from grass renders grass-fed beef less harmful." + , notation = "Rpg鈫扴pg" + } + , { premise = "If genetic modification that removes polyphenols from grass renders grass-fed beef less harmful, then health-conscious, anti-polyphenol, ancestral diet advocates are committed to favouring GMOs." + , notation = "Spg鈫扺p" + } + ] + , conclusion = "Therefore, health-conscious, anti-polyphenol, ancestral diet advocates are committed to favouring GMOs." + , conclusionNotation = "Wp" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ScratcherPioneers.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ScratcherPioneers.elm new file mode 100755 index 0000000..e346030 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/ScratcherPioneers.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.ScratcherPioneers exposing (argumentScratcherPioneers) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentScratcherPioneers : Argument +argumentScratcherPioneers = + { argumentTitle = toTitleCase "Tattoo Pioneers were Scratchers" + , propositionTitle = "The original trailblazers of modern tattooing were scratchers." + , propositionReductio = "Some tattoo artists condemn scratchers and their associated culture due to poor observation of sanitation standards and lack of mentorship and also simultaneously hold the original trailblazers of the tattoo industry in high esteem." + , propositionSummary = "If what qualifies a given tattoo artist as a scratcher is poor observation of sanitation standards and lack of mentorship, then it's just straightforwardly entailed that the original trailblazers of the tattoo industry were scratchers." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx~2Rx~2Sx)),(Qt),(Rt),(St)%7C=(Pt)" + , argumentCertainty = 10 + , argumentImage = "tattooscratchers" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) is a scratcher" + } + , { definiendum = "Q(x)" + , definiens = "(x) tattoos without a license" + } + , { definiendum = "R(x)" + , definiens = "(x) tattoos without observing basic health standards" + } + , { definiendum = "S(x)" + , definiens = "(x) tattoos without having undertaken apprenticeship" + } + , { definiendum = "x" + , definiens = "a tattoo artist" + } + , { definiendum = "t" + , definiens = "original trailblazers of modern tattooing" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "A tattoo artist is a scratcher if, and only if, the tattoo artist tattoos without a license and/or one tattoos without observing basic health standards and/or one tattoos without having undertaken apprenticeship." + , notation = "鈭x(Px鈫擰x鈭≧x鈭⊿x)" + } + , { premise = "The original trailblazers of modern tattooing tattooed without licenses." + , notation = "Qt" + } + , { premise = "The original trailblazers of modern tattooing tattooed without observing basic health standards." + , notation = "Rt" + } + , { premise = "The original trailblazers of modern tattooing tattooed without having undertaken apprenticeship." + , notation = "St" + } + ] + , conclusion = "Therefore, the original trailblazers of modern tattooing were scratchers." + , conclusionNotation = "Pt" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/SodiumCVD.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/SodiumCVD.elm new file mode 100755 index 0000000..f878e4e --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/SodiumCVD.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.SodiumCVD exposing (argumentSodiumCVD) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentSodiumCVD : Argument +argumentSodiumCVD = + { argumentTitle = toTitleCase "Argument for Atherogenic Sodium" + , propositionTitle = "Higher intakes of sodium increases cardiovascular disease risk." + , propositionReductio = "" + , propositionSummary = "In all of the strongest analysis on the relationship between sodium intake and cardiovascular disease risk, there is a linear and proportional relationship. Particularly when the strongest measurement methods are used, such as multiple 24-hour urinary collections." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~1Q~5Rx)),(Ps),(Q)|=(Rs)" + , argumentCertainty = 9 + , argumentImage = "sodiumcvd" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) consistently raises blood pressure in controlled studies" + } + , { definiendum = "Q(x)" + , definiens = "elevated blood pressure is known to cause cardiovascular disease" + } + , { definiendum = "R(x)" + , definiens = "higher intakes of substance (x) increases cardiovascular disease risk" + } + , { definiendum = "x" + , definiens = "a substance" + } + , { definiendum = "s" + , definiens = "sodium" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a substance consistently raises blood pressure in controlled studies and elevated blood pressure is known to cause cardiovascular disease, then higher intakes of that substance increases cardiovascular disease risk." + , notation = "鈭x(Px鈭鈫扲x)" + } + , { premise = "Sodium consistently raises blood pressure in controlled studies." + , notation = "Ps" + } + , { premise = "Elevated blood pressure is known to cause cardiovascular disease." + , notation = "Q" + } + ] + , conclusion = "Therefore, higher intakes of sodium increases cardiovascular disease risk." + , conclusionNotation = "Rs" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/TMAOCausality.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/TMAOCausality.elm new file mode 100755 index 0000000..e0cfcf6 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/TMAOCausality.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Arguments.Records.TMAOCausality exposing (argumentTMAOCausality) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentTMAOCausality : Argument +argumentTMAOCausality = + { argumentTitle = toTitleCase "Argument Against TMAO Being Causal in CVD" + , propositionReductio = "" + , propositionTitle = "TMAO is not likely to be causative of heart disease." + , propositionSummary = "In the strongest research we have on the relationship between TMAO and heart disease risk, such as with Mendelian randomization and genome-wide associational studies, there is no persuasive causal link between TMAO in the blood and heart disease risk." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(~3Qt)|=(~3Pt)" + , argumentCertainty = 9 + , argumentImage = "tmaocausality" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) is likely to be causative of heart diseas" + } + , { definiendum = "Q(x)" + , definiens = "(x) consistently associates with an increased risk of heart disease after adjustment or control over relevant confounders and covariates" + } + , { definiendum = "x" + , definiens = "a substance" + } + , { definiendum = "t" + , definiens = "TMAO" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a substance is likely to be causative of heart disease if, then the substance consistently associates with an increased risk of heart disease after adjustment or control over relevant confounders and covariates." + , notation = "鈭x(Px鈫擰x)" + } + , { premise = "TMAO consistently associates with an increased risk of heart disease after adjustment or control over relevant confounders and covariates." + , notation = "卢Qt" + } + ] + , conclusion = "Therefore, TMAO is not likely to be causative of heart disease." + , conclusionNotation = "卢Pt" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Template.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Template.elm new file mode 100755 index 0000000..c9cf1bb --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/Template.elm @@ -0,0 +1,61 @@ +module Config.Pages.Debate.Arguments.Records.Template exposing (argument) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argument : Argument +argument = + { argumentTitle = toTitleCase "" + , propositionTitle = "" + , propositionReductio = "" + , propositionSummary = "" + , proofLink = "" + , argumentCertainty = 1 + , argumentImage = "" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + , { definiendum = "" + , definiens = "" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "" + , notation = "" + } + , { premise = "" + , notation = "" + } + , { premise = "" + , notation = "" + } + , { premise = "" + , notation = "" + } + , { premise = "" + , notation = "" + } + ] + , conclusion = "" + , conclusionNotation = "" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/TransPeople.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/TransPeople.elm new file mode 100755 index 0000000..568beb3 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/TransPeople.elm @@ -0,0 +1,70 @@ +module Config.Pages.Debate.Arguments.Records.TransPeople exposing (argumentTransPeople) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentTransPeople : Argument +argumentTransPeople = + { argumentTitle = toTitleCase "Argument For Trans Identity" + , propositionTitle = "A trans person of the male sex is a woman and a trans person with female sex is a man." + , propositionReductio = "" + , propositionSummary = "Virtually 100% of the debate surrounding trans identity is merely a trivial semantic disagreement about what constitutes a man or a woman. Below is a formal argument for characterization of a man and a women that maximally satisfies both parties and minimizes absurdities." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Rx~1Wx)),(~6x(Qx~4Sx~1Wx)),(Ra~1Wa),(Sg~1Wg)|=(Pa~1Qg)" + , argumentCertainty = 10 + , argumentImage = "transpeople" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "Male" + , definiens = "the cluster of traits that associate with small, but not large, gametes." + } + , { definiendum = "Female" + , definiens = "the cluster of traits that associate with large, but not small, gametes." + } + , { definiendum = "P(x)" + , definiens = "(x) is a woman" + } + , { definiendum = "Q(x)" + , definiens = "(x) is a man" + } + , { definiendum = "R(x)" + , definiens = "(x) possesses a sufficiently greater sum of weighted traits that more closely associate with large gametes than weighted traits that associate with small gametes" + } + , { definiendum = "S(x)" + , definiens = "(x) possesses a sufficiently greater sum of weighted traits that more closely associate with small gametes than weighted traits that associate with large gametes" + } + , { definiendum = "W(x)" + , definiens = "(x) is over 18 years of age" + } + , { definiendum = "x" + , definiens = "someone" + } + , { definiendum = "a" + , definiens = "a trans person of the male sex" + } + , { definiendum = "g" + , definiens = "a trans person of the female sex" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "Someone is a woman if, and only if, someone possesses a sufficiently greater sum of weighted traits that more closely associate with large gametes than weighted traits that associate with small gametes and someone is over 18 years of age." + , notation = "鈭x(Px鈫擱x鈭x)" + } + , { premise = "Someone is a man if, and only if, someone possesses a sufficiently greater sum of weighted traits that more closely associate with small gametes than weighted traits that associate with large gametes and someone is over 18 years of age." + , notation = "鈭x(Qx鈫擲x鈭x)" + } + , { premise = "A trans person of the male sex possesses a sufficiently greater sum of weighted traits that more closely associate with large gametes than weighted traits that associate with small gametes and a trans person with small gametes is over 18 years of age." + , notation = "Ra鈭a" + } + , { premise = "A trans person of the female sex possesses a sufficiently greater sum of weighted traits that more closely associate with small gametes than weighted traits that associate with large gametes and a trans person with large gametes is over 18 years of age." + , notation = "Sg鈭g" + } + ] + , conclusion = "Therefore, a trans person of the male sex is a woman and a trans person with female sex is a man." + , conclusionNotation = "Pa鈭g" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/TruncatedMeta.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/TruncatedMeta.elm new file mode 100755 index 0000000..df03734 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/TruncatedMeta.elm @@ -0,0 +1,40 @@ +module Config.Pages.Debate.Arguments.Records.TruncatedMeta exposing (argumentTruncatedMeta) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentTruncatedMeta : Argument +argumentTruncatedMeta = + { argumentTitle = toTitleCase "Argument For Truncated Meta-Analysis" + , propositionTitle = "Meta-analytic summations that include adequately powered studies to the exclusion of insufficiently powered studies will provide better causal estimates than meta-analytic summations that include both adequately powered studies and insufficiently powered studies." + , propositionReductio = "" + , propositionSummary = "Some people argue that omission of studies from meta-analysis is bad form because the more point estimates, the better. However, I argue that there are circumstances where including more studies can actually lower the quality of causal estimates." + , proofLink = "https://www.umsu.de/trees/#(P~5Q),(P)%7C=(Q)" + , argumentCertainty = 7 + , argumentImage = "truncatedmetas" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "underpowered studies provide weaker causal estimates than adequately powered studies" + } + , { definiendum = "Q" + , definiens = "meta-analytic summations that include adequately powered studies to the exclusion of insufficiently powered studies will provide better causal estimates than meta-analytic summations that include both adequately powered studies and insufficiently powered studies" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If underpowered studies provide weaker causal estimates than adequately powered studies, then meta-analytic summations that include adequately powered studies to the exclusion of insufficiently powered studies will provide better causal estimates than meta-analytic summations that include both adequately powered studies and insufficiently powered studies." + , notation = "P鈫扱" + } + , { premise = "Underpowered studies provide weaker causal estimates than adequately powered studies." + , notation = "P" + } + ] + , conclusion = "Therefore, meta-analytic summations that include adequately powered studies to the exclusion of insufficiently powered studies will provide better causal estimates than meta-analytic summations that include both adequately powered studies and insufficiently powered studies." + , conclusionNotation = "Q" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyCoconutOil.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyCoconutOil.elm new file mode 100755 index 0000000..7b06ffe --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyCoconutOil.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.UnhealthyCoconutOil exposing (argumentUnhealthyCoconutOil) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentUnhealthyCoconutOil : Argument +argumentUnhealthyCoconutOil = + { argumentTitle = toTitleCase "Argument For Atherogenic Coconut Oil" + , propositionTitle = "There is not a reason to believe that coconut oil is any better for heart health than other saturated fat sources that increase LDL-C." + , propositionReductio = "" + , propositionSummary = "LDL causally associates with heart disease in a linear and proportional manner, and in all cases exposures that durably increase LDL over time produce likewise increases in heart disease risk. Coconut oil is one such exposure." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~1Qx~5~3Rx)),(Pc),(Qc)|=(~3Rc)" + , argumentCertainty = 9 + , argumentImage = "coconutoil" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P" + , definiens = "a given (x) increases LDL-C at a similar rate to other saturated fat sources" + } + , { definiendum = "Q" + , definiens = "a given (x) has no other known qualities that counteract said increase in LDL-C" + } + , { definiendum = "R" + , definiens = "there is a reason to believe that such an (x) is any better for heart health than other (x) that increase LDL-C" + } + , { definiendum = "x" + , definiens = "a saturated fat source" + } + , { definiendum = "c" + , definiens = "coconut oil" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "If a given saturated fat source increases LDL-C at a similar rate to other saturated fat sources and and a given saturated fat source has no other known qualities that counteract said increase in LDL-C, then there is not a reason to believe that such a saturated fat source is any better for heart health than other saturated fat sources that increase LDL-C." + , notation = "鈭x(Px鈭x鈫捖琑x)" + } + , { premise = "Coconut oil increases LDL-C at a similar rate to other saturated fat sources." + , notation = "Pc" + } + , { premise = "Coconut oil has no other known qualities that counteract said increase in LDL-C." + , notation = "Qc" + } + ] + , conclusion = "Therefore, there is not a reason to believe that coconut oil is any better for heart health than other saturated fat sources that increase LDL-C." + , conclusionNotation = "卢Rc" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyProcessedMeat.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyProcessedMeat.elm new file mode 100755 index 0000000..511dce2 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyProcessedMeat.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.UnhealthyProcessedMeat exposing (argumentUnhealthyProcessedMeat) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentUnhealthyProcessedMeat : Argument +argumentUnhealthyProcessedMeat = + { argumentTitle = toTitleCase "Argument for Unhealthy Processed Meat" + , propositionTitle = "Processed meat is unhealthy." + , propositionReductio = "" + , propositionSummary = "Even when you account for factors that could plausibly influence the results, processed meat has been shown to consistently increase the risk of morbidity and mortality, strongly suggesting that they directly contribute to worse health outcomes, particularly with respect to colorectal cancer and heart disease." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(Qs)|=(Ps)" + , argumentCertainty = 8 + , argumentImage = "processedmeat" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has a strong tendency to associate with an increased risk of morbidity and/or mortality after adjusting and/or controlling for relevant variables." + } + , { definiendum = "Q(x)" + , definiens = "there is a dearth of epistemically countervailing data on (x)." + } + , { definiendum = "R(x)" + , definiens = "it is more reasonable to believe that (x) is unhealthy than it is to believe the opposite." + } + , { definiendum = "x" + , definiens = "a food" + } + , { definiendum = "p" + , definiens = "processed meat" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a food has a strong tendency to associate with an increased risk of morbidity and/or mortality after adjusting and/or controling for relevant variables and there is a dearth of epistemically countervailing data on that food, then it is more reasonable to believe that the food is healthy than it is to believe the opposite." + , notation = "鈭x((Px鈭x)鈫扲x)" + } + , { premise = "Processed meat has a strong tendency to associate with an increased risk of morbidity and mortality after adjustment and/or controlling for relevant variables." + , notation = "Pp" + } + , { premise = "There is a dearth of epistemically countervailing data on processed meat." + , notation = "Qp" + } + ] + , conclusion = "Therefore, it is more reasonable to believe that processed meat is unhealthy than it is to believe the opposite." + , conclusionNotation = "Rp" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyRedMeat.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyRedMeat.elm new file mode 100755 index 0000000..81f8bd6 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthyRedMeat.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.UnhealthyRedMeat exposing (argumentUnhealthyRedMeat) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentUnhealthyRedMeat : Argument +argumentUnhealthyRedMeat = + { argumentTitle = toTitleCase "Argument for Unhealthy Red Meat" + , propositionTitle = "Red meat and processed meat are unhealthy." + , propositionReductio = "" + , propositionSummary = "Even when you account for factors that could plausibly influence the results, unprocessed red meat has been shown to consistently increase the risk of morbidity and mortality, strongly suggesting that they directly contribute to worse health outcomes, particularly with respect to colorectal cancer and heart disease." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(Qm)|=(Pm)" + , argumentCertainty = 7 + , argumentImage = "redmeat" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has a strong tendency to associate with an increased risk of morbidity and/or mortality after adjusting and/or controlling for relevant variables." + } + , { definiendum = "Q(x)" + , definiens = "there is a dearth of epistemically countervailing data on (x)." + } + , { definiendum = "R(x)" + , definiens = "it is more reasonable to believe that (x) is unhealthy than it is to believe the opposite." + } + , { definiendum = "x" + , definiens = "a food" + } + , { definiendum = "r" + , definiens = "red meat" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a food has a strong tendency to associate with an increased risk of morbidity and/or mortality after adjusting and/or controling for relevant variables and there is a dearth of epistemically countervailing data on that food, then it is more reasonable to believe that the food is healthy than it is to believe the opposite." + , notation = "鈭x((Px鈭x)鈫扲x)" + } + , { premise = "Red meat has a strong tendency to associate with an increased risk of morbidity and mortality after adjustment and/or controlling for relevant variables." + , notation = "Pr" + } + , { premise = "There is a dearth of epistemically countervailing data on red meat." + , notation = "Qr" + } + ] + , conclusion = "Therefore, it is more reasonable to believe that red meat is unhealthy than it is to believe the opposite." + , conclusionNotation = "Rr" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthySaturatedFat.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthySaturatedFat.elm new file mode 100755 index 0000000..20f7315 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/UnhealthySaturatedFat.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Arguments.Records.UnhealthySaturatedFat exposing (argumentUnhealthySaturatedFat) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentUnhealthySaturatedFat : Argument +argumentUnhealthySaturatedFat = + { argumentTitle = toTitleCase "Argument Against Saturated Animal Fat" + , propositionTitle = "Most sources of saturated fat are unhealthy." + , propositionReductio = "" + , propositionSummary = "Even when you account for factors that could plausibly influence the results, most animal-derived saturated fats have been shown to consistently increase the risk of morbidity and mortality, strongly suggesting that they directly contribute to worse health outcomes, particularly with respect to heart disease and non-alcoholic fatty liver disease." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4Qx)),(Qf)|=(Pf)" + , argumentCertainty = 9 + , argumentImage = "saturatedfat" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "(x) has a strong tendency to associate with an increased risk of morbidity and/or mortality after adjusting and/or controlling for relevant variables." + } + , { definiendum = "Q(x)" + , definiens = "there is a dearth of epistemically countervailing data on (x)." + } + , { definiendum = "R(x)" + , definiens = "it is more reasonable to believe that (x) is unhealthy than it is to believe the opposite." + } + , { definiendum = "x" + , definiens = "a food" + } + , { definiendum = "s" + , definiens = "saturated animal fat" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, if a food has a strong tendency to associate with an increased risk of morbidity and/or mortality after adjusting and/or controling for relevant variables and there is a dearth of epistemically countervailing data on that food, then it is more reasonable to believe that the food is healthy than it is to believe the opposite." + , notation = "鈭x((Px鈭x)鈫扲x)" + } + , { premise = "Saturated animal fat has a strong tendency to associate with an increased risk of morbidity and mortality after adjustment and/or controlling for relevant variables." + , notation = "Ps" + } + , { premise = "There is a dearth of epistemically countervailing data on saturated animal fat." + , notation = "Qs" + } + ] + , conclusion = "Therefore, it is more reasonable to believe that saturated animal fat is unhealthy than it is to believe the opposite." + , conclusionNotation = "Rs" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/VeganSocietyReductio.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/VeganSocietyReductio.elm new file mode 100755 index 0000000..86763ed --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Records/VeganSocietyReductio.elm @@ -0,0 +1,58 @@ +module Config.Pages.Debate.Arguments.Records.VeganSocietyReductio exposing (argumentVeganSocietyReductio) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Pages.Debate.Arguments.Types exposing (Argument) + + +argumentVeganSocietyReductio : Argument +argumentVeganSocietyReductio = + { argumentTitle = toTitleCase "Vegan Society Definition Reductio" + , propositionTitle = "It is vegan to eat Groot." + , propositionReductio = "Those who hold to the Vegan Society's definition of veganism index the object of moral value to belonging to the animal kingdom." + , propositionSummary = "If one holds to the position that exploiting a being is wrong so long as that being is an animal, then it is straightforwardly entailed that exploiting creatures like Groot would be an action compatible with veganism." + , proofLink = "https://www.umsu.de/trees/#(~6x(Px~4~3Qx)),(~6x~6y(~3Rx~5~3Q(e(y)))),(~3Rg)%7C=(P(e(g)))" + , argumentCertainty = 10 + , argumentImage = "vegansociety" + , argumentHashtags = [] + , isNewTabLink = False + , definitionTable = + [ { definiendum = "P(x)" + , definiens = "it is vegan to do (x)" + } + , { definiendum = "Q(x,y)" + , definiens = "(x) exploits (y)" + } + , { definiendum = "R(x)" + , definiens = "(x) is an animal" + } + , { definiendum = "x" + , definiens = "a being" + } + , { definiendum = "y" + , definiens = "an animal" + } + , { definiendum = "e" + , definiens = "eat" + } + , { definiendum = "g" + , definiens = "Groot" + } + ] + , argumentFormalization = + [ { premises = + [ { premise = "For all things, it is vegan to do something if, and only if, that thing does not exploit animals." + , notation = "鈭x(Px鈫斅琎x)" + } + , { premise = "If some beings are not animals, then eating those beings does not exploit animals." + , notation = "鈭x鈭y(卢Rx鈫捖琎(e(y)))" + } + , { premise = "Groot is not an animal." + , notation = "卢Rg" + } + ] + , conclusion = "Therefore, it is vegan to eat Groot." + , conclusionNotation = "P(e(g))" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Arguments/Types.elm b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Types.elm new file mode 100755 index 0000000..2e7c30d --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Arguments/Types.elm @@ -0,0 +1,96 @@ +module Config.Pages.Debate.Arguments.Types exposing + ( Argument + , Notation(..) + , logic + ) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) + + +type alias Argument = + { argumentTitle : String + , propositionTitle : String + , propositionSummary : String + , propositionReductio : String + , proofLink : String + , definitionTable : List Definition + , argumentCertainty : Int + , argumentImage : String + , argumentHashtags : List Hashtags + , isNewTabLink : Bool + , argumentFormalization : List ArgumentEntry + } + + +type alias ArgumentEntry = + { premises : List PremiseWithNotation + , conclusion : String + , conclusionNotation : String + } + + +type alias PremiseWithNotation = + { premise : String + , notation : String + } + + +type alias Definition = + { definiendum : String + , definiens : String + } + + +type Notation + = Implies + | Biconditional + | Negation + | Conjunction + | Disjunction + | Universal + | Existential + | Therefore + | VariableW + | VariableX + | VariableY + | VariableZ + + +logic : Notation -> String +logic operator = + case operator of + Implies -> + "鈫" + + Biconditional -> + "鈫" + + Negation -> + "卢" + + Conjunction -> + "鈭" + + Disjunction -> + "鈭" + + Universal -> + "鈭" + + Existential -> + "鈭" + + Therefore -> + "鈭" + + VariableW -> + "饾懁" + + VariableX -> + "饾懃" + + VariableY -> + "饾懄" + + VariableZ -> + "饾懅" diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/List.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/List.elm new file mode 100755 index 0000000..3c0a5e3 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/List.elm @@ -0,0 +1,200 @@ +module Config.Pages.Debate.Cuckery.List exposing (cuckList) + +import Config.Pages.Debate.Cuckery.Records.AdamSinger exposing (cuckAdamSinger) +import Config.Pages.Debate.Cuckery.Records.AllenGreen exposing (cuckAllenGreen) +import Config.Pages.Debate.Cuckery.Records.AmberOHearn exposing (cuckAmberOHearn) +import Config.Pages.Debate.Cuckery.Records.AnnChilders exposing (cuckAnnChilders) +import Config.Pages.Debate.Cuckery.Records.AnthonyGustin exposing (cuckAnthonyGustin) +import Config.Pages.Debate.Cuckery.Records.AshwaniGarg exposing (cuckAshwaniGarg) +import Config.Pages.Debate.Cuckery.Records.AustinHerbert exposing (cuckAustinHerbert) +import Config.Pages.Debate.Cuckery.Records.AustinHiggs exposing (cuckAustinHiggs) +import Config.Pages.Debate.Cuckery.Records.BartKay exposing (cuckBartKay) +import Config.Pages.Debate.Cuckery.Records.BenBikman exposing (cuckBenBikman) +import Config.Pages.Debate.Cuckery.Records.BennyMalone exposing (cuckBennyMalone) +import Config.Pages.Debate.Cuckery.Records.BowTiedOx exposing (cuckBowTiedOx) +import Config.Pages.Debate.Cuckery.Records.BradCampbell exposing (cuckBradCampbell) +import Config.Pages.Debate.Cuckery.Records.BradCohn exposing (cuckBradCohn) +import Config.Pages.Debate.Cuckery.Records.BradMarshall exposing (cuckBradMarshall) +import Config.Pages.Debate.Cuckery.Records.BretScher exposing (cuckBretScher) +import Config.Pages.Debate.Cuckery.Records.BretWeinstein exposing (cuckBretWeinstein) +import Config.Pages.Debate.Cuckery.Records.BrianKateman exposing (cuckBrianKateman) +import Config.Pages.Debate.Cuckery.Records.BrianKerley exposing (cuckBrianKerley) +import Config.Pages.Debate.Cuckery.Records.CameronRuggles exposing (cuckCameronRuggles) +import Config.Pages.Debate.Cuckery.Records.CarnivoreAurelius exposing (cuckCarnivoreAurelius) +import Config.Pages.Debate.Cuckery.Records.CaryKelly exposing (cuckCaryKelly) +import Config.Pages.Debate.Cuckery.Records.CateShanahan exposing (cuckCateShanahan) +import Config.Pages.Debate.Cuckery.Records.ChrisBoettcher exposing (cuckChrisBoettcher) +import Config.Pages.Debate.Cuckery.Records.ClaraAboel exposing (cuckClaraAboel) +import Config.Pages.Debate.Cuckery.Records.CliffHarvey exposing (cuckCliffHarvey) +import Config.Pages.Debate.Cuckery.Records.DaltonGraham exposing (cuckDaltonGraham) +import Config.Pages.Debate.Cuckery.Records.DaveCali exposing (cuckDaveCali) +import Config.Pages.Debate.Cuckery.Records.DaveFeldman exposing (cuckDaveFeldman) +import Config.Pages.Debate.Cuckery.Records.DavidBeruh exposing (cuckDavidBeruh) +import Config.Pages.Debate.Cuckery.Records.DavidDiamond exposing (cuckDavidDiamond) +import Config.Pages.Debate.Cuckery.Records.DavidGornoski exposing (cuckDavidGornoski) +import Config.Pages.Debate.Cuckery.Records.DavidZarkov exposing (cuckDavidZarkov) +import Config.Pages.Debate.Cuckery.Records.DevanandPrabhu exposing (cuckDevanandPrabhu) +import Config.Pages.Debate.Cuckery.Records.DianaRodgers exposing (cuckDianaRodgers) +import Config.Pages.Debate.Cuckery.Records.EdSerrano exposing (cuckEdSerrano) +import Config.Pages.Debate.Cuckery.Records.EdwardGoeke exposing (cuckEdwardGoeke) +import Config.Pages.Debate.Cuckery.Records.ElieJarrouge exposing (cuckElieJarrouge) +import Config.Pages.Debate.Cuckery.Records.EricSartori exposing (cuckEricSartori) +import Config.Pages.Debate.Cuckery.Records.GarryLee exposing (cuckGarryLee) +import Config.Pages.Debate.Cuckery.Records.GaryBrecka exposing (cuckGaryBrecka) +import Config.Pages.Debate.Cuckery.Records.GaryFettke exposing (cuckGaryFettke) +import Config.Pages.Debate.Cuckery.Records.GaryTaubes exposing (cuckGaryTaubes) +import Config.Pages.Debate.Cuckery.Records.GeorgeMartin exposing (cuckGeorgeMartin) +import Config.Pages.Debate.Cuckery.Records.GuyAustin exposing (cuckGuyAustin) +import Config.Pages.Debate.Cuckery.Records.IvorCummins exposing (cuckIvorCummins) +import Config.Pages.Debate.Cuckery.Records.JaimieDrew exposing (cuckJaimieDrew) +import Config.Pages.Debate.Cuckery.Records.JakeMey exposing (cuckJakeMey) +import Config.Pages.Debate.Cuckery.Records.JamesDiNicolantonio exposing (cuckJamesDiNicolantonio) +import Config.Pages.Debate.Cuckery.Records.JosephEverett exposing (cuckJosephEverett) +import Config.Pages.Debate.Cuckery.Records.JustinMares exposing (cuckJustinMares) +import Config.Pages.Debate.Cuckery.Records.KaitMalthaner exposing (cuckKaitMalthaner) +import Config.Pages.Debate.Cuckery.Records.KemMinnick exposing (cuckKemMinnick) +import Config.Pages.Debate.Cuckery.Records.KenBerry exposing (cuckKenBerry) +import Config.Pages.Debate.Cuckery.Records.KevinStock exposing (cuckKevinStock) +import Config.Pages.Debate.Cuckery.Records.KyleMamounis exposing (cuckKyleMamounis) +import Config.Pages.Debate.Cuckery.Records.LewisWhitfield exposing (cuckLewisWhitfield) +import Config.Pages.Debate.Cuckery.Records.MacroFour exposing (cuckMacroFour) +import Config.Pages.Debate.Cuckery.Records.MarionHolman exposing (cuckMarionHolman) +import Config.Pages.Debate.Cuckery.Records.MarkBski exposing (cuckMarkBski) +import Config.Pages.Debate.Cuckery.Records.MarkSisson exposing (cuckMarkSisson) +import Config.Pages.Debate.Cuckery.Records.MartyKendall exposing (cuckMartyKendall) +import Config.Pages.Debate.Cuckery.Records.MaxLugavere exposing (cuckMaxLugavere) +import Config.Pages.Debate.Cuckery.Records.MichaelKummer exposing (cuckMichaelKummer) +import Config.Pages.Debate.Cuckery.Records.MichaelManderville exposing (cuckMichaelManderville) +import Config.Pages.Debate.Cuckery.Records.MiguelEspejel exposing (cuckMiguelEspejel) +import Config.Pages.Debate.Cuckery.Records.MikeMutzel exposing (cuckMikeMutzel) +import Config.Pages.Debate.Cuckery.Records.MikeSweeney exposing (cuckMikeSweeney) +import Config.Pages.Debate.Cuckery.Records.NickEggleton exposing (cuckNickEggleton) +import Config.Pages.Debate.Cuckery.Records.NinaTeicholz exposing (cuckNinaTeicholz) +import Config.Pages.Debate.Cuckery.Records.NoCarbsNation exposing (cuckNoCarbsNation) +import Config.Pages.Debate.Cuckery.Records.NorstrongChris exposing (cuckNorstrongChris) +import Config.Pages.Debate.Cuckery.Records.PaulMason exposing (cuckPaulMason) +import Config.Pages.Debate.Cuckery.Records.PaulSaladino exposing (cuckPaulSaladino) +import Config.Pages.Debate.Cuckery.Records.PeterFaber exposing (cuckPeterFaber) +import Config.Pages.Debate.Cuckery.Records.PhilipOvadia exposing (cuckPhilipOvadia) +import Config.Pages.Debate.Cuckery.Records.PhilippeStephenson exposing (cuckPhilippeStephenson) +import Config.Pages.Debate.Cuckery.Records.RalphNapolitano exposing (cuckRalphNapolitano) +import Config.Pages.Debate.Cuckery.Records.RaphaelSirtoli exposing (cuckRaphaelSirtoli) +import Config.Pages.Debate.Cuckery.Records.RealTruther exposing (cuckRealTruther) +import Config.Pages.Debate.Cuckery.Records.RobMeijer exposing (cuckRobMeijer) +import Config.Pages.Debate.Cuckery.Records.RobbWolf exposing (cuckRobbWolf) +import Config.Pages.Debate.Cuckery.Records.SamTsimikas exposing (cuckSamTsimikas) +import Config.Pages.Debate.Cuckery.Records.ScottPsysher exposing (cuckScottPsysher) +import Config.Pages.Debate.Cuckery.Records.SebastianRamirez exposing (cuckSebastianRamirez) +import Config.Pages.Debate.Cuckery.Records.ShawnBaker exposing (cuckShawnBaker) +import Config.Pages.Debate.Cuckery.Records.SimonGoddek exposing (cuckSimonGoddek) +import Config.Pages.Debate.Cuckery.Records.StevenArena exposing (cuckStevenArena) +import Config.Pages.Debate.Cuckery.Records.StevenBelknap exposing (cuckStevenBelknap) +import Config.Pages.Debate.Cuckery.Records.TomDayspring exposing (cuckTomDayspring) +import Config.Pages.Debate.Cuckery.Records.TravisStatham exposing (cuckTravisStatham) +import Config.Pages.Debate.Cuckery.Records.TristanHaggard exposing (cuckTristanHaggard) +import Config.Pages.Debate.Cuckery.Records.TroKalayjian exposing (cuckTroKalayjian) +import Config.Pages.Debate.Cuckery.Records.TuckerGoodrich exposing (cuckTuckerGoodrich) +import Config.Pages.Debate.Cuckery.Records.ZoeHarcombe exposing (cuckZoeHarcombe) +import Config.Pages.Debate.Cuckery.Records.ZsofiaClemens exposing (cuckZsofiaClemens) +import Config.Pages.Debate.Cuckery.Types exposing (..) + + +cuckList : List Cuck +cuckList = + [ cuckAdamSinger + , cuckAllenGreen + , cuckAmberOHearn + , cuckAnnChilders + , cuckAnthonyGustin + , cuckAshwaniGarg + , cuckAustinHerbert + , cuckAustinHiggs + , cuckBartKay + , cuckBenBikman + , cuckBennyMalone + , cuckBowTiedOx + , cuckBradCampbell + , cuckBradCohn + , cuckBradMarshall + , cuckBretScher + , cuckBretWeinstein + , cuckBrianKateman + , cuckBrianKerley + , cuckCameronRuggles + , cuckCarnivoreAurelius + , cuckCaryKelly + , cuckCateShanahan + , cuckChrisBoettcher + , cuckClaraAboel + , cuckCliffHarvey + , cuckDaltonGraham + , cuckDaveCali + , cuckDaveFeldman + , cuckDavidBeruh + , cuckDavidDiamond + , cuckDavidGornoski + , cuckDavidZarkov + , cuckDevanandPrabhu + , cuckDianaRodgers + , cuckEdSerrano + , cuckEdwardGoeke + , cuckElieJarrouge + , cuckEricSartori + , cuckGarryLee + , cuckGaryBrecka + , cuckGaryFettke + , cuckGaryTaubes + , cuckGeorgeMartin + , cuckGuyAustin + , cuckIvorCummins + , cuckJakeMey + , cuckJamesDiNicolantonio + , cuckJaimieDrew + , cuckJosephEverett + , cuckJustinMares + , cuckKaitMalthaner + , cuckKemMinnick + , cuckKenBerry + , cuckKevinStock + , cuckKyleMamounis + , cuckLewisWhitfield + , cuckMacroFour + , cuckMarionHolman + , cuckMarkBski + , cuckMarkSisson + , cuckMartyKendall + , cuckMaxLugavere + , cuckMichaelKummer + , cuckMichaelManderville + , cuckMiguelEspejel + , cuckMikeMutzel + , cuckMikeSweeney + , cuckNickEggleton + , cuckNinaTeicholz + , cuckNoCarbsNation + , cuckNorstrongChris + , cuckPaulMason + , cuckPaulSaladino + , cuckPeterFaber + , cuckPhilipOvadia + , cuckPhilippeStephenson + , cuckRalphNapolitano + , cuckRaphaelSirtoli + , cuckRealTruther + , cuckRobbWolf + , cuckRobMeijer + , cuckSamTsimikas + , cuckScottPsysher + , cuckSebastianRamirez + , cuckShawnBaker + , cuckSimonGoddek + , cuckStevenArena + , cuckStevenBelknap + , cuckTomDayspring + , cuckTravisStatham + , cuckTristanHaggard + , cuckTroKalayjian + , cuckTuckerGoodrich + , cuckZoeHarcombe + , cuckZsofiaClemens + ] diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AdamSinger.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AdamSinger.elm new file mode 100755 index 0000000..d10b163 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AdamSinger.elm @@ -0,0 +1,40 @@ +module Config.Pages.Debate.Cuckery.Records.AdamSinger exposing (cuckAdamSinger) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckAdamSinger : Cuck +cuckAdamSinger = + let + name : String + name = + "Adam Singer" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/AdamSinger" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1566491269194719232?s=20" + , dodgeDescription = VagueGesture + , dodgeProposition = "Seed oils cause inflammation and stomach pain." + , dodgeReceipts = + [ { receipt = "receipt1" } + , { receipt = "receipt2" } + ] + , dodgeFallacy = Just MotteAndBailey + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AllenGreen.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AllenGreen.elm new file mode 100755 index 0000000..c5bd203 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AllenGreen.elm @@ -0,0 +1,40 @@ +module Config.Pages.Debate.Cuckery.Records.AllenGreen exposing (cuckAllenGreen) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , noProposition + ) + + +cuckAllenGreen : Cuck +cuckAllenGreen = + let + name : String + name = + "Allen Green" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/AllenGreenMD1" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1982632539216023931" + , dodgeDescription = VagueGesture + , dodgeProposition = "Bears killing baby moose is morally permissible because baby moose are not human." + , dodgeReceipts = + [ { receipt = "receipt1" } + ] + , dodgeFallacy = Just VagueHumanity + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "The correct response here is to ask what is true of the baby moose that is untrue of the human child that, if made true of the human child, would lead Allen to let the human child die too. When asked, Allen vaguely gestured, then ran away." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AmberOHearn.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AmberOHearn.elm new file mode 100755 index 0000000..a572b2f --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AmberOHearn.elm @@ -0,0 +1,39 @@ +module Config.Pages.Debate.Cuckery.Records.AmberOHearn exposing (cuckAmberOHearn) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , noProposition + ) + + +cuckAmberOHearn : Cuck +cuckAmberOHearn = + let + name : String + name = + "Amber O Hearn" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/KetoCarnivore" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/FusionProgGuy/status/1413888976281169922?s=20" + , dodgeDescription = VagueGesture + , dodgeProposition = noProposition + , dodgeReceipts = + [ { receipt = "receipt1" } + ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AnnChilders.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AnnChilders.elm new file mode 100755 index 0000000..3c5b234 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AnnChilders.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.AnnChilders exposing (cuckAnnChilders) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckAnnChilders : Cuck +cuckAnnChilders = + let + name : String + name = + "Ann Childers" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/AnnChildersMD" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1447245484356108292?s=20" + , dodgeDescription = RanAway + , dodgeProposition = "Diets humans thrived on in the wild, sans dentists and doctors, are correct." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AnthonyGustin.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AnthonyGustin.elm new file mode 100755 index 0000000..fa3da51 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AnthonyGustin.elm @@ -0,0 +1,39 @@ +module Config.Pages.Debate.Cuckery.Records.AnthonyGustin exposing (cuckAnthonyGustin) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + , noProposition + ) + + +cuckAnthonyGustin : Cuck +cuckAnthonyGustin = + let + name : String + name = + "Anthony Gustin" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/dranthonygustin" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1482502242632552449?s=20" + , dodgeDescription = GhostedMe + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToTradition + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AshwaniGarg.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AshwaniGarg.elm new file mode 100755 index 0000000..cd14564 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AshwaniGarg.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.AshwaniGarg exposing (cuckAshwaniGarg) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckAshwaniGarg : Cuck +cuckAshwaniGarg = + let + name : String + name = + "Ashwani Garg" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/agargmd" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1443328350982967303?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Representing the protein content of beans by dry weight is misleading." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason "It's unclear why we should care about the protein content of a dry food item if that food item is inedible in its dry state" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AustinHerbert.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AustinHerbert.elm new file mode 100755 index 0000000..9350ddb --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AustinHerbert.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.AustinHerbert exposing (cuckAustinHerbert) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckAustinHerbert : Cuck +cuckAustinHerbert = + let + name : String + name = + "Austin Herbert" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/_AustinHerbert" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1663698981833277440" + , dodgeDescription = NoReply + , dodgeProposition = "Seed oils make you fat and kill your body." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AustinHiggs.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AustinHiggs.elm new file mode 100755 index 0000000..3e04333 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/AustinHiggs.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Cuckery.Records.AustinHiggs exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , multiplePropositions + ) + + +cuckAustinHiggs : Cuck +cuckAustinHiggs = + let + name : String + name = + "Austin Higgs" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/artofoptimal" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1869452605954707861" + , dodgeDescription = NoReply + , dodgeProposition = "We have been mislead into believing natural animals fats will kill us while highly processed seed oils are heart healthy." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1900265937959330199" + , dodgeDescription = NoReply + , dodgeProposition = "Mainstream medicine lied about the sun causing melanoma skin cancer, sunglasses being good for eye health, saturated fat and cholesterol clogging your arteries, seed oils being heart healthy, meat causing cancer, bad cholesterol existing, fluoride being safe and necessary for teeth, fiber being healthy and necessary, salt raising blood pressure, fruits and vegetables being super healthy, high carb/low fat diets being optimal, grains being healthy, and diabetes being all genetics." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "There are many individual propositions here, but I don't think any of them are true on a charitable interpretation." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BartKay.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BartKay.elm new file mode 100755 index 0000000..1f5b6af --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BartKay.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.BartKay exposing (cuckBartKay) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckBartKay : Cuck +cuckBartKay = + let + name : String + name = + "Bart Kay" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Bart_WT_Kay" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://www.youtube.com/watch?v=M7vTJ02xxrw" + , dodgeDescription = RanAway + , dodgeProposition = "A 100% Carnivore diet is the appropriate and best health choice for all people." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propEmpiricalClaimDisbelief + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BenBikman.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BenBikman.elm new file mode 100755 index 0000000..bd316df --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BenBikman.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.BenBikman exposing (cuckBenBikman) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckBenBikman : Cuck +cuckBenBikman = + let + name : String + name = + "Ben Bikman" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/BenBikmanPhD" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1587547250074746880?s=19" + , dodgeDescription = NoReply + , dodgeProposition = "The diet-heart hypothesis is false." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSaturatedFatReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BennyMalone.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BennyMalone.elm new file mode 100755 index 0000000..fd9aa0b --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BennyMalone.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.BennyMalone exposing (cuckBennyMalone) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckBennyMalone : Cuck +cuckBennyMalone = + let + name : String + name = + "Benny Malone" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/bennymaloneUK" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1569046576609300489" + , dodgeDescription = RanAway + , dodgeProposition = "Eating oysters is compatible with veganism." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason "Bivalves are not likely to be sentient, and extending them the precautionary principle has hilarious entails." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BowTiedOx.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BowTiedOx.elm new file mode 100755 index 0000000..309c2de --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BowTiedOx.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.BowTiedOx exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckBowTiedOx : Cuck +cuckBowTiedOx = + let + name : String + name = + "BowTiedOx" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/BowTiedOx" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1509370357722931208" + , dodgeDescription = VagueGesture + , dodgeProposition = "If you eat a ton of omega 3, the damage of omega 6 is lessened." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "The aggregate of the data suggests omega-6 and omega-3 are both health-promoting, and it's not clear at all that one lessens any negative effect of the other." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BradCampbell.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BradCampbell.elm new file mode 100755 index 0000000..4feb993 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BradCampbell.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.BradCampbell exposing (cuckBradCampbell) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckBradCampbell : Cuck +cuckBradCampbell = + let + name : String + name = + "Brad Campbell" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/DrBradCampbell" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1530933999610171392?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Canola oil kills you slowly." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BradCohn.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BradCohn.elm new file mode 100755 index 0000000..06c5280 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BradCohn.elm @@ -0,0 +1,54 @@ +module Config.Pages.Debate.Cuckery.Records.BradCohn exposing (cuckBradCohn) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckBradCohn : Cuck +cuckBradCohn = + let + name : String + name = + "Brad Cohn" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/BradCohn" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1687535030862831616" + , dodgeDescription = NoReply + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1474139301369634816" + , dodgeDescription = RanAway + , dodgeProposition = "RCTs and cohort studies wouldn't pick up on the effect of the displacing foods of modern commerce." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason "I'm not even sure what the proposition was intending to communicate." + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1443654067411030046" + , dodgeDescription = RanAway + , dodgeProposition = "Seed oils are associated with AMD, particularly if people don't have sufficient levels of antioxidants in their diets." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "The aggregate of the data suggests seed oils have no statistically significant association with age-related macular degeneration." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BradMarshall.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BradMarshall.elm new file mode 100755 index 0000000..4714304 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BradMarshall.elm @@ -0,0 +1,38 @@ +module Config.Pages.Debate.Cuckery.Records.BradMarshall exposing (cuckBradMarshall) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckBradMarshall : Cuck +cuckBradMarshall = + let + name : String + name = + "Brad Marshall" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/fire_bottle" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1687597276074782727" + , dodgeDescription = InTooDeep + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BretScher.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BretScher.elm new file mode 100755 index 0000000..0849b34 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BretScher.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.BretScher exposing (cuckBretScher) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckBretScher : Cuck +cuckBretScher = + let + name : String + name = + "Bret Scher" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/BretScher" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1912019150912061892" + , dodgeDescription = NoReply + , dodgeProposition = "Keto caused rapid plaque progression in the KETO-CTA Trial." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason "I think the most epistemically parsimonious explanation for the rapid plaque progression that was observed was ketogenic diet-induced hyperlipidemia." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BretWeinstein.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BretWeinstein.elm new file mode 100755 index 0000000..e4070d8 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BretWeinstein.elm @@ -0,0 +1,53 @@ +module Config.Pages.Debate.Cuckery.Records.BretWeinstein exposing (cuckBretWeinstein) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckBretWeinstein : Cuck +cuckBretWeinstein = + let + name : String + name = + "Bret Weinstein" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/BretWeinstein" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1858356347332374597" + , dodgeDescription = NoReply + , dodgeProposition = "Seed oils are dangerous." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1858745910701777229" + , dodgeDescription = NoReply + , dodgeProposition = "Seed oils are dangerous." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1858746414882263256" + , dodgeDescription = NoReply + , dodgeProposition = "Seed oils are dangerous." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BrianKateman.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BrianKateman.elm new file mode 100755 index 0000000..3f0604b --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BrianKateman.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.BrianKateman exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckBrianKateman : Cuck +cuckBrianKateman = + let + name : String + name = + "Brian Kateman" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/BrianKateman" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/BrianKateman/status/1645884359344369668" + , dodgeDescription = NoReply + , dodgeProposition = "If someone identifies as vegan, then going for a casual stroll is a cruel choice." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just (SpecificFallacy "Nirvana Fallacy") + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "This just misunderstands vegan values. Vegans don't want to contribute to additional rights violations against sentient beings, such as animals. It's completely unclear how going for a stroll voilates this principle." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BrianKerley.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BrianKerley.elm new file mode 100755 index 0000000..3e2df3b --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/BrianKerley.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Cuckery.Records.BrianKerley exposing (cuckBrianKerley) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckBrianKerley : Cuck +cuckBrianKerley = + let + name : String + name = + "Brian Kerley" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/SeedOilDsrspctr" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1483889771134926849?s=20" + , dodgeDescription = NoReply + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1783200352646619227" + , dodgeDescription = NoReply + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CameronRuggles.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CameronRuggles.elm new file mode 100755 index 0000000..7fc19a7 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CameronRuggles.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.CameronRuggles exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckCameronRuggles : Cuck +cuckCameronRuggles = + let + name : String + name = + "Cameron Ruggles" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/CameronRuggles" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1503799477324300290" + , dodgeDescription = VagueGesture + , dodgeProposition = "Nick's antagonistic pleiotropy argument commits him to affirming that trans-fat is healthy." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Strawman + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "This is a bizarre claim that requires some sort of evidence, and none was provided." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CarnivoreAurelius.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CarnivoreAurelius.elm new file mode 100755 index 0000000..d127487 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CarnivoreAurelius.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.CarnivoreAurelius exposing (cuckCarnivoreAurelius) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckCarnivoreAurelius : Cuck +cuckCarnivoreAurelius = + let + name : String + name = + "Carnivore Aurelius" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/AlpacaAurelius" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1538272143061815299?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Vegans kill 100x more animals." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propEmpiricalClaim + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CaryKelly.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CaryKelly.elm new file mode 100755 index 0000000..05c3a82 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CaryKelly.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.CaryKelly exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckCaryKelly : Cuck +cuckCaryKelly = + let + name : String + name = + "Cary Kelly" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/CaryKelly11" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1468307609623031808" + , dodgeDescription = RanAway + , dodgeProposition = "Cary Kelly refuses to eat something that can fuel a diesel engine." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "Beef tallow can be used to fiel a diesel engine as well, but Cary eats beef tallow. So, the proposition is straightforwardly false." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CateShanahan.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CateShanahan.elm new file mode 100755 index 0000000..d6d5074 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CateShanahan.elm @@ -0,0 +1,111 @@ +module Config.Pages.Debate.Cuckery.Records.CateShanahan exposing (cuckCateShanahan) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + , noProposition + ) + + +cuckCateShanahan : Cuck +cuckCateShanahan = + let + name : String + name = + "Cate Shanahan" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/drcateshanahan" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1266438463634632709?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Seed oils are pro-inflammatory." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonInflammation + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1479497980570857474?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Those who defend seed oils are just regurgitating the garbage that the AHA pumps out." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "I defend seed oils and I've never even read the AHA's material on the subject." + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1487215337116508162?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Seed oils are toxic." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/drcateshanahan/status/1516904406805057537?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Current levels of seed oil consumption are the main driver of the obesity and chronic disease." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1537544882532716544?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Nick is just following the AHA marching orders." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just GeneticFallacy + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "I've never even read the AHA's recommendations on anything." + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1778616438116483102" + , dodgeDescription = RanAway + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1779185488521310601" + , dodgeDescription = PussiedOut + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1778616438116483102" + , dodgeDescription = KillScreen + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1798766450255253987" + , dodgeDescription = KillScreen + , dodgeProposition = "Current levels of seed oil consumption are the main driver of heart disease." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonCVD + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1869843045677666410" + , dodgeDescription = NoReply + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = NoProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ChrisBoettcher.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ChrisBoettcher.elm new file mode 100755 index 0000000..21530ee --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ChrisBoettcher.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.ChrisBoettcher exposing (cuckChrisBoettcher) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckChrisBoettcher : Cuck +cuckChrisBoettcher = + let + name : String + name = + "Chris Boettcher" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/chrisboettcher9" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/MeggGawat/status/1669691841682210822" + , dodgeDescription = NoReply + , dodgeProposition = "Seed oils are making you fat, depressed, and sick." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ClaraAboel.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ClaraAboel.elm new file mode 100755 index 0000000..eebea3d --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ClaraAboel.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.ClaraAboel exposing (cuckClaraAboel) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckClaraAboel : Cuck +cuckClaraAboel = + let + name : String + name = + "Clara Aboel" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/AIWellnessCoach" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1727510906655969736" + , dodgeDescription = NoReply + , dodgeProposition = "Polyunsaturated fatty acids are known to initiate cancer." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonCancer + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CliffHarvey.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CliffHarvey.elm new file mode 100755 index 0000000..10ee660 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/CliffHarvey.elm @@ -0,0 +1,45 @@ +module Config.Pages.Debate.Cuckery.Records.CliffHarvey exposing (cuckCliffHarvey) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckCliffHarvey : Cuck +cuckCliffHarvey = + let + name : String + name = + "Cliff Harvey" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/CarbAppropriate" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/CarbAppropriate/status/1372281626206507010?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Saturated fat in the diet does not independently increase the risk of mortality." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSaturatedFatReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1500650543886204929?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Saturated fat in the diet does not independently increase the risk of mortality." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSaturatedFatReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DaltonGraham.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DaltonGraham.elm new file mode 100755 index 0000000..ca48138 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DaltonGraham.elm @@ -0,0 +1,38 @@ +module Config.Pages.Debate.Cuckery.Records.DaltonGraham exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckDaltonGraham : Cuck +cuckDaltonGraham = + let + name : String + name = + "Dalton Graham" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Outdoctrination" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/Outdoctrination/status/1488564457894813699" + , dodgeDescription = VagueGesture + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DaveCali.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DaveCali.elm new file mode 100755 index 0000000..3920a86 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DaveCali.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.DaveCali exposing (cuckDaveCali) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckDaveCali : Cuck +cuckDaveCali = + let + name : String + name = + "Dave Cali" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/NostraDavus2" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1978671129796464894" + , dodgeDescription = RanAway + , dodgeProposition = "Nick is slippery and evasive." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "It's unclear what he's talking about since I literally answered all of his questions. He ran away rather than actually explaining so I'm guessing he's just fucking retarded." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DaveFeldman.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DaveFeldman.elm new file mode 100755 index 0000000..2975176 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DaveFeldman.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Cuckery.Records.DaveFeldman exposing (cuckDaveFeldman) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , noProposition + ) + + +cuckDaveFeldman : Cuck +cuckDaveFeldman = + let + name : String + name = + "Dave Feldman" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/realDaveFeldman" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1306625219440730118?s=20" + , dodgeDescription = NoReply + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1842372113946329138" + , dodgeDescription = NoReply + , dodgeProposition = "Seed oils are healthful." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidBeruh.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidBeruh.elm new file mode 100755 index 0000000..b3353a4 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidBeruh.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.DavidBeruh exposing (cuckDavidBeruh) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckDavidBeruh : Cuck +cuckDavidBeruh = + let + name : String + name = + "David Beruh" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/DavidB96770" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1970930731645010378" + , dodgeDescription = RanAway + , dodgeProposition = "Gender-affirming surgeries for transgender individuals saves lives through suicide reduction." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason "Empirical observation consistency shows lower rates of suicide for transgender populations after gender-affirming interventions." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidDiamond.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidDiamond.elm new file mode 100755 index 0000000..40ad364 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidDiamond.elm @@ -0,0 +1,49 @@ +module Config.Pages.Debate.Cuckery.Records.DavidDiamond exposing (cuckDavidDiamond) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckDavidDiamond : Cuck +cuckDavidDiamond = + let + name : String + name = + "David Diamond" + + statinProp : String + statinProp = + "Statin therapy is not warranted for a person high LDL-C on a low-carb diet." + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/LDLSkeptic" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/LDLSkeptic/status/1583471298306375681?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = statinProp + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propLDLCausality + } + , { dodgeLink = "https://x.com/LDLSkeptic/status/1583481964840902656?s=20" + , dodgeDescription = KillScreen + , dodgeProposition = statinProp + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propLDLCausality + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidGornoski.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidGornoski.elm new file mode 100755 index 0000000..28b56e5 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidGornoski.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.DavidGornoski exposing (cuckDavidGornoski) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckDavidGornoski : Cuck +cuckDavidGornoski = + let + name : String + name = + "David Gornoski" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/DavidGornoski" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1525474063044550657?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = "Polyunsaturated fatty acids cause obesity." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonObesity + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidZarkov.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidZarkov.elm new file mode 100755 index 0000000..6e44686 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DavidZarkov.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.DavidZarkov exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckDavidZarkov : Cuck +cuckDavidZarkov = + let + name : String + name = + "David Zarkov" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/wahmahchi" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1503050222104047618" + , dodgeDescription = EmptyHanded + , dodgeProposition = "Nick denies that hunting facilitates wildlife conservation." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Strawman + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "I literally believe the proposition is true, lol. I don't know what the fuck he was rambling about." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DevanandPrabhu.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DevanandPrabhu.elm new file mode 100755 index 0000000..bc1b5dd --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DevanandPrabhu.elm @@ -0,0 +1,38 @@ +module Config.Pages.Debate.Cuckery.Records.DevanandPrabhu exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckDevanandPrabhu : Cuck +cuckDevanandPrabhu = + let + name : String + name = + "Devanand Prabhu" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/MindMusclePro" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1480580946122452997" + , dodgeDescription = EmptyHanded + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DianaRodgers.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DianaRodgers.elm new file mode 100755 index 0000000..04caa9b --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/DianaRodgers.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.DianaRodgers exposing (cuckDianaRodgers) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckDianaRodgers : Cuck +cuckDianaRodgers = + let + name : String + name = + "Diana Rodgers" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/sustainabledish" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1365857401786814465?s=20" + , dodgeDescription = InTooDeep + , dodgeProposition = "Saturated fat doesn't increase the risk of coronary heart disease." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSaturatedFatReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/EdSerrano.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/EdSerrano.elm new file mode 100755 index 0000000..80c9a42 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/EdSerrano.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.EdSerrano exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckEdSerrano : Cuck +cuckEdSerrano = + let + name : String + name = + "Ed Serrano" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/ed_e_s" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1848829301464142296" + , dodgeDescription = EmptyHanded + , dodgeProposition = "Exercise, a whole food diet, and a gut cleanse can solve the eating and health disorders many people face today." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propEmpiricalClaimDisbelief + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/EdwardGoeke.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/EdwardGoeke.elm new file mode 100755 index 0000000..7c6abc4 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/EdwardGoeke.elm @@ -0,0 +1,48 @@ +module Config.Pages.Debate.Cuckery.Records.EdwardGoeke exposing (cuckEdwardGoeke) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckEdwardGoeke : Cuck +cuckEdwardGoeke = + let + name : String + name = + "Edward Goeke" + + propSeedOils = + "Seed oils are inflammatory." + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/GoekeEddie" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1773421625150746784?s=20" + , dodgeDescription = NoReply + , dodgeProposition = propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonInflammation + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1774154640403423359?s=20" + , dodgeDescription = NoReply + , dodgeProposition = propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonInflammation + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ElieJarrouge.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ElieJarrouge.elm new file mode 100755 index 0000000..73a799e --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ElieJarrouge.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.ElieJarrouge exposing (cuckElieJarrouge) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckElieJarrouge : Cuck +cuckElieJarrouge = + let + name : String + name = + "Elie Jarrouge" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/ElieJarrougeMD" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1506845469980315648?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Sugar, refined carbs, and seed oils are poison." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/EricSartori.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/EricSartori.elm new file mode 100755 index 0000000..7be1773 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/EricSartori.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.EricSartori exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckEricSartori : Cuck +cuckEricSartori = + let + name : String + name = + "Eric Sartori" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://www.youtube.com/NurseEric" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/Batleth108/status/1655237358424555520" + , dodgeDescription = PussiedOut + , dodgeProposition = "Vitamin A deficiency isn't real." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "The primary symptom of vitamin A deficiency is xerophthalmia. We have a number of interventions dosing vitamin A, oftentimes with a control group, and seeing xerophthalmia resolve. Given the etiology of the disease (insufficient retinoic acid), this is just straightforward." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GarryLee.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GarryLee.elm new file mode 100755 index 0000000..a004dcb --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GarryLee.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.GarryLee exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckGarryLee : Cuck +cuckGarryLee = + let + name : String + name = + "Garry Lee" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Gearoidmuar" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1450834923875676161" + , dodgeDescription = RanAway + , dodgeProposition = "With respect to saturated fat, France is a serious outlier in prevalence of actual clinical ischemic heart disease." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just (SpecificFallacy "Ecological Fallacy") + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "Modern analyses of France that model substitutions demonstrate that saturated fat, even in France, increases the risk of ischemic heart disease." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GaryBrecka.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GaryBrecka.elm new file mode 100755 index 0000000..f1e0dc6 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GaryBrecka.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.GaryBrecka exposing (cuckGaryBrecka) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckGaryBrecka : Cuck +cuckGaryBrecka = + let + name : String + name = + "Gary Brecka" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/garybrecka1" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1726664526316372125" + , dodgeDescription = NoReply + , dodgeProposition = "Linoleic acid consumption causes atherosclerosis." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonCVD + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GaryFettke.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GaryFettke.elm new file mode 100755 index 0000000..14cdc31 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GaryFettke.elm @@ -0,0 +1,38 @@ +module Config.Pages.Debate.Cuckery.Records.GaryFettke exposing (cuckGaryFettke) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckGaryFettke : Cuck +cuckGaryFettke = + let + name : String + name = + "Gary Fettke" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/FructoseNo" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1460983496524980224" + , dodgeDescription = GhostedMe + , dodgeProposition = commonProps.propLinoleicAcid + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GaryTaubes.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GaryTaubes.elm new file mode 100755 index 0000000..678b651 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GaryTaubes.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.GaryTaubes exposing (cuckGaryTaubes) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckGaryTaubes : Cuck +cuckGaryTaubes = + let + name : String + name = + "Gary Taubes" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/garytaubes" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/garytaubes/status/1595180467552018432?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = "Carbohydrates cause starvation." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GeorgeMartin.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GeorgeMartin.elm new file mode 100755 index 0000000..f8c45bd --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GeorgeMartin.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.GeorgeMartin exposing (cuckGeorgeMartin) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckGeorgeMartin : Cuck +cuckGeorgeMartin = + let + name : String + name = + "George Martin" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/CarnismDebunked" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1815098730141651021" + , dodgeDescription = RanAway + , dodgeProposition = "Nick has killed more animals in his life than a mature bear." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just (SpecificFallacy "Appeal to Chatbots") + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propEmpiricalClaim + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GuyAustin.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GuyAustin.elm new file mode 100755 index 0000000..e14e5ba --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/GuyAustin.elm @@ -0,0 +1,47 @@ +module Config.Pages.Debate.Cuckery.Records.GuyAustin exposing (cuckGuyAustin) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + , noProposition + ) + + +cuckGuyAustin : Cuck +cuckGuyAustin = + let + name : String + name = + "Guy Austin" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/GuyNAustin" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1538607434176020480" + , dodgeDescription = NoReply + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + , { dodgeLink = "https://x.com/GuyNAustin/status/1687530045101744128" + , dodgeDescription = PussiedOut + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/IvorCummins.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/IvorCummins.elm new file mode 100755 index 0000000..0300fa1 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/IvorCummins.elm @@ -0,0 +1,48 @@ +module Config.Pages.Debate.Cuckery.Records.IvorCummins exposing (cuckIvorCummins) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckIvorCummins : Cuck +cuckIvorCummins = + let + name : String + name = + "Ivor Cummins" + + propLDL = + "LDL does not cause coronary heart disease." + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/FatEmperor" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1268600451693494273?s=20" + , dodgeDescription = NoReply + , dodgeProposition = propLDL + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propLDLCausality + } + , { dodgeLink = "https://x.com/FatEmperor/status/1636920650156724226?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = propLDL + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propLDLCausality + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JaimieDrew.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JaimieDrew.elm new file mode 100755 index 0000000..00cbf1b --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JaimieDrew.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.JaimieDrew exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckJaimieDrew : Cuck +cuckJaimieDrew = + let + name : String + name = + "Jaimie Drew" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/JDrewsyBC" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1411485364079009793" + , dodgeDescription = VagueGesture + , dodgeProposition = "Smoking one cigarette per day increases the risk of coronary heart disease to approximately the same degree as two tbsp of saturated fat." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason "When both associations are meta-analyticallly summated, they have almost identical effect sizes." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JakeMey.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JakeMey.elm new file mode 100755 index 0000000..04e7953 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JakeMey.elm @@ -0,0 +1,55 @@ +module Config.Pages.Debate.Cuckery.Records.JakeMey exposing (cuckJakeMey) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckJakeMey : Cuck +cuckJakeMey = + let + name : String + name = + "Jake Mey" + + propReason = + "Vegan Fridays would only change childrens' diets by <1% annually, and, if anything, this is more likely a positive change than a negative one." + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/CakeNutrition" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1490009495581298690?s=20" + , dodgeDescription = RanAway + , dodgeProposition = "Vegan Friday meals are unhealthy for children." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason propReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1490060813138280450?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = "Vegan Friday meals are unhealthy for children." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason propReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1495419256737091585?s=20" + , dodgeDescription = KillScreen + , dodgeProposition = "Vegan Friday meals are unhealthy for children." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason propReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JamesDiNicolantonio.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JamesDiNicolantonio.elm new file mode 100755 index 0000000..ae843a0 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JamesDiNicolantonio.elm @@ -0,0 +1,38 @@ +module Config.Pages.Debate.Cuckery.Records.JamesDiNicolantonio exposing (cuckJamesDiNicolantonio) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckJamesDiNicolantonio : Cuck +cuckJamesDiNicolantonio = + let + name : String + name = + "James DiNicolantonio" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/drjamesdinic" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1460788569388171268?s=20" + , dodgeDescription = NoReply + , dodgeProposition = commonProps.propLinoleicAcid + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JosephEverett.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JosephEverett.elm new file mode 100755 index 0000000..280bc66 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JosephEverett.elm @@ -0,0 +1,49 @@ +module Config.Pages.Debate.Cuckery.Records.JosephEverett exposing (cuckJosephEverett) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckJosephEverett : Cuck +cuckJosephEverett = + let + name : String + name = + "Joseph Everett" + + propSeedOils : String + propSeedOils = + "Seed oils cause coronary heart disease and cancer." + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/JEverettLearned" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1535334822825971712?s=20" + , dodgeDescription = NoReply + , dodgeProposition = propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonChronicDisease + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1555138038740680704?s=20" + , dodgeDescription = NoReply + , dodgeProposition = propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonChronicDisease + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JustinMares.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JustinMares.elm new file mode 100755 index 0000000..a109c72 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/JustinMares.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.JustinMares exposing (cuckJustinMares) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckJustinMares : Cuck +cuckJustinMares = + let + name : String + name = + "Justin Mares" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/jwmares" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1329266554089869312?s=20" + , dodgeDescription = RanAway + , dodgeProposition = "Vegetable oils drive inflammation and are causally linked to weight gain and diseases of inflammation." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonChronicDisease + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KaitMalthaner.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KaitMalthaner.elm new file mode 100755 index 0000000..0c321be --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KaitMalthaner.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.KaitMalthaner exposing (cuckKaitMalthaner) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckKaitMalthaner : Cuck +cuckKaitMalthaner = + let + name : String + name = + "Kait Malthaner" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/healthcoachkait" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1503258756687306753?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Omega-6 is pro-inflammatory." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonInflammation + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KemMinnick.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KemMinnick.elm new file mode 100755 index 0000000..d9d3fe1 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KemMinnick.elm @@ -0,0 +1,54 @@ +module Config.Pages.Debate.Cuckery.Records.KemMinnick exposing (cuckKemMinnick) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckKemMinnick : Cuck +cuckKemMinnick = + let + name : String + name = + "Kem Minnick" + + prop : String + prop = + commonProps.propSeedOils + + reason : String + reason = + commonPropReasons.propSeedOilsReason + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/kemminnick" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/kemminnick/status/1469336100300726273?s=20" + , dodgeDescription = GhostedMe + , dodgeProposition = prop + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason reason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1476990862793986052?s=20" + , dodgeDescription = RanAway + , dodgeProposition = prop + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason reason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KenBerry.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KenBerry.elm new file mode 100755 index 0000000..af7f92b --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KenBerry.elm @@ -0,0 +1,74 @@ +module Config.Pages.Debate.Cuckery.Records.KenBerry exposing (cuckKenBerry) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , noProposition + ) + + +cuckKenBerry : Cuck +cuckKenBerry = + let + name : String + name = + "Ken Berry" + + propAnimalFat : String + propAnimalFat = + "Replacing animal fats with vegetable oils is dangerous." + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/KenDBerryMD" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1366524889067368449?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Type 2 Diabetes is chronic carbohydrate overdose." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1539720236701589504?s=20" + , dodgeDescription = NoReply + , dodgeProposition = propAnimalFat + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1539721408372039680?s=20" + , dodgeDescription = NoReply + , dodgeProposition = propAnimalFat + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1813969807521300615" + , dodgeDescription = InTooDeep + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = VagueProp + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1971624652104778115" + , dodgeDescription = NoReply + , dodgeProposition = "The vegan diet is a silly meme." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "The justification is a smattering of appeals to nature and nutrient density tropes鈥 both of which are retarded." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KevinStock.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KevinStock.elm new file mode 100755 index 0000000..61d9c06 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KevinStock.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Cuckery.Records.KevinStock exposing (cuckKevinStock) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , noProposition + ) + + +cuckKevinStock : Cuck +cuckKevinStock = + let + name : String + name = + "Kevin Stock" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/kevinstock12" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1530140722225102848?s=20" + , dodgeDescription = NoReply + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1534927799911317509?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Saturated fat does not cause cardiovascular disease." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSaturatedFatReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KyleMamounis.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KyleMamounis.elm new file mode 100755 index 0000000..15e4d67 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/KyleMamounis.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.KyleMamounis exposing (cuckKyleMamounis) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckKyleMamounis : Cuck +cuckKyleMamounis = + let + name : String + name = + "Kyle Mamounis" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Nutricrinology" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1389259133044477953?s=20" + , dodgeDescription = RanAway + , dodgeProposition = "Statins do not prevent cardiovascular events." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propLDLCausality + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/LewisWhitfield.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/LewisWhitfield.elm new file mode 100755 index 0000000..8d583a1 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/LewisWhitfield.elm @@ -0,0 +1,45 @@ +module Config.Pages.Debate.Cuckery.Records.LewisWhitfield exposing (cuckLewisWhitfield) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckLewisWhitfield : Cuck +cuckLewisWhitfield = + let + name : String + name = + "Lewis Whitfield" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/whitfieldlewis6" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1976817995457741134" + , dodgeDescription = VagueGesture + , dodgeProposition = "Nick wants to destroy the natural world and destroy all carnivores." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Strawman + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "The claims are only conditionally true under extreme hypothetical circumstances and do not represent what I advocate in practice, which is the non-violent displacement of violent ecosystems while providing vegan sanctuary to the affected animals. In actuality, I'd prefer a world with more nature and more animals (including carnivores), provided it was in a vegan context." + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1977149660385952086" + , dodgeDescription = KillScreen + , dodgeProposition = "None of veganism makes sense." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "I'm not aware of a contracition on vegan ethics." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MacroFour.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MacroFour.elm new file mode 100755 index 0000000..807a90e --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MacroFour.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.MacroFour exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckMacroFour : Cuck +cuckMacroFour = + let + name : String + name = + "Macro Four" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1277611651345203200" + , dodgeDescription = VagueGesture + , dodgeProposition = "People get the solution to diseases wrong when they forget biochemistry and look at observed associations." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "Speculation about punative mechanisms translates to real-world outcomes in <7% of cases according to best estimates, whereas epidemiological associations translate with far greater frequency." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MarionHolman.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MarionHolman.elm new file mode 100755 index 0000000..18ac6e0 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MarionHolman.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.MarionHolman exposing (cuckMarionHolman) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckMarionHolman : Cuck +cuckMarionHolman = + let + name : String + name = + "Marion Holman" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Marion436842126" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1911279351875633369" + , dodgeDescription = NoReply + , dodgeProposition = "Statins increase coronary artery calcium scores." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason "Even if the proposition were true it's not clear that accelerating the development of preexisting calcification is a bad thing, as it lowers the risk of plaque rupture." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MarkBski.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MarkBski.elm new file mode 100755 index 0000000..4c7998a --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MarkBski.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.MarkBski exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckMarkBski : Cuck +cuckMarkBski = + let + name : String + name = + "Mark Bski" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/MarkBski" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1538922143915835395" + , dodgeDescription = NoReply + , dodgeProposition = "There is no proof a vegan diet is ethical." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propTooVague + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MarkSisson.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MarkSisson.elm new file mode 100755 index 0000000..ceb02dd --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MarkSisson.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.MarkSisson exposing (cuckMarkSisson) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , noProposition + ) + + +cuckMarkSisson : Cuck +cuckMarkSisson = + let + name : String + name = + "Mark Sisson" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Mark_Sisson" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1488360227141419009?s=20" + , dodgeDescription = NoReply + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MartyKendall.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MartyKendall.elm new file mode 100755 index 0000000..81638b9 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MartyKendall.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.MartyKendall exposing (cuckMartyKendall) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckMartyKendall : Cuck +cuckMartyKendall = + let + name : String + name = + "Marty Kendall" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/martykendall2" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://twitter.com/The_Nutrivore/status/1310548994804809729" + , dodgeDescription = RanAway + , dodgeProposition = "To access your body fat, you need to deplete both glucose and fat from the blood first." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "The proposition suggests that before one can liberate their body fat, they must first experience a lethal physiological event." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MaxLugavere.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MaxLugavere.elm new file mode 100755 index 0000000..70639c6 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MaxLugavere.elm @@ -0,0 +1,57 @@ +module Config.Pages.Debate.Cuckery.Records.MaxLugavere exposing (cuckMaxLugavere) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckMaxLugavere : Cuck +cuckMaxLugavere = + let + name : String + name = + "Max Lugavere" + + prop : String + prop = + "seed oils consumption is associated with an increased risk of CVD and Alzheimer's disease." + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/maxlugavere" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/maxlugavere/status/1517683567249149953?s=20" + , dodgeDescription = RanAway + , dodgeProposition = prop + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonChronicDisease + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1518307089742848000?s=20" + , dodgeDescription = NoReply + , dodgeProposition = prop + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonChronicDisease + } + , { dodgeLink = "https://x.com/maxlugavere/status/1518367365683064833?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = prop + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonChronicDisease + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MichaelKummer.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MichaelKummer.elm new file mode 100755 index 0000000..0d5bf53 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MichaelKummer.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.MichaelKummer exposing (cuckMichaelKummer) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckMichaelKummer : Cuck +cuckMichaelKummer = + let + name : String + name = + "Michael Kummer" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/mkummer82" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/mkummer82/status/1465755847917715464?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = "Polyunsaturated fats cause cell damage, inflammation and metabolic dysfunction." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonInflammation + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MichaelManderville.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MichaelManderville.elm new file mode 100755 index 0000000..e6bcc12 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MichaelManderville.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.MichaelManderville exposing (cuckMichaelManderville) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckMichaelManderville : Cuck +cuckMichaelManderville = + let + name : String + name = + "Michael Manderville" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/MikeManderville" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1503036463306489856?s=20" + , dodgeDescription = RanAway + , dodgeProposition = "A logically coherent position will have logically coherent answer to a logically coherent hypothetical." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propAnalyticalTruth + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MiguelEspejel.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MiguelEspejel.elm new file mode 100755 index 0000000..d6aece7 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MiguelEspejel.elm @@ -0,0 +1,38 @@ +module Config.Pages.Debate.Cuckery.Records.MiguelEspejel exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckMiguelEspejel : Cuck +cuckMiguelEspejel = + let + name : String + name = + "Miguel Espejel" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Mespejel29" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1382787616857231361?s=20" + , dodgeDescription = VagueGesture + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MikeMutzel.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MikeMutzel.elm new file mode 100755 index 0000000..1229c1e --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MikeMutzel.elm @@ -0,0 +1,45 @@ +module Config.Pages.Debate.Cuckery.Records.MikeMutzel exposing (cuckMikeMutzel) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckMikeMutzel : Cuck +cuckMikeMutzel = + let + name : String + name = + "Mike Mutzel" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/MikeMutzel" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1414457776982552576?s=20" + , dodgeDescription = RanAway + , dodgeProposition = "COVID is nothing more than a cold to those that are healthy." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propEmpiricalClaim + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1584645853771616256?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "There is little to no association between saturated fat and cardiovascular disease." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSaturatedFatReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MikeSweeney.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MikeSweeney.elm new file mode 100755 index 0000000..71b14f0 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/MikeSweeney.elm @@ -0,0 +1,53 @@ +module Config.Pages.Debate.Cuckery.Records.MikeSweeney exposing (cuckMikeSweeney) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckMikeSweeney : Cuck +cuckMikeSweeney = + let + name : String + name = + "Mike Sweeney" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/thelowcarb_rd" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1746962254052962552" + , dodgeDescription = PussiedOut + , dodgeProposition = "Vegan diets are nowhere near appropriate for the average person in society." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + , { dodgeLink = "https://x.com/thelowcarb_rd/status/1654182805964836865" + , dodgeDescription = GhostedMe + , dodgeProposition = "Statistical gymnastics don't inform on real world mechanisms and hard outcomes." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1776652108646821913?t=Pf4sfAC1Z0pAcxGfQFr7oQ" + , dodgeDescription = NoReply + , dodgeProposition = "Cheerios cause nausea, vomiting, seizures, irregular heartbeat, liver damage, and coma." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propEmpiricalClaimDisbelief + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NickEggleton.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NickEggleton.elm new file mode 100755 index 0000000..c36b93d --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NickEggleton.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.NickEggleton exposing (cuckNickEggleton) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckNickEggleton : Cuck +cuckNickEggleton = + let + name : String + name = + "Nick Eggleton" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/NickEggleton" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1266626885703720961?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = "Polyunsaturated fats are poison." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NinaTeicholz.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NinaTeicholz.elm new file mode 100755 index 0000000..13bbda0 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NinaTeicholz.elm @@ -0,0 +1,61 @@ +module Config.Pages.Debate.Cuckery.Records.NinaTeicholz exposing (cuckNinaTeicholz) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckNinaTeicholz : Cuck +cuckNinaTeicholz = + let + name : String + name = + "Nina Teicholz" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/bigfatsurprise" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1556510529014882305?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "The science linking red meat to heart disease is very weak." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "The aggregate of the data suggests red meat increases the risk of heart disease." + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1467571763865210881?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "The available evidence supports limiting saturated fat intake for coronary heart disease risk reduction." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSaturatedFatReason + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1538895943050878977?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Vegans pretend biology isn't real." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1903508058719797414" + , dodgeDescription = NoReply + , dodgeProposition = "Nutritional epidemiology tends to provide good causal estimates." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealFromIncredulity + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propNutritionalEpidemiology + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NoCarbsNation.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NoCarbsNation.elm new file mode 100755 index 0000000..4ae7939 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NoCarbsNation.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.NoCarbsNation exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckNoCarbsNation : Cuck +cuckNoCarbsNation = + let + name : String + name = + "No Carbs Nation" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/NoCarbsNation" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1412056652803543048" + , dodgeDescription = PussiedOut + , dodgeProposition = "Saturated fat is not the cause of heart disease" + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSaturatedFatReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NorstrongChris.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NorstrongChris.elm new file mode 100755 index 0000000..592b7b6 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/NorstrongChris.elm @@ -0,0 +1,52 @@ +module Config.Pages.Debate.Cuckery.Records.NorstrongChris exposing (cuckNorstrongChris) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckNorstrongChris : Cuck +cuckNorstrongChris = + let + name : String + name = + "Norstrong Chris" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/northstrongwill" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/NorstrongHealth/status/1416939281973530626?s=20" + , dodgeDescription = RanAway + , dodgeProposition = "Government funded USDA data is untrustworthy." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1534573919562350594?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = "Nutrition science as a whole is shit." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1534614710196260865?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Nutrition science as a whole is shit." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PaulMason.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PaulMason.elm new file mode 100755 index 0000000..5699084 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PaulMason.elm @@ -0,0 +1,55 @@ +module Config.Pages.Debate.Cuckery.Records.PaulMason exposing (cuckPaulMason) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + , noProposition + ) + + +cuckPaulMason : Cuck +cuckPaulMason = + let + name : String + name = + "Paul Mason" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/DrPaulMason" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/Tom_Babington1/status/1361644276866830337?s=20" + , dodgeDescription = NoReply + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + , { dodgeLink = "https://x.com/IdanOnTweeter/status/1373233980594618371?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Ancel Keys' Seven Countries Study was flawed." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1461361726943760391?s=20" + , dodgeDescription = NoReply + , dodgeProposition = commonProps.propLinoleicAcid + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PaulSaladino.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PaulSaladino.elm new file mode 100755 index 0000000..ee2e3a7 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PaulSaladino.elm @@ -0,0 +1,83 @@ +module Config.Pages.Debate.Cuckery.Records.PaulSaladino exposing (cuckPaulSaladino) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + , noProposition + ) + + +cuckPaulSaladino : Cuck +cuckPaulSaladino = + let + name : String + name = + "Paul Saladino" + + prop : String + prop = + "To exclude animal foods from the human diet is a nutritional catastrophe." + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/paulsaladinomd" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1275912849999695872?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Subsidies for corn and soy are huge contributors to the chronic disease epidemic in the US." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propEmpiricalClaim + } + , { dodgeLink = "https://x.com/FoodFirst_Ty/status/1282847039596843009?s=20" + , dodgeDescription = NoReply + , dodgeProposition = commonProps.propSeedOils + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + } + , { dodgeLink = "https://x.com/FoodFirst_Ty/status/1283449495682904064?s=20" + , dodgeDescription = NoReply + , dodgeProposition = prop + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propEmpiricalClaim + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1282851963902636032?s=20" + , dodgeDescription = NoReply + , dodgeProposition = prop + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propEmpiricalClaim + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1469136550046814219?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Nutritional epidemiology generally provides good causal estimates." + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propNutritionalEpidemiology + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1633831762509045766?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Linoleic acid wreaks havoc in your body." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PeterFaber.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PeterFaber.elm new file mode 100755 index 0000000..e00e6c4 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PeterFaber.elm @@ -0,0 +1,38 @@ +module Config.Pages.Debate.Cuckery.Records.PeterFaber exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckPeterFaber : Cuck +cuckPeterFaber = + let + name : String + name = + "Peter Faber" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/PeterFaberSP" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1482517916201283584" + , dodgeDescription = NoReply + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PhilipOvadia.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PhilipOvadia.elm new file mode 100755 index 0000000..33d993d --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PhilipOvadia.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Cuckery.Records.PhilipOvadia exposing (cuckPhilipOvadia) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , noProposition + ) + + +cuckPhilipOvadia : Cuck +cuckPhilipOvadia = + let + name : String + name = + "Philip Ovadia" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/ifixhearts" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1557791520324890624?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Sugar is the problem and meat is the solution." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1558282337024180224?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "LDL doesn't cause coronary heart disease because it is just part of the arterial repair process." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propLDLCausality + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PhilippeStephenson.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PhilippeStephenson.elm new file mode 100755 index 0000000..3baaa49 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/PhilippeStephenson.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.PhilippeStephenson exposing (cuckPhilippeStephenson) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckPhilippeStephenson : Cuck +cuckPhilippeStephenson = + let + name : String + name = + "Philippe Stephenson" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/TotalCytopath" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1779587012120715433" + , dodgeDescription = NoReply + , dodgeProposition = "Seed oils save lives." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RalphNapolitano.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RalphNapolitano.elm new file mode 100755 index 0000000..adc6737 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RalphNapolitano.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.RalphNapolitano exposing (cuckRalphNapolitano) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckRalphNapolitano : Cuck +cuckRalphNapolitano = + let + name : String + name = + "Ralph Napolitano" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/DrRalphNap" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1462794580848300034?s=20" + , dodgeDescription = NoReply + , dodgeProposition = "Oatmeal is one of the worst foods you can eat and has no health benefits." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "The aggregate of the data suggests whole grains are beneficial for humans." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RaphaelSirtoli.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RaphaelSirtoli.elm new file mode 100755 index 0000000..c96e7da --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RaphaelSirtoli.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Cuckery.Records.RaphaelSirtoli exposing (cuckRaphaelSirtoli) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckRaphaelSirtoli : Cuck +cuckRaphaelSirtoli = + let + name : String + name = + "Raphael Sirtoli" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/raphaels7" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/raphaels7/status/1475767357188579329?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = "The diet-heart hypothesis is false." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSaturatedFatReason + } + , { dodgeLink = "https://x.com/raphaels7/status/1783541746015654072" + , dodgeDescription = KillScreen + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RealTruther.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RealTruther.elm new file mode 100755 index 0000000..e880214 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RealTruther.elm @@ -0,0 +1,53 @@ +module Config.Pages.Debate.Cuckery.Records.RealTruther exposing (cuckRealTruther) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckRealTruther : Cuck +cuckRealTruther = + let + name : String + name = + "The Real Truther" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/the_realtruther" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1976788681223758182" + , dodgeDescription = VagueGesture + , dodgeProposition = "Being not vegan isn't immoral." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "It's highly unlikely that this is actually inferrable from Truther's values, and it seems more likely that he's just confused about what he does and does not consider moral." + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1978572062366003547" + , dodgeDescription = VagueGesture + , dodgeProposition = "Being not vegan isn't immoral." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "I believe Truther is still confused on this subject, but any attempt to invite him to discuss it has been met with unhinged rambling about tangential topics." + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1978573671091376480" + , dodgeDescription = KillScreen + , dodgeProposition = "Being not vegan isn't immoral." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just SelfSealing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "Truther is still deeply confused on this subject, but apparently he has self-sealed his own victory despite no debate ever actually taking place. Perhaps he's actually just delusional." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RobMeijer.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RobMeijer.elm new file mode 100755 index 0000000..b299a25 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RobMeijer.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.RobMeijer exposing (cuckRobMeijer) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , noProposition + ) + + +cuckRobMeijer : Cuck +cuckRobMeijer = + let + name : String + name = + "Rob Meijer" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/EngineerDiet" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1435850829051793408?s=20" + , dodgeDescription = RanAway + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RobbWolf.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RobbWolf.elm new file mode 100755 index 0000000..b652c4f --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/RobbWolf.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.RobbWolf exposing (cuckRobbWolf) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckRobbWolf : Cuck +cuckRobbWolf = + let + name : String + name = + "Robb Wolf" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/robbwolf" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1601624559647875072?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = "Ancestral foods are more likely to be antagonistically pleiotropic than novel foods." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propAnalyticalTruth + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/SamTsimikas.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/SamTsimikas.elm new file mode 100755 index 0000000..4ed48f4 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/SamTsimikas.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.SamTsimikas exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) +import Config.Pages.Debate.Gibberish.Types exposing (Explanation(..)) + + +cuckSamTsimikas : Cuck +cuckSamTsimikas = + let + name : String + name = + "Sam Tsimikas" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Lpa_Doc" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1481297803179708417" + , dodgeDescription = EmptyHanded + , dodgeProposition = "The 4E6 antibody assay makes poor distinctions between oxLDL and native LDL" + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "If 4E6 truly had low sensitivity, why is there no evidence of extreme multicollinearity in the results of the model used by Wu, et al, 2006? We'd expect to see evidence of equality in the results, but instead we see evidence of independence." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ScottPsysher.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ScottPsysher.elm new file mode 100755 index 0000000..2723e15 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ScottPsysher.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.ScottPsysher exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckScottPsysher : Cuck +cuckScottPsysher = + let + name : String + name = + "Scott Psysher" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/LowcarbLiberty" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1521985009762004992" + , dodgeDescription = NoReply + , dodgeProposition = "Nick is a nutritional authoritarian with seed oil and plant-based ideology." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propTooVague + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/SebastianRamirez.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/SebastianRamirez.elm new file mode 100755 index 0000000..725e7ee --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/SebastianRamirez.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.SebastianRamirez exposing (cuckSebastianRamirez) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckSebastianRamirez : Cuck +cuckSebastianRamirez = + let + name : String + name = + "Sebastian Ramirez" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/JS_RamirezMD" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/JS_RamirezMD/status/1859378109306278377" + , dodgeDescription = RanAway + , dodgeProposition = "Vegans haven鈥檛 learnt how to live in a society." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = SpecificPropReason "It's not clear what the proposition means." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ShawnBaker.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ShawnBaker.elm new file mode 100755 index 0000000..88bf80f --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ShawnBaker.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.ShawnBaker exposing (cuckShawnBaker) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , noProposition + ) + + +cuckShawnBaker : Cuck +cuckShawnBaker = + let + name : String + name = + "Shawn Baker" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/SBakerMD" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1868037979807346738" + , dodgeDescription = GhostedMe + , dodgeProposition = noProposition + , dodgeReceipts = [] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/SimonGoddek.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/SimonGoddek.elm new file mode 100755 index 0000000..82b2544 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/SimonGoddek.elm @@ -0,0 +1,57 @@ +module Config.Pages.Debate.Cuckery.Records.SimonGoddek exposing (cuckSimonGoddek) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckSimonGoddek : Cuck +cuckSimonGoddek = + let + name : String + name = + "Simon Goddek" + + prop : String + prop = + "Vegetable oils increase the risk of heart disease." + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/goddeketal" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1795673579931255233" + , dodgeDescription = NoReply + , dodgeProposition = prop + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonCVD + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1795885929678196951" + , dodgeDescription = NoReply + , dodgeProposition = prop + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonCVD + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1795674575315112396" + , dodgeDescription = NoReply + , dodgeProposition = prop + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just MechanisticMasturbation + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonCVD + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/StevenArena.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/StevenArena.elm new file mode 100755 index 0000000..b4f108b --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/StevenArena.elm @@ -0,0 +1,38 @@ +module Config.Pages.Debate.Cuckery.Records.StevenArena exposing (..) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , commonProps + ) + + +cuckStevenArena : Cuck +cuckStevenArena = + let + name : String + name = + "Steven Arena" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/reallytanman" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1513517390050611200" + , dodgeDescription = VagueGesture + , dodgeProposition = commonProps.propSeedOils + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/StevenBelknap.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/StevenBelknap.elm new file mode 100755 index 0000000..2820ca9 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/StevenBelknap.elm @@ -0,0 +1,45 @@ +module Config.Pages.Debate.Cuckery.Records.StevenBelknap exposing (cuckStevenBelknap) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckStevenBelknap : Cuck +cuckStevenBelknap = + let + name : String + name = + "Steven Belknap" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/StevenMBelknap" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1956250236000604266" + , dodgeDescription = RanAway + , dodgeProposition = "The documentary, Animal, provides an historical account of Ancel Keys' career that is inaccurate." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason "The White Paper, written by the True Health Initiative, provides a compendium of refutations of the exact talking points used in the documentary, Animal." + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1973088775560425790" + , dodgeDescription = EmptyHanded + , dodgeProposition = "Weight gain when transitioning from a plant-based diet to an animal-based diet is expected, given current empirical data." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason "The only rigorous test of the hypothesis in the literature showed that the animal-based diet group consumed ~700 kcal per day more than the plant-based diet group and had a more difficult time losing fat mass." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/Template.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/Template.elm new file mode 100755 index 0000000..2d80839 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/Template.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.Template exposing (cuck) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuck : Cuck +cuck = + let + name : String + name = + "" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "" + , dodgeDescription = NoReply + , dodgeProposition = "" + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just (SpecificFallacy "") + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = NoProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TomDayspring.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TomDayspring.elm new file mode 100755 index 0000000..e9635a2 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TomDayspring.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.TomDayspring exposing (cuckTomDayspring) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckTomDayspring : Cuck +cuckTomDayspring = + let + name : String + name = + "Thomas Dayspring" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Drlipid" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1865200631209955669" + , dodgeDescription = EmptyHanded + , dodgeProposition = "Reducing cholesterol in diet has no cardiovascular effect outside of those who have significant hyperabsorption of cholesterol." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propEmpiricalClaim + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TravisStatham.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TravisStatham.elm new file mode 100755 index 0000000..2d00d0e --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TravisStatham.elm @@ -0,0 +1,49 @@ +module Config.Pages.Debate.Cuckery.Records.TravisStatham exposing (cuckTravisStatham) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckTravisStatham : Cuck +cuckTravisStatham = + let + name : String + name = + "Travis Statham" + + prop : String + prop = + "Seed oils do not cause obesity." + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Travis_Statham" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1461428023207489542?s=20" + , dodgeDescription = NoReply + , dodgeProposition = prop + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonObesity + } + , { dodgeLink = "https://www.reddit.com/r/StopEatingSeedOils/comments/v457tu/how_vegetable_oils_make_us_fat_zero_acre/ic9u7wu/?utm_source=share" + , dodgeDescription = NoReply + , dodgeProposition = prop + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSeedOilsReasonObesity + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TristanHaggard.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TristanHaggard.elm new file mode 100755 index 0000000..3c57631 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TristanHaggard.elm @@ -0,0 +1,36 @@ +module Config.Pages.Debate.Cuckery.Records.TristanHaggard exposing (cuckTristanHaggard) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckTristanHaggard : Cuck +cuckTristanHaggard = + let + name : String + name = + "Tristan Haggard" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/Trxstxn4" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1513596227052527621?s=20" + , dodgeDescription = RanAway + , dodgeProposition = "Seed oils are toxic." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just Vaguemongering + , dodgeNicksDoxasticState = Just Agnostic + , dodgeNicksDoxasticReason = VagueProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TroKalayjian.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TroKalayjian.elm new file mode 100755 index 0000000..761e17d --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TroKalayjian.elm @@ -0,0 +1,44 @@ +module Config.Pages.Debate.Cuckery.Records.TroKalayjian exposing (cuckTroKalayjian) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) + + +cuckTroKalayjian : Cuck +cuckTroKalayjian = + let + name : String + name = + "Tro Kalayjian" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/DoctorTro" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1261351818430255104?s=20" + , dodgeDescription = RanAway + , dodgeProposition = "Dr. Tro engages in shitty behaviour that causes people to dislike him." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason "The proposition seems trivially true." + } + , { dodgeLink = "https://x.com/upRootNutrition/status/1865857839845232689" + , dodgeDescription = RanAway + , dodgeProposition = "Meat doesn鈥檛 cause cardiovascular disease" + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason "The aggregate of the data suggests that higher intakes of meat, particularly red meat, increases the risk of cardiovascular disease, especially when replacing plant-based protein sources." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TuckerGoodrich.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TuckerGoodrich.elm new file mode 100755 index 0000000..0a5a7fd --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/TuckerGoodrich.elm @@ -0,0 +1,62 @@ +module Config.Pages.Debate.Cuckery.Records.TuckerGoodrich exposing (cuckTuckerGoodrich) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + , noProposition + ) + + +cuckTuckerGoodrich : Cuck +cuckTuckerGoodrich = + let + name : String + name = + "Tucker Goodrich" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/TuckerGoodrich" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1276694117494358017?s=19" + , dodgeDescription = RanAway + , dodgeProposition = "Nutritional epidemiology is almost always wrong." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just RedHerring + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propNutritionalEpidemiology + } + , { dodgeLink = "https://x.com/TuckerGoodrich/status/1428062578668830720?s=20" + , dodgeDescription = RanAway + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + , { dodgeLink = "https://x.com/TuckerGoodrich/status/1469366622196359170?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + , { dodgeLink = "https://x.com/TuckerGoodrich/status/1470029816975872007?s=20" + , dodgeDescription = KillScreen + , dodgeProposition = noProposition + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Nothing + , dodgeNicksDoxasticReason = NoProp + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ZoeHarcombe.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ZoeHarcombe.elm new file mode 100755 index 0000000..31d8d21 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ZoeHarcombe.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.ZoeHarcombe exposing (cuckZoeHarcombe) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckZoeHarcombe : Cuck +cuckZoeHarcombe = + let + name : String + name = + "Zoe Harcombe" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/zoeharcombe" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1418263706178310149" + , dodgeDescription = NoReply + , dodgeProposition = "Saturated fat doesn't increase the risk of coronary heart disease." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Nothing + , dodgeNicksDoxasticState = Just Disbelief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propSaturatedFatReason + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ZsofiaClemens.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ZsofiaClemens.elm new file mode 100755 index 0000000..37539bb --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Records/ZsofiaClemens.elm @@ -0,0 +1,37 @@ +module Config.Pages.Debate.Cuckery.Records.ZsofiaClemens exposing (cuckZsofiaClemens) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , commonPropReasons + ) + + +cuckZsofiaClemens : Cuck +cuckZsofiaClemens = + let + name : String + name = + "Zs贸fia Clemens" + in + { cuckImage = formatName name + , cuckName = name + , cuckSocial = "https://x.com/ClemensZsofia" + , isNewTabLink = True + , cuckDodges = + [ { dodgeLink = "https://x.com/upRootNutrition/status/1528377198180290561?s=20" + , dodgeDescription = PussiedOut + , dodgeProposition = "Well-planned, plant-based diets are healthy." + , dodgeReceipts = [ { receipt = "receipt1" } ] + , dodgeFallacy = Just AppealToNature + , dodgeNicksDoxasticState = Just Belief + , dodgeNicksDoxasticReason = SpecificPropReason commonPropReasons.propPlantBasedDiets + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Types.elm b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Types.elm new file mode 100755 index 0000000..febf022 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Cuckery/Types.elm @@ -0,0 +1,143 @@ +module Config.Pages.Debate.Cuckery.Types exposing + ( CommonProps + , Cuck + , Dodge + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + , PropReasons + , Receipts + , commonPropReasons + , commonProps + , multiplePropositions + , noProposition + ) + +import Config.Data.Hashtags.Types exposing (..) + + +type alias Cuck = + { cuckImage : String + , cuckName : String + , cuckSocial : String + , isNewTabLink : Bool + , cuckDodges : List Dodge + } + + +type alias Dodge = + { dodgeLink : String + , dodgeDescription : DodgeDescription + , dodgeProposition : String + , dodgeReceipts : List Receipts + , dodgeFallacy : Maybe DodgeFallacies + , dodgeNicksDoxasticState : Maybe DoxasticState + , dodgeNicksDoxasticReason : Evaluation + } + + +type alias Receipts = + { receipt : String + } + + +type DodgeDescription + = NoReply + | RanAway + | GhostedMe + | PussiedOut + | InTooDeep + | KillScreen + | VagueGesture + | EmptyHanded + + +type DodgeFallacies + = AppealToNature + | AppealFromIncredulity + | AppealToIgnorance + | AppealToTradition + | BeggingTheQuestion + | Equivocation + | GeneticFallacy + | MechanisticMasturbation + | MotteAndBailey + | RedHerring + | SelfSealing + | Strawman + | VagueHumanity + | Vaguemongering + | SpecificFallacy String + + +type DoxasticState + = Belief + | Disbelief + | Agnostic + + +type Evaluation + = NoProp + | VagueProp + | SpecificPropReason String + + +type alias CommonProps = + { propSeedOils : String + , propLinoleicAcid : String + } + + +type alias PropReasons = + { propSaturatedFatReason : String + , propSeedOilsReason : String + , propSeedOilsReasonCVD : String + , propSeedOilsReasonCancer : String + , propSeedOilsReasonInflammation : String + , propSeedOilsReasonObesity : String + , propSeedOilsReasonChronicDisease : String + , propLDLCausality : String + , propEmpiricalClaim : String + , propEmpiricalClaimDisbelief : String + , propAnalyticalTruth : String + , propNutritionalEpidemiology : String + , propPlantBasedDiets : String + , propTooVague : String + } + + +noProposition : String +noProposition = + "N/A" + + +multiplePropositions : String +multiplePropositions = + "Multiple propositions." + + +commonProps : CommonProps +commonProps = + { propSeedOils = "Seed oils are not a significant, independent risk factor for public health." + , propLinoleicAcid = "Dietary linoleic acid is not a significant, independent concern for the development of chronic diseases." + } + + +commonPropReasons : PropReasons +commonPropReasons = + { propSaturatedFatReason = "The aggregate of the data overwhelmingly supports the hypothesis that heart disease risk can be influenced by changes in blood lipids as a function of saturated fat intake." + , propSeedOilsReason = "The aggregate of the data suggests seed oils are beneficial for humans." + , propSeedOilsReasonCVD = "The aggregate of the data suggests seed oils decrease the risk of heart disease." + , propSeedOilsReasonCancer = "The aggregate of the data suggests seed oils decrease the risk of cancer." + , propSeedOilsReasonInflammation = "There's no persuasive evidence that seed oils reliably influence inflammation in either direction." + , propSeedOilsReasonObesity = "There's no persuasive evidence that seed oils reliably influence obesity in either direction." + , propSeedOilsReasonChronicDisease = "The aggregate of the data suggests seed oils decrease the risk of chronic disease." + , propLDLCausality = "The highest tiers of evidence show an overwhelmingly consistent linear and proportional relationship between the concentration of low-density lipoproteins in the blood and coronary heart disease, regardless of population characteristics." + , propEmpiricalClaim = "This is an empirical claim that requires empirical evidence, and none was provided." + , propEmpiricalClaimDisbelief = "No empirical evidence was provided for the claim, but I find it incredibly implausible." + , propAnalyticalTruth = "The proposition is simply a trivial analytical truth." + , propNutritionalEpidemiology = "With exposures matched, nutritional epidemiology agrees with nutritional randomized controlled trials approximately 91% of the time." + , propPlantBasedDiets = "The aggregate of the data suggests that appropriately supplemented plant-based diets decrease the risk of chronic disease compared to likewise meat-inclusive diets." + , propTooVague = "The proposition is too vague to evaluate and no clarification was provided." + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Gibberish/List.elm b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/List.elm new file mode 100755 index 0000000..7710d1a --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/List.elm @@ -0,0 +1,23 @@ +module Config.Pages.Debate.Gibberish.List exposing (gibberishList) + +import Config.Pages.Debate.Gibberish.Records.Epistemology exposing (epistemologyGibberish) +import Config.Pages.Debate.Gibberish.Records.Metaphysics exposing (metaphysicsGibberish) +import Config.Pages.Debate.Gibberish.Records.Normativity exposing (normativityGibberish) +import Config.Pages.Debate.Gibberish.Records.Ontology exposing (ontologyGibberish) +import Config.Pages.Debate.Gibberish.Records.PhilOfLanguage exposing (philOfLanguageGibberish) +import Config.Pages.Debate.Gibberish.Records.PhilOfMind exposing (philOfMindGibberish) +import Config.Pages.Debate.Gibberish.Records.Theology exposing (theologyGibberish) +import Config.Pages.Debate.Gibberish.Types exposing (..) + + +gibberishList : List Terms +gibberishList = + List.concat + [ epistemologyGibberish.gibberishTerms + , metaphysicsGibberish.gibberishTerms + , normativityGibberish.gibberishTerms + , ontologyGibberish.gibberishTerms + , philOfLanguageGibberish.gibberishTerms + , philOfMindGibberish.gibberishTerms + , theologyGibberish.gibberishTerms + ] diff --git a/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Epistemology.elm b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Epistemology.elm new file mode 100755 index 0000000..ea65b6d --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Epistemology.elm @@ -0,0 +1,62 @@ +module Config.Pages.Debate.Gibberish.Records.Epistemology exposing (epistemologyGibberish) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Gibberish.Types + exposing + ( Explanation(..) + , Gibberish + , Terms + ) + + +epistemologyGibberish : Gibberish +epistemologyGibberish = + let + name = + "Epistemology" + in + { gibberishTitle = name + , gibberishImage = formatName name + , gibberishLink = "https://en.wikipedia.org/wiki/Epistemology" + , gibberishDescription = "Epistemology is a branch of philosophy that investigates the nature, origin, and limits of knowledge. It addresses fundamental questions about what knowledge is, how it is acquired, and the criteria for its validity. By exploring concepts such as belief, truth, and justification, epistemology seeks to understand how humans comprehend and interpret reality." + , isNewTabLink = True + , gibberishTerms = + [ { term = "Abductive Arguments" + , strength = 3 + , explanation = SpecificExplanation "In a formal sense, I take an argument to be logical construct whereby the outputs consistently follow from an input, or set of inputs, according to a formal system of internally consistent rules or laws. Traditionally, abductive arguments are taken to fall outside this scope, so on my interpretation, the term \"abductive argument\" is probably gibberish." + } + , { term = "Content Internalism" + , strength = 5 + , explanation = NoClue + } + , { term = "Externalist Epistemology" + , strength = 0 + , explanation = SpecificExplanation "I don't take anything other than logic to be justification-giving. As such, any position that claims that justification can arrive through non-inferential means, such as mechanisms operating outside the mind, just sounds like gibberish." + } + , { term = "Inductive Arguments" + , strength = 3 + , explanation = SpecificExplanation "In a formal sense, I take an argument to be logical construct whereby the outputs consistently follow from an input, or set of inputs, according to a formal system of internally consistent rules or laws. Traditionally, inductive arguments are taken to fall outside this scope, so on my interpretation, the term \"inductive argument\" is probably gibberish." + } + , { term = "Non-entailing Explanations" + , strength = 2 + , explanation = SpecificExplanation "I take an explanation to be a set of premises that lead to a conclusion, so the term just sounds like some sort of contradiction." + } + , { term = "Non-inferential Justification" + , strength = 0 + , explanation = SpecificExplanation "I don't take anything other than logic to be justification-giving. As such, any position that claims that justification can arrive through non-inferential means just sounds like gibberish." + } + , { term = "Phenomenal Conservatism" + , strength = 0 + , explanation = SpecificExplanation "I don't take anything other than logic to be justification-giving. As such, any position that claims that justification can arrive through non-inferential means, such as merely having a seeming, just sounds like gibberish." + } + , { term = "Synthetic A Priori" + , strength = 0 + , explanation = SpecificExplanation "I take a priori arguments to be arguments based on principles or axioms and not based on experience, which would seem to place a priori outside the purview of syntheticity." + } + , { term = "Warrant" + , strength = 0 + , explanation = SpecificExplanation "This seems to be taken to be the thing that is justification-providing on phenomenal conservatism. I'm not sure what that thing is, but if it's non-inferential, then it's just gibberish." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Metaphysics.elm b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Metaphysics.elm new file mode 100755 index 0000000..047098d --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Metaphysics.elm @@ -0,0 +1,54 @@ +module Config.Pages.Debate.Gibberish.Records.Metaphysics exposing (metaphysicsGibberish) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Gibberish.Types + exposing + ( Explanation(..) + , Gibberish + , Terms + ) + + +metaphysicsGibberish : Gibberish +metaphysicsGibberish = + let + name = + "Metaphysics" + in + { gibberishTitle = name + , gibberishImage = formatName name + , gibberishLink = "https://en.wikipedia.org/wiki/Metaphysics" + , gibberishDescription = "Metaphysics is a branch of philosophy that explores the fundamental nature of reality, including concepts such as existence, being, causality, and the nature of objects and their properties. It seeks to answer profound questions about what exists and the structure of the world beyond empirical observation. Traditionally, metaphysics includes subfields like ontology, which specifically studies the nature of being." + , isNewTabLink = True + , gibberishTerms = + [ { term = "Correspondence Theory of Truth" + , strength = 10 + , explanation = SpecificExplanation "While I do take there to be a world outside my perception, and I do believe that the correspondence between my perceptions and the world outside of my perceptions would be a good way to infer the relative truth value of a proposition, this doesn't seem to be in any way actionable or useful, as humans don't have access to the means of verifying truth under this model. This, to me, makes the correspondence theory of truth to be practically useless." + } + , { term = "Metaphysical Essence" + , strength = 5 + , explanation = NoClue + } + , { term = "Metaphysical Modality" + , strength = 0 + , explanation = SpecificExplanation "Any attempt at unpacking this that I've heard has more or less cashed out into a logical modality, but it seems to be taken as distinct from logical modality. As a non-logical modality, I have no idea what it's supposed to be." + } + , { term = "Non-Physical Mental Entities" + , strength = 5 + , explanation = NoClue + } + , { term = "Ontological Modality" + , strength = 0 + , explanation = SpecificExplanation "Any attempt at unpacking this that I've heard has more or less cashed out into a logical modality, but it seems to be taken as distinct from logical modality. As a non-logical modality, I have no idea what it's supposed to be." + } + , { term = "Subjective Idealism" + , strength = 5 + , explanation = NoClue + } + , { term = "Ultimate Grounding" + , strength = 2 + , explanation = SpecificExplanation "It's completely unclear what this theo-babble is meant to communicate. I assume it has something to do with the absence of antecedent conditions and/or irreducibility that provide some sort of \"best epistemology\" or something, but I can't be sure. It just sounds like gobbledy" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Normativity.elm b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Normativity.elm new file mode 100755 index 0000000..eecc1fc --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Normativity.elm @@ -0,0 +1,38 @@ +module Config.Pages.Debate.Gibberish.Records.Normativity exposing (normativityGibberish) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Gibberish.Types + exposing + ( Explanation(..) + , Gibberish + , Terms + ) + + +normativityGibberish : Gibberish +normativityGibberish = + let + name = + "Normativity" + in + { gibberishTitle = name + , gibberishImage = formatName name + , gibberishLink = "https://en.wikipedia.org/wiki/Normativity" + , gibberishDescription = "Normativity refers to the phenomenon in human societies where certain actions or outcomes are designated as good, desirable, or permissible, while others are viewed as bad or undesirable. It encompasses the rules, standards, or norms that guide behaviors and judgments within a community, influencing what individuals ought to think and value. In philosophical contexts, normativity is often linked to moral and ethical considerations, shaping discussions about what is right or wrong." + , isNewTabLink = True + , gibberishTerms = + [ { term = "Externalist Value" + , strength = 0 + , explanation = SpecificExplanation "I take value to be a concept that's indexed to the assessment of at least one agent, so a notion such as \"externalist value\" just sounds like a contradiction." + } + , { term = "Irreducible Normativity" + , strength = 5 + , explanation = SpecificExplanation "I typically don't really understand irreducibility language in philosophy. Most philosophers seem to just use it as a sort of profound-sounding placeholder for when their personal creativity for explanation runs dry. No idea what it's meant to mean here, though." + } + , { term = "Stance-Independent Normativity" + , strength = 0 + , explanation = SpecificExplanation "I take norms to be semantically interchangeable with preferences, and I take preferences to be stance-dependent. As such, the notion of a stance-independent norm just sounds like gobbledy." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Ontology.elm b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Ontology.elm new file mode 100755 index 0000000..9c4c224 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Ontology.elm @@ -0,0 +1,34 @@ +module Config.Pages.Debate.Gibberish.Records.Ontology exposing (ontologyGibberish) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Gibberish.Types + exposing + ( Explanation(..) + , Gibberish + , Terms + ) + + +ontologyGibberish : Gibberish +ontologyGibberish = + let + name = + "Ontology" + in + { gibberishTitle = name + , gibberishImage = formatName name + , gibberishLink = "https://en.wikipedia.org/wiki/Ontology" + , gibberishDescription = "Ontology is the philosophical study of being and existence, focusing on the nature and categories of entities. It explores fundamental questions about what it means to exist and the relationships between different kinds of beings. Traditionally considered a branch of metaphysics, ontology also examines the properties and structures that define reality" + , isNewTabLink = True + , gibberishTerms = + [ { term = "Libertarian Free Will" + , strength = 0 + , explanation = SpecificExplanation "If libertarian free will is meant to refer to the ability to make decisions outside the constraints of determinism, then it would seem like this concept of free will purports to break causality by assuming decisions can be made without antecedent conditions. This just sounds like gibberish to me." + } + , { term = "Moral Particles" + , strength = 0 + , explanation = SpecificExplanation "This just sounds like a hallucination, honestly." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/PhilOfLanguage.elm b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/PhilOfLanguage.elm new file mode 100755 index 0000000..e18593d --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/PhilOfLanguage.elm @@ -0,0 +1,34 @@ +module Config.Pages.Debate.Gibberish.Records.PhilOfLanguage exposing (philOfLanguageGibberish) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Gibberish.Types + exposing + ( Explanation(..) + , Gibberish + , Terms + ) + + +philOfLanguageGibberish : Gibberish +philOfLanguageGibberish = + let + name = + "Philosophy of Language" + in + { gibberishTitle = name + , gibberishImage = formatName name + , gibberishLink = "https://en.wikipedia.org/wiki/Philosophy_of_language" + , gibberishDescription = "The philosophy of language is a branch of philosophy that investigates the nature, origins, and usage of language, focusing on how language relates to meaning, thought, and reality. It explores fundamental questions about the nature of words and sentences, how they convey complex meanings, and the relationship between language users and the world. Key topics include meaning, reference, intentionality, and the structure of language itself." + , isNewTabLink = True + , gibberishTerms = + [ { term = "Direct Reference" + , strength = 2 + , explanation = SpecificExplanation "I don't understand the term usage as it's been used and unpacked in conversation. I don't understand what it means for a word to \"point to\" an object, and I also don't understand what semantic advantage or distinction this has to a mundane, ostensibly non-direct reference to an object in speech." + } + , { term = "Semantic Primitive" + , strength = 2 + , explanation = SpecificExplanation "I typically don't really understand irreducibility language like \"primitive\" in philosophy. Most philosophers seem to just use it as a sort of profound-sounding placeholder for when their personal creativity for explanation runs dry. No idea what it's meant to mean here, though." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/PhilOfMind.elm b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/PhilOfMind.elm new file mode 100755 index 0000000..b1cc000 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/PhilOfMind.elm @@ -0,0 +1,50 @@ +module Config.Pages.Debate.Gibberish.Records.PhilOfMind exposing (philOfMindGibberish) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Gibberish.Types + exposing + ( Explanation(..) + , Gibberish + , Terms + ) + + +philOfMindGibberish : Gibberish +philOfMindGibberish = + let + name = + "Philosophy of Mind" + in + { gibberishTitle = name + , gibberishImage = formatName name + , gibberishLink = "https://en.wikipedia.org/wiki/Philosophy_of_mind" + , gibberishDescription = "The philosophy of mind is a branch of philosophy that explores the nature of the mind, consciousness, and mental phenomena, particularly their relationship to the body and the physical world. It addresses fundamental questions about how mental states such as thoughts, feelings, and perceptions relate to brain processes and the external environment. Key topics include consciousness, intentionality, and the mind-body problem, which examines how mental and physical states interact." + , isNewTabLink = True + , gibberishTerms = + [ { term = "Eliminative Materialism" + , strength = 0 + , explanation = SpecificExplanation "If one affirms that they take this view, meaning they believe that it's true, that would entail a contradiction. They'd be affirming that it is and is not the case that beliefs exist. If they say they don't believe it's true, then I'm not sure what the point is." + } + , { term = "Epiphenomenalism" + , strength = 5 + , explanation = NoClue + } + , { term = "Mind-Heart Connection" + , strength = 5 + , explanation = NoClue + } + , { term = "Parallelism" + , strength = 5 + , explanation = NoClue + } + , { term = "Pre-Established Harmony" + , strength = 5 + , explanation = NoClue + } + , { term = "Private Language" + , strength = 5 + , explanation = SpecificExplanation "This seems to be taken to be describing terms that, ostensibly, refer only to internal mind-states and for which there supposedly \"can't\" be some sort of external reference upon which to base mutual understanding between agents. Supposedly, this renders such terms unintelligible to everyone else. Cool story. What in the world is meant by \"can't\", though?" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Theology.elm b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Theology.elm new file mode 100755 index 0000000..56f1840 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Records/Theology.elm @@ -0,0 +1,46 @@ +module Config.Pages.Debate.Gibberish.Records.Theology exposing (theologyGibberish) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Debate.Gibberish.Types + exposing + ( Explanation(..) + , Gibberish + , Terms + ) + + +theologyGibberish : Gibberish +theologyGibberish = + let + name = + "Theology" + in + { gibberishTitle = name + , gibberishImage = formatName name + , gibberishLink = "https://en.wikipedia.org/wiki/Theology" + , gibberishDescription = "Theology is the study of religious beliefs and practices, focusing on the nature of divinity and the relationship between the divine and humanity. It encompasses various disciplines, including systematic theology, biblical theology, and practical theology, each exploring different aspects of faith and spirituality. Essentially, theology seeks to provide a coherent understanding of God and religious experience, guiding adherents in their beliefs and practices." + , isNewTabLink = True + , gibberishTerms = + [ { term = "Divine Simplicity" + , strength = 3 + , explanation = SpecificExplanation "This seems to be an assertion that God is somehow not made up of multiple parts. Allegedly, God is just a single part. This is sometimes used to avoid hilarious reductios applied to the fine-tuning argument for God, by claiming that God does not have a constitution that can be finely tuned. However, I don't see why constitution must entail multiple parts anyway. Additionally, even if we grant it, it's just an empirical claim that hasn't been substantiated." + } + , { term = "Equal Ultimacy" + , strength = 5 + , explanation = NoClue + } + , { term = "Theism" + , strength = 4 + , explanation = SpecificExplanation "I understand some God concepts, but most God concepts just sound like gibberish to me. For instance, most God concepts I've come across seem to suggest that God exists, but God exists outside the confines of what is (like physical reality) and simultaneously inhabits all space inside of what is. I have no idea how to interpret mumbo jumbo like that." + } + , { term = "Transcendental Oneness" + , strength = 0 + , explanation = SpecificExplanation "Just sounds like presuppositionalist theobabble. I don't think it means anything." + } + , { term = "Transcendental Realism" + , strength = 5 + , explanation = NoClue + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Types.elm b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Types.elm new file mode 100755 index 0000000..f575ec7 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Gibberish/Types.elm @@ -0,0 +1,29 @@ +module Config.Pages.Debate.Gibberish.Types exposing + ( Explanation(..) + , Gibberish + , Terms + ) + +import Config.Data.Hashtags.Types exposing (..) + + +type alias Gibberish = + { gibberishTitle : String + , gibberishImage : String + , gibberishLink : String + , isNewTabLink : Bool + , gibberishDescription : String + , gibberishTerms : List Terms + } + + +type alias Terms = + { term : String + , strength : Int + , explanation : Explanation + } + + +type Explanation + = NoClue + | SpecificExplanation String diff --git a/packages/website/frontend/src/Config/Pages/Debate/Types.elm b/packages/website/frontend/src/Config/Pages/Debate/Types.elm new file mode 100755 index 0000000..559725b --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Debate/Types.elm @@ -0,0 +1,11 @@ +module Config.Pages.Debate.Types exposing (Debate) + + +type alias Debate = + { debateTitle : String + , debateLink : String + , debateImage : String + , isNewTabLink : Bool + , debateCount : Int + , debateDescription : String + } diff --git a/packages/website/frontend/src/Config/Pages/Donate/Records/Cardano.elm b/packages/website/frontend/src/Config/Pages/Donate/Records/Cardano.elm new file mode 100755 index 0000000..5510a08 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Donate/Records/Cardano.elm @@ -0,0 +1,53 @@ +module Config.Pages.Donate.Records.Cardano exposing (donateCardano) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Donate.Types exposing (Donate) + + +donateCardano : Donate +donateCardano = + let + name : String + name = + "Cardano" + in + { donateImage = formatName name + , donateLink = "https://handle.me/thenutrivore" + , donateName = name + , donateFees = "0.17 ADA" + , donatePreference = 6 + , isNewTabLink = True + , donateFeatures = + [ { free = Just False + , subscriptions = Just False + , openSource = Just True + , fastPayments = Just True + , userFriendly = Just False + , anonymous = Just True + , rewardTiers = Just False + } + ] + , donatePros = + [ { pro = "Blockchain-based peer-to-peer donations." + } + , { pro = "Open source, state-of-the-art cryptocurrency." + } + , { pro = "Extremely fast transactions." + } + , { pro = "Extremely minimal gas fees per transaction." + } + , { pro = "Decentralized cryptocurrency platform." + } + ] + , donateCons = + [ { con = "Less accessible for non-crypto users." + } + , { con = "Requires cryptocurrency knowledge." + } + , { con = "Volatile cryptocurrency market." + } + , { con = "Additional steps needed (wallet, exchange)." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Donate/Records/KoFi.elm b/packages/website/frontend/src/Config/Pages/Donate/Records/KoFi.elm new file mode 100755 index 0000000..a418152 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Donate/Records/KoFi.elm @@ -0,0 +1,45 @@ +module Config.Pages.Donate.Records.KoFi exposing (donateKoFi) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Donate.Types exposing (Donate) + + +donateKoFi : Donate +donateKoFi = + let + name : String + name = + "Ko-Fi" + in + { donateImage = formatName name + , donateLink = "https://ko-fi.com/uprootnutrition" + , donateName = name + , donateFees = "5%" + , donatePreference = 5 + , isNewTabLink = True + , donateFeatures = + [ { free = Just False + , subscriptions = Just True + , openSource = Just False + , fastPayments = Just False + , userFriendly = Just True + , anonymous = Just True + , rewardTiers = Just False + } + ] + , donatePros = + [ { pro = "Supports one-time and monthly donations." + } + , { pro = "Allows digital downloads and commissions." + } + , { pro = "Relatively simple platform." + } + ] + , donateCons = + [ { con = "Less feature-rich compared to other services." + } + , { con = "Smaller user base compared to more established platforms." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Donate/Records/LiberaPay.elm b/packages/website/frontend/src/Config/Pages/Donate/Records/LiberaPay.elm new file mode 100755 index 0000000..5893529 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Donate/Records/LiberaPay.elm @@ -0,0 +1,49 @@ +module Config.Pages.Donate.Records.LiberaPay exposing (donateLiberaPay) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Donate.Types exposing (Donate) + + +donateLiberaPay : Donate +donateLiberaPay = + let + name : String + name = + "LiberaPay" + in + { donateImage = formatName name + , donateLink = "https://liberapay.com/TheNutrivore" + , donateName = name + , donateFees = "0%" + , donatePreference = 10 + , isNewTabLink = True + , donateFeatures = + [ { free = Just True + , subscriptions = Just True + , openSource = Just True + , fastPayments = Just False + , userFriendly = Just True + , anonymous = Just True + , rewardTiers = Just True + } + ] + , donatePros = + [ { pro = "Open-source platform." + } + , { pro = "Focuses on privacy and transparency." + } + , { pro = "Allows weekly recurring donations." + } + , { pro = "Creator-friendly with no platform charges." + } + ] + , donateCons = + [ { con = "Less mainstream compared to other platforms." + } + , { con = "Fewer features compared to more established platforms." + } + , { con = "Requires users to be comfortable with a less-known service." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Donate/Records/Merch.elm b/packages/website/frontend/src/Config/Pages/Donate/Records/Merch.elm new file mode 100755 index 0000000..0fd4b27 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Donate/Records/Merch.elm @@ -0,0 +1,45 @@ +module Config.Pages.Donate.Records.Merch exposing (donateMerch) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Donate.Types exposing (Donate) + + +donateMerch : Donate +donateMerch = + let + name : String + name = + "Merchandise" + in + { donateImage = formatName name + , donateLink = "https://streamlabs.com/thenutrivore/merch" + , donateName = name + , donateFees = "~60%" + , donatePreference = 1 + , isNewTabLink = True + , donateFeatures = + [ { free = Just False + , subscriptions = Just False + , openSource = Just False + , fastPayments = Just False + , userFriendly = Just True + , anonymous = Just False + , rewardTiers = Just False + } + ] + , donatePros = + [ { pro = "Allows supporters to get tangible goods." + } + , { pro = "Potential for creative design opportunities." + } + ] + , donateCons = + [ { con = "They gouge me pretty hard per sale." + } + , { con = "Potentially expensive for supporters." + } + , { con = "Limited design options through current provider." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Donate/Records/Patreon.elm b/packages/website/frontend/src/Config/Pages/Donate/Records/Patreon.elm new file mode 100755 index 0000000..2e03f16 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Donate/Records/Patreon.elm @@ -0,0 +1,49 @@ +module Config.Pages.Donate.Records.Patreon exposing (donatePatreon) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Donate.Types exposing (Donate) + + +donatePatreon : Donate +donatePatreon = + let + name : String + name = + "Patreon" + in + { donateImage = formatName name + , donateLink = "https://www.patreon.com/c/upRootNutrition" + , donateName = name + , donateFees = "8%" + , donatePreference = 6 + , isNewTabLink = True + , donateFeatures = + [ { free = Just False + , subscriptions = Just True + , openSource = Just False + , fastPayments = Just False + , userFriendly = Just True + , anonymous = Just False + , rewardTiers = Just True + } + ] + , donatePros = + [ { pro = "Established platform for creator support." + } + , { pro = "Tools for managing patron relationships." + } + , { pro = "Enables exclusive content and perks." + } + , { pro = "Wide recognition among content creators and supporters." + } + ] + , donateCons = + [ { con = "Can be complex to set up and manage." + } + , { con = "Potential for high competition among creators." + } + , { con = "Platform takes a notable cut of creator earnings." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Donate/Records/PayPal.elm b/packages/website/frontend/src/Config/Pages/Donate/Records/PayPal.elm new file mode 100755 index 0000000..8306628 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Donate/Records/PayPal.elm @@ -0,0 +1,49 @@ +module Config.Pages.Donate.Records.PayPal exposing (donatePayPal) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Donate.Types exposing (Donate) + + +donatePayPal : Donate +donatePayPal = + let + name : String + name = + "PayPal" + in + { donateImage = formatName name + , donateLink = "https://paypal.me/TheNutrivore" + , donateName = name + , donateFees = "1%" + , donatePreference = 8 + , isNewTabLink = True + , donateFeatures = + [ { free = Just False + , subscriptions = Just True + , openSource = Just False + , fastPayments = Just True + , userFriendly = Just True + , anonymous = Just False + , rewardTiers = Just False + } + ] + , donatePros = + [ { pro = "Widely used and recognized globally" + } + , { pro = "Low 1% transaction fee" + } + , { pro = "Offers buyer and seller protections" + } + , { pro = "Easy to use for one-time and recurring donations" + } + , { pro = "Familiar to most internet users" + } + ] + , donateCons = + [ { con = "Can have complicated international transaction rules." + } + , { con = "Potential account limitations or freezes." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Donate/Records/Stripe.elm b/packages/website/frontend/src/Config/Pages/Donate/Records/Stripe.elm new file mode 100755 index 0000000..51416e9 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Donate/Records/Stripe.elm @@ -0,0 +1,49 @@ +module Config.Pages.Donate.Records.Stripe exposing (donateStripe) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Donate.Types exposing (Donate) + + +donateStripe : Donate +donateStripe = + let + name : String + name = + "Stripe" + in + { donateImage = formatName name + , donateLink = "https://donate.stripe.com/aEUaFT3Vd9ta1oI144" + , donateName = name + , donateFees = "3%" + , donatePreference = 8 + , isNewTabLink = True + , donateFeatures = + [ { free = Just False + , subscriptions = Just True + , openSource = Just False + , fastPayments = Just True + , userFriendly = Just True + , anonymous = Just True + , rewardTiers = Just False + } + ] + , donatePros = + [ { pro = "Widely used and recognized globally." + } + , { pro = "Lower 3% transaction fee." + } + , { pro = "Offers buyer and seller protections." + } + , { pro = "Easy to use for one-time donations." + } + , { pro = "Familiar to most internet users." + } + ] + , donateCons = + [ { con = "Can have complicated international transaction rules." + } + , { con = "Potential account limitations or freezes." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Donate/Records/Template.elm b/packages/website/frontend/src/Config/Pages/Donate/Records/Template.elm new file mode 100755 index 0000000..659e72e --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Donate/Records/Template.elm @@ -0,0 +1,38 @@ +module Config.Pages.Donate.Records.Template exposing (donateTemplate) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Donate.Types exposing (Donate) + + +donateTemplate : Donate +donateTemplate = + let + name : String + name = + "" + in + { donateImage = formatName name + , donateLink = "" + , donateName = name + , donateFees = "" + , donatePreference = 1 + , isNewTabLink = True + , donateFeatures = + [ { free = Just True + , subscriptions = Just True + , openSource = Just True + , fastPayments = Just False + , userFriendly = Just True + , anonymous = Just True + , rewardTiers = Just False + } + ] + , donatePros = + [ { pro = "" + } + ] + , donateCons = + [ { con = "" } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Donate/Records/YouTube.elm b/packages/website/frontend/src/Config/Pages/Donate/Records/YouTube.elm new file mode 100755 index 0000000..fba459f --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Donate/Records/YouTube.elm @@ -0,0 +1,51 @@ +module Config.Pages.Donate.Records.YouTube exposing (donateYouTube) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Donate.Types exposing (Donate) + + +donateYouTube : Donate +donateYouTube = + let + name : String + name = + "YouTube" + in + { donateImage = formatName name + , donateLink = "https://www.youtube.com/@upRootNutrition/membership" + , donateName = name + , donateFees = "45%" + , donatePreference = 3 + , isNewTabLink = True + , donateFeatures = + [ { free = Just False + , subscriptions = Just True + , openSource = Just False + , fastPayments = Just False + , userFriendly = Just True + , anonymous = Just False + , rewardTiers = Just True + } + ] + , donatePros = + [ { pro = "Extremely familiar platform that most people use anyway." + } + , { pro = "Built-in monetization through ad revenue sharing." + } + ] + , donateCons = + [ { con = "Extremely high platform cut (45% of ad revenue)." + } + , { con = "Content can be demonetized arbitrarily." + } + , { con = "Complicated and often changing monetization policies." + } + , { con = "High competition and algorithm dependency." + } + , { con = "Limited creator control over content visibility." + } + , { con = "Creators are easily censored." + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Donate/Types.elm b/packages/website/frontend/src/Config/Pages/Donate/Types.elm new file mode 100755 index 0000000..fe093e5 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Donate/Types.elm @@ -0,0 +1,40 @@ +module Config.Pages.Donate.Types exposing + ( Cons + , Donate + , Features + , Pros + ) + + +type alias Donate = + { donateImage : String + , donateLink : String + , donateName : String + , donateFees : String + , donatePreference : Int + , donatePros : List Pros + , donateCons : List Cons + , isNewTabLink : Bool + , donateFeatures : List Features + } + + +type alias Features = + { free : Maybe Bool + , subscriptions : Maybe Bool + , openSource : Maybe Bool + , fastPayments : Maybe Bool + , userFriendly : Maybe Bool + , anonymous : Maybe Bool + , rewardTiers : Maybe Bool + } + + +type alias Pros = + { pro : String + } + + +type alias Cons = + { con : String + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Records/DrShawnBakerPodcast.elm b/packages/website/frontend/src/Config/Pages/Interviews/Records/DrShawnBakerPodcast.elm new file mode 100755 index 0000000..852e899 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Records/DrShawnBakerPodcast.elm @@ -0,0 +1,32 @@ +module Config.Pages.Interviews.Records.DrShawnBakerPodcast exposing (drShawnBakerPodcast) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Interviews.Types exposing (Interview) + + +drShawnBakerPodcast : Interview +drShawnBakerPodcast = + let + name : String + name = + "Dr. Shawn Baker Podcast" + in + { interviewName = name + , interviewImage = formatName name + , interviewSocial = "https://x.com/SBakerMD" + , isNewTabLink = True + , interviewAppearances = + [ { appearanceTitle = "He, Wants Wildlife To Not Exist So They Don鈥檛 Eat Each Other" + , appearanceEpisode = "?" + , appearanceLink = "https://podcast.carnivore.diet/ethical-vegan-logical-he-wants-wildlife-to-not-exist-so-they-dont-eat-each-other-1-hr-waste" + , appearanceExperience = 0 + , appearanceYear = "November 30th, 2023" + , appearanceSubjects = + [ { subject = "Shawn contradicting himself." } + , { subject = "Shawn strawmanning me." } + , { subject = "Shawn just generally being a weak little bitch." } + ] + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Records/FitAndFurious.elm b/packages/website/frontend/src/Config/Pages/Interviews/Records/FitAndFurious.elm new file mode 100755 index 0000000..69a6f74 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Records/FitAndFurious.elm @@ -0,0 +1,33 @@ +module Config.Pages.Interviews.Records.FitAndFurious exposing (fitAndFurious) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Interviews.Types exposing (Interview) + + +fitAndFurious : Interview +fitAndFurious = + let + name : String + name = + "Fit and Furious" + in + { interviewName = name + , interviewImage = formatName name + , interviewSocial = "https://x.com/FitAndFuriousND" + , isNewTabLink = True + , interviewAppearances = + [ { appearanceTitle = "Seed Oil Schooling!" + , appearanceEpisode = "51" + , appearanceLink = "https://www.youtube.com/watch?v=7I1IJSZIGm0" + , appearanceExperience = 7 + , appearanceYear = "January 14th, 2022" + , appearanceSubjects = + [ { subject = "The story behind the Nutri-Dex." } + , { subject = "Seed oil consumption and health." } + , { subject = "Natural diets versus artificial diets." } + , { subject = "Ethical veganism and Nick's diet." } + ] + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Records/FoolproofMastery.elm b/packages/website/frontend/src/Config/Pages/Interviews/Records/FoolproofMastery.elm new file mode 100755 index 0000000..655ce43 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Records/FoolproofMastery.elm @@ -0,0 +1,47 @@ +module Config.Pages.Interviews.Records.FoolproofMastery exposing (foolproofMastery) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Interviews.Types exposing (Interview) + + +foolproofMastery : Interview +foolproofMastery = + let + name : String + name = + "Foolproof Mastery" + in + { interviewName = name + , interviewImage = formatName name + , interviewSocial = "https://x.com/FoolproofMaster" + , isNewTabLink = True + , interviewAppearances = + [ { appearanceTitle = "Seed Oils & Statistics" + , appearanceEpisode = "14" + , appearanceLink = "https://www.youtube.com/watch?v=3w0wvckA1Hw" + , appearanceExperience = 10 + , appearanceYear = "February 6th, 2023" + , appearanceSubjects = + [ { subject = "Vegetable oils & health outcomes." } + , { subject = "Lipid peroxidation." } + , { subject = "Lag time to LDL oxidation." } + , { subject = "Statistical analysis." } + , { subject = "Study design" } + ] + } + , { appearanceTitle = "Bizarre Nutrition Claims" + , appearanceEpisode = "15" + , appearanceLink = "https://www.youtube.com/watch?v=9k7COJgwCo4" + , appearanceExperience = 10 + , appearanceYear = "February 13th, 2023" + , appearanceSubjects = + [ { subject = "Meat eating in Hong Kong." } + , { subject = "Different eating patterns." } + , { subject = "Glycine methionine ratio." } + , { subject = "Oysters as a vegan food." } + , { subject = "Nick's supplements." } + ] + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Records/KetogeeksPodcast.elm b/packages/website/frontend/src/Config/Pages/Interviews/Records/KetogeeksPodcast.elm new file mode 100755 index 0000000..e2a1282 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Records/KetogeeksPodcast.elm @@ -0,0 +1,35 @@ +module Config.Pages.Interviews.Records.KetogeeksPodcast exposing (ketoGeeksPodcast) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Interviews.Types exposing (Interview) + + +ketoGeeksPodcast : Interview +ketoGeeksPodcast = + let + name : String + name = + "Ketogeek's Podcast" + in + { interviewName = name + , interviewImage = formatName name + , interviewSocial = "https://x.com/fmahmad88" + , isNewTabLink = True + , interviewAppearances = + [ { appearanceTitle = "In Defense of Seed Oils and Polyunsaturated Fats" + , appearanceEpisode = "78" + , appearanceLink = "https://ketogeek.libsyn.com/in-defense-of-seed-oils-and-polyunsaturated-fats-nick-hiebert" + , appearanceExperience = 10 + , appearanceYear = "March 18th, 2022" + , appearanceSubjects = + [ { subject = "How did you start getting into the seed oil debate?" } + , { subject = "What are some common claims made against seed oils?" } + , { subject = "Does PUFA cause chronic diseases like CVD and cancer?" } + , { subject = "Critique of the ancestral approach towards food and nutrition." } + , { subject = "Why and when epidemiology can be good evidence." } + , { subject = "Resources people can read regarding PUFA and health." } + ] + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Records/LegendaryLifePodcast.elm b/packages/website/frontend/src/Config/Pages/Interviews/Records/LegendaryLifePodcast.elm new file mode 100755 index 0000000..b097604 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Records/LegendaryLifePodcast.elm @@ -0,0 +1,36 @@ +module Config.Pages.Interviews.Records.LegendaryLifePodcast exposing (legendaryLifePodcast) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Interviews.Types exposing (Interview) + + +legendaryLifePodcast : Interview +legendaryLifePodcast = + let + name : String + name = + "Legendary Life Podcast" + in + { interviewName = name + , interviewImage = formatName name + , interviewSocial = "https://x.com/ted_ryce" + , isNewTabLink = True + , interviewAppearances = + [ { appearanceTitle = "Common Food And Nutrition Myths Debunked" + , appearanceEpisode = "391" + , appearanceLink = "https://www.legendarylifepodcast.com/391-5-common-food-and-nutrition-myths-debunked-with-nick-hiebert/c" + , appearanceExperience = 9 + , appearanceYear = "March 9th, 2020" + , appearanceSubjects = + [ { subject = "The importance of identifying quality evidence." } + , { subject = "Salt doesn鈥檛 cost high blood pressure?" } + , { subject = "Foods that are high in potassium." } + , { subject = "Why eating processed foods might make you fat." } + , { subject = "Western Diet Culture Mentality." } + , { subject = "Are there good foods and bad foods." } + , { subject = "Nutrient Density: Guide and Tools." } + ] + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Records/MarkBellsPowerProject.elm b/packages/website/frontend/src/Config/Pages/Interviews/Records/MarkBellsPowerProject.elm new file mode 100755 index 0000000..778c2f8 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Records/MarkBellsPowerProject.elm @@ -0,0 +1,35 @@ +module Config.Pages.Interviews.Records.MarkBellsPowerProject exposing (markBellsPowerProject) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Interviews.Types exposing (Interview) + + +markBellsPowerProject : Interview +markBellsPowerProject = + let + name : String + name = + "Mark Bell's Power Project" + in + { interviewName = name + , interviewImage = formatName name + , interviewSocial = "https://x.com/MarkSmellyBell" + , isNewTabLink = True + , interviewAppearances = + [ { appearanceTitle = "Seed Oils Aren鈥檛 as Bad as You May Think" + , appearanceEpisode = "670" + , appearanceLink = "https://www.youtube.com/watch?v=omzCi2CGoxo" + , appearanceExperience = 4 + , appearanceYear = "Feburary 1st, 2022" + , appearanceSubjects = + [ { subject = "Quick background on seed oils." } + , { subject = "How does red meat increase disease risk?" } + , { subject = "Exact health benefits of vegetable oils." } + , { subject = "Tucker Goodrich & Alan Flanagan debate review." } + , { subject = "Should you remove seed oils all together at once?" } + , { subject = "Maybe vegetable oils aren鈥檛 that important?" } + ] + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Records/MuscleMemoirsPodcast.elm b/packages/website/frontend/src/Config/Pages/Interviews/Records/MuscleMemoirsPodcast.elm new file mode 100755 index 0000000..6aae593 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Records/MuscleMemoirsPodcast.elm @@ -0,0 +1,48 @@ +module Config.Pages.Interviews.Records.MuscleMemoirsPodcast exposing (muscleMemoirsPodcast) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Interviews.Types exposing (Interview) + + +muscleMemoirsPodcast : Interview +muscleMemoirsPodcast = + let + name : String + name = + "Muscle Memoirs Podcast" + in + { interviewName = name + , interviewImage = formatName name + , interviewSocial = "https://x.com/MikeMurrayRD" + , isNewTabLink = True + , interviewAppearances = + [ { appearanceTitle = "The Nutri-Dex, Misconceptions, and Optimizing Body Composition" + , appearanceEpisode = "11" + , appearanceLink = "https://www.youtube.com/watch?v=SF1BBOA5FAQ" + , appearanceExperience = 10 + , appearanceYear = "March 8th, 2020" + , appearanceSubjects = + [ { subject = "The story behind the Nutri-Dex." } + , { subject = "Misconceptions about nutrient density." } + , { subject = "Using the cheat sheet to optimize body composition." } + , { subject = "Top foods that are beneficial for bodybuilding." } + , { subject = "How are the most satiating foods determined?" } + , { subject = "Nick gives some of his tops foods" } + ] + } + , { appearanceTitle = "Seed Oils, Saturated Fat, and Cardiovascular Disease" + , appearanceEpisode = "82" + , appearanceLink = "https://www.youtube.com/watch?v=WfApzH4Dj3M" + , appearanceExperience = 10 + , appearanceYear = "May 21st, 2021" + , appearanceSubjects = + [ { subject = "Mechanistic arguments against seed oils." } + , { subject = "Linoleic acid consumption and heart disease." } + , { subject = "Are hunter-gatherer diets optimal for modern humans?" } + , { subject = "Saturated fat and blood lipids." } + , { subject = "Meta-analysis in nutrition." } + ] + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Records/SigmaNutritionRadio.elm b/packages/website/frontend/src/Config/Pages/Interviews/Records/SigmaNutritionRadio.elm new file mode 100755 index 0000000..d21a885 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Records/SigmaNutritionRadio.elm @@ -0,0 +1,36 @@ +module Config.Pages.Interviews.Records.SigmaNutritionRadio exposing (sigmaNutritionRadio) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Interviews.Types exposing (Interview) + + +sigmaNutritionRadio : Interview +sigmaNutritionRadio = + let + name : String + name = + "Sigma Nutrition Radio" + in + { interviewName = name + , interviewImage = formatName name + , interviewSocial = "https://x.com/NutritionDanny" + , isNewTabLink = True + , interviewAppearances = + [ { appearanceTitle = "Micronutrients, Anti-nutrients, and Non-essential Nutrients" + , appearanceEpisode = "360" + , appearanceLink = "https://sigmanutrition.com/episode360/" + , appearanceExperience = 10 + , appearanceYear = "November 12th, 2020" + , appearanceSubjects = + [ { subject = "How best to measure nutrient density." } + , { subject = "The downsides of maximizing nutrient density." } + , { subject = "Anti-nutrients: how relevant are they?" } + , { subject = "Understanding the effect of phytate, oxalate, etc." } + , { subject = "Hard to get nutrients in typical diets." } + , { subject = "Synergistic and moderating effects of nutrients." } + , { subject = "Non-essential nutrients & importance for health." } + ] + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Records/StrenuousLifePodcast.elm b/packages/website/frontend/src/Config/Pages/Interviews/Records/StrenuousLifePodcast.elm new file mode 100755 index 0000000..7dc9be3 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Records/StrenuousLifePodcast.elm @@ -0,0 +1,33 @@ +module Config.Pages.Interviews.Records.StrenuousLifePodcast exposing (strenuousLifePodcast) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Interviews.Types exposing (Interview) + + +strenuousLifePodcast : Interview +strenuousLifePodcast = + let + name : String + name = + "Strenuous Life Podcast" + in + { interviewName = name + , interviewImage = formatName name + , interviewSocial = "https://www.threads.net/@stephan_kesting" + , isNewTabLink = True + , interviewAppearances = + [ { appearanceTitle = "Contrarian Thinking About Nutrition" + , appearanceEpisode = "244" + , appearanceLink = "https://www.grapplearts.com/contrarian-thinking-about-nutrition-with-nick-hiebert-strenuous-life-podcast-ep-244/" + , appearanceExperience = 9 + , appearanceYear = "December 2nd, 2019" + , appearanceSubjects = + [ { subject = "The nutrient density of different foods." } + , { subject = "The ten all time greatest, most nutrient dense foods." } + , { subject = "The ketogenic diet." } + , { subject = "Fats vs carbs vs proteins." } + ] + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Records/Template.elm b/packages/website/frontend/src/Config/Pages/Interviews/Records/Template.elm new file mode 100755 index 0000000..39d7d37 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Records/Template.elm @@ -0,0 +1,33 @@ +module Config.Pages.Interviews.Records.Template exposing (template) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Interviews.Types exposing (Interview) + + +template : Interview +template = + let + name : String + name = + "" + in + { interviewName = name + , interviewImage = formatName name + , interviewSocial = "" + , isNewTabLink = True + , interviewAppearances = + [ { appearanceTitle = "" + , appearanceEpisode = "" + , appearanceLink = "" + , appearanceExperience = 1 + , appearanceYear = "" + , appearanceSubjects = + [ { subject = "" } + , { subject = "" } + , { subject = "" } + , { subject = "" } + ] + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Interviews/Types.elm b/packages/website/frontend/src/Config/Pages/Interviews/Types.elm new file mode 100755 index 0000000..7e873ad --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Interviews/Types.elm @@ -0,0 +1,28 @@ +module Config.Pages.Interviews.Types exposing + ( Appearance + , Interview + , Subjects + ) + + +type alias Interview = + { interviewName : String + , interviewImage : String + , interviewSocial : String + , isNewTabLink : Bool + , interviewAppearances : List Appearance + } + + +type alias Appearance = + { appearanceEpisode : String + , appearanceLink : String + , appearanceTitle : String + , appearanceYear : String + , appearanceExperience : Int + , appearanceSubjects : List Subjects + } + + +type alias Subjects = + { subject : String } diff --git a/packages/website/frontend/src/Config/Pages/Products/Records/NutriDex.elm b/packages/website/frontend/src/Config/Pages/Products/Records/NutriDex.elm new file mode 100755 index 0000000..762f271 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Products/Records/NutriDex.elm @@ -0,0 +1,203 @@ +module Config.Pages.Products.Records.NutriDex exposing (productNutriDex) + +import Config.Pages.Products.Types exposing (NutriDex) + + +productNutriDex : NutriDex +productNutriDex = + { nutriDexTitle = "The NutriDex" + , nutriDexFeatures = + [ { feature = "Over 700 foods are ranked and adjusted for nutrient bioavailability, absorption capacity, and metabolic conversion rates!" + , featureTitle = "Nutrient Density Scoring: " + } + , { feature = "30 different nutrition scores that stratify foods by a number of different dietary goals!" + , featureTitle = "Specialized Nutrition Scoring: " + } + , { feature = "Use the included Custom Score tab to help create your own personal nutrition score to plan your own ideal diet!" + , featureTitle = "Custom Nutrition Scoring: " + } + , { feature = "Custom-tailor your diet with in-depth nutrition data, including antinutrients, glycemic effects, satiety, FODMAPs, and more!" + , featureTitle = "Diverse Nutrition Data: " + } + , { feature = "Avoid potential hazards from certain nutrients and other compounds with the included hazard profile data!" + , featureTitle = "Hazard Profiles: " + } + , { feature = "Use the included vegan-friendly categorization to help you navigate through the best vegan options!" + , featureTitle = "Vegan-Friendly Categorization: " + } + , { feature = "Use the included keto-friendly categorization to help you navigate through the best keto options!" + , featureTitle = "Keto-Friendly Categorization: " + } + , { feature = "Keep expenses in check with an interactive grocery list that can intelligently estimate the cost of your grocery trip. " + , featureTitle = "Grocery List: " + } + , { feature = "Quantify the nutrient content of your food selection, and minimize anti-nutrients, hunger, calories, sugar, and more!" + , featureTitle = "Nutrition Analyser: " + } + , { feature = "Schedule your meals and workouts, as well as calculate your calorie and macro requirements based on your goals and body composition!" + , featureTitle = "Meal Schedule: " + } + ] + , nutriDexReference = + let + instituteOfMedicinePub = + "Standing Committee on the Scientific Evaluation of Dietary Reference Intakes and its Panel on Folate, Other B Vitamins, and Choline. " + + instituteOfMedicineTitle = + "Institute of Medicine. " + + nationalAcademiesPress = + "National Academies Press. " + in + [ { author = instituteOfMedicineTitle + , year = "1998" + , title = instituteOfMedicinePub ++ "Thiamine. " + , journal = nationalAcademiesPress + , link = "https://www.ncbi.nlm.nih.gov/books/NBK114331/" + } + , { author = instituteOfMedicineTitle + , year = "1998" + , title = instituteOfMedicinePub ++ "Riboflavin. " + , journal = nationalAcademiesPress + , link = "https://www.ncbi.nlm.nih.gov/books/NBK114322/" + } + , { author = instituteOfMedicineTitle + , year = "1998" + , title = instituteOfMedicinePub ++ "Niacin. " + , journal = nationalAcademiesPress + , link = "https://www.ncbi.nlm.nih.gov/books/NBK114304/" + } + , { author = instituteOfMedicineTitle + , year = "2011" + , title = "Dietary Reference Intakes for Calcium and Vitamin D. National Academies Press. " + , journal = nationalAcademiesPress + , link = "https://www.ncbi.nlm.nih.gov/books/NBK56056/" + } + , { author = instituteOfMedicineTitle + , year = "2006" + , title = "Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. " + , journal = "Manganese. Chapter 39, page 352. " + , link = "https://www.nap.edu/read/11537/chapter/39" + } + , { author = instituteOfMedicineTitle + , year = "2006" + , title = "Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. " + , journal = "Phosphorus. Chapter 41, page 364. " + , link = "https://www.nap.edu/read/11537/chapter/41" + } + , { author = instituteOfMedicineTitle + , year = "2006" + , title = "Dietary Reference Intakes: The Essential Guide to Nutrient Requirements. " + , journal = "Potassium. Chapter 41, page 372. " + , link = "https://www.nap.edu/read/11537/chapter/42" + } + , { author = instituteOfMedicineTitle + , year = "1998" + , title = instituteOfMedicinePub ++ "Panthotheic Acid. " + , journal = nationalAcademiesPress + , link = "https://www.ncbi.nlm.nih.gov/books/NBK114311/" + } + , { author = "Reynolds RD. " + , year = "September 1988" + , title = "Bioavailability of vitamin B-6 from plant foods. " + , journal = "Am J Clin Nutr. " + , link = "https://www.ncbi.nlm.nih.gov/pubmed/2843032" + } + , { author = "Shibata, Keiko, Yasuyo Yasuhara, and Kazuto Yasuda" + , year = "2001" + , title = "Effects of Cooking Methods on the Retention of Vitamin B6 in Foods, and the Approximate Cooking Loss in Daily Meals. " + , journal = "J. Home Econ. Jpn. " + , link = "https://www.semanticscholar.org/paper/Effects-of-Cooking-Methods-on-the-Retention-of-B6-Shibata-Yasuhara/b8445e60d87753144ef856e0ae207b551aa75b9c" + } + , { author = "Carmel, R. " + , year = "2008" + , title = "How I treat cobalamin (vitamin B12) deficiency. " + , journal = "Blood" + , link = "https://www.ncbi.nlm.nih.gov/pubmed/18606874" + } + , { author = "Ohrvik, Veronica E. and Cornelia M. Witthoft" + , year = "2011" + , title = "Human Folate Bioavailability. " + , journal = "Nutrients" + , link = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3257685/" + } + , { author = "Novotny, Janet A., et al. " + , year = "2010" + , title = "尾-Carotene Conversion to Vitamin A Decreases As the Dietary Dose Increases in Humans. " + , journal = "J Nutr. " + , link = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2855261/" + } + , { author = "Gijsbers, B.L., Jie, K.S., and Vermeer, C. " + , year = "1996" + , title = "Effect of food composition on vitamin K absorption in human volunteers. " + , journal = "Br J Nutr. " + , link = "https://www.ncbi.nlm.nih.gov/pubmed/8813897" + } + , { author = "Jacob, R.A., and Sotoudeh, G. " + , year = "2002" + , title = "Vitamin C function and status in chronic disease. " + , journal = "Nutr Clin Care. " + , link = "https://www.ncbi.nlm.nih.gov/pubmed/12134712" + } + , { author = "Reboul, Emmanuelle" + , year = "2017" + , title = "Vitamin E Bioavailability: Mechanisms of Intestinal Absorption in the Spotlight. " + , journal = "Antioxidants (Basel). " + , link = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5745505/" + } + , { author = "Zhang, Zhiying, et al. " + , year = "2018" + , title = "Dietary Intakes of EPA and DHA Omega-3 Fatty Acids among US Childbearing-Age and Pregnant Women: An Analysis of NHANES 2001鈥2014. " + , journal = "Nutrients. " + , link = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5946201/" + } + , { author = "Sioen, Isabelle, et al. " + , year = "2017" + , title = "Systematic Review on N-3 and N-6 Polyunsaturated Fatty Acid Intake in European Countries in Light of the Current Recommendations 鈥 Focus on Specific Population Groups. " + , journal = "Ann Nutr Metab. " + , link = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5452278/" + } + , { author = "Burdge, G.C., and Wootton, S.A. " + , year = "2002" + , title = "Conversion of alpha-linolenic acid to eicosapentaenoic, docosapentaenoic and docosahexaenoic acids in young women. " + , journal = "Br J Nutr. " + , link = "https://www.ncbi.nlm.nih.gov/pubmed/12323090" + } + , { author = "Rett, Brian S., and Whelan, Jay" + , year = "2011" + , title = "Increasing dietary linoleic acid does not increase tissue arachidonic acid content in adults consuming Western-type diets: a systematic review. " + , journal = "Nutr Metab (Lond). " + , link = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3132704/" + } + , { author = "L枚nnerdal, B. " + , year = "1996" + , title = "Bioavailability of copper. " + , journal = "Am J Clin Nutr. " + , link = "https://www.ncbi.nlm.nih.gov/pubmed/8615369" + } + , { author = "Fine, K.D., et al. " + , year = "1991" + , title = "Intestinal absorption of magnesium from food and supplements. " + , journal = "J Clin Invest. " + , link = "https://www.ncbi.nlm.nih.gov/pubmed/1864954" + } + , { author = "Fairweather-Tait, S.J., Collings, R., and Hurst, R. " + , year = "2010" + , title = "Selenium bioavailability: current knowledge and future research requirements. " + , journal = "Am J Clin Nutr. " + , link = "https://www.ncbi.nlm.nih.gov/pubmed/20200264" + } + , { author = "L枚nnerdal, B. " + , year = "2000" + , title = "Dietary factors influencing zinc absorption. " + , journal = "J Nutr. " + , link = "https://www.ncbi.nlm.nih.gov/pubmed/10801947" + } + , { author = "PDCAAS Wikipedia article" + , year = "" + , title = "Protein Digestibility Corrected Amino Acid Score" + , journal = "" + , link = "https://en.wikipedia.org/wiki/Protein_Digestibility_Corrected_Amino_Acid_Score" + } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Products/Types.elm b/packages/website/frontend/src/Config/Pages/Products/Types.elm new file mode 100755 index 0000000..3977598 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Products/Types.elm @@ -0,0 +1,19 @@ +module Config.Pages.Products.Types exposing + ( Features + , NutriDex + ) + +import Config.Helpers.Articles.Types exposing (References) + + +type alias NutriDex = + { nutriDexTitle : String + , nutriDexFeatures : List Features + , nutriDexReference : List References + } + + +type alias Features = + { feature : String + , featureTitle : String + } diff --git a/packages/website/frontend/src/Config/Pages/Services/Records/DebateAnalysis.elm b/packages/website/frontend/src/Config/Pages/Services/Records/DebateAnalysis.elm new file mode 100755 index 0000000..5fd2609 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Services/Records/DebateAnalysis.elm @@ -0,0 +1,28 @@ +module Config.Pages.Services.Records.DebateAnalysis exposing (servicesDebateAnalysis) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Services.Types exposing (Service) +import Route.Path as Path + + +servicesDebateAnalysis : Service +servicesDebateAnalysis = + let + name : String + name = + "Debate Analysis" + in + { serviceImage = formatName name + , serviceLink = Path.toString Path.Services_Analysis + , serviceName = name + , isNewTabLink = False + , serviceRate = "$80/hr" + , serviceBlurb = "" + , serviceDescription = + [ { point = "Have your own debates analyzed for constructive feedback." } + , { point = "Receive advice to improve your debate and public speaking skills." } + , { point = "Gain valuable insights that help you become a stronger reasoner." } + , { point = "Gain comfort with debate and verbal confrontation." } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Services/Records/DebateCoaching.elm b/packages/website/frontend/src/Config/Pages/Services/Records/DebateCoaching.elm new file mode 100755 index 0000000..c0b9949 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Services/Records/DebateCoaching.elm @@ -0,0 +1,28 @@ +module Config.Pages.Services.Records.DebateCoaching exposing (servicesDebateCoaching) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Services.Types exposing (Service) +import Route.Path as Path + + +servicesDebateCoaching : Service +servicesDebateCoaching = + let + name : String + name = + "Debate Coaching" + in + { serviceImage = formatName name + , serviceLink = Path.toString Path.Services_Coaching + , serviceName = name + , serviceRate = "$60/hr" + , isNewTabLink = False + , serviceBlurb = "" + , serviceDescription = + [ { point = "Participate in a structured course with five one-hour modules." } + , { point = "Learn critical thinking, debate strategy, formal logic, and more" } + , { point = "Receive personalized and generalizable advice." } + , { point = "Improve debate understanding and performance." } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Services/Records/ElmBuilds.elm b/packages/website/frontend/src/Config/Pages/Services/Records/ElmBuilds.elm new file mode 100755 index 0000000..3863d77 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Services/Records/ElmBuilds.elm @@ -0,0 +1,28 @@ +module Config.Pages.Services.Records.ElmBuilds exposing (servicesElmBuilds) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Services.Types exposing (Service) +import Route.Path as Path + + +servicesElmBuilds : Service +servicesElmBuilds = + let + name : String + name = + "Custom Elm Sites" + in + { serviceImage = formatName name + , serviceLink = Path.toString Path.Services_Elm + , serviceName = name + , serviceRate = "$50/hr (or by deliverable)" + , isNewTabLink = False + , serviceBlurb = "" + , serviceDescription = + [ { point = "Receive a custom website frontend written in Elm." } + , { point = "Tailored solutions based on user needs." } + , { point = "Assistance with server integration." } + , { point = "Receive unlimited revisions before finalization." } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Services/Records/NixBuilds.elm b/packages/website/frontend/src/Config/Pages/Services/Records/NixBuilds.elm new file mode 100755 index 0000000..26cd2bb --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Services/Records/NixBuilds.elm @@ -0,0 +1,28 @@ +module Config.Pages.Services.Records.NixBuilds exposing (servicesNixBuilds) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Services.Types exposing (Service) +import Route.Path as Path + + +servicesNixBuilds : Service +servicesNixBuilds = + let + name : String + name = + "Custom Nix Configs" + in + { serviceImage = formatName name + , serviceLink = Path.toString Path.Services_Nix + , serviceName = name + , serviceRate = "$50/hr (or by deliverable)" + , isNewTabLink = False + , serviceBlurb = "" + , serviceDescription = + [ { point = "Receive a custom NixOS configuration." } + , { point = "Help with transitioning from other operating systems to NixOS." } + , { point = "Assistance with the Nix programming language." } + , { point = "Receive unlimited revisions before finalization." } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Services/Records/NutritionScience.elm b/packages/website/frontend/src/Config/Pages/Services/Records/NutritionScience.elm new file mode 100755 index 0000000..a45ebc4 --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Services/Records/NutritionScience.elm @@ -0,0 +1,28 @@ +module Config.Pages.Services.Records.NutritionScience exposing (servicesNutritionScience) + +import Config.Data.Hashtags.Types exposing (Hashtags(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Pages.Services.Types exposing (Service) +import Route.Path as Path + + +servicesNutritionScience : Service +servicesNutritionScience = + let + name : String + name = + "Nutrition Science" + in + { serviceImage = formatName name + , serviceLink = Path.toString Path.Services_Nutrition + , serviceName = name + , serviceRate = "$50/hr" + , isNewTabLink = False + , serviceBlurb = "" + , serviceDescription = + [ { point = "Participate in a focused, one-hour Q&A session on nutrition science." } + , { point = "Inquire about methodology, epistemology, and study interpretation." } + , { point = "Gain access to nutrition science interpretation cheat sheets." } + , { point = "Simplify and streamline the research appraisal process." } + ] + } diff --git a/packages/website/frontend/src/Config/Pages/Services/Types.elm b/packages/website/frontend/src/Config/Pages/Services/Types.elm new file mode 100755 index 0000000..56348da --- /dev/null +++ b/packages/website/frontend/src/Config/Pages/Services/Types.elm @@ -0,0 +1,20 @@ +module Config.Pages.Services.Types exposing + ( Description + , Service + ) + + +type alias Service = + { serviceImage : String + , serviceLink : String + , serviceName : String + , serviceRate : String + , isNewTabLink : Bool + , serviceBlurb : String + , serviceDescription : List Description + } + + +type alias Description = + { point : String + } diff --git a/packages/website/frontend/src/Config/Style/Colour/Helpers.elm b/packages/website/frontend/src/Config/Style/Colour/Helpers.elm new file mode 100755 index 0000000..f87604d --- /dev/null +++ b/packages/website/frontend/src/Config/Style/Colour/Helpers.elm @@ -0,0 +1,118 @@ +module Config.Style.Colour.Helpers exposing + ( ThemeColor(..) + , colourTheme + , getThemeColor + , syntaxTheme + ) + +import Config.Style.Colour.Types + exposing + ( SyntaxColors + , Theme + ) +import Element as E + exposing + ( Color + , rgb255 + , rgba + ) +import Element.Font as F exposing (color) + + +colourTheme : Theme +colourTheme = + { textLightGrey = rgb255 212 212 212 + , textDarkGrey = rgb255 126 126 126 + , textLightOrange = rgb255 204 102 0 + , textDarkOrange = rgb255 120 60 0 + , textDeepDarkOrange = rgb255 60 30 0 + , backgroundLightGrey = rgb255 40 40 40 + , backgroundDarkGrey = rgb255 30 30 30 + , backgroundDeepDarkGrey = rgb255 20 20 20 + , backgroundSpreadsheet = rgb255 36 36 36 + , backgroundSpreadsheetDark = rgb255 26 26 26 + , shadow = rgb255 10 10 10 + , barGreen = rgb255 0 102 0 + , barRed = rgb255 102 0 0 + , debugColour = rgb255 227 28 121 + , transparent = rgba 1 1 1 0 + } + + +syntaxTheme : SyntaxColors +syntaxTheme = + { punctuation = rgb255 202 158 230 + , key = rgb255 138 173 244 + , string = rgb255 166 218 149 + , keyword = rgb255 245 169 127 + , operator = rgb255 178 185 194 + , background = rgb255 36 39 58 + , text = rgb255 202 211 245 + } + + +type ThemeColor + = TextLightGrey + | TextDarkGrey + | TextLightOrange + | TextDarkOrange + | TextDeepDarkOrange + | BackgroundLightGrey + | BackgroundDarkGrey + | BackgroundDeepDarkGrey + | BackgroundSpreadsheet + | BackgroundSpreadsheetDark + | Shadow + | BarGreen + | BarRed + | DebugColour + | Transparent + + +getThemeColor : ThemeColor -> Color +getThemeColor color = + case color of + TextLightGrey -> + colourTheme.textLightGrey + + TextDarkGrey -> + colourTheme.textDarkGrey + + TextLightOrange -> + colourTheme.textLightOrange + + TextDarkOrange -> + colourTheme.textDarkOrange + + TextDeepDarkOrange -> + colourTheme.textDeepDarkOrange + + BackgroundLightGrey -> + colourTheme.backgroundLightGrey + + BackgroundDarkGrey -> + colourTheme.backgroundDarkGrey + + BackgroundDeepDarkGrey -> + colourTheme.backgroundDeepDarkGrey + + BackgroundSpreadsheet -> + colourTheme.backgroundSpreadsheet + + BackgroundSpreadsheetDark -> + colourTheme.backgroundSpreadsheetDark + + Shadow -> + colourTheme.shadow + + BarGreen -> + colourTheme.barGreen + + BarRed -> + colourTheme.barRed + + DebugColour -> + colourTheme.debugColour + + Transparent -> + colourTheme.transparent diff --git a/packages/website/frontend/src/Config/Style/Colour/Types.elm b/packages/website/frontend/src/Config/Style/Colour/Types.elm new file mode 100755 index 0000000..dc316ce --- /dev/null +++ b/packages/website/frontend/src/Config/Style/Colour/Types.elm @@ -0,0 +1,36 @@ +module Config.Style.Colour.Types exposing + ( SyntaxColors + , Theme + ) + +import Element exposing (Color) + + +type alias Theme = + { textLightGrey : Color + , textDarkGrey : Color + , textLightOrange : Color + , textDarkOrange : Color + , textDeepDarkOrange : Color + , backgroundLightGrey : Color + , backgroundDarkGrey : Color + , backgroundDeepDarkGrey : Color + , backgroundSpreadsheet : Color + , backgroundSpreadsheetDark : Color + , shadow : Color + , barGreen : Color + , barRed : Color + , debugColour : Color + , transparent : Color + } + + +type alias SyntaxColors = + { punctuation : Color + , key : Color + , string : Color + , keyword : Color + , operator : Color + , background : Color + , text : Color + } diff --git a/packages/website/frontend/src/Config/Style/Fonts.elm b/packages/website/frontend/src/Config/Style/Fonts.elm new file mode 100755 index 0000000..ffe9d4f --- /dev/null +++ b/packages/website/frontend/src/Config/Style/Fonts.elm @@ -0,0 +1,50 @@ +module Config.Style.Fonts exposing + ( defaultFontSize + , headerFontSizeBig + , headerFontSizeMedium + , paragraphSpacing + , smallTextFontSize + , spartanFont + ) + +import Element + exposing + ( Attr + , Attribute + , spacing + ) +import Element.Font as F + exposing + ( size + , typeface + ) + + +spartanFont : F.Font +spartanFont = + F.typeface "League Spartan" + + +paragraphSpacing : Attribute msg +paragraphSpacing = + spacing 0 + + +headerFontSizeBig : Attr decorative msg +headerFontSizeBig = + F.size 23 + + +headerFontSizeMedium : Attr decorative msg +headerFontSizeMedium = + F.size 20 + + +defaultFontSize : Attr decorative msg +defaultFontSize = + F.size 18 + + +smallTextFontSize : Attr decorative msg +smallTextFontSize = + F.size 16 diff --git a/packages/website/frontend/src/Config/Style/Glow.elm b/packages/website/frontend/src/Config/Style/Glow.elm new file mode 100755 index 0000000..0a5a809 --- /dev/null +++ b/packages/website/frontend/src/Config/Style/Glow.elm @@ -0,0 +1,24 @@ +module Config.Style.Glow exposing + ( glowDeepDarkGrey + , glowDeepDarkGreyNavbar + , glowDeepDarkOrange + ) + +import Config.Style.Colour.Helpers exposing (ThemeColor(..), colourTheme, getThemeColor) +import Element exposing (Attr) +import Element.Border as D exposing (glow) + + +glowDeepDarkGrey : Attr decorative msg +glowDeepDarkGrey = + D.glow (getThemeColor Shadow) 4 + + +glowDeepDarkOrange : Attr decorative msg +glowDeepDarkOrange = + D.glow (getThemeColor TextDeepDarkOrange) 4 + + +glowDeepDarkGreyNavbar : Attr decorative msg +glowDeepDarkGreyNavbar = + D.glow (getThemeColor Shadow) 10 diff --git a/packages/website/frontend/src/Config/Style/Icons/Helpers.elm b/packages/website/frontend/src/Config/Style/Icons/Helpers.elm new file mode 100755 index 0000000..b6ebcef --- /dev/null +++ b/packages/website/frontend/src/Config/Style/Icons/Helpers.elm @@ -0,0 +1,32 @@ +module Config.Style.Icons.Helpers exposing (buildSvg) + +import Config.Style.Icons.Types as SvgTypes + exposing + ( InnerPart + , OuterPart + ) +import Element as E + exposing + ( Element + , el + , html + ) +import Svg exposing (svg) + + + +{- buildSvg consumes an inner record to construct most of an SVG, and an outer record to supply + any potentially varying TypedSvg.Core.Attribute msgs and wrap it in an Element.el so it can be + used by elm-ui. It provides a consistent interface for inserting SVGs into elm-ui code. +-} + + +buildSvg : SvgTypes.OuterPart msg -> SvgTypes.InnerPart msg -> Element msg +buildSvg outer inner = + el + outer.elementAttributes + <| + html <| + Svg.svg + (outer.svgAttributes ++ inner.svgAttributes) + inner.svg diff --git a/packages/website/frontend/src/Config/Style/Icons/Icons.elm b/packages/website/frontend/src/Config/Style/Icons/Icons.elm new file mode 100755 index 0000000..bc7b25c --- /dev/null +++ b/packages/website/frontend/src/Config/Style/Icons/Icons.elm @@ -0,0 +1,1057 @@ +module Config.Style.Icons.Icons exposing + ( circleDots + , circleX + , code + , construction + , contact + , copyLink + , debate + , discord + , donate + , gitlab + , home + , hyperBlog + , interviews + , journal + , leaving + , line + , lock + , mastodon + , nutriDex + , nutriDexLogo + , services + , source + , thumbsDown + , thumbsUp + , twitter + , upRootLarge + , upRootMedium + , upRootSmall + , video + ) + +import Config.Style.Icons.Helpers as HeSvg exposing (buildSvg) +import Config.Style.Icons.Types as SvgTypes + exposing + ( InnerPart + , OuterPart + ) +import Element as E exposing (Element) +import Html exposing (Html) +import Svg + exposing + ( path + , svg + ) +import Svg.Attributes as SvgAttr + + +upRootSmall : Html msg +upRootSmall = + svg + [ SvgAttr.width "100%" + , SvgAttr.height "100%" + , SvgAttr.viewBox "0 0 286 203" + , SvgAttr.version "1.1" + , SvgAttr.xmlSpace "preserve" + , SvgAttr.style "fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,0,1,-1702.49,-2847.36)" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,0,1,1072.22,2290.29)" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,373.077,489.488)" + ] + [ path + [ SvgAttr.d "M410,379.833C410,379.833 410.056,260.455 410.09,188.088C410.095,176.87 404.503,163.127 395.402,151.992C386.302,140.858 375.063,134.008 365.884,134.002C358.352,133.997 351.428,133.992 346.641,133.989C345.213,133.988 343.47,132.952 342.03,131.25C340.591,129.547 339.658,127.419 339.564,125.619C338.962,114.141 337.955,94.916 337.955,94.916L397.955,94.916C397.955,94.916 537.356,266.295 570.787,307.394C575.207,312.828 580.681,316.175 585.149,316.175C597.174,316.175 620,316.175 620,316.175L620,379.833L560.605,379.833C553.617,379.833 545.056,374.614 538.129,366.13C524.324,349.222 491.306,308.782 480.375,295.394C476.268,290.363 471.189,287.278 467.055,287.302C462.921,287.326 460.361,290.456 460.34,295.511C460.211,327.614 460,379.833 460,379.833L410,379.833Z" + , SvgAttr.style "fill:rgb(212,212,212);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,345.028,514.865)" + ] + [ path + [ SvgAttr.d "M600,253.872C600,256.824 598.525,258.666 596.128,258.709C593.731,258.751 590.774,256.987 588.364,254.078C577.294,240.715 561.273,221.376 553.937,212.52C551.503,209.583 550,205.927 550,202.947C550,184.124 550,116.624 550,116.624L600,116.624L600,253.872Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.70645,0,-0.149774,1.77773,-440.616,-481.127)" + ] + [ path + [ SvgAttr.d "M781.333,624.54L849.897,624.185L836.011,584L781.333,624.54Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + ] + ] + ] + + +upRootMedium : Html msg +upRootMedium = + svg + [ SvgAttr.width "100%" + , SvgAttr.height "100%" + , SvgAttr.viewBox "0 0 718 236" + , SvgAttr.version "1.1" + , SvgAttr.xmlSpace "preserve" + , SvgAttr.style "fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,0,1,-945.584,-3365.22)" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,0,1,744.72,2810.42)" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,338.58,489.488)" + ] + [ path + [ SvgAttr.d "M372.344,360.399C372.693,355.91 371.866,349.371 368.149,340.13C364.701,331.561 359.604,323.609 353.731,317.061L310.917,264.032C300.938,251.338 287.91,242.703 276.931,242.703C265.89,242.703 259.803,251.436 260.112,264.249L260.074,290L260,290L260,317.487C259.859,319.273 259.857,321.16 260,323.133L260,380L209.998,380.001L209.998,178.068C209.998,166.904 215.643,160 224.772,159.998L406.092,159.962C409.529,159.961 413.739,162.524 417.149,166.694C420.559,170.863 422.656,176.011 422.656,180.214L422.656,213.468C422.656,219.626 420.947,224.62 417.745,227.822L379.172,266.395C377.289,268.278 376.609,271.556 377.281,275.51C377.953,279.463 379.922,283.767 382.755,287.474L413.545,327.767C419.235,335.214 422.656,344.061 422.656,351.333L422.656,422.862L366.923,422.869L371.072,375.058L372.305,360.848C372.319,360.699 372.332,360.55 372.344,360.399ZM360.277,196.701L314.978,197.291C311.426,197.337 309.303,200.157 309.462,204.615C309.622,209.073 312.038,214.436 315.738,218.543L329.196,233.485C333.595,238.369 338.865,240.179 341.813,237.82L370.371,214.965C372.613,213.171 372.463,208.69 370.012,204.255C367.56,199.819 363.488,196.659 360.277,196.701Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.39385,0,0,1.39385,25.2846,-499.837)" + ] + [ Svg.circle + [ SvgAttr.cx "370.033" + , SvgAttr.cy "883.522" + , SvgAttr.r "12.565" + , SvgAttr.style "fill:rgb(126,126,126);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.39385,0,0,1.39385,2.10134,-540.366)" + ] + [ Svg.circle + [ SvgAttr.cx "370.033" + , SvgAttr.cy "883.522" + , SvgAttr.r "12.565" + , SvgAttr.style "fill:rgb(126,126,126);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.39385,0,0,1.39385,-21.0054,-499.837)" + ] + [ Svg.circle + [ SvgAttr.cx "370.033" + , SvgAttr.cy "883.522" + , SvgAttr.r "12.565" + , SvgAttr.style "fill:rgb(126,126,126);" + ] + [] + ] + ] + , Svg.g + [ SvgAttr.transform "matrix(1,0,0,1,746.985,2808.15)" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,373.077,489.488)" + ] + [ path + [ SvgAttr.d "M410,379.833C410,379.833 410.056,260.455 410.09,188.088C410.095,176.87 404.503,163.127 395.402,151.992C386.302,140.858 375.063,134.008 365.884,134.002C358.352,133.997 351.428,133.992 346.641,133.989C345.213,133.988 343.47,132.952 342.03,131.25C340.591,129.547 339.658,127.419 339.564,125.619C338.962,114.141 337.955,94.916 337.955,94.916L397.955,94.916C397.955,94.916 537.356,266.295 570.787,307.394C575.207,312.828 580.681,316.175 585.149,316.175C597.174,316.175 620,316.175 620,316.175L620,379.833L560.605,379.833C553.617,379.833 545.056,374.614 538.129,366.13C524.324,349.222 491.306,308.782 480.375,295.394C476.268,290.363 471.189,287.278 467.055,287.302C462.921,287.326 460.361,290.456 460.34,295.511C460.211,327.614 460,379.833 460,379.833L410,379.833Z" + , SvgAttr.style "fill:rgb(212,212,212);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,345.028,514.865)" + ] + [ path + [ SvgAttr.d "M600,253.872C600,256.824 598.525,258.666 596.128,258.709C593.731,258.751 590.774,256.987 588.364,254.078C577.294,240.715 561.273,221.376 553.937,212.52C551.503,209.583 550,205.927 550,202.947C550,184.124 550,116.624 550,116.624L600,116.624L600,253.872Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.70645,0,-0.149774,1.77773,-440.616,-481.127)" + ] + [ path + [ SvgAttr.d "M781.333,624.54L849.897,624.185L836.011,584L781.333,624.54Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + ] + , Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,1092.58,3267.29)" + ] + [ path + [ SvgAttr.d "M128.358,409.275C128.368,417.539 124.19,422.646 117.431,422.632C95.856,422.586 49.907,422.489 49.907,422.489C40.439,422.47 28.16,415.401 18.78,403.921C9.4,392.44 4.327,378.273 4.326,366.706L4.323,260.755L74.344,260.755L74.37,336.128L134.449,336.195C144.333,336.206 150.426,328.705 150.373,316.592L150.031,260.746L200.055,260.862L200.446,422.931C200.446,422.931 176.719,422.875 162.366,422.84C160.154,422.835 157.446,421.179 155.258,418.492C153.07,415.805 151.732,412.494 151.745,409.8C151.808,397.197 151.895,379.981 151.895,379.981C151.895,379.981 145.967,379.997 140.056,380.013C132.805,380.032 128.329,385.536 128.34,394.419C128.346,399.221 128.352,404.551 128.358,409.275Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + ] + ] + + +upRootLarge : Html msg +upRootLarge = + svg + [ SvgAttr.width "100%" + , SvgAttr.height "100%" + , SvgAttr.viewBox "0 0 2093 261" + , SvgAttr.version "1.1" + , SvgAttr.xmlSpace "preserve" + , SvgAttr.style "fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,0,1,-1020.41,-1366.12)" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,0,1,1358.72,809.046)" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,373.077,489.488)" + ] + [ path + [ SvgAttr.d "M410,379.833C410,379.833 410.056,260.455 410.09,188.088C410.095,176.87 404.503,163.127 395.402,151.992C386.302,140.858 375.063,134.008 365.884,134.002C358.352,133.997 351.428,133.992 346.641,133.989C345.213,133.988 343.47,132.952 342.03,131.25C340.591,129.547 339.658,127.419 339.564,125.619C338.962,114.141 337.955,94.916 337.955,94.916L397.955,94.916C397.955,94.916 537.356,266.295 570.787,307.394C575.207,312.828 580.681,316.175 585.149,316.175C597.174,316.175 620,316.175 620,316.175L620,379.833L560.605,379.833C553.617,379.833 545.056,374.614 538.129,366.13C524.324,349.222 491.306,308.782 480.375,295.394C476.268,290.363 471.189,287.278 467.055,287.302C462.921,287.326 460.361,290.456 460.34,295.511C460.211,327.614 460,379.833 460,379.833L410,379.833Z" + , SvgAttr.style "fill:rgb(212,212,212);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,345.028,514.865)" + ] + [ path + [ SvgAttr.d "M600,253.872C600,256.824 598.525,258.666 596.128,258.709C593.731,258.751 590.774,256.987 588.364,254.078C577.294,240.715 561.273,221.376 553.937,212.52C551.503,209.583 550,205.927 550,202.947C550,184.124 550,116.624 550,116.624L600,116.624L600,253.872Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.70645,0,-0.149774,1.77773,-440.616,-481.127)" + ] + [ path + [ SvgAttr.d "M781.333,624.54L849.897,624.185L836.011,584L781.333,624.54Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + ] + , Svg.g + [ SvgAttr.transform "matrix(1,0,0,1,975.131,809.281)" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,338.58,489.488)" + ] + [ path + [ SvgAttr.d "M372.344,360.399C372.693,355.91 371.866,349.371 368.149,340.13C364.701,331.561 359.604,323.609 353.731,317.061L310.917,264.032C300.938,251.338 287.91,242.703 276.931,242.703C265.89,242.703 259.803,251.436 260.112,264.249L260.074,290L260,290L260,317.487C259.859,319.273 259.857,321.16 260,323.133L260,380L209.998,380.001L209.998,178.068C209.998,166.904 215.643,160 224.772,159.998L406.092,159.962C409.529,159.961 413.739,162.524 417.149,166.694C420.559,170.863 422.656,176.011 422.656,180.214L422.656,213.468C422.656,219.626 420.947,224.62 417.745,227.822L379.172,266.395C377.289,268.278 376.609,271.556 377.281,275.51C377.953,279.463 379.922,283.767 382.755,287.474L413.545,327.767C419.235,335.214 422.656,344.061 422.656,351.333L422.656,422.862C410.757,423.856 366.923,422.869 366.923,422.869L371.072,375.058L372.305,360.848C372.319,360.699 372.332,360.55 372.344,360.399ZM360.277,196.701L314.978,197.291C311.426,197.337 309.303,200.157 309.462,204.615C309.622,209.073 312.038,214.436 315.738,218.543L329.196,233.485C333.595,238.369 338.865,240.179 341.813,237.82L370.371,214.965C372.613,213.171 372.463,208.69 370.012,204.255C367.56,199.819 363.488,196.659 360.277,196.701Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.39385,0,0,1.39385,25.2846,-499.837)" + ] + [ Svg.circle + [ SvgAttr.cx "370.033" + , SvgAttr.cy "883.522" + , SvgAttr.r "12.565" + , SvgAttr.style "fill:rgb(126,126,126);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.39385,0,0,1.39385,2.10134,-540.366)" + ] + [ Svg.circle + [ SvgAttr.cx "370.033" + , SvgAttr.cy "883.522" + , SvgAttr.r "12.565" + , SvgAttr.style "fill:rgb(126,126,126);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.39385,0,0,1.39385,-21.0054,-499.837)" + ] + [ Svg.circle + [ SvgAttr.cx "370.033" + , SvgAttr.cy "883.522" + , SvgAttr.r "12.565" + , SvgAttr.style "fill:rgb(126,126,126);" + ] + [] + ] + ] + , Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,1167.41,1268.19)" + ] + [ path + [ SvgAttr.d "M128.358,409.275C128.368,417.539 124.19,422.646 117.431,422.632C95.856,422.586 49.907,422.489 49.907,422.489C40.439,422.47 28.16,415.401 18.78,403.921C9.4,392.44 4.327,378.273 4.326,366.706L4.323,260.755L74.344,260.755L74.37,336.128L134.449,336.195C144.333,336.206 150.426,328.705 150.373,316.592L150.031,260.746L200.055,260.862L200.446,422.931C200.446,422.931 176.719,422.875 162.366,422.84C160.154,422.835 157.446,421.179 155.258,418.492C153.07,415.805 151.732,412.494 151.745,409.8C151.808,397.197 151.895,379.981 151.895,379.981C151.895,379.981 145.967,379.997 140.056,380.013C132.805,380.032 128.329,385.536 128.34,394.419C128.346,399.221 128.352,404.551 128.358,409.275Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.981895,0,-0.581998,0.981895,739.791,1296.26)" + ] + [ path + [ SvgAttr.d "M773.523,268.073C773.523,273.29 771.24,277.482 766.676,280.649C762.577,283.537 757.825,284.981 752.422,284.981L697.086,284.981L697.086,319.077C697.086,324.294 694.804,328.486 690.239,331.654C686.14,334.542 681.389,335.985 675.986,335.985C670.582,335.985 665.831,334.542 661.732,331.654C657.074,328.486 654.745,324.294 654.745,319.077L654.745,174.868C654.745,169.558 657.028,165.319 661.593,162.151C665.692,159.357 670.489,157.959 675.986,157.959L752.422,157.959C757.919,157.959 762.67,159.357 766.676,162.151C771.24,165.319 773.523,169.558 773.523,174.868L773.523,268.073ZM731.182,259.549L731.182,183.112L697.086,183.112L697.086,259.549L731.182,259.549Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.981895,0,-0.581998,0.981895,1206.2,1171.92)" + ] + [ path + [ SvgAttr.d "M760.603,385.172C760.603,390.389 758.321,394.581 753.756,397.748C749.657,400.636 744.906,402.08 739.503,402.08L663.066,402.08C657.663,402.08 652.912,400.636 648.813,397.748C644.155,394.581 641.826,390.389 641.826,385.172L641.826,291.967C641.826,286.657 644.108,282.418 648.673,279.251C652.772,276.456 657.57,275.058 663.066,275.058L739.503,275.058C744.999,275.058 749.75,276.456 753.756,279.251C758.321,282.418 760.603,286.657 760.603,291.967L760.603,385.172ZM718.263,376.648L718.263,300.211L684.167,300.211L684.167,376.648L718.263,376.648Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + , path + [ SvgAttr.d "M901.18,385.172C901.18,390.389 898.897,394.581 894.333,397.748C890.234,400.636 885.482,402.08 880.079,402.08L803.643,402.08C798.239,402.08 793.488,400.636 789.389,397.748C784.731,394.581 782.402,390.389 782.402,385.172L782.402,291.967C782.402,286.657 784.685,282.418 789.25,279.251C793.349,276.456 798.146,275.058 803.643,275.058L880.079,275.058C885.576,275.058 890.327,276.456 894.333,279.251C898.897,282.418 901.18,286.657 901.18,291.967L901.18,385.172ZM858.839,376.648L858.839,300.211L824.743,300.211L824.743,376.648L858.839,376.648Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + , path + [ SvgAttr.d "M1003.75,287.775C1003.75,279.297 999.415,275.058 990.752,275.058L965.739,275.058L965.739,249.486C965.739,244.27 963.41,240.031 958.752,236.77C954.746,233.882 949.855,232.438 944.079,232.438C938.49,232.438 933.692,233.882 929.686,236.77C925.308,240.031 923.119,244.27 923.119,249.486L923.119,385.032C923.119,390.435 925.401,394.674 929.966,397.748C934.065,400.636 938.769,402.08 944.079,402.08C949.669,402.08 954.466,400.636 958.472,397.748C963.317,394.674 965.739,390.435 965.739,385.032L965.739,300.072L990.752,300.072C999.415,300.072 1003.75,295.973 1003.75,287.775Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.981895,0,-0.581998,0.981895,1371.86,1363.66)" + ] + [ path + [ SvgAttr.d "M1109.66,193.253C1109.66,198.469 1107.38,202.662 1102.82,205.829C1098.72,208.717 1093.97,210.161 1088.56,210.161L1012.13,210.161C1006.73,210.161 1001.97,208.717 997.874,205.829C993.217,202.662 990.888,198.469 990.888,193.253L990.888,100.047C990.888,94.737 993.17,90.499 997.735,87.331C1001.83,84.536 1006.63,83.139 1012.13,83.139C1017.62,83.139 1022.38,84.536 1026.38,87.331C1030.95,90.499 1033.23,94.737 1033.23,100.047L1033.23,184.729L1067.32,184.729L1067.32,100.047C1067.32,94.737 1069.61,90.499 1074.17,87.331C1078.18,84.536 1082.97,83.139 1088.56,83.139C1094.06,83.139 1098.81,84.536 1102.82,87.331C1107.38,90.499 1109.66,94.737 1109.66,100.047L1109.66,193.253Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + , path + [ SvgAttr.d "M1212.23,95.855C1212.23,87.378 1207.9,83.139 1199.24,83.139L1174.22,83.139L1174.22,57.567C1174.22,52.35 1171.89,48.111 1167.24,44.851C1163.23,41.963 1158.34,40.519 1152.56,40.519C1146.98,40.519 1142.18,41.963 1138.17,44.851C1133.79,48.111 1131.6,52.35 1131.6,57.567L1131.6,193.113C1131.6,198.516 1133.89,202.755 1138.45,205.829C1142.55,208.717 1147.25,210.161 1152.56,210.161C1158.15,210.161 1162.95,208.717 1166.96,205.829C1171.8,202.755 1174.22,198.516 1174.22,193.113L1174.22,108.152L1199.24,108.152C1207.9,108.152 1212.23,104.053 1212.23,95.855Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + , path + [ SvgAttr.d "M1336.46,100.047C1336.46,105.264 1334.13,109.456 1329.47,112.624C1325.47,115.418 1320.72,116.816 1315.22,116.816C1307.21,116.816 1301.11,113.975 1296.91,108.292L1268.55,108.292L1268.55,193.253C1268.55,198.469 1266.27,202.662 1261.7,205.829C1257.6,208.717 1252.85,210.161 1247.45,210.161C1242.04,210.161 1237.29,208.717 1233.19,205.829C1228.54,202.662 1226.21,198.469 1226.21,193.253L1226.21,100.047C1226.21,94.737 1228.49,90.499 1233.05,87.331C1237.15,84.536 1241.95,83.139 1247.45,83.139L1315.22,83.139C1320.72,83.139 1325.51,84.536 1329.61,87.331C1334.18,90.499 1336.46,94.737 1336.46,100.047Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + , path + [ SvgAttr.d "M1389.42,57.567C1389.42,62.877 1387.14,67.116 1382.57,70.283C1378.57,73.078 1373.82,74.475 1368.32,74.475C1362.82,74.475 1358.03,73.078 1353.93,70.283C1349.36,67.116 1347.08,62.877 1347.08,57.567C1347.08,52.35 1349.36,48.111 1353.93,44.851C1357.93,41.963 1362.73,40.519 1368.32,40.519C1373.82,40.519 1378.57,41.963 1382.57,44.851C1387.14,48.111 1389.42,52.35 1389.42,57.567ZM1389.42,193.253C1389.42,198.469 1387.14,202.662 1382.57,205.829C1378.47,208.717 1373.72,210.161 1368.32,210.161C1362.92,210.161 1358.17,208.717 1354.07,205.829C1349.41,202.662 1347.08,198.469 1347.08,193.253L1347.08,100.047C1347.08,94.737 1349.36,90.499 1353.93,87.331C1358.03,84.536 1362.82,83.139 1368.32,83.139C1373.82,83.139 1378.57,84.536 1382.57,87.331C1387.14,90.499 1389.42,94.737 1389.42,100.047L1389.42,193.253Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + , path + [ SvgAttr.d "M1491.99,95.855C1491.99,87.378 1487.66,83.139 1478.99,83.139L1453.98,83.139L1453.98,57.567C1453.98,52.35 1451.65,48.111 1446.99,44.851C1442.99,41.963 1438.1,40.519 1432.32,40.519C1426.73,40.519 1421.93,41.963 1417.93,44.851C1413.55,48.111 1411.36,52.35 1411.36,57.567L1411.36,193.113C1411.36,198.516 1413.64,202.755 1418.21,205.829C1422.31,208.717 1427.01,210.161 1432.32,210.161C1437.91,210.161 1442.71,208.717 1446.71,205.829C1451.56,202.755 1453.98,198.516 1453.98,193.113L1453.98,108.152L1478.99,108.152C1487.66,108.152 1491.99,104.053 1491.99,95.855Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + , path + [ SvgAttr.d "M1548.3,57.567C1548.3,62.877 1546.02,67.116 1541.45,70.283C1537.45,73.078 1532.7,74.475 1527.2,74.475C1521.71,74.475 1516.91,73.078 1512.81,70.283C1508.24,67.116 1505.96,62.877 1505.96,57.567C1505.96,52.35 1508.24,48.111 1512.81,44.851C1516.82,41.963 1521.61,40.519 1527.2,40.519C1532.7,40.519 1537.45,41.963 1541.45,44.851C1546.02,48.111 1548.3,52.35 1548.3,57.567ZM1548.3,193.253C1548.3,198.469 1546.02,202.662 1541.45,205.829C1537.36,208.717 1532.61,210.161 1527.2,210.161C1521.8,210.161 1517.05,208.717 1512.95,205.829C1508.29,202.662 1505.96,198.469 1505.96,193.253L1505.96,100.047C1505.96,94.737 1508.24,90.499 1512.81,87.331C1516.91,84.536 1521.71,83.139 1527.2,83.139C1532.7,83.139 1537.45,84.536 1541.45,87.331C1546.02,90.499 1548.3,94.737 1548.3,100.047L1548.3,193.253Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + , path + [ SvgAttr.d "M1688.88,193.253C1688.88,198.469 1686.6,202.662 1682.03,205.829C1677.93,208.717 1673.18,210.161 1667.78,210.161L1591.34,210.161C1585.94,210.161 1581.19,208.717 1577.09,205.829C1572.43,202.662 1570.1,198.469 1570.1,193.253L1570.1,100.047C1570.1,94.737 1572.38,90.499 1576.95,87.331C1581.05,84.536 1585.85,83.139 1591.34,83.139L1667.78,83.139C1673.28,83.139 1678.03,84.536 1682.03,87.331C1686.6,90.499 1688.88,94.737 1688.88,100.047L1688.88,193.253ZM1646.54,184.729L1646.54,108.292L1612.44,108.292L1612.44,184.729L1646.54,184.729Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + , path + [ SvgAttr.d "M1829.45,193.253C1829.45,198.469 1827.17,202.662 1822.61,205.829C1818.51,208.717 1813.76,210.161 1808.36,210.161C1802.86,210.161 1798.06,208.763 1793.96,205.969C1789.4,202.708 1787.12,198.469 1787.12,193.253L1787.12,108.292L1753.02,108.292L1753.02,193.253C1753.02,198.469 1750.74,202.662 1746.17,205.829C1742.07,208.717 1737.32,210.161 1731.92,210.161C1726.52,210.161 1721.76,208.717 1717.66,205.829C1713.01,202.662 1710.68,198.469 1710.68,193.253L1710.68,100.047C1710.68,94.737 1712.96,90.499 1717.53,87.331C1721.62,84.536 1726.42,83.139 1731.92,83.139L1808.36,83.139C1813.85,83.139 1818.6,84.536 1822.61,87.331C1827.17,90.499 1829.45,94.737 1829.45,100.047L1829.45,193.253Z" + , SvgAttr.style "fill:rgb(204,102,0);fill-rule:nonzero;" + ] + [] + ] + ] + ] + + +nutriDexLogo : Html msg +nutriDexLogo = + svg + [ SvgAttr.width "100%" + , SvgAttr.height "100%" + , SvgAttr.viewBox "0 0 269 254" + , SvgAttr.version "1.1" + , SvgAttr.xmlSpace "preserve" + , SvgAttr.style "fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;" + ] + [ Svg.g + [ SvgAttr.transform "matrix(1,0,0,1,-3230.36,-2630.73)" + ] + [ Svg.g + [ SvgAttr.transform "matrix(-0.305281,-0.528763,-0.528763,0.305281,4494.3,3752.71)" + ] + [ path + [ SvgAttr.d "M2438.06,573.79L2421.04,607.88" + , SvgAttr.style "fill:none;stroke:rgb(120,60,0);stroke-width:26.21px;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(-0.520336,-0.901248,-0.901248,0.520336,5232.34,4537.46)" + ] + [ path + [ SvgAttr.d "M2384.94,593.791L2428.07,593.791" + , SvgAttr.style "fill:none;stroke:rgb(120,60,0);stroke-width:15.37px;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(-1.46201,0,0,1.46201,6999.63,1413.74)" + ] + [ path + [ SvgAttr.d "M2439.01,851.153L2458.28,851.153" + , SvgAttr.style "fill:none;stroke:rgb(120,60,0);stroke-width:10.94px;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.520336,-0.901248,0.901248,0.520336,1631.94,4537.46)" + ] + [ path + [ SvgAttr.d "M2319.68,627.395C2323.07,629.57 2324.23,634.05 2322.24,637.617L2299.1,678.996C2298.35,680.341 2297.25,681.373 2295.98,682.042L2292.05,675.243L2319.68,627.395Z" + , SvgAttr.style "fill:rgb(120,60,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.520336,-0.901248,0.901248,0.520336,1631.94,4537.46)" + ] + [ path + [ SvgAttr.d "M2344.65,603.881L2362.65,634.203L2338.66,673.941L2384.94,673.941" + , SvgAttr.style "fill:none;stroke:rgb(120,60,0);stroke-width:15.37px;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.46201,0,0,1.46201,-135.345,1413.74)" + ] + [ path + [ SvgAttr.d "M2423.66,877.745L2456.6,877.745" + , SvgAttr.style "fill:none;stroke:rgb(120,60,0);stroke-width:10.94px;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,-0.75827,0.75827,0.437787,1671.21,4250.37)" + ] + [ path + [ SvgAttr.d "M2484.47,812.271C2487.52,814.103 2490.15,816.709 2492.05,820.001C2498.05,830.377 2494.49,843.663 2484.11,849.654C2477.29,853.592 2469.21,853.402 2462.77,849.863L2484.47,812.271ZM2456.98,859.904C2463.26,863.709 2467.46,870.611 2467.46,878.486C2467.46,890.467 2457.74,900.193 2445.76,900.193C2441.96,900.193 2438.38,899.215 2435.28,897.496L2456.98,859.904ZM2429.48,907.537C2435.76,911.342 2439.96,918.243 2439.96,926.117C2439.96,934.544 2435.15,941.856 2428.13,945.452L2417.86,927.666L2429.48,907.537ZM2451.62,832.633C2450.96,824.532 2454.9,816.387 2462.4,812.056C2462.92,811.757 2463.45,811.482 2463.97,811.231L2451.62,832.633ZM2406.34,944.257C2400.44,940.374 2396.55,933.697 2396.55,926.117C2396.55,917.453 2401.64,909.968 2408.98,906.488L2400.88,920.526C2398.33,924.945 2398.33,930.389 2400.88,934.807L2406.34,944.257ZM2424.12,880.266C2424.07,879.679 2424.05,879.086 2424.05,878.486C2424.05,869.824 2429.13,862.34 2436.48,858.859L2424.12,880.266Z" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,-0.75827,0.75827,0.437787,1719.37,4166.96)" + ] + [ Svg.circle + [ SvgAttr.cx "2445.76" + , SvgAttr.cy "878.486" + , SvgAttr.r "21.707" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,0.75827,-0.75827,0.437787,3003.47,457.873)" + ] + [ Svg.circle + [ SvgAttr.cx "2445.76" + , SvgAttr.cy "878.486" + , SvgAttr.r "21.707" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,-0.75827,0.75827,0.437787,1695.29,4208.67)" + ] + [ Svg.circle + [ SvgAttr.cx "2445.76" + , SvgAttr.cy "878.486" + , SvgAttr.r "21.707" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,-0.75827,0.75827,0.437787,1743.45,4208.67)" + ] + [ Svg.circle + [ SvgAttr.cx "2445.76" + , SvgAttr.cy "878.486" + , SvgAttr.r "21.707" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,-0.75827,0.75827,0.437787,1719.37,4250.37)" + ] + [ Svg.circle + [ SvgAttr.cx "2445.76" + , SvgAttr.cy "878.486" + , SvgAttr.r "21.707" + , SvgAttr.style "fill:rgb(204,102,0);" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,2973.17,2613.98)" + ] + [ path + [ SvgAttr.d "M410,379.833C410,379.833 410.056,260.455 410.09,188.088C410.095,176.87 404.503,163.127 395.402,151.992C386.302,140.858 375.063,134.008 365.884,134.002C358.352,133.997 351.428,133.992 346.641,133.989C345.213,133.988 343.47,132.952 342.03,131.25C340.591,129.547 339.658,127.419 339.564,125.619C338.962,114.141 337.955,94.916 337.955,94.916L397.955,94.916C397.955,94.916 537.356,266.295 570.787,307.394C575.207,312.828 580.681,316.175 585.149,316.175C597.174,316.175 620,316.175 620,316.175L620,379.833L560.605,379.833C553.617,379.833 545.056,374.614 538.129,366.13C524.324,349.222 491.306,308.782 480.375,295.394C476.268,290.363 471.189,287.278 467.055,287.302C462.921,287.326 460.361,290.456 460.34,295.511C460.211,327.614 460,379.833 460,379.833L410,379.833Z" + , SvgAttr.style "fill:rgb(212,212,212);" + ] + [] + ] + ] + ] + + +home : SvgTypes.OuterPart msg -> Element msg +home inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 576 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c0 2.7-.2 5.4-.5 8.1l0 16.2c0 22.1-17.9 40-40 40l-16 0c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1L416 512l-24 0c-22.1 0-40-17.9-40-40l0-24 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z" + ] + [] + ] + } + + +services : SvgTypes.OuterPart msg -> Element msg +services inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 512 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M78.6 5C69.1-2.4 55.6-1.5 47 7L7 47c-8.5 8.5-9.4 22-2.1 31.6l80 104c4.5 5.9 11.6 9.4 19 9.4l54.1 0 109 109c-14.7 29-10 65.4 14.3 89.6l112 112c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-112-112c-24.2-24.2-60.6-29-89.6-14.3l-109-109 0-54.1c0-7.5-3.5-14.5-9.4-19L78.6 5zM19.9 396.1C7.2 408.8 0 426.1 0 444.1C0 481.6 30.4 512 67.9 512c18 0 35.3-7.2 48-19.9L233.7 374.3c-7.8-20.9-9-43.6-3.6-65.1l-61.7-61.7L19.9 396.1zM512 144c0-10.5-1.1-20.7-3.2-30.5c-2.4-11.2-16.1-14.1-24.2-6l-63.9 63.9c-3 3-7.1 4.7-11.3 4.7L352 176c-8.8 0-16-7.2-16-16l0-57.4c0-4.2 1.7-8.3 4.7-11.3l63.9-63.9c8.1-8.1 5.2-21.8-6-24.2C388.7 1.1 378.5 0 368 0C288.5 0 224 64.5 224 144l0 .8 85.3 85.3c36-9.1 75.8 .5 104 28.7L429 274.5c49-23 83-72.8 83-130.5zM56 432a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z" + ] + [] + ] + } + + +hyperBlog : SvgTypes.OuterPart msg -> Element msg +hyperBlog inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 448 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M248 106.6c18.9-9 32-28.3 32-50.6c0-30.9-25.1-56-56-56s-56 25.1-56 56c0 22.3 13.1 41.6 32 50.6l0 98.8c-2.8 1.3-5.5 2.9-8 4.7l-80.1-45.8c1.6-20.8-8.6-41.6-27.9-52.8C57.2 96 23 105.2 7.5 132S1.2 193 28 208.5c1.3 .8 2.6 1.5 4 2.1l0 90.8c-1.3 .6-2.7 1.3-4 2.1C1.2 319-8 353.2 7.5 380S57.2 416 84 400.5c19.3-11.1 29.4-32 27.8-52.8l50.5-28.9c-11.5-11.2-19.9-25.6-23.8-41.7L88 306.1c-2.6-1.8-5.2-3.3-8-4.7l0-90.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-.1 1.4-.2 2.8-.2 4.3c0 22.3 13.1 41.6 32 50.6l0 98.8c-18.9 9-32 28.3-32 50.6c0 30.9 25.1 56 56 56s56-25.1 56-56c0-22.3-13.1-41.6-32-50.6l0-98.8c2.8-1.3 5.5-2.9 8-4.7l80.1 45.8c-1.6 20.8 8.6 41.6 27.8 52.8c26.8 15.5 61 6.3 76.5-20.5s6.3-61-20.5-76.5c-1.3-.8-2.7-1.5-4-2.1l0-90.8c1.4-.6 2.7-1.3 4-2.1c26.8-15.5 36-49.7 20.5-76.5S390.8 96 364 111.5c-19.3 11.1-29.4 32-27.8 52.8l-50.6 28.9c11.5 11.2 19.9 25.6 23.8 41.7L360 205.9c2.6 1.8 5.2 3.3 8 4.7l0 90.8c-2.8 1.3-5.5 2.9-8 4.6l-80.1-45.8c.1-1.4 .2-2.8 .2-4.3c0-22.3-13.1-41.6-32-50.6l0-98.8z" + ] + [] + ] + } + + +video : SvgTypes.OuterPart msg -> Element msg +video inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 512 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M0 96C0 60.7 28.7 32 64 32l384 0c35.3 0 64 28.7 64 64l0 320c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM48 368l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 240l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm368-16c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM48 112l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16L64 96c-8.8 0-16 7.2-16 16zM416 96c-8.8 0-16 7.2-16 16l0 32c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l0-32c0-8.8-7.2-16-16-16l-32 0zM160 128l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32L192 96c-17.7 0-32 14.3-32 32zm32 160c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-64c0-17.7-14.3-32-32-32l-128 0z" + ] + [] + ] + } + + +journal : SvgTypes.OuterPart msg -> Element msg +journal inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 512 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M352 0c41 0 80.3 16.3 109.2 45.2l5.5 5.5c29 29 45.3 68.3 45.3 109.2 0 24.1-5.7 47.6-16.2 68.8-1.9 3.7-5.3 6.5-9.3 7.7L374.5 270c-3.9 1.2-6.5 4.7-6.5 8.8 0 5.1 4.1 9.2 9.2 9.2l32.2 0c14.3 0 21.4 17.2 11.3 27.3l-22.4 22.4c-1.9 1.9-4.2 3.2-6.7 4l-81 24.3c-3.9 1.2-6.5 4.7-6.5 8.8 0 5.1 4.1 9.2 9.2 9.2 13.2 0 18.9 15.7 7.8 22.9-41.1 26.6-89.3 41.1-139 41.1l-86 0-48 48c-8.8 8.8-23.2 8.8-32 0s-8.8-23.2 0-32L256 224c8.8-8.8 8.8-23.2 0-32s-23.2-8.8-32 0L79.5 336.5c-5.7 5.7-15.5 1.7-15.5-6.4 0-67.9 27-133 75-181L242.8 45.2C271.7 16.3 311 0 352 0z" + ] + [] + ] + } + + +source : SvgTypes.OuterPart msg -> Element msg +source inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 448 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M80 104a24 24 0 1 0 0-48 24 24 0 1 0 0 48zm80-24c0 32.8-19.7 61-48 73.3l0 87.8c18.8-10.9 40.7-17.1 64-17.1l96 0c35.3 0 64-28.7 64-64l0-6.7C307.7 141 288 112.8 288 80c0-44.2 35.8-80 80-80s80 35.8 80 80c0 32.8-19.7 61-48 73.3l0 6.7c0 70.7-57.3 128-128 128l-96 0c-35.3 0-64 28.7-64 64l0 6.7c28.3 12.3 48 40.5 48 73.3c0 44.2-35.8 80-80 80s-80-35.8-80-80c0-32.8 19.7-61 48-73.3l0-6.7 0-198.7C19.7 141 0 112.8 0 80C0 35.8 35.8 0 80 0s80 35.8 80 80zm232 0a24 24 0 1 0 -48 0 24 24 0 1 0 48 0zM80 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z" + ] + [] + ] + } + + +debate : SvgTypes.OuterPart msg -> Element msg +debate inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 512 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M256 0c4.6 0 9.2 1 13.4 2.9L457.7 82.8c22 9.3 38.4 31 38.3 57.2c-.5 99.2-41.3 280.7-213.6 363.2c-16.7 8-36.1 8-52.8 0C57.3 420.7 16.5 239.2 16 140c-.1-26.2 16.3-47.9 38.3-57.2L242.7 2.9C246.8 1 251.4 0 256 0zm0 66.8l0 378.1C394 378 431.1 230.1 432 141.4L256 66.8s0 0 0 0z" + ] + [] + ] + } + + +nutriDex : SvgTypes.OuterPart msg -> Element msg +nutriDex inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 269 254" + , SvgAttr.fill "currentColor" + + -- , SvgAttr.width "100%" + -- , SvgAttr.height "100%" + , SvgAttr.viewBox "0 0 269 254" + , SvgAttr.version "1.1" + , SvgAttr.xmlSpace "preserve" + , SvgAttr.style "fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;" + ] + , svg = + [ Svg.g + [ SvgAttr.transform "matrix(1,0,0,1,-3213.08,-2929.6)" + ] + [ Svg.g + [ SvgAttr.transform "matrix(-0.305281,-0.528763,-0.528763,0.305281,4477.01,4051.59)" + ] + [ path + [ SvgAttr.d "M2438.06,573.79L2421.04,607.88" + , SvgAttr.stroke "currentColor" + , SvgAttr.fill "none" + , SvgAttr.style "stroke-width:26.21px;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(-0.520336,-0.901248,-0.901248,0.520336,5215.05,4836.33)" + ] + [ path + [ SvgAttr.d "M2384.94,593.791L2428.07,593.791" + , SvgAttr.fill "none" + , SvgAttr.stroke "currentColor" + , SvgAttr.style "stroke-width:15.37px;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(-1.46201,0,0,1.46201,6982.34,1712.61)" + ] + [ path + [ SvgAttr.d "M2439.01,851.153L2458.28,851.153" + , SvgAttr.fill "none" + , SvgAttr.stroke "currentColor" + , SvgAttr.style "stroke-width:10.94px;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.520336,-0.901248,0.901248,0.520336,1614.66,4836.33)" + ] + [ path + [ SvgAttr.d "M2319.68,627.395C2323.07,629.57 2324.23,634.05 2322.24,637.617L2299.1,678.996C2298.35,680.341 2297.25,681.373 2295.98,682.042L2292.05,675.243L2319.68,627.395Z" + , SvgAttr.fill "currentColor" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.520336,-0.901248,0.901248,0.520336,1614.66,4836.33)" + ] + [ path + [ SvgAttr.d "M2344.65,603.881L2362.65,634.203L2338.66,673.941L2384.94,673.941" + , SvgAttr.fill "none" + , SvgAttr.stroke "currentColor" + , SvgAttr.style "stroke-width:15.37px;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1.46201,0,0,1.46201,-152.629,1712.61)" + ] + [ path + [ SvgAttr.d "M2423.66,877.745L2456.6,877.745" + , SvgAttr.fill "none" + , SvgAttr.stroke "currentColor" + , SvgAttr.style "stroke-width:10.94px;" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,-0.75827,0.75827,0.437787,1653.93,4549.24)" + ] + [ path + [ SvgAttr.d "M2484.47,812.271C2487.52,814.103 2490.15,816.709 2492.05,820.001C2498.05,830.377 2494.49,843.663 2484.11,849.654C2477.29,853.592 2469.21,853.402 2462.77,849.863L2484.47,812.271ZM2456.98,859.904C2463.26,863.709 2467.46,870.611 2467.46,878.486C2467.46,890.467 2457.74,900.193 2445.76,900.193C2441.96,900.193 2438.38,899.215 2435.28,897.496L2456.98,859.904ZM2429.48,907.537C2435.76,911.342 2439.96,918.243 2439.96,926.117C2439.96,934.544 2435.15,941.856 2428.13,945.452L2417.86,927.666L2429.48,907.537ZM2451.62,832.633C2450.96,824.532 2454.9,816.387 2462.4,812.056C2462.92,811.757 2463.45,811.482 2463.97,811.231L2451.62,832.633ZM2406.34,944.257C2400.44,940.374 2396.55,933.697 2396.55,926.117C2396.55,917.453 2401.64,909.968 2408.98,906.488L2400.88,920.526C2398.33,924.945 2398.33,930.389 2400.88,934.807L2406.34,944.257ZM2424.12,880.266C2424.07,879.679 2424.05,879.086 2424.05,878.486C2424.05,869.824 2429.13,862.34 2436.48,858.859L2424.12,880.266Z" + , SvgAttr.fill "currentColor" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,-0.75827,0.75827,0.437787,1702.08,4465.83)" + ] + [ Svg.circle + [ SvgAttr.cx "2445.76" + , SvgAttr.cy "878.486" + , SvgAttr.r "21.707" + , SvgAttr.fill "currentColor" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,0.75827,-0.75827,0.437787,2986.19,756.746)" + ] + [ Svg.circle + [ SvgAttr.cx "2445.76" + , SvgAttr.cy "878.486" + , SvgAttr.r "21.707" + , SvgAttr.fill "currentColor" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,-0.75827,0.75827,0.437787,1678.01,4507.54)" + ] + [ Svg.circle + [ SvgAttr.cx "2445.76" + , SvgAttr.cy "878.486" + , SvgAttr.r "21.707" + , SvgAttr.fill "currentColor" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,-0.75827,0.75827,0.437787,1726.16,4507.54)" + ] + [ Svg.circle + [ SvgAttr.cx "2445.76" + , SvgAttr.cy "878.486" + , SvgAttr.r "21.707" + , SvgAttr.fill "currentColor" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(0.437787,-0.75827,0.75827,0.437787,1702.08,4549.24)" + ] + [ Svg.circle + [ SvgAttr.cx "2445.76" + , SvgAttr.cy "878.486" + , SvgAttr.r "21.707" + , SvgAttr.fill "currentColor" + ] + [] + ] + , Svg.g + [ SvgAttr.transform "matrix(1,0,-0.402297,0.712005,2955.89,2912.86)" + ] + [ path + [ SvgAttr.d "M410,379.833C410,379.833 410.056,260.455 410.09,188.088C410.095,176.87 404.503,163.127 395.402,151.992C386.302,140.858 375.063,134.008 365.884,134.002C358.352,133.997 351.428,133.992 346.641,133.989C345.213,133.988 343.47,132.952 342.03,131.25C340.591,129.547 339.658,127.419 339.564,125.619C338.962,114.141 337.955,94.916 337.955,94.916L397.955,94.916C397.955,94.916 537.356,266.295 570.787,307.394C575.207,312.828 580.681,316.175 585.149,316.175C597.174,316.175 620,316.175 620,316.175L620,379.833L560.605,379.833C553.617,379.833 545.056,374.614 538.129,366.13C524.324,349.222 491.306,308.782 480.375,295.394C476.268,290.363 471.189,287.278 467.055,287.302C462.921,287.326 460.361,290.456 460.34,295.511C460.211,327.614 460,379.833 460,379.833L410,379.833Z" + , SvgAttr.fill "currentColor" + ] + [] + ] + ] + ] + } + + +interviews : SvgTypes.OuterPart msg -> Element msg +interviews inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 640 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 38.6 14.7 74.3 39.6 103.4c-3.5 9.4-8.7 17.7-14.2 24.7c-4.8 6.2-9.7 11-13.3 14.3c-1.8 1.6-3.3 2.9-4.3 3.7c-.5 .4-.9 .7-1.1 .8l-.2 .2s0 0 0 0s0 0 0 0C1 327.2-1.4 334.4 .8 340.9S9.1 352 16 352c21.8 0 43.8-5.6 62.1-12.5c9.2-3.5 17.8-7.4 25.2-11.4C134.1 343.3 169.8 352 208 352zM448 176c0 112.3-99.1 196.9-216.5 207C255.8 457.4 336.4 512 432 512c38.2 0 73.9-8.7 104.7-23.9c7.5 4 16 7.9 25.2 11.4c18.3 6.9 40.3 12.5 62.1 12.5c6.9 0 13.1-4.5 15.2-11.1c2.1-6.6-.2-13.8-5.8-17.9c0 0 0 0 0 0s0 0 0 0l-.2-.2c-.2-.2-.6-.4-1.1-.8c-1-.8-2.5-2-4.3-3.7c-3.6-3.3-8.5-8.1-13.3-14.3c-5.5-7-10.7-15.4-14.2-24.7c24.9-29 39.6-64.7 39.6-103.4c0-92.8-84.9-168.9-192.6-175.5c.4 5.1 .6 10.3 .6 15.5z" + ] + [] + ] + } + + +donate : SvgTypes.OuterPart msg -> Element msg +donate inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 576 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M64 32C28.7 32 0 60.7 0 96l0 32 576 0 0-32c0-35.3-28.7-64-64-64L64 32zM576 224L0 224 0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-192zM112 352l64 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm112 16c0-8.8 7.2-16 16-16l128 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-128 0c-8.8 0-16-7.2-16-16z" + ] + [] + ] + } + + +contact : SvgTypes.OuterPart msg -> Element msg +contact inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 512 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M215.4 96L144 96l-36.2 0L96 96l0 8.8L96 144l0 40.4 0 89L.2 202.5c1.6-18.1 10.9-34.9 25.7-45.8L48 140.3 48 96c0-26.5 21.5-48 48-48l76.6 0 49.9-36.9C232.2 3.9 243.9 0 256 0s23.8 3.9 33.5 11L339.4 48 416 48c26.5 0 48 21.5 48 48l0 44.3 22.1 16.4c14.8 10.9 24.1 27.7 25.7 45.8L416 273.4l0-89 0-40.4 0-39.2 0-8.8-11.8 0L368 96l-71.4 0-81.3 0zM0 448L0 242.1 217.6 403.3c11.1 8.2 24.6 12.7 38.4 12.7s27.3-4.4 38.4-12.7L512 242.1 512 448s0 0 0 0c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64c0 0 0 0 0 0zM176 160l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16zm0 64l160 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-160 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z" + ] + [] + ] + } + + +gitlab : SvgTypes.OuterPart msg -> Element msg +gitlab inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 512 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M503.5 204.6L502.8 202.8L433.1 21C431.7 17.5 429.2 14.4 425.9 12.4C423.5 10.8 420.8 9.9 417.9 9.6C415 9.3 412.2 9.7 409.5 10.7C406.8 11.7 404.4 13.3 402.4 15.5C400.5 17.6 399.1 20.1 398.3 22.9L351.3 166.9H160.8L113.7 22.9C112.9 20.1 111.5 17.6 109.6 15.5C107.6 13.4 105.2 11.7 102.5 10.7C99.9 9.7 97 9.3 94.1 9.6C91.3 9.9 88.5 10.8 86.1 12.4C82.8 14.4 80.3 17.5 78.9 21L9.3 202.8L8.5 204.6C-1.5 230.8-2.7 259.6 5 286.6C12.8 313.5 29.1 337.3 51.5 354.2L51.7 354.4L52.3 354.8L158.3 434.3L210.9 474L242.9 498.2C246.6 500.1 251.2 502.5 255.9 502.5C260.6 502.5 265.2 500.1 268.9 498.2L300.9 474L353.5 434.3L460.2 354.4L460.5 354.1C482.9 337.2 499.2 313.5 506.1 286.6C514.7 259.6 513.5 230.8 503.5 204.6z" + ] + [] + ] + } + + +twitter : SvgTypes.OuterPart msg -> Element msg +twitter inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 512 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z" + ] + [] + ] + } + + +mastodon : SvgTypes.OuterPart msg -> Element msg +mastodon inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 448 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M433 179.1c0-97.2-63.7-125.7-63.7-125.7-62.5-28.7-228.6-28.4-290.5 0 0 0-63.7 28.5-63.7 125.7 0 115.7-6.6 259.4 105.6 289.1 40.5 10.7 75.3 13 103.3 11.4 50.8-2.8 79.3-18.1 79.3-18.1l-1.7-36.9s-36.3 11.4-77.1 10.1c-40.4-1.4-83-4.4-89.6-54a102.5 102.5 0 0 1 -.9-13.9c85.6 20.9 158.7 9.1 178.8 6.7 56.1-6.7 105-41.3 111.2-72.9 9.8-49.8 9-121.5 9-121.5zm-75.1 125.2h-46.6v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.3V197c0-58.5-64-56.6-64-6.9v114.2H90.2c0-122.1-5.2-147.9 18.4-175 25.9-28.9 79.8-30.8 103.8 6.1l11.6 19.5 11.6-19.5c24.1-37.1 78.1-34.8 103.8-6.1 23.7 27.3 18.4 53 18.4 175z" + ] + [] + ] + } + + +discord : SvgTypes.OuterPart msg -> Element msg +discord inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 640 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M524.5 69.8a1.5 1.5 0 0 0 -.8-.7A485.1 485.1 0 0 0 404.1 32a1.8 1.8 0 0 0 -1.9 .9 337.5 337.5 0 0 0 -14.9 30.6 447.8 447.8 0 0 0 -134.4 0 309.5 309.5 0 0 0 -15.1-30.6 1.9 1.9 0 0 0 -1.9-.9A483.7 483.7 0 0 0 116.1 69.1a1.7 1.7 0 0 0 -.8 .7C39.1 183.7 18.2 294.7 28.4 404.4a2 2 0 0 0 .8 1.4A487.7 487.7 0 0 0 176 479.9a1.9 1.9 0 0 0 2.1-.7A348.2 348.2 0 0 0 208.1 430.4a1.9 1.9 0 0 0 -1-2.6 321.2 321.2 0 0 1 -45.9-21.9 1.9 1.9 0 0 1 -.2-3.1c3.1-2.3 6.2-4.7 9.1-7.1a1.8 1.8 0 0 1 1.9-.3c96.2 43.9 200.4 43.9 295.5 0a1.8 1.8 0 0 1 1.9 .2c2.9 2.4 6 4.9 9.1 7.2a1.9 1.9 0 0 1 -.2 3.1 301.4 301.4 0 0 1 -45.9 21.8 1.9 1.9 0 0 0 -1 2.6 391.1 391.1 0 0 0 30 48.8 1.9 1.9 0 0 0 2.1 .7A486 486 0 0 0 610.7 405.7a1.9 1.9 0 0 0 .8-1.4C623.7 277.6 590.9 167.5 524.5 69.8zM222.5 337.6c-29 0-52.8-26.6-52.8-59.2S193.1 219.1 222.5 219.1c29.7 0 53.3 26.8 52.8 59.2C275.3 311 251.9 337.6 222.5 337.6zm195.4 0c-29 0-52.8-26.6-52.8-59.2S388.4 219.1 417.9 219.1c29.7 0 53.3 26.8 52.8 59.2C470.7 311 447.5 337.6 417.9 337.6z" + ] + [] + ] + } + + +lock : SvgTypes.OuterPart msg -> Element msg +lock inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 448 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z" + ] + [] + ] + } + + +circleX : SvgTypes.OuterPart msg -> Element msg +circleX inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 512 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z" + ] + [] + ] + } + + +line : SvgTypes.OuterPart msg -> Element msg +line inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 448 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z" + ] + [] + ] + } + + +circleDots : SvgTypes.OuterPart msg -> Element msg +circleDots inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 448 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z" + ] + [] + ] + } + + +construction : Html msg +construction = + svg + [ SvgAttr.viewBox "0 0 576 512" + , SvgAttr.fill "currentColor" + ] + [ path + [ SvgAttr.d "M208 64a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM9.8 214.8c5.1-12.2 19.1-18 31.4-12.9L60.7 210l22.9-38.1C99.9 144.6 129.3 128 161 128c51.4 0 97 32.9 113.3 81.7l34.6 103.7 79.3 33.1 34.2-45.6c6.4-8.5 16.6-13.3 27.2-12.8s20.3 6.4 25.8 15.5l96 160c5.9 9.9 6.1 22.2 .4 32.2s-16.3 16.2-27.8 16.2l-256 0c-11.1 0-21.4-5.7-27.2-15.2s-6.4-21.2-1.4-31.1l16-32c5.4-10.8 16.5-17.7 28.6-17.7l32 0 22.5-30L22.8 246.2c-12.2-5.1-18-19.1-12.9-31.4zm82.8 91.8l112 48c11.8 5 19.4 16.6 19.4 29.4l0 96c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-74.9-60.6-26-37 111c-5.6 16.8-23.7 25.8-40.5 20.2S-3.9 486.6 1.6 469.9l48-144 11-33 32 13.7z" + ] + [] + ] + + +leaving : SvgTypes.OuterPart msg -> Element msg +leaving inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 576 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3l0 82.7c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 32C35.8 32 0 67.8 0 112L0 432c0 44.2 35.8 80 80 80l320 0c44.2 0 80-35.8 80-80l0-112c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 112c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-320c0-8.8 7.2-16 16-16l112 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 32z" + ] + [] + ] + } + + +copyLink : SvgTypes.OuterPart msg -> Element msg +copyLink inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 640 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z" + ] + [] + ] + } + + +code : SvgTypes.OuterPart msg -> Element msg +code inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 640 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3L562.7 256l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z" + ] + [] + ] + } + + +thumbsUp : SvgTypes.OuterPart msg -> Element msg +thumbsUp inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 512 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M323.8 34.8c-38.2-10.9-78.1 11.2-89 49.4l-5.7 20c-3.7 13-10.4 25-19.5 35l-51.3 56.4c-8.9 9.8-8.2 25 1.6 33.9s25 8.2 33.9-1.6l51.3-56.4c14.1-15.5 24.4-34 30.1-54.1l5.7-20c3.6-12.7 16.9-20.1 29.7-16.5s20.1 16.9 16.5 29.7l-5.7 20c-5.7 19.9-14.7 38.7-26.6 55.5c-5.2 7.3-5.8 16.9-1.7 24.9s12.3 13 21.3 13L448 224c8.8 0 16 7.2 16 16c0 6.8-4.3 12.7-10.4 15c-7.4 2.8-13 9-14.9 16.7s.1 15.8 5.3 21.7c2.5 2.8 4 6.5 4 10.6c0 7.8-5.6 14.3-13 15.7c-8.2 1.6-15.1 7.3-18 15.2s-1.6 16.7 3.6 23.3c2.1 2.7 3.4 6.1 3.4 9.9c0 6.7-4.2 12.6-10.2 14.9c-11.5 4.5-17.7 16.9-14.4 28.8c.4 1.3 .6 2.8 .6 4.3c0 8.8-7.2 16-16 16l-97.5 0c-12.6 0-25-3.7-35.5-10.7l-61.7-41.1c-11-7.4-25.9-4.4-33.3 6.7s-4.4 25.9 6.7 33.3l61.7 41.1c18.4 12.3 40 18.8 62.1 18.8l97.5 0c34.7 0 62.9-27.6 64-62c14.6-11.7 24-29.7 24-50c0-4.5-.5-8.8-1.3-13c15.4-11.7 25.3-30.2 25.3-51c0-6.5-1-12.8-2.8-18.7C504.8 273.7 512 257.7 512 240c0-35.3-28.6-64-64-64l-92.3 0c4.7-10.4 8.7-21.2 11.8-32.2l5.7-20c10.9-38.2-11.2-78.1-49.4-89zM32 192c-17.7 0-32 14.3-32 32L0 448c0 17.7 14.3 32 32 32l64 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32l-64 0z" + ] + [] + ] + } + + +thumbsDown : SvgTypes.OuterPart msg -> Element msg +thumbsDown inner = + HeSvg.buildSvg inner + { svgAttributes = + [ SvgAttr.viewBox "0 0 640 512" + , SvgAttr.fill "currentColor" + ] + , svg = + [ path + [ SvgAttr.d "M323.8 477.2c-38.2 10.9-78.1-11.2-89-49.4l-5.7-20c-3.7-13-10.4-25-19.5-35l-51.3-56.4c-8.9-9.8-8.2-25 1.6-33.9s25-8.2 33.9 1.6l51.3 56.4c14.1 15.5 24.4 34 30.1 54.1l5.7 20c3.6 12.7 16.9 20.1 29.7 16.5s20.1-16.9 16.5-29.7l-5.7-20c-5.7-19.9-14.7-38.7-26.6-55.5c-5.2-7.3-5.8-16.9-1.7-24.9s12.3-13 21.3-13L448 288c8.8 0 16-7.2 16-16c0-6.8-4.3-12.7-10.4-15c-7.4-2.8-13-9-14.9-16.7s.1-15.8 5.3-21.7c2.5-2.8 4-6.5 4-10.6c0-7.8-5.6-14.3-13-15.7c-8.2-1.6-15.1-7.3-18-15.2s-1.6-16.7 3.6-23.3c2.1-2.7 3.4-6.1 3.4-9.9c0-6.7-4.2-12.6-10.2-14.9c-11.5-4.5-17.7-16.9-14.4-28.8c.4-1.3 .6-2.8 .6-4.3c0-8.8-7.2-16-16-16l-97.5 0c-12.6 0-25 3.7-35.5 10.7l-61.7 41.1c-11 7.4-25.9 4.4-33.3-6.7s-4.4-25.9 6.7-33.3l61.7-41.1c18.4-12.3 40-18.8 62.1-18.8L384 32c34.7 0 62.9 27.6 64 62c14.6 11.7 24 29.7 24 50c0 4.5-.5 8.8-1.3 13c15.4 11.7 25.3 30.2 25.3 51c0 6.5-1 12.8-2.8 18.7C504.8 238.3 512 254.3 512 272c0 35.3-28.6 64-64 64l-92.3 0c4.7 10.4 8.7 21.2 11.8 32.2l5.7 20c10.9 38.2-11.2 78.1-49.4 89zM32 384c-17.7 0-32-14.3-32-32L0 128c0-17.7 14.3-32 32-32l64 0c17.7 0 32 14.3 32 32l0 224c0 17.7-14.3 32-32 32l-64 0z" + ] + [] + ] + } diff --git a/packages/website/frontend/src/Config/Style/Icons/Types.elm b/packages/website/frontend/src/Config/Style/Icons/Types.elm new file mode 100755 index 0000000..78633a7 --- /dev/null +++ b/packages/website/frontend/src/Config/Style/Icons/Types.elm @@ -0,0 +1,28 @@ +module Config.Style.Icons.Types exposing + ( InnerPart + , OuterPart + ) + +{-| The types used for SVG management. +-} + +import Element exposing (Attribute) +import Shared exposing (Model) +import Svg exposing (svg) + + +{-| The outer record for the SVG builder. This is explained in ../Helpers/Svg.elm. +-} +type alias OuterPart msg = + { elementAttributes : List (Element.Attribute msg) + , sharedModel : Shared.Model + , svgAttributes : List (Svg.Attribute msg) + } + + +{-| The inner record for the SVG builder. This is explained in ../Helpers/Svg.elm. +-} +type alias InnerPart msg = + { svgAttributes : List (Svg.Attribute msg) + , svg : List (Svg.Svg msg) + } diff --git a/packages/website/frontend/src/Config/Style/Images.elm b/packages/website/frontend/src/Config/Style/Images.elm new file mode 100755 index 0000000..530669f --- /dev/null +++ b/packages/website/frontend/src/Config/Style/Images.elm @@ -0,0 +1,95 @@ +module Config.Style.Images exposing + ( ElementSize(..) + , imageSizer + , imageSquareMaker + , roundingScaler + ) + +import Config.Data.ImageFolders + exposing + ( ImageFolder(..) + , imagePathMaker + ) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , colourTheme + , getThemeColor + ) +import Element as E + exposing + ( Device + , Element + , Length + , clip + , fill + , height + , image + , px + , rgb255 + , width + ) +import Element.Background as B exposing (color) +import Element.Border as D + exposing + ( color + , rounded + , width + ) + + +imageSquareMaker : Device -> String -> Bool -> ElementSize -> Element msg +imageSquareMaker device imagePath isLeft size = + E.image + [ D.rounded (roundingScaler size) + , clip + , E.width <| imageSizer size + , E.height <| imageSizer size + , if imagePath == imagePathMaker Donate "cardano" then + B.color (rgb255 4 20 108) + + else + B.color (getThemeColor BackgroundLightGrey) + ] + { src = imagePath + , description = "" + } + + +imageSizer : ElementSize -> Length +imageSizer size = + case size of + Fill -> + fill + + Big -> + px 128 + + Medium -> + px 65 + + Small -> + px 20 + + +roundingScaler : ElementSize -> Int +roundingScaler size = + case size of + Fill -> + 32 + + Big -> + 32 + + Medium -> + 10 + + Small -> + 10 + + +type ElementSize + = Fill + | Big + | Medium + | Small diff --git a/packages/website/frontend/src/Config/Style/Transitions.elm b/packages/website/frontend/src/Config/Style/Transitions.elm new file mode 100755 index 0000000..9d11432 --- /dev/null +++ b/packages/website/frontend/src/Config/Style/Transitions.elm @@ -0,0 +1,69 @@ +module Config.Style.Transitions exposing (..) + +import Config.Style.Colour.Helpers exposing (colourTheme) +import Config.Style.Glow + exposing + ( glowDeepDarkGrey + , glowDeepDarkOrange + ) +import Element + exposing + ( Attribute + , htmlAttribute + , mouseOver + ) +import Element.Background as B exposing (color) +import Element.Border as D exposing (color) +import Element.Font as F exposing (color) +import Html.Attributes as H exposing (style) + + +transitionStyleSlow : Attribute msg +transitionStyleSlow = + htmlAttribute <| style "transition" "all 0.4s ease-in-out" + + +transitionStyleMedium : Attribute msg +transitionStyleMedium = + htmlAttribute <| style "transition" "all 0.2s ease-in-out" + + +transitionStyleFast : Attribute msg +transitionStyleFast = + htmlAttribute <| style "transition" "all 0.1s ease-in-out" + + +specialNavbarTransition : Attribute msg +specialNavbarTransition = + htmlAttribute <| style "transition" "opacity .4s" + + + +-- This special transition is needed to avoid weird animation sequencing rather in Chrome-based browsers. + + +hoverFontLightOrange : Attribute msg +hoverFontLightOrange = + mouseOver [ F.color colourTheme.textLightOrange ] + + +hoverFontDarkOrange : Attribute msg +hoverFontDarkOrange = + mouseOver [ F.color colourTheme.textDarkOrange ] + + +hoverCircleButtonDarkOrange : Attribute msg +hoverCircleButtonDarkOrange = + mouseOver + [ D.color colourTheme.textDarkOrange + , B.color colourTheme.textDarkOrange + , glowDeepDarkOrange + ] + + +hoverPageButtonDeepDarkOrange : Attribute msg +hoverPageButtonDeepDarkOrange = + mouseOver + [ B.color colourTheme.textDeepDarkOrange + , F.color colourTheme.textLightOrange + ] diff --git a/packages/website/frontend/src/Disabled/Gibberish.elm b/packages/website/frontend/src/Disabled/Gibberish.elm new file mode 100755 index 0000000..8044c20 --- /dev/null +++ b/packages/website/frontend/src/Disabled/Gibberish.elm @@ -0,0 +1,330 @@ +module Pages.Debate.Gibberish exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Data.ImageFolders as M exposing (ImageFolder(..), imagePathMaker) +import Config.Helpers.Cards.Inner.StrengthBar + exposing + ( barMaker + , barPadding + ) +import Config.Helpers.Cards.Inner.Text exposing (detailBodyMaker, detailFormat, detailTitleMaker, listMaker, listMaker2, numberedListItem) +import Config.Helpers.Cards.Inner.ToolTip + exposing + ( ToolTipPosition(..) + , tooltip + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Converters exposing (toTitleCase) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (gibberishHeader) +import Config.Helpers.Headers.Types as R exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Debate.Arguments.Types exposing (Argument) +import Config.Pages.Debate.Gibberish.List exposing (gibberishList) +import Config.Pages.Debate.Gibberish.Records.Epistemology exposing (epistemologyGibberish) +import Config.Pages.Debate.Gibberish.Records.Metaphysics exposing (metaphysicsGibberish) +import Config.Pages.Debate.Gibberish.Records.Normativity exposing (normativityGibberish) +import Config.Pages.Debate.Gibberish.Records.Ontology exposing (ontologyGibberish) +import Config.Pages.Debate.Gibberish.Records.PhilOfLanguage exposing (philOfLanguageGibberish) +import Config.Pages.Debate.Gibberish.Records.PhilOfMind exposing (philOfMindGibberish) +import Config.Pages.Debate.Gibberish.Records.Theology exposing (theologyGibberish) +import Config.Pages.Debate.Gibberish.Types + exposing + ( Explanation(..) + , Gibberish + , Terms + ) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , getThemeColor + ) +import Config.Style.Fonts + exposing + ( defaultFontSize + , paragraphSpacing + ) +import Config.Style.Images exposing (ElementSize(..), imageSquareMaker) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignTop + , centerX + , column + , el + , fill + , height + , none + , paddingEach + , paragraph + , row + , spacing + , text + , width + ) +import Element.Font as F + exposing + ( alignLeft + , bold + , center + , color + , regular + ) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Shared +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.batch + [ Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + , Effect.none + ] + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = "debate (" ++ pageNames.pageGibberish ++ ")" + , attributes = [] + , element = gibberishContainer shared + } + + +gibberishContainer : Shared.Model -> Element msg +gibberishContainer shared = + topLevelContainer (gibberishList shared) + + +gibberishList : Shared.Model -> Element msg +gibberishList shared = + column + (case ( shared.device.class, shared.device.orientation ) of + _ -> + pageList shared.device + ) + <| + List.concat + [ [ headerMaker (R.Gibberish gibberishHeader) ] + , List.map + (\gibberish -> + cardMaker shared.device (C.Gibberish gibberish) (contentList shared gibberish) + ) + [ epistemologyGibberish + , theologyGibberish + , metaphysicsGibberish + , normativityGibberish + , ontologyGibberish + , philOfMindGibberish + , philOfLanguageGibberish + ] + ] + + +contentList : Shared.Model -> Gibberish -> List (Element msg) +contentList shared gibberish = + let + image : ElementSize -> Element msg + image size = + el + [ E.alignLeft + , paddingEach + { top = 0 + , right = 10 + , bottom = 0 + , left = 0 + } + ] + <| + imageSquareMaker shared.device (imagePathMaker M.Gibberish gibberish.gibberishImage) True size + in + [ detailFormat paragraph + [ case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + none + + ( Tablet, Portrait ) -> + none + + _ -> + image Medium + , detailBodyMaker TextLightGrey (text gibberish.gibberishDescription) + ] + , gibberishMakerBody shared gibberish + ] + + +gibberishMakerBody : Shared.Model -> Gibberish -> Element msg +gibberishMakerBody shared gibberish = + detailFormat column + [ listMaker2 (makeTerms shared) gibberish.gibberishTerms + ] + + +makeTerms : Shared.Model -> Terms -> Int -> Element msg +makeTerms shared terms index = + detailFormat column + [ detailFormat row + [ detailTitleMaker TextLightGrey + (String.fromInt index ++ ". ") + , el + [ alignLeft + , F.alignLeft + , F.bold + , F.color (getThemeColor TextLightOrange) + , width fill + ] + <| + text + ("\"" ++ String.toLower terms.term ++ "\"") + ] + , detailFormat column + [ intelligibilityMaker shared terms + , detailBodyMaker TextLightGrey <| + text + (case terms.explanation of + NoClue -> + "I have no fucking clue what this means." + + SpecificExplanation str -> + str + ) + ] + ] + + +intelligibilityMaker : Shared.Model -> Terms -> Element msg +intelligibilityMaker shared terms = + detailFormat row + [ el + (case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + [] + + ( Tablet, Portrait ) -> + [] + + _ -> + if not shared.isNavbarExpanded then + [ tooltip IsLeft + "This represents my confidence that the term can be understood from at least one viewpoint." + ] + + else + [] + ) + <| + detailTitleMaker TextLightGrey "Intelligibility:" + , barPadding + [ barMaker shared getIntelligibilityTooltip terms.strength ] + ] + + +getIntelligibilityTooltip : Int -> String +getIntelligibilityTooltip num = + case num of + 0 -> + "Total fucking gibberish." + + 1 -> + "Extremely unclear, speaking in tongues." + + 2 -> + "Mostly unclear, hard to make any sense of." + + 3 -> + "Somewhat unclear, difficult to understand." + + 4 -> + "Slightly unclear, understandable with effort." + + 5 -> + "Neutral, not sure what to make of it." + + 6 -> + "Slightly clear, with unanswered questions." + + 7 -> + "Somewhat clear, kinda get the idea." + + 8 -> + "Very clear, usefulness questionable." + + 9 -> + "Extremely clear, usefulness dubious." + + 10 -> + "Perfectly clear, but also useless." + + _ -> + "Intelligibility rating is out of bounds." diff --git a/packages/website/frontend/src/Effect.elm b/packages/website/frontend/src/Effect.elm new file mode 100755 index 0000000..9ac5de8 --- /dev/null +++ b/packages/website/frontend/src/Effect.elm @@ -0,0 +1,263 @@ +module Effect exposing + ( Effect + , none, batch + , sendCmd, sendMsg + , clearUser, saveUser, signIn, signOut, toggleLanguage, toggleNavbarExpansion + , pushRoute, replaceRoute, loadExternalUrl + , map, toCmd + , togglePopUp + ) + +{-| + +@docs Effect +@docs none, batch +@docs sendCmd, sendMsg +@docs clearUser, saveUser, signIn, signOut, toggleLanguage, toggleNavbarExpansion +@docs pushRoute, replaceRoute, loadExternalUrl + +@docs map, toCmd + +-} + +import Browser.Navigation +import Dict exposing (Dict) +import Json.Encode +import Ports +import Route exposing (Route) +import Route.Path +import Shared.Model +import Shared.Msg +import Task +import Url exposing (Url) + + +type Effect msg + = -- BASICS + None + | Batch (List (Effect msg)) + | SendCmd (Cmd msg) + -- ROUTING + | PushUrl String + | ReplaceUrl String + | LoadExternalUrl String + -- SHARED + | SendSharedMsg Shared.Msg.Msg + | SendToLocalStorage { key : String, value : Json.Encode.Value } + + + +-- BASICS + + +{-| Don't send any effect. +-} +none : Effect msg +none = + None + + +{-| Send multiple effects at once. +-} +batch : List (Effect msg) -> Effect msg +batch = + Batch + + +{-| Send a normal `Cmd msg` as an effect, something like `Http.get` or `Random.generate`. +-} +sendCmd : Cmd msg -> Effect msg +sendCmd = + SendCmd + + +{-| Send a message as an effect. Useful when emitting events from UI components. +-} +sendMsg : msg -> Effect msg +sendMsg msg = + Task.succeed msg + |> Task.perform identity + |> SendCmd + + + +-- ROUTING + + +{-| Set the new route, and make the back button go back to the current route. +-} +pushRoute : + { path : Route.Path.Path + , query : Dict String String + , hash : Maybe String + } + -> Effect msg +pushRoute route = + PushUrl (Route.toString route) + + +{-| Set given path as route (without any query params or hash), and make the back button go back to the current route. +-} +pushPath : + Route.Path.Path + -> Effect msg +pushPath path = + PushUrl (Route.toString { path = path, query = Dict.empty, hash = Nothing }) + + +{-| Set the new route, but replace the previous one, so clicking the back +button **won't** go back to the previous route. +-} +replaceRoute : + { path : Route.Path.Path + , query : Dict String String + , hash : Maybe String + } + -> Effect msg +replaceRoute route = + ReplaceUrl (Route.toString route) + + +{-| Set given path as route (without any query params or hash), but replace the previous route, +so clicking the back button **won't** go back to the previous route +-} +replacePath : + Route.Path.Path + -> Effect msg +replacePath path = + ReplaceUrl (Route.toString { path = path, query = Dict.empty, hash = Nothing }) + + +{-| Redirect users to a new URL, somewhere external your web application. +-} +loadExternalUrl : String -> Effect msg +loadExternalUrl = + LoadExternalUrl + + + +-- INTERNALS + + +{-| Elm Land depends on this function to connect pages and layouts +together into the overall app. +-} +map : (msg1 -> msg2) -> Effect msg1 -> Effect msg2 +map fn effect = + case effect of + None -> + None + + Batch list -> + Batch (List.map (map fn) list) + + SendCmd cmd -> + SendCmd (Cmd.map fn cmd) + + PushUrl url -> + PushUrl url + + ReplaceUrl url -> + ReplaceUrl url + + LoadExternalUrl url -> + LoadExternalUrl url + + SendSharedMsg sharedMsg -> + SendSharedMsg sharedMsg + + SendToLocalStorage value -> + SendToLocalStorage value + + +{-| Elm Land depends on this function to perform your effects. +-} +toCmd : + { key : Browser.Navigation.Key + , url : Url + , shared : Shared.Model.Model + , fromSharedMsg : Shared.Msg.Msg -> msg + , batch : List msg -> msg + , toCmd : msg -> Cmd msg + } + -> Effect msg + -> Cmd msg +toCmd options effect = + case effect of + None -> + Cmd.none + + Batch list -> + Cmd.batch (List.map (toCmd options) list) + + SendCmd cmd -> + cmd + + PushUrl url -> + Browser.Navigation.pushUrl options.key url + + ReplaceUrl url -> + Browser.Navigation.replaceUrl options.key url + + LoadExternalUrl url -> + Browser.Navigation.load url + + SendSharedMsg sharedMsg -> + Task.succeed sharedMsg + |> Task.perform options.fromSharedMsg + + SendToLocalStorage value -> + Ports.sendToLocalStorage value + + +toggleNavbarExpansion : Effect msg +toggleNavbarExpansion = + SendSharedMsg Shared.Msg.ToggleNavbarExpansion + + +togglePopUp : Effect msg +togglePopUp = + SendSharedMsg Shared.Msg.TogglePopUp + + +toggleLanguage : Effect msg +toggleLanguage = + SendSharedMsg Shared.Msg.ToggleLanguage + + +signIn : + { token : String + , name : String + } + -> Effect msg +signIn user = + SendSharedMsg (Shared.Msg.SignIn user) + + +signOut : Effect msg +signOut = + SendSharedMsg Shared.Msg.SignOut + + +saveUser : + { token : String + , name : String + } + -> Effect msg +saveUser user = + SendToLocalStorage + { key = "user" + , value = + Json.Encode.object + [ ( "token", Json.Encode.string user.token ) + , ( "name", Json.Encode.string user.name ) + ] + } + + +clearUser : Effect msg +clearUser = + SendToLocalStorage + { key = "user" + , value = Json.Encode.null + } diff --git a/packages/website/frontend/src/Layouts/Navbar.elm b/packages/website/frontend/src/Layouts/Navbar.elm new file mode 100755 index 0000000..ffde193 --- /dev/null +++ b/packages/website/frontend/src/Layouts/Navbar.elm @@ -0,0 +1,888 @@ +module Layouts.Navbar exposing (Model, Msg, Props, layout) + +import Config.Data.Identity exposing (pageNames) +import Config.Style.Colour.Helpers exposing (colourTheme) +import Config.Style.Fonts + exposing + ( defaultFontSize + , paragraphSpacing + , spartanFont + ) +import Config.Style.Glow exposing (glowDeepDarkGreyNavbar) +import Config.Style.Icons.Icons + exposing + ( circleDots + , circleX + , contact + , debate + , discord + , donate + , gitlab + , home + , hyperBlog + , interviews + , journal + , leaving + , line + , lock + , mastodon + , nutriDex + , services + , source + , twitter + , upRootLarge + , upRootMedium + , upRootSmall + , video + ) +import Config.Style.Icons.Types as TySvg exposing (..) +import Config.Style.Transitions + exposing + ( hoverFontLightOrange + , specialNavbarTransition + , transitionStyleFast + , transitionStyleMedium + , transitionStyleSlow + ) +import Effect exposing (Effect) +import Element as E exposing (..) +import Element.Background as B +import Element.Border as D +import Element.Events as Events +import Element.Font as F +import Element.Region exposing (description) +import Html exposing (Html) +import Html.Attributes as H + exposing + ( class + , style + ) +import Layout exposing (Layout) +import Maybe.Extra +import Route exposing (Route) +import Route.Path as Path +import Shared +import Shared.Msg +import Svg.Attributes as SvgAttr +import View exposing (View) + + +type alias Props = + {} + + +layout : Props -> Shared.Model -> Route () -> Layout () Model Msg contentMsg +layout _ s r = + Layout.new + { init = init s + , update = update + , view = view r s + , subscriptions = \_ -> Sub.none + } + + + +-- MODEL + + +type alias Model = + { isNavbarExpanded : Bool } + + +init : Shared.Model -> () -> ( Model, Effect.Effect Msg ) +init shared _ = + ( { isNavbarExpanded = shared.isNavbarExpanded } + , Effect.none + ) + + + +-- UPDATE + + +type Msg + = ReplaceMe + | ToggleNavbarExpansion + | ToggleLanguage + + +update : Msg -> Model -> ( Model, Effect.Effect Msg ) +update msg model = + case msg of + ReplaceMe -> + ( model + , Effect.none + ) + + ToggleLanguage -> + ( model + , Effect.toggleLanguage + ) + + ToggleNavbarExpansion -> + ( { model | isNavbarExpanded = not model.isNavbarExpanded } + , Effect.toggleNavbarExpansion + ) + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Route () -> Shared.Model -> { toContentMsg : Msg -> contentMsg, content : View.View contentMsg, model : Model } -> View.View contentMsg +view route shared { toContentMsg, content, model } = + { title = "uRN :: " ++ content.title + , attributes = + [ B.color colourTheme.backgroundDarkGrey + , F.color colourTheme.textLightGrey + , F.family [ spartanFont ] + , height fill + ] + , element = + navbarContainer + { route = route + , sharedModel = shared + , model = model + , contentMessage = toContentMsg ToggleNavbarExpansion + , languageSelectorMessage = toContentMsg ToggleLanguage + , content = content + } + (case shared.device.class of + Phone -> + topbar + + Tablet -> + topbar + + _ -> + sidebar + ) + } + + +languageSelector : contentMsg -> Element contentMsg +languageSelector m = + el + [ alignRight + , Events.onClick m + ] + <| + none + + +navbarContainer : NavbarInput contentMsg -> NavbarMaker contentMsg -> Element contentMsg +navbarContainer input maker = + el + [ height fill + , inFront <| maker input + , inFront <| languageSelector input.languageSelectorMessage + , paddingEach <| + (\( top, left ) -> + { top = top + , right = 0 + , bottom = 0 + , left = left + } + ) + (case input.sharedModel.device.class of + Phone -> + ( barReservedRegion.topbar, 0 ) + + Tablet -> + ( barReservedRegion.topbar, 0 ) + + _ -> + ( 0, barReservedRegion.sidebar ) + ) + , width fill + ] + <| + el + [ height fill + , width fill + , scrollbarY + , E.htmlAttribute (H.id "scroll-container") + ] + input.content.element + + +barReservedRegion : { sidebar : number, topbar : number } +barReservedRegion = + { sidebar = 70 + , topbar = 60 + } + + +bar : NavbarInput contentMsg -> NavbarLogoMaker contentMsg -> List (Attribute contentMsg) -> Element contentMsg +bar input logo attr = + column + ([ B.color colourTheme.backgroundDarkGrey + , transitionStyleMedium + ] + ++ attr + ) + <| + [ logo input + , items input + , footerItems input + ] + + +topbar : NavbarInput contentMsg -> Element contentMsg +topbar input = + bar input + topbarLogo + [ height <| + px <| + if input.model.isNavbarExpanded then + input.sharedModel.height + + else + barReservedRegion.topbar + , width fill + , D.widthEach + { bottom = 1 + , top = 0 + , left = 0 + , right = 0 + } + , D.color colourTheme.textDarkOrange + ] + + +topbarLogo : NavbarInput contentMsg -> Element contentMsg +topbarLogo input = + let + svgFormat = + { elementAttributes = + [ centerX + , centerY + , Events.onClick input.contentMessage + , transitionStyleSlow + ] + , sharedModel = input.sharedModel + , svgAttributes = [ SvgAttr.width "30" ] + } + in + row + ([ height <| px barReservedRegion.topbar + , transitionStyleMedium + , width fill + ] + ++ (if input.model.isNavbarExpanded then + [ B.color colourTheme.backgroundDarkGrey ] + + else + [] + ) + ) + <| + [ link + [ pointer ] + { url = Path.toString Path.Home_ + , label = + el [ paddingXY 10 0, width <| px 250 ] <| html upRootLarge + } + , el + [ height <| px 50 + , width <| px 40 + , alignRight + , centerY + , moveUp 5 + ] + <| + -- (if input.model.isNavbarExpanded then + column [ centerY ] + [ line + (if input.model.isNavbarExpanded then + { elementAttributes = + [ centerX + , centerY + , moveDown 13 + , rotate (degrees 45) + , Events.onClick input.contentMessage + , transitionStyleSlow + ] + , sharedModel = input.sharedModel + , svgAttributes = [ SvgAttr.width "30" ] + } + + else + { elementAttributes = + [ centerX + , centerY + , Events.onClick input.contentMessage + , transitionStyleSlow + ] + , sharedModel = input.sharedModel + , svgAttributes = [ SvgAttr.width "30" ] + } + ) + , line + (if input.model.isNavbarExpanded then + { elementAttributes = + [ centerX + , centerY + , moveUp 22 + , transparent True + , Events.onClick input.contentMessage + , transitionStyleSlow + ] + , sharedModel = input.sharedModel + , svgAttributes = [ SvgAttr.width "30" ] + } + + else + { elementAttributes = + [ centerX + , centerY + , moveUp 22 + , Events.onClick input.contentMessage + , transitionStyleSlow + ] + , sharedModel = input.sharedModel + , svgAttributes = [ SvgAttr.width "30" ] + } + ) + , line + (if input.model.isNavbarExpanded then + { elementAttributes = + [ centerX + , centerY + , rotate (degrees -45) + , moveUp 56 + , Events.onClick input.contentMessage + , transitionStyleSlow + ] + , sharedModel = input.sharedModel + , svgAttributes = [ SvgAttr.width "30" ] + } + + else + { elementAttributes = + [ centerX + , centerY + , moveUp 44 + , Events.onClick input.contentMessage + , transitionStyleSlow + ] + , sharedModel = input.sharedModel + , svgAttributes = [ SvgAttr.width "30" ] + } + ) + ] + ] + + +sidebar : NavbarInput contentMsg -> Element contentMsg +sidebar input = + bar input + sidebarLogo + [ Events.onMouseEnter <| input.contentMessage + , Events.onMouseLeave <| input.contentMessage + , height fill + , htmlAttribute <| style "overflow" "hidden" + , htmlAttribute <| style "z-index" "2" + , D.widthEach + { bottom = 0 + , top = 0 + , left = 0 + , right = 3 + } + , glowDeepDarkGreyNavbar + , D.color colourTheme.textDarkOrange + , if input.model.isNavbarExpanded then + width <| px 225 + + else + width <| px barReservedRegion.sidebar + ] + + +sidebarLogo : NavbarInput contentMsg -> Element contentMsg +sidebarLogo input = + let + logo : Element msg + logo = + el + [ width <| px 40 + , transitionStyleMedium + , if input.model.isNavbarExpanded then + htmlAttribute (style "transform" "rotate(360deg)") + + else + htmlAttribute (style "transform" "rotate(0deg)") + ] + <| + html upRootSmall + + text : Element msg + text = + el + ([ centerY + , transitionStyleMedium + , width <| px 145 + ] + ++ (if input.model.isNavbarExpanded then + [] + + else + [ transparent True ] + ) + ) + <| + html upRootLarge + in + el + [ transitionStyleMedium + , height <| px 60 + , width fill + ] + <| + el + [ alignRight + , centerY + ] + <| + el + [ transitionStyleMedium + , onLeft text + , paddingEach + { top = 0 + , right = 12 + , bottom = 0 + , left = 12 + } + , width fill + ] + logo + + +items : NavbarInput contentMsg -> Element contentMsg +items input = + let + navbarUnfucker : List (Attr () msg) + navbarUnfucker = + [ transparent True + , htmlAttribute (style "position" "absolute") + , htmlAttribute (style "z-index" "-10") + , htmlAttribute (style "opacity" "0") + , htmlAttribute (style "pointer-events" "none") + , htmlAttribute (style "visibility" "hidden") + ] + in + column + [ height fill + , width fill + ] + <| + List.map + (\x -> + el + ([ width fill + , transitionStyleMedium + ] + ++ (if input.model.isNavbarExpanded then + case input.sharedModel.device.class of + _ -> + [ transparent False ] + + else + case input.sharedModel.device.class of + Phone -> + navbarUnfucker + + Tablet -> + navbarUnfucker + + _ -> + [ transparent False ] + ) + ) + <| + makeItem input + { icon = x.icon + , isCurrent = x.isCurrent + , isNewTabLink = x.isNewTabLink + , isSubscriberOnly = x.isSubscriberOnly + , name = x.name + , sharedModel = input.sharedModel + , url = x.url + } + ) + [ { icon = home + , isCurrent = input.route.path == Path.Home_ + , isNewTabLink = False + , isSubscriberOnly = False + , name = String.toUpper pageNames.pageHome + , url = Path.toString Path.Home_ + } + , { icon = services + , isCurrent = input.route.path == Path.Services + , isNewTabLink = False + , isSubscriberOnly = False + , name = String.toUpper pageNames.pageServices + , url = Path.toString Path.Services + } + , { icon = hyperBlog + , isCurrent = input.route.path == Path.Blog + , isNewTabLink = False + , isSubscriberOnly = False + , name = String.toUpper pageNames.pageHyperBlog + , url = Path.toString Path.Blog + } + + -- , { icon = journal + -- , isCurrent = input.route.path == Path.Journal + -- , isNewTabLink = False + -- , isSubscriberOnly = False + -- , name = String.toUpper pageNames.pageJournal + -- , url = Path.toString Path.Journal + -- } + , { icon = video + , isCurrent = False + , isNewTabLink = True + , isSubscriberOnly = False + , name = String.toUpper "Video" + , url = "https://www.youtube.com/@upRootNutrition" + } + , { icon = source + , isCurrent = False + , isNewTabLink = True + , isSubscriberOnly = False + , name = String.toUpper "Source" + , url = "https://source.uprootnutrition.com/upRootNutrition/website" + } + , { icon = debate + , isCurrent = input.route.path == Path.Debate + , isNewTabLink = False + , isSubscriberOnly = False + , name = String.toUpper pageNames.pageDebate + , url = Path.toString Path.Debate + } + , { icon = nutriDex + , isCurrent = input.route.path == Path.Nutridex + , isNewTabLink = False + , isSubscriberOnly = False + , name = String.toUpper pageNames.pageNutriDex + , url = Path.toString Path.Nutridex + } + , { icon = interviews + , isCurrent = input.route.path == Path.Interviews + , isNewTabLink = False + , isSubscriberOnly = False + , name = String.toUpper pageNames.pageInterviews + , url = Path.toString Path.Interviews + } + , { icon = donate + , isCurrent = input.route.path == Path.Donate + , isNewTabLink = False + , isSubscriberOnly = False + , name = String.toUpper pageNames.pageDonate + , url = Path.toString Path.Donate + } + , { icon = contact + , isCurrent = input.route.path == Path.Contact + , isNewTabLink = False + , isSubscriberOnly = False + , name = String.toUpper pageNames.pageContact + , url = Path.toString Path.Contact + } + ] + + +makeItemLogic : NavbarInput contentMsg -> RowInput contentMsg -> Element contentMsg +makeItemLogic input route = + if input.model.isNavbarExpanded then + case input.sharedModel.device.class of + _ -> + makeItem input route + + else + case input.sharedModel.device.class of + Phone -> + el [] none + + Tablet -> + el [] none + + _ -> + makeItem input route + + +makeItem : NavbarInput contentMsg -> RowInput contentMsg -> Element contentMsg +makeItem input route = + (if route.isNewTabLink then + newTabLink + + else + link + ) + [ width fill ] + { label = + row + ([ mouseOver + (if route.isCurrent then + [] + + else + [ B.color colourTheme.backgroundLightGrey + , F.color colourTheme.textLightOrange + ] + ) + , paddingEach + { top = 0 + , right = 0 + , bottom = 0 + , left = 23 + } + , spacing 12 + , transitionStyleMedium + , width fill + ] + ++ (if route.isCurrent then + [ B.color colourTheme.backgroundDeepDarkGrey + , F.color colourTheme.textLightOrange + , transitionStyleMedium + ] + + else + [] + ) + ++ (case input.sharedModel.device.class of + Phone -> + [ Events.onClick input.contentMessage ] + + Tablet -> + [ Events.onClick input.contentMessage ] + + _ -> + [] + ) + ) + [ itemIcon input route + , itemText input route + , case route.isNewTabLink of + True -> + itemLeavingIcon input route + + False -> + none + ] + , url = route.url + } + + +itemIcon : NavbarInput contentMsg -> RowInput contentMsg -> Element contentMsg +itemIcon input route = + el + ([ height <| px 50 + , width <| px 20 + ] + ++ (if Maybe.Extra.isNothing route.sharedModel.user && route.isSubscriberOnly then + [ inFront <| + lock + { elementAttributes = + [ moveDown 19 + , moveLeft 20 + , F.color colourTheme.barRed + ] + , sharedModel = route.sharedModel + , svgAttributes = [ SvgAttr.width "12" ] + } + ] + + else + [] + ) + ) + <| + route.icon + { elementAttributes = + [ centerX + , centerY + ] + , sharedModel = route.sharedModel + , svgAttributes = + [ SvgAttr.width "30" ] + } + + +itemLeavingIcon : NavbarInput contentMsg -> RowInput contentMsg -> Element contentMsg +itemLeavingIcon input route = + el + [ height <| px 50 + , width <| px 20 + , E.alignRight + , paddingXY 10 0 + ] + <| + leaving + { elementAttributes = + [ E.alignRight + , E.alignTop + , centerY + ] + , sharedModel = route.sharedModel + , svgAttributes = + [ SvgAttr.width "15" ] + } + + +itemText : NavbarInput contentMsg -> RowInput contentMsg -> Element contentMsg +itemText input route = + el + [ specialNavbarTransition -- This special transition is needed to avoid weird animation sequencing rather in Chrome-based browsers. + , if input.model.isNavbarExpanded then + transparent False + + else + transparent True + , F.bold + , paddingEach + { top = 6 + , right = 0 + , bottom = 3 + , left = 0 + } + ] + <| + text route.name + + +footerItems : NavbarInput contentMsg -> Element contentMsg +footerItems input = + row + ([ scrollbarY + , height <| px 50 + , transitionStyleMedium + , centerX + , width <| px 223 + ] + ++ (if input.model.isNavbarExpanded then + [] + + else + [ transparent True ] + ) + ) + <| + List.map + (\x -> + makeFooterIcon input + { icon = x.icon + , isNewTabLink = x.isNewTabLink + , url = x.url + , sharedModel = input.sharedModel + } + ) + [ { icon = twitter + , isNewTabLink = True + , url = "https://x.com/upRootNutrition" + } + , { icon = mastodon + , isNewTabLink = True + , url = "https://social.uprootnutrition.com/@nick" + } + , { icon = discord + , isNewTabLink = True + , url = "https://discord.gg/eeYQ2wJknS" + } + ] + + +footerIcon : FooterInput contentMsg -> Element contentMsg +footerIcon route = + el + [ height <| px 50 + , width <| px 20 + , alignBottom + ] + <| + route.icon + { elementAttributes = + [ centerX + , centerY + ] + , sharedModel = route.sharedModel + , svgAttributes = + [ SvgAttr.width "20" ] + } + + +makeFooterIcon : NavbarInput contentMsg -> FooterInput contentMsg -> Element contentMsg +makeFooterIcon input route = + row [ centerX ] + [ (if route.isNewTabLink then + newTabLink + + else + link + ) + [ width fill ] + { label = + row + [ mouseOver + [ F.color colourTheme.textLightOrange + ] + , paddingEach + { top = 0 + , right = 10 + , bottom = 0 + , left = 10 + } + , transitionStyleMedium + , width fill + , F.color colourTheme.textLightGrey + ] + [ footerIcon route + ] + , url = route.url + } + ] + + + +-- Types: + + +type alias NavbarInput contentMsg = + { route : Route () + , sharedModel : Shared.Model + , model : Model + , contentMessage : contentMsg + , languageSelectorMessage : contentMsg + , content : View.View contentMsg + } + + +type alias NavbarMaker contentMsg = + NavbarInput contentMsg -> Element contentMsg + + +type alias NavbarLogoMaker contentMsg = + NavbarMaker contentMsg + + +type alias RowInput msg = + { icon : TySvg.OuterPart msg -> Element msg + , isCurrent : Bool + , isNewTabLink : Bool + , isSubscriberOnly : Bool + , name : String + , url : String + , sharedModel : Shared.Model + } + + +type alias FooterInput msg = + { icon : TySvg.OuterPart msg -> Element msg + , isNewTabLink : Bool + , url : String + , sharedModel : Shared.Model + } diff --git a/packages/website/frontend/src/Pages/Blog.elm b/packages/website/frontend/src/Pages/Blog.elm new file mode 100755 index 0000000..252d20a --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog.elm @@ -0,0 +1,282 @@ +module Pages.Blog exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Data.ImageFolders as M + exposing + ( ImageFolder(..) + , imagePathMaker + ) +import Config.Helpers.Articles.Article exposing (extractFirstWords) +import Config.Helpers.Articles.Markdown exposing (renderDeviceMarkdownNoToc, renderDeviceMarkdownNoTocGeneric) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyMaker + , detailFormat + , detailTitleMaker + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Converters + exposing + ( formatName + , wordCount + ) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (blogHeader) +import Config.Helpers.Headers.Types as R exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.BigFatSurprise exposing (articleBigFatSurprise) +import Config.Pages.Blogs.MainBlog.EverettVegans exposing (articleEverettVegans) +import Config.Pages.Blogs.MainBlog.FeldwitzFuckery exposing (articleFeldwitzFuckery) +import Config.Pages.Blogs.MainBlog.HunterGatherers exposing (articleHunterGatherers) +import Config.Pages.Blogs.MainBlog.MeatApologetics exposing (articleMeatApologetics) +import Config.Pages.Blogs.MainBlog.NagraGoodrich exposing (articleNagraGoodrich) +import Config.Pages.Blogs.MainBlog.PlantBasedMeta exposing (articlePlantBasedMeta) +import Config.Pages.Blogs.MainBlog.QuackSmashing exposing (articleQuackSmashing) +import Config.Pages.Blogs.MainBlog.SapienDiet exposing (articleSapienDiet) +import Config.Pages.Blogs.MainBlog.SeedOils exposing (articleSeedOils) +import Config.Pages.Blogs.MainBlog.Shenangians exposing (articleShenanigans) +import Config.Pages.Blogs.MainBlog.SweetDeception exposing (articleSweetDeception) +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Config.Style.Colour.Helpers as T exposing (ThemeColor(..)) +import Config.Style.Fonts + exposing + ( defaultFontSize + , paragraphSpacing + ) +import Config.Style.Icons.Icons exposing (construction) +import Config.Style.Images + exposing + ( ElementSize(..) + , imageSquareMaker + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignLeft + , alignTop + , column + , el + , none + , paddingEach + , px + , row + , text + , width + ) +import Html.Attributes as H exposing (style) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Route.Path as Path +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog + , attributes = [] + , element = blogContainer shared.device + } + + +blogContainer : Device -> Element msg +blogContainer device = + topLevelContainer (blogList device) + + +blogList : Device -> Element msg +blogList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ [ headerMaker (R.BlogPage blogHeader) ] + , List.map + (\article -> + cardMaker device (C.BlogCard article) (contentList device article) + ) + [ -- articleFeldwitzFuckery + articleShenanigans + , articleSweetDeception + , articleEverettVegans + , articleQuackSmashing + , articleSapienDiet + , articleNagraGoodrich + , articleMeatApologetics + , articleSeedOils + , articleHunterGatherers + , articlePlantBasedMeta + , articleBigFatSurprise + ] + ] + + +contentList : Device -> BlogArticle -> List (Element msg) +contentList device article = + [ articleMaker device article ] + + +articleImage : + BlogArticle + -> + { src : String + , description : String + } +articleImage article = + { src = imagePathMaker M.BlogArticle article.articleImage + , description = article.articleName + } + + +articleMaker : Device -> BlogArticle -> Element msg +articleMaker device article = + let + image : ElementSize -> Element msg + image size = + el + [ alignLeft + , alignTop + , paddingEach + { top = 0 + , right = 10 + , bottom = 7 + , left = 0 + } + ] + <| + imageSquareMaker device (imagePathMaker M.BlogCard article.articleImage) True size + in + detailFormat column + [ detailFormat row + [ case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + none + + ( Tablet, Portrait ) -> + none + + _ -> + image Big + , detailFormat column + (articleRows article ++ []) + ] + , el [] <| + detailBodyMaker TextLightGrey (renderDeviceMarkdownNoTocGeneric (extractFirstWords article.articleBody)) + ] + + +infoRow : String -> Element msg -> Element msg +infoRow label value = + detailFormat row + [ el [ width <| px 82 ] <| + detailTitleMaker TextLightOrange label + , detailBodyMaker TextLightGrey value + ] + + +articleRows : BlogArticle -> List (Element msg) +articleRows article = + let + referenceCount = + List.length article.articleReferences + in + [ infoRow "Published:" (text article.articlePublished) + , infoRow "Author:" (text article.articleAuthor) + , infoRow "Duration:" + (text + (String.fromInt + (wordCount article.articleBody // 225) + ++ " minutes" + ) + ) + , infoRow "Words" + (text + (String.fromInt + (wordCount article.articleBody) + ) + ) + , infoRow "Sources" + (if referenceCount >= 2 then + text (String.fromInt referenceCount) + + else + text "N/A" + ) + ] diff --git a/packages/website/frontend/src/Pages/Blog/Bigfatsurprise.elm b/packages/website/frontend/src/Pages/Blog/Bigfatsurprise.elm new file mode 100755 index 0000000..00357c6 --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Bigfatsurprise.elm @@ -0,0 +1,127 @@ +module Pages.Blog.Bigfatsurprise exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.BigFatSurprise exposing (articleBigFatSurprise) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (bigFatSurprise)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleBigFatSurprise ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Everettvegans.elm b/packages/website/frontend/src/Pages/Blog/Everettvegans.elm new file mode 100755 index 0000000..58b7cb8 --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Everettvegans.elm @@ -0,0 +1,127 @@ +module Pages.Blog.Everettvegans exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.EverettVegans exposing (articleEverettVegans) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (everettVegans)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleEverettVegans ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Feldwitzfuckery.elm b/packages/website/frontend/src/Pages/Blog/Feldwitzfuckery.elm new file mode 100755 index 0000000..b933b80 --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Feldwitzfuckery.elm @@ -0,0 +1,127 @@ +module Pages.Blog.Feldwitzfuckery exposing (..) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.FeldwitzFuckery exposing (articleFeldwitzFuckery) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (feldwitzFuckery)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleFeldwitzFuckery ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Huntergatherers.elm b/packages/website/frontend/src/Pages/Blog/Huntergatherers.elm new file mode 100755 index 0000000..bd544d0 --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Huntergatherers.elm @@ -0,0 +1,128 @@ +module Pages.Blog.Huntergatherers exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.HunterGatherers exposing (articleHunterGatherers) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + -- Add this case + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (hunterGatherers)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleHunterGatherers ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Meatapologetics.elm b/packages/website/frontend/src/Pages/Blog/Meatapologetics.elm new file mode 100755 index 0000000..9262470 --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Meatapologetics.elm @@ -0,0 +1,132 @@ +module Pages.Blog.Meatapologetics exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.MeatApologetics exposing (articleMeatApologetics) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (meatApologetics)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ -- List.map (headerMaker device) + -- [ + -- servicesHeader + -- ] + -- , + List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleMeatApologetics ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Nagragoodrich.elm b/packages/website/frontend/src/Pages/Blog/Nagragoodrich.elm new file mode 100755 index 0000000..e305d48 --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Nagragoodrich.elm @@ -0,0 +1,133 @@ +module Pages.Blog.Nagragoodrich exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.NagraGoodrich exposing (articleNagraGoodrich) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + -- Add this case + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (nagraGoodrich)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ -- List.map (headerMaker device) + -- [ + -- servicesHeader + -- ] + -- , + List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleNagraGoodrich ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Plantbasedmeta.elm b/packages/website/frontend/src/Pages/Blog/Plantbasedmeta.elm new file mode 100755 index 0000000..7390a69 --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Plantbasedmeta.elm @@ -0,0 +1,133 @@ +module Pages.Blog.Plantbasedmeta exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.PlantBasedMeta exposing (articlePlantBasedMeta) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + -- Add this case + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (plantBasedMeta)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ -- List.map (headerMaker device) + -- [ + -- servicesHeader + -- ] + -- , + List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articlePlantBasedMeta ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Quacksmashing.elm b/packages/website/frontend/src/Pages/Blog/Quacksmashing.elm new file mode 100755 index 0000000..83d9dea --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Quacksmashing.elm @@ -0,0 +1,133 @@ +module Pages.Blog.Quacksmashing exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.QuackSmashing exposing (articleQuackSmashing) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + -- Add this case + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (quackSmashing)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ -- List.map (headerMaker device) + -- [ + -- servicesHeader + -- ] + -- , + List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleQuackSmashing ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Sapiendiet.elm b/packages/website/frontend/src/Pages/Blog/Sapiendiet.elm new file mode 100755 index 0000000..fa43373 --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Sapiendiet.elm @@ -0,0 +1,133 @@ +module Pages.Blog.Sapiendiet exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.SapienDiet exposing (articleSapienDiet) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + -- Add this case + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (sapienDiet)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ -- List.map (headerMaker device) + -- [ + -- servicesHeader + -- ] + -- , + List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleSapienDiet ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Seedoils.elm b/packages/website/frontend/src/Pages/Blog/Seedoils.elm new file mode 100755 index 0000000..95eabff --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Seedoils.elm @@ -0,0 +1,132 @@ +module Pages.Blog.Seedoils exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.SeedOils exposing (articleSeedOils) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (seedOils)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ -- List.map (headerMaker device) + -- [ + -- servicesHeader + -- ] + -- , + List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleSeedOils ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Shenanigans.elm b/packages/website/frontend/src/Pages/Blog/Shenanigans.elm new file mode 100755 index 0000000..59e2de1 --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Shenanigans.elm @@ -0,0 +1,133 @@ +module Pages.Blog.Shenanigans exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.Shenangians exposing (articleShenanigans) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + -- Add this case + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (shenanigans)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ -- List.map (headerMaker device) + -- [ + -- servicesHeader + -- ] + -- , + List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleShenanigans ] + ] diff --git a/packages/website/frontend/src/Pages/Blog/Sweetdeception.elm b/packages/website/frontend/src/Pages/Blog/Sweetdeception.elm new file mode 100755 index 0000000..8fc081c --- /dev/null +++ b/packages/website/frontend/src/Pages/Blog/Sweetdeception.elm @@ -0,0 +1,133 @@ +module Pages.Blog.Sweetdeception exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.MainBlog.SweetDeception exposing (articleSweetDeception) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + -- Add this case + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHyperBlog ++ " (sweetDeception)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ -- List.map (headerMaker device) + -- [ + -- servicesHeader + -- ] + -- , + List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleSweetDeception ] + ] diff --git a/packages/website/frontend/src/Pages/Contact.elm b/packages/website/frontend/src/Pages/Contact.elm new file mode 100755 index 0000000..9f41740 --- /dev/null +++ b/packages/website/frontend/src/Pages/Contact.elm @@ -0,0 +1,197 @@ +module Pages.Contact exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Data.ImageFolders as M + exposing + ( ImageFolder(..) + , imagePathMaker + ) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyMaker + , detailFormat + , numberedListItem + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (contactHeader) +import Config.Helpers.Headers.Types as R exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Contact.Records + exposing + ( contactCriticism + , contactInquiry + ) +import Config.Pages.Contact.Types exposing (Contact) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , colourTheme + ) +import Config.Style.Images + exposing + ( ElementSize(..) + , imageSquareMaker + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignLeft + , column + , el + , none + , paddingEach + , row + , text + ) +import Html.Attributes as H exposing (style) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageContact + , attributes = [] + , element = contactContainer shared.device + } + + +contactContainer : Device -> Element msg +contactContainer device = + topLevelContainer (contactList device) + + +contactList : Device -> Element msg +contactList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ [ headerMaker (R.Debate contactHeader) ] + , List.map + (\contact -> + cardMaker device (C.Contact contact) (contentList device contact) + ) + [ contactInquiry + , contactCriticism + ] + ] + + +contentList : Device -> Contact -> List (Element msg) +contentList device contact = + [ descriptionMaker device contact ] + + +descriptionMaker : Device -> Contact -> Element msg +descriptionMaker device contact = + let + image : ElementSize -> Element msg + image size = + el + [ alignLeft + , paddingEach + { top = 0 + , right = 10 + , bottom = 0 + , left = 0 + } + ] + <| + imageSquareMaker device (imagePathMaker M.Contact contact.contactImage) True size + in + detailFormat row + [ case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + none + + ( Tablet, Portrait ) -> + none + + _ -> + image Big + , detailFormat column + [ detailBodyMaker TextLightGrey + (text contact.contactDescription) + ] + ] diff --git a/packages/website/frontend/src/Pages/Contact/Criticism.elm b/packages/website/frontend/src/Pages/Contact/Criticism.elm new file mode 100755 index 0000000..ef65d65 --- /dev/null +++ b/packages/website/frontend/src/Pages/Contact/Criticism.elm @@ -0,0 +1,479 @@ +module Pages.Contact.Criticism exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyMaker + , detailFormat + , detailHeader + , detailTitleMaker + , divider + , numberedListItem + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Contact.Records exposing (contactCriticism) +import Config.Pages.Contact.Types exposing (Contact) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , colourTheme + ) +import Config.Style.Fonts exposing (defaultFontSize) +import Config.Style.Transitions + exposing + ( hoverFontDarkOrange + , transitionStyleFast + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Attr + , Attribute + , Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignRight + , alignTop + , centerX + , column + , el + , fill + , newTabLink + , paddingEach + , paragraph + , px + , row + , spacing + , text + , width + ) +import Element.Background as B exposing (color) +import Element.Border as D exposing (rounded) +import Element.Font as F + exposing + ( alignLeft + , color + ) +import Html.Attributes as H exposing (style) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageContact ++ " (criticism)" + , attributes = [] + , element = contactContainer shared.device + } + + +contactContainer : Device -> Element msg +contactContainer device = + topLevelContainer (contactList device) + + +contactList : Device -> Element msg +contactList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\contact -> + cardMaker device (C.ContactPage contact) (contentList device contact) + ) + [ contactCriticism ] + ] + + +contentList : Device -> Contact -> List (Element msg) +contentList device contact = + [ instructionBody device ] + + +instructionBody : Device -> Element msg +instructionBody device = + column + [ spacing 20 + , paddingEach + { top = 10 + , bottom = 0 + , left = 0 + , right = 0 + } + ] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "The following terms may seem unreasonable to some, but after years on a large platform, I've learned the importance of filtering the criticisms I receive. Most feedback I receive is just vague gesturing and lacks substance, making some sort of quality filter essential. Thank you for your patience and understanding.") ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "Please keep in mind that any failure to comply with the following terms and conditions will forfeit your access to my time and attention. I ask that you respect my time and read these terms carefully. You are the one requesting an audience with me, and my time is mine to donate as I see fit. If you wish to submit your criticisms, you must do so on my terms, following the rules and conditions that streamline the process for me.") ] + , el + [ centerX + , width fill + ] + <| + detailHeader (String.toUpper "Terms and Conditions") + , column [ spacing 10 ] <| + List.indexedMap + (\index term -> + row + [ spacing 10 + , width fill + ] + [ column + [ width <| px 15 + , alignTop + ] + [ numberedListItem TextLightGrey (index + 1) ] + , el + [ spacing 10 + , width fill + , alignRight + ] + <| + paragraph + [ width fill + , defaultFontSize + , F.alignLeft + ] + term + ] + ) + (termsAndConditions device) + , el [ centerX, width fill ] <| + detailHeader (String.toUpper "Additional Clarifications") + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "You are only allowed to post one criticism at a time in the ") + , newTabLink [] + { url = "https://discord.com/channels/692563032546476062/1301247050796634182" + , label = el orangeFormat <| detailBodyMaker TextLightOrange (text "馃攷鈹僣riticism") + } + , detailBodyMaker TextLightGrey (text " channel. You may post an additional criticism only after the previous one has been addressed and resolved to my satisfaction. This policy aims to reduce spamming, rambling, and Gish galloping, and to encourage linear discourse.") + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey + (text "鈥 ") + , detailBodyMaker TextLightGrey + (text "You may or may not be asked to voice chat about your criticism. While your willingness to engage in voice chat is a necessary condition for submitting your criticism, it does not guarantee that a voice chat will be requested. If your initial criticism is clear and I agree with it, then no voice chat will be required.") + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "You may or may not be asked to have your criticism formalized. While your willingness to have your criticism formalized is a necessary condition for submitting your criticism, it does not guarantee that a formalization will be requested. If your initial criticism is clear and I agree with it, then no formalization will be required.") + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "If I find it necessary to access a text-based channel (for simple clarifying questions, for example), then either I or a moderator will open a new thread in the ") + , newTabLink [] + { url = "https://discord.com/channels/692563032546476062/1301247050796634182" + , label = el orangeFormat <| detailBodyMaker TextLightOrange (text "馃攷鈹僣riticism") + } + , detailBodyMaker TextLightGrey (text " channel. There we can then engage in a text-based discussion and/or ping other users if needed.") + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "I will only request that your criticism be formalized if I do not understand it and we have exhausted all other reasonable means of clarification. If formalization is requested, you will not need to do it yourself, as I recognize that not everyone understands formal logic. If formalization is requested and I am unavailable to assist you, you may ping the @Logic role, and another user may help you.") + ] + ] + + +darkFormat : Attr decorative msg +darkFormat = + F.color colourTheme.textDarkGrey + + +orangeFormat : List (Attr () msg) +orangeFormat = + [ F.color colourTheme.textLightOrange + , hoverFontDarkOrange + , transitionStyleFast + ] + + +rounding : Attribute msg +rounding = + D.rounded 10 + + +termsAndConditions : Device -> List (List (Element msg)) +termsAndConditions device = + let + backGroundCase : Attr decorative msg + backGroundCase = + case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + B.color colourTheme.backgroundDarkGrey + + ( Tablet, Portrait ) -> + B.color colourTheme.backgroundDarkGrey + + _ -> + B.color colourTheme.backgroundLightGrey + in + [ [ row [] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "You will register an account with ") + , newTabLink [] + { url = "https://discord.com/login" + , label = el orangeFormat <| detailBodyMaker TextLightOrange (text "Discord") + } + , detailBodyMaker TextLightGrey (text " (if you haven't already).") + ] + ] + ] + , [ row [] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "You will join the ") + , newTabLink [] + { url = "https://discord.com/invite/VzU8yCvYX8" + , label = el orangeFormat <| detailBodyMaker TextLightOrange (text "upRootNutrition") + } + , detailBodyMaker TextLightGrey (text " Discord Server (if you haven't already).") + ] + ] + ] + , [ row [] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "You will click the \"馃槂\" emoji to enter the server (if you haven't already).") + ] + ] + ] + , [ row [] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "You will locate the ") + , newTabLink [] + { url = "https://discord.com/channels/692563032546476062/826225570219687956" + , label = el orangeFormat <| detailBodyMaker TextLightOrange (text "馃捇鈹僩eneral") + } + , detailBodyMaker TextLightGrey (text " channel in General category.") + ] + ] + ] + , [ row [] + [ detailFormat paragraph + [ paragraph [ F.alignLeft ] + [ detailBodyMaker TextLightGrey (text "You will post your criticism in the ") + , newTabLink [] + { url = "https://discord.com/channels/692563032546476062/826225570219687956" + , label = el orangeFormat <| detailBodyMaker TextLightOrange (text "馃捇鈹僩eneral") + } + , detailBodyMaker TextLightGrey (text " channel with this exact format:") + ] + ] + ] + , column + [ paddingEach + { top = 10 + , bottom = 10 + , left = 0 + , right = 0 + } + , alignLeft + ] + [ paragraph + [ paddingEach + { top = 15 + , bottom = 15 + , left = 20 + , right = 20 + } + , backGroundCase + , rounding + , width fill + , spacing 8 + ] + [ detailBodyMaker TextLightGrey (text "\"@Moderators I have a criticism for Nick.\"") + ] + ] + ] + , [ row [] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "You will then receive the @Critic role.") + ] + ] + ] + , [ row [] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "You will locate the ") + , newTabLink [] + { url = "https://discord.com/channels/692563032546476062/1301247050796634182" + , label = el orangeFormat <| detailBodyMaker TextLightOrange (text "馃攷鈹僣riticism") + } + , detailBodyMaker TextLightGrey (text " channel in the General category.") + ] + ] + ] + , [ row [] + [ detailFormat paragraph + [ paragraph [ F.alignLeft ] + [ detailBodyMaker TextLightGrey (text "You will post your criticism in the ") + , newTabLink [] + { url = "https://discord.com/channels/692563032546476062/1301247050796634182" + , label = el orangeFormat <| detailBodyMaker TextLightOrange (text "馃攷鈹僣riticism") + } + , detailBodyMaker TextLightGrey (text " channel with this exact format:") + ] + ] + ] + , column + [ paddingEach + { top = 10 + , bottom = 10 + , left = 0 + , right = 0 + } + , alignLeft + ] + [ column + [ paddingEach + { top = 15 + , bottom = 15 + , left = 20 + , right = 20 + } + , backGroundCase + , rounding + , width fill + , spacing 8 + ] + [ detailBodyMaker TextLightGrey (text "\"Hello, <@191027366640877568>. I have a criticism for you.") + , row [ alignLeft ] + [ paragraph [] + [ detailBodyMaker TextLightGrey (text "Proposition: ") + , el [ darkFormat ] <| detailBodyMaker TextDarkGrey (text "specify the exact proposition you are addressing.") + ] + ] + , row [ alignLeft ] + [ paragraph [] + [ detailBodyMaker TextLightGrey (text "Link: ") + , el [ darkFormat ] <| detailBodyMaker TextDarkGrey (text "provide a url to the claim, with a timestamp if applicable.") + ] + ] + , row [ alignLeft ] + [ paragraph [] + [ detailBodyMaker TextLightGrey (text "Reason for Error: ") + , el [ darkFormat ] <| detailBodyMaker TextDarkGrey (text "explain exactly why you believe this claim is in error.") + ] + ] + , row [ alignLeft ] + [ paragraph [] + [ detailBodyMaker TextLightGrey (text "Suggested Correction (if any): ") + , el [ darkFormat ] <| detailBodyMaker TextDarkGrey (text "provide the corrected information or perspective.") + ] + ] + , row [ alignLeft ] + [ paragraph [] + [ detailBodyMaker TextLightGrey (text "Additional Comments: ") + , el [ darkFormat ] <| detailBodyMaker TextDarkGrey (text "any other relevant thoughts or context.") + , detailBodyMaker TextLightGrey (text "\"") + ] + ] + ] + ] + ] + , [ row [] + [ detailFormat paragraph <| + [ detailBodyMaker TextLightGrey (text "You will not post additional criticisms until the last one has been resolved.") + ] + ] + ] + , [ row [] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "You will not post anything other than criticisms in the ") + , newTabLink [] + { url = "https://discord.com/channels/692563032546476062/1301247050796634182" + , label = el orangeFormat <| detailBodyMaker TextLightOrange (text "馃攷鈹僣riticism") + } + , detailBodyMaker TextLightGrey (text " channel.") + ] + ] + ] + , [ row [] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "You must be willing to converse over voice chat.") + ] + ] + ] + , [ row [] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "You must be willing to have your criticism formalized.") + ] + ] + ] + ] diff --git a/packages/website/frontend/src/Pages/Contact/Inquiry.elm b/packages/website/frontend/src/Pages/Contact/Inquiry.elm new file mode 100755 index 0000000..4097e6e --- /dev/null +++ b/packages/website/frontend/src/Pages/Contact/Inquiry.elm @@ -0,0 +1,166 @@ +module Pages.Contact.Inquiry exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyLink + , detailBodyMaker + , detailFormat + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Contact.Records exposing (contactInquiry) +import Config.Pages.Contact.Types exposing (Contact) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , colourTheme + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , column + , link + , paddingEach + , paragraph + , spacing + , text + ) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageContact ++ " (inquiry)" + , attributes = [] + , element = contactContainer shared.device + } + + +contactContainer : Device -> Element msg +contactContainer device = + topLevelContainer (contactList device) + + +contactList : Device -> Element msg +contactList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\contact -> + cardMaker device (C.ContactPage contact) (contentList device contact) + ) + [ contactInquiry ] + ] + + +contentList : Device -> Contact -> List (Element msg) +contentList device contact = + [ instructionBody device ] + + +instructionBody : Device -> Element msg +instructionBody device = + column + [ spacing 20 + , paddingEach + { top = 10 + , bottom = 0 + , left = 0 + , right = 0 + } + ] + [ detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "For any inquiries related to services, debate invitations, or general questions regarding guest appearances, webinars, public speaking engagements, ghostwriting, or co-authorship opportunities, please feel free to contact me at ") + , link + [] + { url = "mailto:" + , label = detailBodyLink TextLightOrange "contact@upRootNutrition.com" + } + , detailBodyMaker TextLightGrey (text ".") + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "If you wish to submit a Discord ban appeal, you may do using the provided email address. Please include your user ID and a detailed statement detailing why you believe that you, or someone else, should be unbanned.") ] + ] diff --git a/packages/website/frontend/src/Pages/Debate.elm b/packages/website/frontend/src/Pages/Debate.elm new file mode 100755 index 0000000..ca18f41 --- /dev/null +++ b/packages/website/frontend/src/Pages/Debate.elm @@ -0,0 +1,283 @@ +module Pages.Debate exposing + ( Model + , Msg + , debateArguments + , debateCuckList + -- , debateGibberish + , page + ) + +import Config.Data.Identity + exposing + ( pageNames + ) +import Config.Data.ImageFolders as M + exposing + ( ImageFolder(..) + , imagePathMaker + ) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyLink + , detailBodyMaker + , detailFormat + , detailSpacing + , detailTitleMaker + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Converters exposing (formatName) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (debateHeader) +import Config.Helpers.Headers.Types as R exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Debate.Arguments.List exposing (argumentList) +import Config.Pages.Debate.Cuckery.List exposing (cuckList) +import Config.Pages.Debate.Gibberish.List exposing (gibberishList) +import Config.Pages.Debate.Types exposing (Debate) +import Config.Style.Colour.Helpers as T + exposing + ( ThemeColor(..) + , colourTheme + ) +import Config.Style.Images + exposing + ( ElementSize(..) + , imageSquareMaker + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignLeft + , column + , el + , none + , paddingEach + , row + , text + ) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Route.Path as Path +import Shared exposing (Model) +import Task +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageDebate + , attributes = [] + , element = debateContainer shared.device + } + + +debateContainer : Device -> Element msg +debateContainer device = + topLevelContainer (debateList device) + + +debateList : Device -> Element msg +debateList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ [ headerMaker (R.Debate debateHeader) ] + , List.map + (\debate -> + cardMaker device (C.Debate debate) (contentList device debate) + ) + [ debateArguments + , debateCuckList + + -- , debateGibberish + ] + ] + + +contentList : Device -> Debate -> List (Element msg) +contentList device debate = + [ descriptionMaker device debate ] + + +descriptionMaker : Device -> Debate -> Element msg +descriptionMaker device debate = + let + image : ElementSize -> Element msg + image size = + el + [ alignLeft + , paddingEach + { top = 0 + , right = 10 + , bottom = 0 + , left = 0 + } + ] + <| + imageSquareMaker device (imagePathMaker M.Debate debate.debateImage) True size + in + detailFormat row + [ case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + none + + ( Tablet, Portrait ) -> + none + + _ -> + image Big + , detailFormat column + [ inferenceMaker debate + , detailBodyMaker TextLightGrey + (text debate.debateDescription) + ] + ] + + +inferenceMaker : Debate -> Element msg +inferenceMaker debate = + detailFormat row + [ detailTitleMaker TextLightOrange + (case debate.debateTitle of + "Arguments" -> + "Inferences:" + + "Cucklist" -> + "Cucks:" + + "Gibberish" -> + "Gibberations:" + + _ -> + "" + ) + , detailBodyMaker TextLightGrey + (text + (String.fromInt debate.debateCount) + ) + ] + + +debateArguments : Debate +debateArguments = + let + name = + "Arguments" + in + { debateTitle = name + , debateLink = Path.toString Path.Debate_Arguments + , debateCount = List.length argumentList + , debateImage = formatName name + , isNewTabLink = False + , debateDescription = "This page features arguments that I hold to be sound, though with varying degrees of confidence. I'm open to hearing all challenges, as I am ready to engage with any substantive critiques and defend any argument listed. I have additionally included a confidence meter with each argument to give readers a clearer understanding of how strongly I hold to the argument." + } + + +debateCuckList : Debate +debateCuckList = + let + name = + "Cucklist" + in + { debateTitle = name + , debateLink = Path.toString Path.Debate_Cucklist + , debateCount = List.length cuckList + , debateImage = formatName name + , isNewTabLink = False + , debateDescription = "This page features a list of complete fucking morons who wrote cheques with their mouths that their asses ultimately couldn't cash. Each person included in this list has dodged debating me in some way, shape, or form. Whether it's simply ignoring invitations, or outright refusing to engage, or agreeing to debate and then subsequently withdrawing. All such instances are catalogued here." + } + + + +-- if you decide to readd this page, move Gibberish.elm from src/Disabled back to src/Pages/Debate +-- debateGibberish : Debate +-- debateGibberish = +-- let +-- name = +-- "Gibberish" +-- in +-- { debateTitle = name +-- , debateLink = Path.toString Path.Debate_Gibberish +-- , debateCount = List.length gibberishList +-- , debateImage = formatName name +-- , isNewTabLink = False +-- , debateDescription = "This page is specifically for terms and ostensible concepts that I don't have a good reason to believe are understandable from at least one viewpoint. If the clarification of a philosophical term is unsatisfying or unsuccessful, and my interlocutor has exhausted all means of rendering the concept to me, the term ends up here until someone explains to me what the fuck it even means." +-- } diff --git a/packages/website/frontend/src/Pages/Debate/Arguments.elm b/packages/website/frontend/src/Pages/Debate/Arguments.elm new file mode 100755 index 0000000..6e95870 --- /dev/null +++ b/packages/website/frontend/src/Pages/Debate/Arguments.elm @@ -0,0 +1,620 @@ +module Pages.Debate.Arguments exposing (Model, Msg, page) + +import Browser.Events as Events +import Config.Data.Identity exposing (pageNames) +import Config.Data.ImageFolders as M + exposing + ( ImageFolder(..) + , imagePathMaker + ) +import Config.Helpers.Cards.Inner.StrengthBar exposing (barMaker) +import Config.Helpers.Cards.Inner.Text + exposing + ( bodyFormat + , detailBodyLink + , detailBodyMaker + , detailFormat + , detailSpacing + , detailTitleMaker + , generalButton + , getHoverColours + ) +import Config.Helpers.Cards.Inner.ToolTip + exposing + ( ToolTipPosition(..) + , tooltip + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Converters exposing (formatName, toTitleCase) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (argumentHeader) +import Config.Helpers.Headers.Types as R exposing (Headerable(..)) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Debate.Arguments.List + exposing + ( argumentList + ) +import Config.Pages.Debate.Arguments.Types exposing (Argument) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , getThemeColor + ) +import Config.Style.Icons.Icons + exposing + ( code + , copyLink + , thumbsDown + ) +import Config.Style.Icons.Types as TySvg + exposing + ( InnerPart + , OuterPart + ) +import Config.Style.Images + exposing + ( ElementSize(..) + , imageSquareMaker + ) +import Config.Style.Transitions exposing (transitionStyleSlow) +import Effect exposing (Effect) +import Element as E + exposing + ( Attribute + , Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignLeft + , alignRight + , alignTop + , centerX + , centerY + , clip + , column + , el + , fill + , focused + , height + , htmlAttribute + , maximum + , none + , paddingEach + , paddingXY + , paragraph + , rgba + , row + , spacing + , text + , width + ) +import Element.Background as B exposing (color) +import Element.Border as D + exposing + ( color + , rounded + , shadow + ) +import Element.Font as F + exposing + ( bold + , center + , color + ) +import Element.Input as Input +import Html.Attributes as H exposing (style) +import Layouts +import Page exposing (Page) +import Ports +import Process +import Route exposing (Route) +import Route.Path as Path +import Shared +import Svg.Attributes as SvgAttr +import Task +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + { hasBeenCopied : List Bool } + + +init : () -> ( Model, Effect Msg ) +init () = + ( { hasBeenCopied = List.repeat (List.length argumentList) False } + , Effect.batch + [ Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + , Effect.none + ] + ) + + + +-- UPDATE + + +type Msg + = CopyText String Int + | ResetCopyState Int + | NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + let + urlLinkClickUpdate : Int -> Model + urlLinkClickUpdate index = + { model + | hasBeenCopied = + List.take index model.hasBeenCopied + ++ (case List.head (List.drop index model.hasBeenCopied) of + Just isCLicked -> + [ not isCLicked ] + + Nothing -> + [] + -- shouldn't happen + ) + ++ List.drop (index + 1) model.hasBeenCopied + } + in + case msg of + CopyText text index -> + ( urlLinkClickUpdate index + , Effect.batch + [ Effect.sendCmd (Ports.copyToClipboard text) + , Effect.sendCmd (Process.sleep 700 |> Task.perform (\_ -> ResetCopyState index)) + ] + ) + + ResetCopyState index -> + ( urlLinkClickUpdate index + -- wrong lol + , Effect.none + ) + + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = "debate (" ++ pageNames.pageArguments ++ ")" + , attributes = [] + , element = debateContainer shared model + } + + +debateContainer : Shared.Model -> Model -> Element Msg +debateContainer shared model = + topLevelContainer (debateList shared model) + + +debateList : Shared.Model -> Model -> Element Msg +debateList shared model = + column + (case ( shared.device.class, shared.device.orientation ) of + _ -> + pageList shared.device + ) + <| + List.concat + [ [ headerMaker (R.Arguments argumentHeader) ] + , List.map3 + (\argument dummy index -> + cardMaker shared.device + (C.Argument argument) + (contentList shared model dummy index argument) + ) + argumentList + model.hasBeenCopied + (List.range 0 (List.length argumentList)) + ] + + +contentList : Shared.Model -> Model -> Bool -> Int -> Argument -> List (Element Msg) +contentList shared model isLinkClicked index argument = + let + image : ElementSize -> Element msg + image size = + el + [ alignLeft + , alignTop + , paddingEach + { top = 0 + , right = 10 + , bottom = 0 + , left = 0 + } + ] + <| + imageSquareMaker shared.device (imagePathMaker M.Argument argument.argumentImage) True size + in + [ row + [ width fill + , paddingEach + { top = + case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + 8 + + ( Tablet, Portrait ) -> + 8 + + _ -> + 0 + , right = 0 + , bottom = 0 + , left = 0 + } + ] + [ detailFormat column + [ detailFormat paragraph + [ case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + none + + ( Tablet, Portrait ) -> + none + + _ -> + image Medium + , el ([ height fill ] ++ bodyFormat TextLightGrey) <| text argument.propositionSummary + ] + , detailFormat row + [ strengthMaker shared + , barMaker shared getConfidenceTooltip argument.argumentCertainty + ] + ] + ] + , tableMaker shared.device argument + , formalizationMaker shared.device argument + , el [ alignRight ] <| + row [ width fill, spacing 20 ] + [ generalButton shared (Path.toString Path.Contact_Criticism) thumbsDown + , generalButton shared argument.proofLink code + , copyButton shared model isLinkClicked index argument + ] + ] + + +copyButton : Shared.Model -> Model -> Bool -> Int -> Argument -> Element Msg +copyButton shared model isLinkClicked index argument = + Input.button + [ focused + [ D.color (rgba 0 0 0 0) + , D.shadow + { blur = 0 + , color = rgba 0 0 0 0 + , offset = ( 0, 0 ) + , size = 0 + } + ] + ] + { onPress = Just (CopyText ("https://uprootnutrition.com" ++ Path.toString Path.Debate_Arguments ++ "#" ++ formatName argument.argumentImage) index) + , label = + el + (if isLinkClicked then + [ transitionStyleSlow + , tooltip IsRight "Copied!" + , case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + B.color (getThemeColor BackgroundDarkGrey) + + ( Tablet, Portrait ) -> + B.color (getThemeColor BackgroundDarkGrey) + + _ -> + B.color (getThemeColor BackgroundDeepDarkGrey) + , paddingXY 7 7 + , D.rounded 10 + , F.color (getThemeColor TextLightOrange) + ] + + else + [ transitionStyleSlow + , B.color (getThemeColor Transparent) + , paddingXY 7 7 + , D.rounded 10 + , F.color (getThemeColor TextLightOrange) + ] + ++ getHoverColours TextLightOrange + ) + <| + copyLink + { elementAttributes = + [] + , sharedModel = shared + , svgAttributes = [ SvgAttr.width "20" ] + } + } + + +strengthMaker : Shared.Model -> Element msg +strengthMaker shared = + el + (case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + [] + + ( Tablet, Portrait ) -> + [] + + _ -> + if not shared.isNavbarExpanded then + [ tooltip IsLeft + "This represents how dope I think the inference/reductio is." + ] + + else + [] + ) + <| + detailTitleMaker TextLightOrange "Banger Rating:" + + +getConfidenceTooltip : Int -> String +getConfidenceTooltip num = + case num of + 0 -> + "Extremely low. Highly speculative." + + 1 -> + "Very low. Almost entirely uncertain." + + 2 -> + "Low. Highly uncertain." + + 3 -> + "Kinda low. More uncertain than not." + + 4 -> + "Below average. Some significant doubts." + + 5 -> + "Moderate. Equal mix of certainty and doubt." + + 6 -> + "Above average. More certain than not." + + 7 -> + "Kinda high. Fairly confident." + + 8 -> + "High. Strongly confident." + + 9 -> + "Very high. Almost entirely certain." + + 10 -> + "Extremely high. Completely certain." + + _ -> + "Confidence level out of expected range." + + +tableMaker : Device -> Argument -> Element msg +tableMaker device argument = + let + cellPadding : Attribute msg + cellPadding = + paddingXY 10 5 + in + column + [ centerX + , E.width fill + ] + [ el + [ E.width fill + , htmlAttribute <| H.style "position" "relative" + ] + <| + E.table + ([ D.rounded 10 + , D.width 2 + , D.color (getThemeColor TextDarkGrey) + , clip + ] + ++ (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + [ B.color (getThemeColor BackgroundSpreadsheet) ] + + ( Tablet, Portrait ) -> + [ B.color (getThemeColor BackgroundSpreadsheet) ] + + _ -> + [] + ) + ) + { data = argument.definitionTable + , columns = + [ { header = + el + [ F.bold + , D.widthEach + { bottom = 1 + , top = 1 + , left = 1 + , right = 1 + } + , D.color (getThemeColor TextDarkGrey) + , cellPadding + , E.width fill + ] + <| + detailTitleMaker + TextLightOrange + "Definiendum" + , width = fill |> maximum 30 + , view = + \definition -> + el + [ D.widthEach + { bottom = 1 + , top = 0 + , left = 1 + , right = 1 + } + , D.color (getThemeColor TextDarkGrey) + , cellPadding + , E.height fill + ] + <| + el + [ centerX + , centerY + ] + <| + paragraph [] [ detailTitleMaker TextLightOrange definition.definiendum ] + } + , { header = + el + [ D.widthEach + { bottom = 1 + , top = 1 + , left = 0 + , right = 1 + } + , D.color (getThemeColor TextDarkGrey) + , cellPadding + , E.width fill + ] + <| + detailTitleMaker TextLightOrange "Definiens" + , width = fill + , view = + \definition -> + el + [ D.widthEach + { bottom = 1 + , top = 0 + , left = 0 + , right = 1 + } + , D.color (getThemeColor TextDarkGrey) + , cellPadding + , E.height fill + ] + <| + el [] <| + paragraph [] [ detailBodyMaker TextLightGrey (text definition.definiens) ] + } + ] + } + ] + + +formalizationMaker : Device -> Argument -> Element msg +formalizationMaker device argument = + column + [ centerX + , E.width fill + , spacing 10 + ] + (List.indexedMap + (\index argumentEntry -> + column + [ paddingXY + (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + 0 + + ( Tablet, Portrait ) -> + 0 + + _ -> + 40 + ) + 3 + ] + (List.indexedMap + (\entryIndex entryWithNotation -> + column + [ centerX + , F.center + , detailSpacing + , E.width fill + ] + [ paragraph + [ width fill ] + [ detailTitleMaker + TextLightOrange + (if entryIndex < List.length argumentEntry.premises then + "P" ++ String.fromInt (entryIndex + 1) ++ ") " + + else + "C) " + ) + , detailBodyMaker TextLightGrey + (text + (if entryIndex < List.length argumentEntry.premises then + entryWithNotation.premise + + else + argumentEntry.conclusion + ) + ) + |> el + [] + ] + , paragraph + [] + [ detailTitleMaker + TextLightOrange + (if entryIndex < List.length argumentEntry.premises then + "(" ++ entryWithNotation.notation ++ ")" + + else + "(鈭" ++ argumentEntry.conclusionNotation ++ ")" + ) + ] + ] + ) + (argumentEntry.premises ++ [ { premise = argumentEntry.conclusion, notation = argumentEntry.conclusionNotation } ]) + ) + ) + argument.argumentFormalization + ) diff --git a/packages/website/frontend/src/Pages/Debate/Cucklist.elm b/packages/website/frontend/src/Pages/Debate/Cucklist.elm new file mode 100755 index 0000000..f387313 --- /dev/null +++ b/packages/website/frontend/src/Pages/Debate/Cucklist.elm @@ -0,0 +1,609 @@ +module Pages.Debate.Cucklist exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Data.ImageFolders as M + exposing + ( ImageFolder(..) + , imagePathMaker + ) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyMaker + , detailFormat + , detailSpacing + , detailTitleLink + , detailTitleMaker + , getHoverColours + , numberedListItem + ) +import Config.Helpers.Cards.Inner.ToolTip + exposing + ( ToolTipPosition(..) + , tooltip + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Converters exposing (formatName, formatSocial) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (cuckListHeader) +import Config.Helpers.Headers.Types as R exposing (Headerable(..)) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Debate.Cuckery.List exposing (cuckList) +import Config.Pages.Debate.Cuckery.Types + exposing + ( Cuck + , Dodge + , DodgeDescription(..) + , DodgeFallacies(..) + , DoxasticState(..) + , Evaluation(..) + ) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , getThemeColor + ) +import Config.Style.Fonts exposing (defaultFontSize, smallTextFontSize) +import Config.Style.Icons.Icons exposing (copyLink) +import Config.Style.Icons.Types as TySvg + exposing + ( InnerPart + , OuterPart + ) +import Config.Style.Images exposing (ElementSize(..), imageSquareMaker) +import Config.Style.Transitions + exposing + ( hoverFontDarkOrange + , transitionStyleFast + , transitionStyleSlow + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignRight + , alignTop + , column + , el + , fill + , focused + , htmlAttribute + , newTabLink + , none + , paddingEach + , paddingXY + , paragraph + , px + , rgba + , row + , spacing + , text + , width + ) +import Element.Background as B exposing (color) +import Element.Border as D + exposing + ( color + , rounded + , shadow + ) +import Element.Font as F exposing (color) +import Element.Input as Input +import Html.Attributes as H exposing (style) +import Layouts +import Page exposing (Page) +import Ports +import Process +import Route exposing (Route) +import Route.Path as Path +import Shared +import Svg.Attributes as SvgAttr +import Task +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + { hasBeenCopied : List Bool } + + +init : () -> ( Model, Effect Msg ) +init () = + ( { hasBeenCopied = List.repeat (List.length cuckList) False } + , Effect.batch + [ Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + , Effect.none + ] + ) + + + +-- UPDATE + + +type Msg + = CopyText String Int + | ResetCopyState Int + | NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + let + urlLinkClickUpdate : Int -> Model + urlLinkClickUpdate index = + { model + | hasBeenCopied = + List.take index model.hasBeenCopied + ++ (case List.head (List.drop index model.hasBeenCopied) of + Just isCLicked -> + [ not isCLicked ] + + Nothing -> + -- shouldn't happen + [] + ) + ++ List.drop (index + 1) model.hasBeenCopied + } + in + case msg of + CopyText text index -> + ( urlLinkClickUpdate index + , Effect.batch + [ Effect.sendCmd (Ports.copyToClipboard text) + , Effect.sendCmd (Process.sleep 700 |> Task.perform (\_ -> ResetCopyState index)) + ] + ) + + ResetCopyState index -> + ( urlLinkClickUpdate index + , Effect.none + ) + + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = "debate (" ++ pageNames.pageCucks ++ ")" + , attributes = [] + , element = cucksContainer shared model + } + + +cucksContainer : Shared.Model -> Model -> Element Msg +cucksContainer shared model = + topLevelContainer (cucksList shared model) + + +cucksList : Shared.Model -> Model -> Element Msg +cucksList shared model = + column + (case ( shared.device.class, shared.device.orientation ) of + _ -> + pageList shared.device + ) + <| + List.concat + [ [ headerMaker (R.CuckList cuckListHeader) ] + , List.map3 + (\cuck dummy index -> + cardMaker shared.device (C.Cuck cuck) (contentList shared model dummy index cuck) + ) + cuckList + model.hasBeenCopied + (List.range 0 (List.length cuckList)) + ] + + +contentList : Shared.Model -> Model -> Bool -> Int -> Cuck -> List (Element Msg) +contentList shared model isLinkClicked index cuck = + let + image : ElementSize -> Element msg + image size = + el + [ alignRight + , alignTop + , paddingEach + { top = 0 + , right = 10 + , bottom = 0 + , left = 0 + } + ] + <| + imageSquareMaker shared.device (imagePathMaker M.Cuck cuck.cuckImage) True size + in + [ detailFormat row + [ case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + none + + ( Tablet, Portrait ) -> + none + + _ -> + image Big + , detailFormat column + [ socialMaker cuck + , dodgeTitle cuck + , dodgeMaker shared.device cuck + , el [ alignRight ] <| copyButton shared model isLinkClicked index cuck + ] + ] + ] + + +copyButton : Shared.Model -> Model -> Bool -> Int -> Cuck -> Element Msg +copyButton shared model isLinkClicked index cuck = + Input.button + [ focused + [ D.color (rgba 0 0 0 0) + , D.shadow { blur = 0, color = rgba 0 0 0 0, offset = ( 0, 0 ), size = 0 } + ] + ] + { onPress = Just (CopyText ("https://uprootnutrition.com" ++ Path.toString Path.Debate_Cucklist ++ "#" ++ formatName cuck.cuckImage) index) + , label = + el + (if isLinkClicked then + [ transitionStyleSlow + , tooltip IsRight "Copied!" + , case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + B.color (getThemeColor BackgroundDarkGrey) + + ( Tablet, Portrait ) -> + B.color (getThemeColor BackgroundDarkGrey) + + _ -> + B.color (getThemeColor BackgroundDeepDarkGrey) + , paddingXY 7 7 + , D.rounded 10 + , F.color (getThemeColor TextLightOrange) + ] + + else + [ transitionStyleSlow + , B.color (getThemeColor Transparent) + , paddingXY 7 7 + , D.rounded 10 + , F.color (getThemeColor TextLightOrange) + ] + ++ getHoverColours TextLightOrange + ) + <| + copyLink + { elementAttributes = + [] + , sharedModel = shared + , svgAttributes = [ SvgAttr.width "20" ] + } + } + + +dodgeMaker : Device -> Cuck -> Element msg +dodgeMaker device cuck = + column + [ spacing 10 + , width fill + ] + <| + List.map2 (\x y -> makeDodge device cuck x y) + cuck.cuckDodges + (List.range 1 (List.length cuck.cuckDodges)) + + +socialMaker : Cuck -> Element msg +socialMaker cuck = + newTabLink + [] + { url = cuck.cuckSocial + , label = + detailTitleLink + TextLightOrange + (formatSocial cuck.cuckSocial) + } + + +dodgeTitle : Cuck -> Element msg +dodgeTitle cuck = + detailTitleMaker + TextLightGrey + "Dodges: " + + +makeDodge : Device -> Cuck -> Dodge -> Int -> Element msg +makeDodge device cuck dodge index = + detailFormat row + [ numberedListItem TextLightGrey index + , detailFormat column + (dodgeRows device cuck dodge) + ] + + +dodgeWidth = + width <| px 85 + + +formatProposition : String -> String +formatProposition proposition = + if proposition == "N/A" then + proposition + + else + "\"" ++ proposition ++ "\"" + + +dodgeCounter : Int -> Element msg +dodgeCounter index = + detailTitleMaker TextLightGrey + (String.fromInt index ++ ". ") + + +circumstanceMaker : Cuck -> Dodge -> Element msg +circumstanceMaker cuck dodge = + newTabLink + [] + { url = dodge.dodgeLink + , label = circumstance cuck dodge + } + + +circumstance : Cuck -> Dodge -> Element msg +circumstance cuck dodge = + detailFormat paragraph + [ detailTitleLink TextLightOrange + (case dodge.dodgeDescription of + NoReply -> + "Debate invitation extended with no response" + + RanAway -> + "Engaged in written debate and ran away when cornered" + + GhostedMe -> + "Debate invitation accepted with no follow-up" + + PussiedOut -> + "Debate invitation declined" + + InTooDeep -> + "Debate invitation accepted and subsequently retracted" + + KillScreen -> + "All further debate invitations preemptively declined" + + VagueGesture -> + "Chose to gesture vaguely instead of engaging" + + EmptyHanded -> + "Engaged in written debate and ran away when pressed for specifics" + ) + , el [ F.color (getThemeColor TextLightGrey) ] <| + text "." + + -- , receipts cuck dodge + ] + + +receipts : Cuck -> Dodge -> Element msg +receipts cuck dodge = + row + [ spacing 3 + , smallTextFontSize + , paddingEach + { top = 0 + , right = 0 + , bottom = 0 + , left = 3 + } + , htmlAttribute (H.style "position" "relative") + , htmlAttribute (H.style "top" "-5px") + ] + <| + List.indexedMap + (\index2 link -> + paragraph + [ alignTop + , F.color (getThemeColor TextLightOrange) + ] + [ el + [ transitionStyleSlow + , hoverFontDarkOrange + ] + (text (String.fromInt (index2 + 1))) + , text ", " |> el [ F.color (getThemeColor TextLightGrey) ] + ] + ) + dodge.dodgeReceipts + + +infoRow : Device -> String -> Element msg -> Element msg +infoRow device label value = + detailFormat + (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + column + + ( Tablet, Portrait ) -> + column + + _ -> + row + ) + (if String.isEmpty label then + [ detailBodyMaker TextLightGrey value ] + + else + [ el + [ width <| px 75 + , alignTop + ] + <| + detailTitleMaker TextLightGrey label + , detailBodyMaker TextLightGrey value + ] + ) + + +dodgeRows : Device -> Cuck -> Dodge -> List (Element msg) +dodgeRows device cuck dodge = + [ infoRow device "" (circumstanceMaker cuck dodge) + , infoRow device "Prop:" (text (formatProposition dodge.dodgeProposition)) + , case dodge.dodgeFallacy of + Nothing -> + none + + _ -> + infoRow device "Fallacy:" (reductioMaker device dodge) + , infoRow device "Attitude:" (attitudeMaker device dodge) + , infoRow device "Reason:" (reasonMaker device dodge) + ] + + +attitudeMaker : Device -> Dodge -> Element msg +attitudeMaker device dodge = + detailFormat paragraph + [ case dodge.dodgeNicksDoxasticState of + Nothing -> + paragraph [ F.regular ] [ text "I don't form a doxastic state." ] + + Just Belief -> + paragraph [ F.regular ] + [ text "I lean more toward " + , el [ F.bold ] (text "TRUE") + , text " than false." + ] + + Just Disbelief -> + paragraph [ F.regular ] + [ text "I lean more toward " + , text "FALSE" |> el [ F.bold ] + , text " than true." + ] + + Just Agnostic -> + el [ F.regular ] (text "I don't form beliefs about this proposition.") + ] + + +reductioMaker : Device -> Dodge -> Element msg +reductioMaker device dodge = + let + displayFallacy : String -> Element msg + displayFallacy fallacyText = + detailFormat paragraph + [ text fallacyText ] + in + case dodge.dodgeFallacy of + Nothing -> + none + + Just fallacy -> + case fallacy of + SpecificFallacy str -> + displayFallacy str + + AppealToNature -> + displayFallacy "Appeal to Nature" + + AppealToTradition -> + displayFallacy "Appeal to Tradition" + + AppealToIgnorance -> + displayFallacy "Appeal to Ignorance" + + AppealFromIncredulity -> + displayFallacy "Appeal from Incredulity" + + RedHerring -> + displayFallacy "Red Herring" + + BeggingTheQuestion -> + displayFallacy "Begging the Question" + + Strawman -> + displayFallacy "Strawman" + + Equivocation -> + displayFallacy "Equivocation" + + GeneticFallacy -> + displayFallacy "Genetic Fallacy" + + MotteAndBailey -> + displayFallacy "Motte and Bailey" + + MechanisticMasturbation -> + displayFallacy "Mechanistic Masturbation" + + Vaguemongering -> + displayFallacy "Vaguemongering" + + VagueHumanity -> + displayFallacy "Vague Humanity" + + SelfSealing -> + displayFallacy "Self-Sealing Argument Fallacy" + + +reasonMaker : Device -> Dodge -> Element msg +reasonMaker device dodge = + let + reasonText = + case dodge.dodgeNicksDoxasticReason of + NoProp -> + "There is no proposition to evaluate." + + VagueProp -> + "The proposition is too vague to evaluate." + + SpecificPropReason str -> + str + in + detailFormat paragraph + [ el [ defaultFontSize ] (text reasonText) ] diff --git a/packages/website/frontend/src/Pages/Donate.elm b/packages/website/frontend/src/Pages/Donate.elm new file mode 100755 index 0000000..4e20df5 --- /dev/null +++ b/packages/website/frontend/src/Pages/Donate.elm @@ -0,0 +1,476 @@ +module Pages.Donate exposing (Model, Msg, page) + +-- import Html.Attributes as H + +import Config.Data.Identity exposing (pageNames) +import Config.Data.ImageFolders as M + exposing + ( ImageFolder(..) + , imagePathMaker + ) +import Config.Helpers.Cards.Inner.StrengthBar + exposing + ( barMaker + , barPadding + ) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyMaker + , detailFormat + , detailTitleMaker + , listItem + , listMaker + ) +import Config.Helpers.Cards.Inner.ToolTip + exposing + ( ToolTipPosition(..) + , tooltip + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (donateHeader) +import Config.Helpers.Headers.Types as R exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Donate.Records.Cardano exposing (donateCardano) +import Config.Pages.Donate.Records.KoFi exposing (donateKoFi) +import Config.Pages.Donate.Records.LiberaPay exposing (donateLiberaPay) +import Config.Pages.Donate.Records.Merch exposing (donateMerch) +import Config.Pages.Donate.Records.Patreon exposing (donatePatreon) +import Config.Pages.Donate.Records.PayPal exposing (donatePayPal) +import Config.Pages.Donate.Records.Stripe exposing (donateStripe) +import Config.Pages.Donate.Records.YouTube exposing (donateYouTube) +import Config.Pages.Donate.Types + exposing + ( Cons + , Donate + , Features + , Pros + ) +import Config.Style.Colour.Helpers as T + exposing + ( ThemeColor(..) + , getThemeColor + ) +import Config.Style.Images + exposing + ( ElementSize(..) + , imageSquareMaker + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Column + , Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignLeft + , alignTop + , centerX + , centerY + , clip + , column + , el + , fill + , padding + , paddingEach + , paragraph + , px + , row + , spacing + , text + ) +import Element.Background as B exposing (color) +import Element.Border as D + exposing + ( color + , widthEach + ) +import Element.Font as F + exposing + ( bold + , center + , color + ) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Shared exposing (Model) +import Task +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageDonate + , attributes = [] + , element = donateContainer shared + } + + +donateContainer : Shared.Model -> Element msg +donateContainer shared = + topLevelContainer (donateList shared) + + +donateList : Shared.Model -> Element msg +donateList shared = + column + (case ( shared.device.class, shared.device.orientation ) of + _ -> + pageList shared.device + ) + <| + List.concat + [ [ headerMaker (R.Donate donateHeader) ] + , List.map + (\donate -> + cardMaker shared.device (C.Donate donate) (contentList shared donate) + ) + [ donateLiberaPay + , donateStripe + , donatePatreon + , donateCardano + , donateKoFi + , donateYouTube + , donateMerch + ] + ] + + +contentList : Shared.Model -> Donate -> List (Element msg) +contentList shared donate = + let + image : ElementSize -> Element msg + image size = + el + [ alignLeft + , alignTop + , paddingEach + { top = 0 + , right = 10 + , bottom = 0 + , left = 0 + } + ] + <| + imageSquareMaker shared.device (imagePathMaker M.Donate donate.donateImage) True size + in + [ detailFormat row + [ image Big + , detailFormat column + [ feeMaker donate + , preferenceMaker shared donate + , tableMaker donate shared.device + ] + ] + , proConMaker donate + ] + + +feeMaker : Donate -> Element msg +feeMaker donate = + detailFormat row + [ detailTitleMaker TextLightOrange "Fees:" + , detailBodyMaker TextLightGrey (text donate.donateFees) + ] + + +proConMaker : Donate -> Element msg +proConMaker donate = + detailFormat column + [ detailTitleMaker TextLightOrange "Pros:" + , listMaker makePro donate.donatePros + , detailTitleMaker TextLightOrange "Cons:" + , listMaker makeCon donate.donateCons + ] + + +makePro : Pros -> Element msg +makePro pro = + listItem TextLightGrey pro.pro + + +makeCon : Cons -> Element msg +makeCon con = + listItem TextLightGrey con.con + + +preferenceMaker : Shared.Model -> Donate -> Element msg +preferenceMaker shared donate = + detailFormat row + [ el + (case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + [] + + ( Tablet, Portrait ) -> + [] + + _ -> + if not shared.isNavbarExpanded then + [ tooltip IsLeft + "This represents how strongly I prefer a given platform relative to other platforms." + ] + + else + [] + ) + <| + detailTitleMaker + TextLightOrange + "Preference:" + , barPadding + [ barMaker shared getPreferenceTooltip donate.donatePreference ] + ] + + +getPreferenceTooltip : Int -> String +getPreferenceTooltip num = + case num of + 0 -> + "Disdain this platform." + + 1 -> + "Very negative towards this platform." + + 2 -> + "Strongly dislike this platform." + + 3 -> + "Dislike this platform." + + 4 -> + "Somewhat dislike this platform." + + 5 -> + "Neutral, no strong feelings." + + 6 -> + "Somewhat like this platform." + + 7 -> + "Like this platform." + + 8 -> + "Strongly like this platform." + + 9 -> + "Very positive towards this platform." + + 10 -> + "Absolutely love this platform!" + + _ -> + "Preference is out of bounds." + + +tableMaker : Donate -> Device -> Element msg +tableMaker donate device = + el + [ E.alignLeft + , E.width fill + , centerX + ] + <| + E.table + ([ spacing 0 + , D.rounded 10 + , D.width 2 + , D.color (getThemeColor TextDarkGrey) + , clip + ] + ++ (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + [ B.color (getThemeColor BackgroundSpreadsheet) ] + + ( Tablet, Portrait ) -> + [ B.color (getThemeColor BackgroundSpreadsheet) ] + + _ -> + [] + ) + ) + { data = donate.donateFeatures + , columns = + List.map createColumn + (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + mobileLabels + + ( Tablet, Portrait ) -> + mobileLabels + + _ -> + desktopLabels + ) + } + + +desktopLabels : List { label : String, getter : { a | free : b, subscriptions : b, userFriendly : b, anonymous : b, rewardTiers : b } -> b } +desktopLabels = + [ { label = "Zero Fees" + , getter = .free + } + , { label = "Subscriptions" + , getter = .subscriptions + } + , { label = "User Friendly" + , getter = .userFriendly + } + , { label = "Anonymous" + , getter = .anonymous + } + , { label = "Rewards" + , getter = .rewardTiers + } + ] + + +mobileLabels : List { label : String, getter : { a | free : b, subscriptions : b, userFriendly : b, anonymous : b } -> b } +mobileLabels = + [ { label = "Free" + , getter = .free + } + , { label = "Subs" + , getter = .subscriptions + } + , { label = "Easy" + , getter = .userFriendly + } + , { label = "Safe" + , getter = .anonymous + } + ] + + +createColumn : { label : String, getter : Features -> Maybe Bool } -> Column Features msg +createColumn { label, getter } = + { header = + el + [ F.bold + , D.widthEach + { bottom = 1 + , top = 1 + , left = 1 + , right = 0 + } + , D.color (getThemeColor TextDarkGrey) + , padding 5 + , E.width fill + , F.center + ] + (text label) + |> el [ F.color (getThemeColor TextLightOrange) ] + , width = fill + , view = + \feature -> + row + [ F.color (getThemeColor TextLightOrange) + , F.bold + , D.widthEach + { bottom = 1 + , top = 0 + , left = 1 + , right = 0 + } + , D.color (getThemeColor TextDarkGrey) + , padding 5 + , E.height fill + ] + [ row + [ centerX + , centerY + ] + [ paragraph [] + [ E.image + [ E.width <| px 30 + , E.height <| px 30 + ] + (featureToString (getter feature)) + ] + ] + ] + } + + +featureToString : Maybe Bool -> { src : String, description : String } +featureToString maybeBool = + case maybeBool of + Just True -> + { src = "donate/checkmark.png", description = "" } + + Just False -> + { src = "donate/ex.png", description = "" } + + Nothing -> + { src = "donate/question.png", description = "" } diff --git a/packages/website/frontend/src/Pages/Home_.elm b/packages/website/frontend/src/Pages/Home_.elm new file mode 100755 index 0000000..f5b5860 --- /dev/null +++ b/packages/website/frontend/src/Pages/Home_.elm @@ -0,0 +1,223 @@ +module Pages.Home_ exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Cards.Inner.Text exposing (detailBodyLink) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageListCenter + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , colourTheme + ) +import Config.Style.Fonts + exposing + ( defaultFontSize + , paragraphSpacing + ) +import Config.Style.Glow exposing (glowDeepDarkGrey) +import Config.Style.Icons.Icons + exposing + ( upRootLarge + , upRootMedium + , upRootSmall + ) +import Config.Style.Transitions exposing (transitionStyleMedium) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , centerX + , centerY + , column + , el + , html + , maximum + , minimum + , newTabLink + , paddingEach + , paragraph + , px + , text + ) +import Element.Background as B exposing (color) +import Element.Border as D exposing (rounded) +import Element.Font as F exposing (color) +import Html exposing (Html) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageHome + , attributes = [] + , element = homeContainer shared.device + } + + +homeContainer : Device -> Element msg +homeContainer device = + topLevelContainer (homeList device) + + +homeList : Device -> Element msg +homeList device = + column (pageListCenter device) + [ case device.class of + Desktop -> + homePage device upRootLarge + + BigDesktop -> + homePage device upRootLarge + + Tablet -> + case device.orientation of + _ -> + homePage device upRootMedium + + Phone -> + case device.orientation of + _ -> + homePage device upRootSmall + ] + + +homePage : Device -> Html msg -> Element msg +homePage device image = + column + [ centerX + , centerY + , E.spacing 20 + , E.width (E.fill |> minimum 100) + , E.width (E.fill |> maximum 875) + ] + [ el + [ centerX + , E.width <| + px <| + case device.class of + Desktop -> + 675 + + BigDesktop -> + 675 + + Tablet -> + case device.orientation of + _ -> + 300 + + Phone -> + case device.orientation of + _ -> + 150 + ] + <| + html image + , el + [ paddingEach + { top = 15 + , bottom = 15 + , left = 20 + , right = 20 + } + , glowDeepDarkGrey + , B.color colourTheme.backgroundDarkGrey + , D.rounded 10 + , E.width E.fill + , E.spacing 8 + ] + <| + paragraph + [ F.color colourTheme.textLightGrey + , paragraphSpacing + , defaultFontSize + , centerX + ] + [ text "upRootNutrition is an " + , newTabLink [] + { url = "https://gitlab.com/upRootNutrition/website" + , label = detailBodyLink TextLightOrange "open source" + } + , text " project created by Nick Hiebert, designed to elevate the quality of nutrition science communication in online discourse. By applying more rigorous systems of reasoning, such as formal logic and semantic analysis, upRootNutrition aims to cut through the misinformation and sophistry that are endemic on social media." + ] + , E.image + [ E.height <| px 0 + , E.width <| px 0 + ] + { src = "/assets/twittercard.png", description = "" } + ] diff --git a/packages/website/frontend/src/Pages/Interviews.elm b/packages/website/frontend/src/Pages/Interviews.elm new file mode 100755 index 0000000..5c90edb --- /dev/null +++ b/packages/website/frontend/src/Pages/Interviews.elm @@ -0,0 +1,357 @@ +module Pages.Interviews exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Data.ImageFolders as M + exposing + ( ImageFolder(..) + , imagePathMaker + ) +import Config.Helpers.Cards.Inner.StrengthBar + exposing + ( barMaker + , barPadding + ) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyLink + , detailBodyMaker + , detailFormat + , detailFormatEl + , detailSpacing + , detailTitleLinkWide + , detailTitleMaker + , listCounter + , listItem + , listMaker + , listMaker2 + , socialMaker + ) +import Config.Helpers.Cards.Inner.ToolTip + exposing + ( ToolTipPosition(..) + , tooltip + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Converters exposing (formatSocial) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (interviewHeader) +import Config.Helpers.Headers.Types as R exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Debate.Cuckery.List exposing (cuckList) +import Config.Pages.Interviews.Records.DrShawnBakerPodcast exposing (drShawnBakerPodcast) +import Config.Pages.Interviews.Records.FitAndFurious exposing (fitAndFurious) +import Config.Pages.Interviews.Records.FoolproofMastery exposing (foolproofMastery) +import Config.Pages.Interviews.Records.KetogeeksPodcast exposing (ketoGeeksPodcast) +import Config.Pages.Interviews.Records.LegendaryLifePodcast exposing (legendaryLifePodcast) +import Config.Pages.Interviews.Records.MarkBellsPowerProject exposing (markBellsPowerProject) +import Config.Pages.Interviews.Records.MuscleMemoirsPodcast exposing (muscleMemoirsPodcast) +import Config.Pages.Interviews.Records.SigmaNutritionRadio exposing (sigmaNutritionRadio) +import Config.Pages.Interviews.Records.StrenuousLifePodcast exposing (strenuousLifePodcast) +import Config.Pages.Interviews.Types + exposing + ( Appearance + , Interview + , Subjects + ) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , colourTheme + ) +import Config.Style.Images + exposing + ( ElementSize(..) + , imageSquareMaker + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignLeft + , alignTop + , column + , el + , explain + , fill + , newTabLink + , none + , paddingEach + , row + , text + , width + ) +import Html.Attributes as H exposing (style) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageInterviews + , attributes = [] + , element = interviewContainer shared + } + + +interviewContainer : Shared.Model -> Element msg +interviewContainer shared = + topLevelContainer (interviewList shared) + + +interviewList : Shared.Model -> Element msg +interviewList shared = + column + (case shared.device.class of + _ -> + pageList shared.device + ) + <| + List.concat + [ [ headerMaker (R.Interviews interviewHeader) ] + , List.map + (\interview -> + cardMaker shared.device (C.Interview interview) (contentList shared interview) + ) + [ sigmaNutritionRadio + , markBellsPowerProject + , foolproofMastery + , ketoGeeksPodcast + , legendaryLifePodcast + , muscleMemoirsPodcast + , fitAndFurious + , strenuousLifePodcast + , drShawnBakerPodcast + ] + ] + + +contentList : Shared.Model -> Interview -> List (Element msg) +contentList shared interview = + let + image : ElementSize -> Element msg + image size = + el + [ alignLeft + , alignTop + , paddingEach + { top = 0 + , right = 8 + , bottom = 0 + , left = 0 + } + ] + <| + imageSquareMaker shared.device (imagePathMaker M.Interviews interview.interviewImage) True size + + imageMaker : Element msg + imageMaker = + case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + none + + ( Tablet, Portrait ) -> + none + + _ -> + image Big + in + [ detailFormat row + [ imageMaker + , detailFormat column + [ socialMaker interview.interviewSocial interview.interviewSocial + , detailTitleMaker TextLightGrey "Appearances:" + , appearanceMaker shared interview + ] + ] + ] + + +appearanceMaker : Shared.Model -> Interview -> Element msg +appearanceMaker shared interview = + detailFormat column + [ listMaker2 (makeAppearance shared) interview.interviewAppearances ] + + +makeAppearance : Shared.Model -> Appearance -> Int -> Element msg +makeAppearance shared appearanceEntry index = + detailFormat row + [ listCounter index + , detailFormat column + [ episodeMaker appearanceEntry + , experienceMaker shared appearanceEntry + , dateMaker appearanceEntry + , subjectMaker appearanceEntry + ] + ] + + +episodeMaker : Appearance -> Element msg +episodeMaker appearanceEntry = + newTabLink + [ width fill ] + { url = appearanceEntry.appearanceLink + , label = detailTitleLinkWide TextLightOrange ("#" ++ appearanceEntry.appearanceEpisode ++ ": " ++ appearanceEntry.appearanceTitle) + } + + +experienceMaker : Shared.Model -> Appearance -> Element msg +experienceMaker shared appearanceEntry = + detailFormat row + [ el + (case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + [] + + ( Tablet, Portrait ) -> + [] + + _ -> + if not shared.isNavbarExpanded then + [ tooltip IsLeft + "This represents the pleasantness of the host." + ] + + else + [] + ) + <| + detailTitleMaker TextLightGrey "Pleasantness:" + , barPadding + [ barMaker shared getExperienceTooltip appearanceEntry.appearanceExperience ] + ] + + +dateMaker : Appearance -> Element msg +dateMaker appearanceEntry = + detailFormat row + [ detailTitleMaker TextLightGrey "Published:" + , detailBodyMaker TextLightGrey (text appearanceEntry.appearanceYear) + ] + + +subjectMaker : Appearance -> Element msg +subjectMaker appearanceEntry = + detailFormat column + [ detailFormatEl <| detailTitleMaker TextLightGrey "Subjects: " + , detailFormat column [ listMaker makeSubject appearanceEntry.appearanceSubjects ] + ] + + +makeSubject : Subjects -> Element msg +makeSubject subjects = + listItem TextLightGrey subjects.subject + + +getExperienceTooltip : Int -> String +getExperienceTooltip num = + case num of + 0 -> + "Nightmare. Complete fucking cunt." + + 1 -> + "Toxic. Deliberately malicious." + + 2 -> + "Hostile. Consistently disruptive." + + 3 -> + "Belligerent. Consistently disrespectful." + + 4 -> + "Uncivil. Frequently dismissive." + + 5 -> + "Neutral. Unremarkable social interaction." + + 6 -> + "Civil. Slightly considerate." + + 7 -> + "Pleasant. Genuinely respectful." + + 8 -> + "Very kind. Consistently supportive." + + 9 -> + "Compassionate. Went out of their way." + + 10 -> + "Absolute angel. Perfectly empathetic." + + _ -> + "Behavior level out of expected range." diff --git a/packages/website/frontend/src/Pages/Journal.elm b/packages/website/frontend/src/Pages/Journal.elm new file mode 100755 index 0000000..d78e766 --- /dev/null +++ b/packages/website/frontend/src/Pages/Journal.elm @@ -0,0 +1,259 @@ +module Pages.Journal exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Data.ImageFolders as M + exposing + ( ImageFolder(..) + , imagePathMaker + ) +import Config.Helpers.Articles.Article exposing (extractFirstWords) +import Config.Helpers.Articles.Markdown exposing (renderDeviceMarkdownNoToc, renderDeviceMarkdownNoTocGeneric) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyMaker + , detailFormat + , detailTitleMaker + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Converters + exposing + ( formatName + , wordCount + ) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (journalHeader) +import Config.Helpers.Headers.Types as R exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.Journal.DigitalPrivacy exposing (articleDigitalPrivacy) +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Config.Style.Colour.Helpers as T exposing (ThemeColor(..)) +import Config.Style.Fonts + exposing + ( defaultFontSize + , paragraphSpacing + ) +import Config.Style.Icons.Icons exposing (construction) +import Config.Style.Images + exposing + ( ElementSize(..) + , imageSquareMaker + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignLeft + , alignTop + , column + , el + , none + , paddingEach + , px + , row + , text + , width + ) +import Html.Attributes as H exposing (style) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Route.Path as Path +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageJournal + , attributes = [] + , element = blogContainer shared.device + } + + +blogContainer : Device -> Element msg +blogContainer device = + topLevelContainer (blogList device) + + +blogList : Device -> Element msg +blogList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ [ headerMaker (R.BlogPage journalHeader) ] + , List.map + (\article -> + cardMaker device (C.BlogCard article) (contentList device article) + ) + [ articleDigitalPrivacy ] + ] + + +contentList : Device -> BlogArticle -> List (Element msg) +contentList device article = + [ articleMaker device article ] + + +articleImage : + BlogArticle + -> + { src : String + , description : String + } +articleImage article = + { src = imagePathMaker M.BlogArticle article.articleImage + , description = article.articleName + } + + +articleMaker : Device -> BlogArticle -> Element msg +articleMaker device article = + let + image : ElementSize -> Element msg + image size = + el + [ alignLeft + , alignTop + , paddingEach + { top = 0 + , right = 10 + , bottom = 7 + , left = 0 + } + ] + <| + imageSquareMaker device (imagePathMaker M.BlogCard article.articleImage) True size + in + detailFormat column + [ detailFormat row + [ case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + none + + ( Tablet, Portrait ) -> + none + + _ -> + image Big + , detailFormat column + (articleRows article ++ []) + ] + , el [] <| + detailBodyMaker TextLightGrey (renderDeviceMarkdownNoTocGeneric (extractFirstWords article.articleBody)) + ] + + +infoRow : String -> Element msg -> Element msg +infoRow label value = + detailFormat row + [ el [ width <| px 82 ] <| + detailTitleMaker TextLightOrange label + , detailBodyMaker TextLightGrey value + ] + + +articleRows : BlogArticle -> List (Element msg) +articleRows article = + let + referenceCount = + List.length article.articleReferences + in + [ infoRow "Published:" (text article.articlePublished) + , infoRow "Author:" (text article.articleAuthor) + , infoRow "Duration:" + (text + (String.fromInt + (wordCount article.articleBody // 225) + ++ " minutes" + ) + ) + , infoRow "Words" + (text + (String.fromInt + (wordCount article.articleBody) + ) + ) + , infoRow "Sources" + (if referenceCount >= 2 then + text (String.fromInt referenceCount) + + else + text "N/A" + ) + ] diff --git a/packages/website/frontend/src/Pages/Journal/Digitalprivacy.elm b/packages/website/frontend/src/Pages/Journal/Digitalprivacy.elm new file mode 100755 index 0000000..c9390f5 --- /dev/null +++ b/packages/website/frontend/src/Pages/Journal/Digitalprivacy.elm @@ -0,0 +1,127 @@ +module Pages.Journal.Digitalprivacy exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.Journal.DigitalPrivacy exposing (articleDigitalPrivacy) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , Element + , column + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageJournal ++ " (digitalPrivacy)" + , attributes = [] + , element = articleContainer shared.device + } + + +articleContainer : Device -> Element Msg +articleContainer device = + topLevelContainer (articleList device) + + +articleList : Device -> Element Msg +articleList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\article -> + cardMaker device (C.BlogArticle article) (contentList article [] MarkdownMsg) + ) + [ articleDigitalPrivacy ] + ] diff --git a/packages/website/frontend/src/Pages/NotFound_.elm b/packages/website/frontend/src/Pages/NotFound_.elm new file mode 100755 index 0000000..7d310da --- /dev/null +++ b/packages/website/frontend/src/Pages/NotFound_.elm @@ -0,0 +1,126 @@ +module Pages.NotFound_ exposing (Model, Msg, page) + +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Response + exposing + ( pageListCenter + , topLevelContainer + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , column + , none + ) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Route.Path +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.none + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageNotFound + , attributes = [] + , element = notFoundContainer shared.device + } + + +notFoundContainer : Device -> Element msg +notFoundContainer device = + topLevelContainer (notFoundList device) + + +notFoundList : Device -> Element msg +notFoundList device = + column (pageListCenter device) + [ case device.class of + Desktop -> + none + + BigDesktop -> + none + + Tablet -> + case device.orientation of + Portrait -> + none + + Landscape -> + none + + Phone -> + case device.orientation of + Portrait -> + none + + Landscape -> + none + ] diff --git a/packages/website/frontend/src/Pages/Nutridex.elm b/packages/website/frontend/src/Pages/Nutridex.elm new file mode 100755 index 0000000..c192951 --- /dev/null +++ b/packages/website/frontend/src/Pages/Nutridex.elm @@ -0,0 +1,849 @@ +module Pages.Nutridex exposing (Model, Msg, page) + +import Browser.Events exposing (onClick) +import Config.Data.Identity exposing (pageNames) +import Config.Helpers.Articles.Article exposing (makeReference) +import Config.Helpers.Articles.Types exposing (References) +import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyMaker + , detailFormat + , detailHeader + , detailTitleMaker + , divider + , getHoverColours + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (nutriDexHeader) +import Config.Helpers.Headers.Types as R exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Products.Records.NutriDex exposing (productNutriDex) +import Config.Pages.Products.Types exposing (Features, NutriDex) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , colourTheme + , getThemeColor + ) +import Config.Style.Fonts + exposing + ( defaultFontSize + , headerFontSizeBig + , paragraphSpacing + , smallTextFontSize + ) +import Config.Style.Icons.Icons + exposing + ( nutriDex + , nutriDexLogo + , thumbsUp + ) +import Config.Style.Icons.Types as TySvg + exposing + ( InnerPart + , OuterPart + ) +import Config.Style.Transitions + exposing + ( hoverFontDarkOrange + , transitionStyleFast + , transitionStyleMedium + , transitionStyleSlow + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Attr + , Attribute + , Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignLeft + , alignRight + , alignTop + , below + , centerX + , centerY + , column + , el + , fill + , focused + , height + , html + , htmlAttribute + , inFront + , mouseOver + , newTabLink + , none + , padding + , paddingEach + , paddingXY + , paragraph + , pointer + , px + , rgba + , row + , spacing + , text + , transparent + , width + ) +import Element.Background as B exposing (color) +import Element.Border as D + exposing + ( color + , rounded + , shadow + , width + ) +import Element.Font as F + exposing + ( bold + , center + , color + ) +import Element.Input as Input +import Html.Attributes exposing (style) +import Html.Events as H exposing (onClick) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Shared exposing (Model) +import Svg.Attributes as SvgAttr +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init shared + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + { isPopUpClicked : Bool } + + +init : Shared.Model -> () -> ( Model, Effect Msg ) +init shared () = + ( { isPopUpClicked = shared.isPopUpClicked } + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | TogglePopUp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + TogglePopUp -> + ( { model | isPopUpClicked = not model.isPopUpClicked } + , Effect.togglePopUp + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageNutriDex + , attributes = [] + , element = nutriDexContainer shared model + } + + +nutriDexContainer : Shared.Model -> Model -> Element Msg +nutriDexContainer shared model = + topLevelContainer (nutriDexList shared model) + + +nutriDexList : Shared.Model -> Model -> Element Msg +nutriDexList shared model = + column + (case ( shared.device.class, shared.device.orientation ) of + _ -> + pageList shared.device + ) + <| + List.concat + [ case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + [ headerMaker (R.NutriDex nutriDexHeader) ] + + ( Tablet, Portrait ) -> + [ headerMaker (R.NutriDex nutriDexHeader) ] + + _ -> + [ none ] + , List.map + (\nutriDex -> + cardMaker shared.device (C.NutriDex nutriDex) (contentList shared nutriDex shared.isPopUpClicked) + ) + [ productNutriDex + ] + ] + + +contentList : Shared.Model -> NutriDex -> Bool -> List (Element Msg) +contentList shared nutridex isPopUpClicked = + [ featureList nutridex shared.device + , nutriDexBodyMaker shared.device + , nutriDexAdjustments shared.device + , column [ spacing 10 ] + [ nutriDexVitamins + , nutriDexFattyAcids + , nutriDexMinerals + , nutriDexAminoAcids + ] + , nutriDexReferences nutridex shared.device + , el [ inFront (popUp shared isPopUpClicked), E.width fill, height fill ] <| none + ] + + +makeFeature : Features -> Element msg +makeFeature features = + el + [ E.width fill + , alignLeft + , paddingEach + { top = 0 + , right = 0 + , bottom = 0 + , left = 8 + } + ] + <| + detailFormat column + [ detailFormat paragraph + [ text "鈥 " + , detailTitleMaker TextLightOrange features.featureTitle + , detailBodyMaker TextLightGrey (text features.feature |> el [ smallTextFontSize ]) + ] + ] + + +featureList : NutriDex -> Device -> Element msg +featureList nutridex device = + column + [ spacing 8 + , E.width fill + , height fill + , paddingEach + { top = 10 + , bottom = 0 + , left = 0 + , right = 0 + } + ] + [ (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + column + [ spacing 20 + , centerX + ] + + ( Tablet, Portrait ) -> + column + [ spacing 20 + , centerX + ] + + _ -> + row + [ spacing 20 + , E.width fill + , height fill + ] + ) + [ column + (case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + [ spacing 20, centerX ] + + ( Tablet, Portrait ) -> + [ spacing 20, centerX ] + + _ -> + [ spacing 20 ] + ) + [ row + [ centerX + , case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + E.width <| px 150 + + ( Tablet, Portrait ) -> + E.width <| px 150 + + _ -> + E.width <| px 250 + ] + [ html nutriDexLogo + ] + , buyButton "$20" "https://buy.stripe.com/fZecO177p34M5EY5ko" + , column + [ centerX ] + [ column + [ defaultFontSize + , F.bold + , F.color colourTheme.textLightOrange + ] + [ newTabLink [] + { url = "https://drive.google.com/file/d/1sk7VgjuL2rEqQdnBRdZjr2_Ab9vwrbmo/view?usp=sharing" + , label = + paragraph + [ centerX + , centerY + ] + [ text "Free Cost Efficiency Score!" ] + } + ] + ] + ] + , column [ E.width fill, smallTextFontSize, spacing 3 ] <| + List.map2 (\x y -> makeFeature x) + nutridex.nutriDexFeatures + (List.range 1 (List.length nutridex.nutriDexFeatures)) + ] + ] + + +linkFormat : List (Attr () msg) +linkFormat = + [ F.color colourTheme.textLightGrey + , paragraphSpacing + , defaultFontSize + , F.color colourTheme.textLightOrange + , mouseOver + [ F.color colourTheme.textDarkOrange + ] + , transitionStyleMedium + ] + + +nutriDexBodyMaker : Device -> Element msg +nutriDexBodyMaker device = + column [ spacing 20 ] + [ detailHeader "Backstory" + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "In May 2019, after losing my job, I sought a way to optimize my diet for nutrient density (ND) while keeping costs low. I initially found a resource called ") + , newTabLink linkFormat + { url = "https://efficiencyiseverything.com/food/" + , label = text "Efficiency Is Everything" + } + , detailBodyMaker TextLightGrey (text ", which ranked foods by nutrition per cost, but I found it too simplistic and lacking nuance, especially since it ranked processed foods like white bread highly, despite their limited health benefits. I wanted a more personalized approach鈥攐ne that took into account both ND and the cost of foods specific to my region. Inspired by Mat Lalonde's AHS12 talk ") + , newTabLink linkFormat + { url = "https://www.youtube.com/watch?v=HwbY12qZcF4" + , label = text "Nutrient Density: Sticking to the Essentials" + } + , detailBodyMaker TextLightGrey (text " on nutrient density, I created a rudimentary list of 75 foods and manually assigned them scores based on nutritional content from ") + , newTabLink linkFormat + { url = "https://cronometer.com/" + , label = text "Cronometer" + } + , detailBodyMaker TextLightGrey (text ", paired with local grocery prices.") + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "As I refined the list, I found a community on Reddit called ") + , newTabLink linkFormat + { url = "https://www.reddit.com/r/EatCheapAndHealthy/" + , label = text "EatCheapAndHealthy" + } + , detailBodyMaker TextLightGrey (text " where I shared my ") + , newTabLink linkFormat + { url = "https://www.reddit.com/r/EatCheapAndHealthy/comments/cbmxre/had_no_idea_this_sub_existed_heres_a_nutrient/" + , label = text "spreadsheet" + } + , detailBodyMaker TextLightGrey (text ". The overwhelming response encouraged me to expand it further, incorporating more foods, detailed nutritional data, and more accurate ND scores. To improve accuracy, I turned to the USDA鈥檚 ") + , newTabLink linkFormat + { url = "https://www.ars.usda.gov/northeast-area/beltsville-md-bhnrc/beltsville-human-nutrition-research-center/nutrient-data-laboratory/docs/sr28-download-files/" + , label = text "SR28 database" + } + , detailBodyMaker TextLightGrey (text ", which provided granular data for over 700 common foods. I developed a more sophisticated scoring system, assigning points based on how well each food met the daily recommended intake for essential nutrients, then normalizing these scores from 0 to 100.") + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "The final ND scores were calculated non-linearly, allowing for a more balanced representation of a food鈥檚 nutrient profile rather than allowing one nutrient to dominate the score. For instance, while Brazil nuts are high in selenium, the non-linear formula prevents their score from being artificially inflated by this one nutrient. Ultimately, the system I created allows for a more objective and personalized way to rank foods by both nutrient density and cost, making it a valuable resource for anyone looking to optimize their diet.") ] + ] + + +referenceFormat : List (Attr () msg) +referenceFormat = + [ defaultFontSize + , F.color colourTheme.textLightOrange + , alignTop + , hoverFontDarkOrange + , transitionStyleMedium + ] + + +nutriDexAdjustments : Device -> Element msg +nutriDexAdjustments device = + column + [ E.width fill + , height fill + , spacing 20 + ] + [ detailHeader "Nutrient Density Score Adjustments" + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "No adjustments are made to vitamin B1, vitamin B2, vitamin B3, manganese, phosphorus, and potassium, due to their DRIs only representing total daily intake, or due to the nutrient having close to 100% bioavailability. ") + , row [ F.regular, smallTextFontSize ] + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/books/NBK114331/" + , label = text "1" + } + , text ", " + , newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/books/NBK114322/" + , label = text "2" + } + , text ", " + , newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/books/NBK114304/" + , label = text "3" + } + , text ", " + , newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/books/NBK56056/" + , label = text "4" + } + , text ", " + , newTabLink referenceFormat + { url = "https://www.nap.edu/read/11537/chapter/39" + , label = text "5" + } + , text ", " + , newTabLink referenceFormat + { url = "https://www.nap.edu/read/11537/chapter/41" + , label = text "6" + } + , text ", " + , newTabLink referenceFormat + { url = "https://www.nap.edu/read/11537/chapter/42" + , label = text "7" + } + ] + ] + ] + + +nutridexSubTitleMaker : String -> Element msg +nutridexSubTitleMaker title = + el + [ centerX + , paddingXY 0 10 + ] + <| + detailTitleMaker TextLightOrange title + + +nutriDexVitamins : Element msg +nutriDexVitamins = + column + [ spacing 20 + , E.width fill + , height fill + ] + [ nutridexSubTitleMaker "Vitamins" + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for vitamin B5 is multiplied by 2 in order to accommodate its average 50% bioavailability from food. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/books/NBK114311/" + , label = text "8" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for plant-derived vitamin B6 is multiplied by 1.74 in order to accommodate the average ~42.5% reduction in bioavailability of pyridoxine glucoside. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pubmed/2843032" + , label = text "9" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for animal-derived vitamin B6 is multiplied by 1.33 in order to accommodate the average ~25% reduction in bioavailability of as a result of cooking. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://pdfs.semanticscholar.org/b844/5e60d87753144ef856e0ae207b551aa75b9c.pdf" + , label = text "10" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The contribution of vitamin B12 is capped at 1.5mcg in order to account for the average absorption cap of ~1.5mcg per serving in healthy people. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pubmed/18606874" + , label = text "11" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for folate has been multiplied by 2 in order to accommodate its average 50% bioavailbility from food. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3257685/" + , label = text "12" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The contribution of plant-derived vitamin A (as retinol activity equivalents) is capped at 900mcg. This is to accommodate the fact that it is unlikely that the body can convert more than the DRI of vitamin A from carotenoids. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2855261/" + , label = text "13" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for plant-derived vitamin K, phylloquinone, is multiplied by 10 in order to accommodate its 10% bioavailability from plant foods. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pubmed/8813897" + , label = text "14" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for vitamin C has been multiplied by 1.25 in order to accommodate its average ~80% bioavailability. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pubmed/12134712" + , label = text "15" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for vitamin E has been multiplied by 4.65 in order to accommodate its average 21.5% bioavailability. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5745505/" + , label = text "16" + } + ] + ] + ] + + +nutriDexFattyAcids : Element msg +nutriDexFattyAcids = + column + [ spacing 20 + , E.width fill + , height fill + ] + [ nutridexSubTitleMaker "Fatty Acids" + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRIs for omega-3 and omega-6 have been recalculated to 250mg/day and 500mg/day, respectively. This better reflects our actual physiological requirements for these fatty acids as provided by their pre-elongated, animal-derived varieties. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5946201/" + , label = text "17" + } + , newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5452278/" + , label = text "18" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRIs for plant-derived omega-3 and omega-6 have been multiplied by 6.66 in order to reflect their maximal ~15% conversion rate. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pubmed/12323090" + , label = text "19" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The contributions of plant-derived omega-3 and omega-6 are capped at 4.4444g before conversion rates are factored, in order to accommodate their conversion rate cap of 2% of calories per day. ") + , detailFormat row + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3132704/" + , label = text "20" + } + ] + ] + ] + + +nutriDexMinerals : Element msg +nutriDexMinerals = + column [ spacing 10 ] + [ nutridexSubTitleMaker "Minerals" + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for calcium has been adjusted dynamically based on the oxalate-to-calcium ratio of each food. ") + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for plant-derived copper has been multiplied by 2.94 in order to accommodate its average ~34% bioavailability from plant foods. ") + , row [ F.regular, smallTextFontSize ] + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pubmed/8615369" + , label = text "21" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for animal-derived copper has been multiplied by 2.43 in order to accommodate its average ~41% bioavailability from animal foods. ") + , row [ F.regular, smallTextFontSize ] + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pubmed/8615369" + , label = text "21" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for magnesium has been multiplied by 2.85 in order to accommodate its 35% bioavailability. ") + , row [ F.regular, smallTextFontSize ] + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pubmed/1864954" + , label = text "22" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for iron has been adjusted dynamically based on the phytate-to-iron ratio of each food.") + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for selenium has been multiplied by 1.11 in order to accommodate its 90% bioavailability. ") + , row [ F.regular, smallTextFontSize ] + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pubmed/20200264" + , label = text "23" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The contribution of zinc is capped at 7mg in order to account for the average absorption cap of 7mg per serving in healthy people. ") + , row [ F.regular, smallTextFontSize ] + [ newTabLink referenceFormat + { url = "https://www.ncbi.nlm.nih.gov/pubmed/10801947" + , label = text "24" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRI for zinc has been adjusted dynamically based on the phytate-to-zinc ratio of each food. ") + ] + ] + + +nutriDexAminoAcids : Element msg +nutriDexAminoAcids = + column [ spacing 20 ] + [ nutridexSubTitleMaker (String.toUpper "Amino Acids") + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "The DRIs for all essential amino acids from non-animal sources have been multiplied by 1.492 in order to accommodate their average PDCAAS score of .67. ") + , row [ F.regular, smallTextFontSize ] + [ newTabLink referenceFormat + { url = "https://en.wikipedia.org/wiki/Protein_Digestibility_Corrected_Amino_Acid_Score" + , label = text "25" + } + ] + ] + , detailFormat paragraph + [ detailBodyMaker TextLightGrey (text "鈥 ") + , detailBodyMaker TextLightGrey (text "All scores reflecting total protein yield of non-animal foods have been multiplied by .67 in order to accommodate the average 67% bioavailability of protein from non-animal sources. ") + , row [ F.regular, smallTextFontSize ] + [ newTabLink referenceFormat + { url = "https://en.wikipedia.org/wiki/Protein_Digestibility_Corrected_Amino_Acid_Score" + , label = text "25" + } + ] + ] + ] + + +nutriDexReferences : NutriDex -> Device -> Element msg +nutriDexReferences nutridex device = + column + [ E.width fill + , height fill + ] + [ detailHeader "BIBLIOGRAPHY" + , column + [ E.width fill + , F.size 15 + , spacing 10 + , paddingEach + { top = 20 + , right = 0 + , bottom = 0 + , left = 0 + } + ] + <| + List.map2 (\x y -> makeReference x y) + nutridex.nutriDexReference + (List.range 1 (List.length nutridex.nutriDexReference)) + ] + + +popUp : Shared.Model -> Bool -> Element Msg +popUp shared isPopUpClicked = + let + popUpBox : List (Attribute msg) + popUpBox = + [ E.width fill + , htmlAttribute (style "position" "fixed") + , htmlAttribute (style "top" "0") + , htmlAttribute (style "left" "0") + , htmlAttribute (style "height" "100vh") + , htmlAttribute (style "z-index" "9999") + , htmlAttribute (style "display" "flex") + , htmlAttribute (style "align-items" "center") + , htmlAttribute (style "justify-content" "center") + , B.color (rgba 0 0 0 0.5) + , transitionStyleFast + ] + in + el + (popUpBox + ++ (if isPopUpClicked then + [ htmlAttribute (style "opacity" "0") + , htmlAttribute (style "pointer-events" "none") + , htmlAttribute (style "visibility" "hidden") + ] + + else + [ htmlAttribute (style "opacity" "1") + , htmlAttribute (style "pointer-events" "auto") + , htmlAttribute (style "visibility" "visible") + ] + ) + ) + <| + column + [ centerX + , centerY + , padding 15 + , B.color colourTheme.backgroundLightGrey + , F.color (getThemeColor TextLightGrey) + , D.color colourTheme.textLightOrange + , E.width <| + case ( shared.device.class, shared.device.orientation ) of + ( Phone, Portrait ) -> + px 300 + + ( Tablet, Portrait ) -> + px 300 + + _ -> + px 500 + , htmlAttribute (style "max-height" "100vh") + , htmlAttribute (style "overflow-y" "auto") + , D.rounded 5 + , D.width 2 + , D.shadow + { offset = ( 0, 3 ) + , blur = 6 + , size = 0 + , color = rgba 0 0 0 0.32 + } + , spacing 15 + ] + [ el + [ centerX + , E.width <| px 100 + ] + <| + html nutriDexLogo + , paragraph [ F.center ] [ text "The nutriDex web app is now under development to replace the current version available on this page! Customers who purchase the nutriDex between January 1, 2025, and the web app's release will receive six months of free access!" ] + , Input.button + [ centerX + , focused + [ D.color (rgba 0 0 0 0) + , D.shadow + { blur = 0 + , color = rgba 0 0 0 0 + , offset = ( 0, 0 ) + , size = 0 + } + ] + ] + { onPress = Just TogglePopUp + , label = + el [] <| + thumbsUp + { elementAttributes = + [ pointer + , F.color (getThemeColor TextLightOrange) + ] + ++ getHoverColours TextLightOrange + , sharedModel = shared + , svgAttributes = [ SvgAttr.width "40" ] + } + } + ] diff --git a/packages/website/frontend/src/Pages/Services.elm b/packages/website/frontend/src/Pages/Services.elm new file mode 100755 index 0000000..801929f --- /dev/null +++ b/packages/website/frontend/src/Pages/Services.elm @@ -0,0 +1,231 @@ +module Pages.Services exposing (Model, Msg, page) + +import Browser +import Config.Data.Identity exposing (pageNames) +import Config.Data.ImageFolders as M + exposing + ( ImageFolder(..) + , imagePathMaker + ) +import Config.Helpers.Cards.Inner.Text + exposing + ( detailBodyMaker + , detailFormat + , detailTitleMaker + , listItem + , listMaker + ) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Helpers exposing (headerMaker) +import Config.Helpers.Headers.Records exposing (servicesHeader) +import Config.Helpers.Headers.Types as R exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Services.Records.DebateAnalysis exposing (servicesDebateAnalysis) +import Config.Pages.Services.Records.DebateCoaching exposing (servicesDebateCoaching) +import Config.Pages.Services.Records.ElmBuilds exposing (servicesElmBuilds) +import Config.Pages.Services.Records.NixBuilds exposing (servicesNixBuilds) +import Config.Pages.Services.Records.NutritionScience exposing (servicesNutritionScience) +import Config.Pages.Services.Types + exposing + ( Description + , Service + ) +import Config.Style.Colour.Helpers as T + exposing + ( ThemeColor(..) + , getThemeColor + ) +import Config.Style.Images + exposing + ( ElementSize(..) + , imageSquareMaker + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , alignLeft + , column + , el + , fill + , none + , paddingEach + , row + , text + , width + ) +import Layouts +import Page exposing (Page) +import Route exposing (Route) +import Shared exposing (Model) +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = pageNames.pageServices + , attributes = [] + , element = servicesContainer shared.device + } + + +servicesContainer : Device -> Element msg +servicesContainer device = + topLevelContainer (servicesList device) + + +servicesList : Device -> Element msg +servicesList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ [ headerMaker (R.Services servicesHeader) + ] + , List.map + (\service -> + cardMaker device (C.Service service) (contentList device service) + ) + [ servicesDebateAnalysis + , servicesDebateCoaching + , servicesNutritionScience + , servicesNixBuilds + , servicesElmBuilds + ] + ] + + +contentList : Device -> Service -> List (Element msg) +contentList device service = + let + image : ElementSize -> Element msg + image size = + el + [ alignLeft + , paddingEach + { top = 0 + , right = 10 + , bottom = 0 + , left = 0 + } + ] + <| + imageSquareMaker device (imagePathMaker M.ServicePage service.serviceImage) True size + in + [ detailFormat row + [ case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + none + + ( Tablet, Portrait ) -> + none + + _ -> + image Big + , detailFormat column + [ rateMaker service + , descriptionMaker + , offeringMaker service + ] + ] + ] + + +rateMaker : Service -> Element msg +rateMaker service = + detailFormat row + [ detailTitleMaker TextLightOrange "Rate:" + , el [ width fill ] <| detailBodyMaker TextLightGrey (text service.serviceRate) + ] + + +descriptionMaker : Element msg +descriptionMaker = + detailTitleMaker TextLightOrange "Offerings:" + + +offeringMaker : Service -> Element msg +offeringMaker service = + listMaker makeDescription service.serviceDescription + + +makeDescription : Description -> Element msg +makeDescription description = + listItem + TextLightGrey + description.point diff --git a/packages/website/frontend/src/Pages/Services/Analysis.elm b/packages/website/frontend/src/Pages/Services/Analysis.elm new file mode 100755 index 0000000..5f1703f --- /dev/null +++ b/packages/website/frontend/src/Pages/Services/Analysis.elm @@ -0,0 +1,187 @@ +module Pages.Services.Analysis exposing (Model, Msg, page) + +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Config.Pages.Services.Records.DebateAnalysis exposing (servicesDebateAnalysis) +import Config.Style.Colour.Helpers exposing (colourTheme) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , centerX + , column + , el + , paddingXY + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Route.Path as Path +import Shared +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = "services (analysis)" + , attributes = [] + , element = analysisContainer shared.device + } + + +analysisContainer : Device -> Element Msg +analysisContainer device = + topLevelContainer (analysisList device) + + +analysisList : Device -> Element Msg +analysisList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\service -> + cardMaker device + (C.BlogArticle service) + (contentList service + [ el + [ paddingXY 0 10 + , centerX + ] + <| + buyButton "Book!" "https://buy.stripe.com/14k3dr4Zh8p6c3mbIJ" + ] + MarkdownMsg + ) + ) + [ debateAnalysis ] + ] + + +debateAnalysis : BlogArticle +debateAnalysis = + { articleName = String.toUpper "Debate Analysis" + , articleLink = "" + , articleAuthor = "" + , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = False + , articleImage = "" + , articlePublished = "" + , articleBody = """ +The Debate Analysis services offers personalized feedback to help you improve your debate skills. I work with clients by reviewing their pre-recorded debates, providing detailed critiques, and offering practical advice tailored to their style. Through this process, you'll gain valuable insights into areas of improvement, from your argument structure to your delivery and confidence. + +# BENEFITS + +1. Have your own debates analyzed for constructive feedback. This allows you to receive targeted guidance on how to improve your debating technique and strategy. + +2. Receive advice to improve as a debater. This service provides personalized recommendations to help you develop and refine your debating abilities. + +3. Gain comfort with debate and verbal confrontation. The service aims to help you become more confident and adept at handling the challenges of public debate. + +# REQUIREMENTS + +鈥 Your debate recording must be submitted at least three days prior to the session. + +鈥 Your debate recording must not exceed one hour in length unless otherwise agreed to. + +鈥 Your debate recording must be in either video or audio format, as text debates are ineligible. + +""" + , articleReferences = + [ { author = "" + , title = "" + , journal = "" + , year = "" + , link = "" + } + ] + } diff --git a/packages/website/frontend/src/Pages/Services/Coaching.elm b/packages/website/frontend/src/Pages/Services/Coaching.elm new file mode 100755 index 0000000..97ba955 --- /dev/null +++ b/packages/website/frontend/src/Pages/Services/Coaching.elm @@ -0,0 +1,238 @@ +module Pages.Services.Coaching exposing (Model, Msg, page) + +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Config.Pages.Services.Records.DebateCoaching exposing (servicesDebateCoaching) +import Config.Style.Colour.Helpers exposing (colourTheme) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , centerX + , column + , el + , paddingXY + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Route.Path as Path +import Shared +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = "services (coaching)" + , attributes = [] + , element = coachingContainer shared.device + } + + +coachingContainer : Device -> Element Msg +coachingContainer device = + topLevelContainer (coachingList device) + + +coachingList : Device -> Element Msg +coachingList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\service -> + cardMaker device + (C.BlogArticle service) + (contentList service + [ el + [ paddingXY 0 10 + , centerX + ] + <| + buyButton "Book!" "https://buy.stripe.com/14k01f3Vd6gY6J2146" + ] + MarkdownMsg + ) + ) + [ debateCoaching ] + ] + + +debateCoaching : BlogArticle +debateCoaching = + { articleName = String.toUpper "Debate Tutoring" + , articleLink = "" + , articleAuthor = "" + , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = False + , articleImage = "" + , articlePublished = "" + , articleBody = """ +This service is designed to help you gain an understanding of the fundamentals of debate, and the tools used in debate. The service spans five modules, covering fallacious reasoning, epistemology, and propositional logic. You're free to choose which modules you want to cover, based on your current knowledge and interests. +If interested clients choose to text their knowledge and sharpen their skills with mock debates, they may be subject to additional fees, as mock debates often involve the inclusion of skillful third parties against whom clients can spar. + +# WHAT YOU GET + +1. A five-module course covering critical thinking, debate strategy, and propositional logic, designed to strengthen your debating skills. + +2. Personalized feedback and guidance to boost your strategic thinking, verbal comfort, and overall debate effectiveness. + +3. Optional mock debates and staged confrontations, helping you gain experience and confidence in real-world debates. + +# SYLLABUS + +>## MODULE 1 +> +>鈥 Study both common and obscure logical fallacies. +> +>鈥 Learn to identify and rebut fallacious reasoning. +> +>鈥 Test your knowledge of logical fallacies. + +>## MODULE 2 +> +>鈥 Assignment review. +> +>鈥 Study concepts related to formal logic and argumentation. +> +>鈥 Learn the lexicon of debate and formal reasoning. +> +>鈥 Test your knowledge of debate-related terminology. + +>## MODULE 3 +> +>鈥 Assignment review. +> +>鈥 Study philosophical concepts relevant to debate. +> +>鈥 Learn about epistemology and the philosophy of science. +> +>鈥 Test your knowledge of debate-related philosophical concepts. + +>## MODULE 4 +> +>鈥 Assignment review. +> +>鈥 Study the different modes of argumentation. +> +>鈥 Learn the principles and axioms of propositional logic. +> +>鈥 Test your knowledge of propositional logic fundamentals. + +>## MODULE 5 +> +>鈥 Assignment review. +> +>鈥 Study the inference rules of propositional logic. +> +>鈥 Learn how to form valid formal arguments. +> +>鈥 Test your knowledge of formal logic. + +>## OPTIONAL +> +>鈥 Test your knowledge in an optional mock debate. +> +>鈥 Choose between general, empirical, and NTT-style debate. +> +>鈥 Have your performance analyzed in realtime. + +""" + , articleReferences = + [ { author = "" + , title = "" + , journal = "" + , year = "" + , link = "" + } + ] + } diff --git a/packages/website/frontend/src/Pages/Services/Elm.elm b/packages/website/frontend/src/Pages/Services/Elm.elm new file mode 100755 index 0000000..b7652a1 --- /dev/null +++ b/packages/website/frontend/src/Pages/Services/Elm.elm @@ -0,0 +1,413 @@ +module Pages.Services.Elm exposing (Model, Msg, page) + +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton) +import Config.Helpers.Cards.Inner.Text exposing (renderCodeLine) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Config.Pages.Services.Records.ElmBuilds exposing (servicesElmBuilds) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , getThemeColor + , syntaxTheme + ) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , centerX + , column + , el + , fill + , paddingEach + , paddingXY + , spacing + , text + , width + ) +import Element.Background as B exposing (color) +import Element.Border as D exposing (rounded) +import Element.Font as F exposing (color) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Route.Path as Path +import Shared +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = "services (elmBuilds)" + , attributes = [] + , element = elmBuildsContainer shared.device + } + + +elmBuildsContainer : Device -> Element Msg +elmBuildsContainer device = + topLevelContainer (elmBuildsList device) + + +elmBuildsList : Device -> Element Msg +elmBuildsList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\service -> + cardMaker device + (C.BlogArticle service) + (contentList service + [ elmCodeRenderer device ] + MarkdownMsg + ) + ) + [ elmBuilds ] + ] + + +elmBuilds : BlogArticle +elmBuilds = + { articleName = String.toUpper "Elm Builds" + , articleLink = "" + , articleAuthor = "" + , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = False + , articleImage = "" + , articlePublished = "" + , articleBody = """ +The site that you're currently viewing this on was written by me in the Elm programming language, and I'm offering frontend development as a service at a fee that reflects my skill level. If you're in the market for a new frontend for your website, please inquire at [contact@upRootNutrition.com](mailto:). + +Below is an example of a helper function that I wrote for this site. This particular function extracts the first 80 words from all of my articles' markdown strings, and displays them as blurbs, followed by an ellipsis, in my article cards using my markdown parser. + +The source code for this website is viewable on [Gitlab](https://gitlab.com/upRootNutrition/website). + +# WHAT YOU GET + +1. An Elm-based website written to your specifications. + +2. Two revisions to better meet your needs and vision. + +3. Six months of free support to correct mistakes. + +# REQUIREMENTS + +鈥 A clear vision of what you want your site to look like. + +鈥 A clear description of your site's pages and structure. + +鈥 Any bespoke frontend functionality you want included. + +# EXAMPLE + +""" + , articleReferences = + [ { author = "" + , title = "" + , journal = "" + , year = "" + , link = "" + } + ] + } + + +elmCodeRenderer : Device -> Element msg +elmCodeRenderer device = + el + [ paddingEach + { top = 15 + , bottom = 15 + , left = 20 + , right = 20 + } + , case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + B.color (getThemeColor BackgroundDarkGrey) + + ( Tablet, Portrait ) -> + B.color (getThemeColor BackgroundDarkGrey) + + _ -> + B.color (getThemeColor BackgroundLightGrey) + , D.rounded 10 + , width fill + , spacing 8 + ] + <| + column + [ F.size 14 + , spacing 5 + , width fill + ] + [ renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 0 0 ] + , text "extractFirstWords" + |> el [ F.color syntaxTheme.key ] + , text " : " + |> el [ F.color syntaxTheme.operator ] + , text "String" + |> el [ F.color syntaxTheme.keyword ] + , text " -> " + |> el [ F.color syntaxTheme.operator ] + , text "String" + |> el [ F.color syntaxTheme.keyword ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 0 0 ] + , text "extractFirstWords" + |> el [ F.color syntaxTheme.key ] + , text " text" + , text " =" + |> el [ F.color syntaxTheme.operator ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "let" + |> el [ F.color syntaxTheme.keyword ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "words" + , text " =" + |> el [ F.color syntaxTheme.operator ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 48 0 ] + , text "text" + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 64 0 ] + , text "|>" + |> el [ F.color syntaxTheme.operator ] + , text " String" + , text "." + |> el [ F.color syntaxTheme.punctuation ] + , text "split" + , text " " + |> el [ F.color syntaxTheme.string ] + , text "\"" + |> el [ F.color syntaxTheme.string ] + , text " " + |> el [ F.color syntaxTheme.string ] + , text "\"" + |> el [ F.color syntaxTheme.string ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 64 0 ] + , text "|>" + |> el [ F.color syntaxTheme.operator ] + , text " List" + , text "." + |> el [ F.color syntaxTheme.punctuation ] + , text "filter" + , text " (" + |> el [ F.color syntaxTheme.punctuation ] + , text "not" + , text " << " + |> el [ F.color syntaxTheme.operator ] + , text "String" + , text "." + |> el [ F.color syntaxTheme.punctuation ] + , text "isEmpty" + , text ")" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "truncatedWords" + , text " =" + |> el [ F.color syntaxTheme.operator ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 48 0 ] + , text "List" + , text "." + |> el [ F.color syntaxTheme.punctuation ] + , text "take" + , text " 80" + |> el [ F.color syntaxTheme.string ] + , text " words" + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "wasTextTruncated" + , text " =" + |> el [ F.color syntaxTheme.operator ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 48 0 ] + , text "List" + , text "." + |> el [ F.color syntaxTheme.punctuation ] + , text "length" + , text " words" + , text " > " + |> el [ F.color syntaxTheme.operator ] + , text "80" + |> el [ F.color syntaxTheme.string ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "result" + , text " =" + |> el [ F.color syntaxTheme.operator ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 48 0 ] + , text "String" + , text "." + |> el [ F.color syntaxTheme.punctuation ] + , text "join" + , text " " + |> el [ F.color syntaxTheme.string ] + , text "\"" + |> el [ F.color syntaxTheme.string ] + , text " " + |> el [ F.color syntaxTheme.string ] + , text "\"" + |> el [ F.color syntaxTheme.string ] + , text " truncatedWords" + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "in" + |> el [ F.color syntaxTheme.keyword ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "if" + |> el [ F.color syntaxTheme.keyword ] + , text " wasTextTruncated" + , text " then" + |> el [ F.color syntaxTheme.keyword ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "result" + , text " ++ " + |> el [ F.color syntaxTheme.operator ] + , text "\"" + |> el [ F.color syntaxTheme.string ] + , text "..." + |> el [ F.color syntaxTheme.string ] + , text "\"" + |> el [ F.color syntaxTheme.string ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "else" + |> el [ F.color syntaxTheme.keyword ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "result" + ] + ] diff --git a/packages/website/frontend/src/Pages/Services/Nix.elm b/packages/website/frontend/src/Pages/Services/Nix.elm new file mode 100755 index 0000000..be52d59 --- /dev/null +++ b/packages/website/frontend/src/Pages/Services/Nix.elm @@ -0,0 +1,541 @@ +module Pages.Services.Nix exposing (Model, Msg, page) + +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton) +import Config.Helpers.Cards.Inner.Text exposing (renderCodeLine) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Config.Pages.Services.Records.NixBuilds exposing (servicesNixBuilds) +import Config.Style.Colour.Helpers + exposing + ( ThemeColor(..) + , getThemeColor + , syntaxTheme + ) +import Config.Style.Colour.Types exposing (SyntaxColors) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , centerX + , column + , el + , fill + , paddingEach + , paddingXY + , paragraph + , spacing + , text + , width + ) +import Element.Background as B exposing (color) +import Element.Border as D exposing (rounded) +import Element.Font as F exposing (color) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Route.Path as Path +import Shared +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = "services (nixConfigs)" + , attributes = [] + , element = elmBuildsContainer shared.device + } + + +elmBuildsContainer : Device -> Element Msg +elmBuildsContainer device = + topLevelContainer (elmBuildsList device) + + +elmBuildsList : Device -> Element Msg +elmBuildsList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\service -> + cardMaker device + (C.BlogArticle service) + (contentList service + [ nixCodeRenderer device ] + MarkdownMsg + ) + ) + [ nixBuilds ] + ] + + +nixBuilds : BlogArticle +nixBuilds = + { articleName = String.toUpper "Nix Builds" + , articleLink = "" + , articleAuthor = "" + , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = False + , articleImage = "" + , articlePublished = "" + , articleBody = """ +NixOS has become popular in my community, with many people choosing to explore it over Windows, MacOS, and other Linux distributions. Naturally, as a consequence of this, I receive numerous requests for help regarding the Nix programming language and NixOS system configuration. So, to fast-track newcomers and to make my life a little bit easier for both of us, I'm offering to build custom NixOS configurations for interested clients. +If you're interested in having a custom Nix configuration, or having a pre-existing configuration refactored, please inquire at [contact@upRootNutrition.com](mailto:). + +Below is an example of a nix flake that I wrote for the devshell that I used to manage and isolate the development environment for this site. All of the packages, pre-defined settings, and tooling used for this site are managed through this flake. + +The source code for my Nix server is viewable on [Gitlab](https://gitlab.com/upRootNutrition/dotfiles). + +# WHAT YOU GET + +1. A NixOS configuration written to your specifications. + +2. Two refactors for the purposes of improving readability. + +3. Instructions for how to use and build upon your configuration. + +# REQUIREMENTS + +鈥 A comprehensive list of packages you'd like included. + +鈥 A list of configuration architecture specifications. + +鈥 Any bespoke configuration you want included. + +# EXAMPLE + +""" + , articleReferences = + [ { author = "" + , title = "" + , journal = "" + , year = "" + , link = "" + } + ] + } + + +renderCodeLine : SyntaxColors -> List (Element msg) -> Element msg +renderCodeLine colors elements = + paragraph + [ F.color colors.text + , F.alignLeft + , F.family + [ F.monospace ] + ] + elements + + +nixCodeRenderer : Device -> Element msg +nixCodeRenderer device = + el + [ paddingEach + { top = 15 + , bottom = 15 + , left = 20 + , right = 20 + } + , case ( device.class, device.orientation ) of + ( Phone, Portrait ) -> + B.color (getThemeColor BackgroundDarkGrey) + + ( Tablet, Portrait ) -> + B.color (getThemeColor BackgroundDarkGrey) + + _ -> + B.color (getThemeColor BackgroundLightGrey) + , D.rounded 10 + , width fill + , spacing 8 + ] + <| + column + [ F.size 14 + , spacing 5 + , width fill + ] + [ renderCodeLine syntaxTheme + [ text "{" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 8 0 ] + , text "description" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "\"Elm/Haskell Environment\"" + |> el [ F.color syntaxTheme.string ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 8 0 ] + , text "inputs" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "{" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "nixpkgs.url" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "\"github:NixOS/nixpkgs/nixos-unstable\"" + |> el [ F.color syntaxTheme.string ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "nixpkgs-stable.url" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "\"github:NixOS/nixpkgs/nixos-23.11\"" + |> el [ F.color syntaxTheme.string ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "haskell-flake.url" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "\"github:srid/haskell-flake\"" + |> el [ F.color syntaxTheme.string ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 8 0 ] + , text "}" + |> el [ F.color syntaxTheme.punctuation ] + , text ";" + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 8 0 ] + , text "outputs" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "inputs" + |> el [ F.color syntaxTheme.keyword ] + , text " @ " + |> el [ F.color syntaxTheme.operator ] + , text "{" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "flake-parts" + |> el [ F.color syntaxTheme.keyword ] + , text "," + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "self" + |> el [ F.color syntaxTheme.keyword ] + , text "," + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "..." + |> el [ F.color syntaxTheme.operator ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 8 0 ] + , text "}" + |> el [ F.color syntaxTheme.punctuation ] + , text ": " + |> el [ F.color syntaxTheme.operator ] + , text "let" + |> el [ F.color syntaxTheme.keyword ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "system" + |> el [ F.color syntaxTheme.keyword ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "\"x86_64-linux\"" + |> el [ F.color syntaxTheme.string ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 8 0 ] + , text "in" + |> el [ F.color syntaxTheme.keyword ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "flake-parts.lib.mkFlake" + |> el [ F.color syntaxTheme.keyword ] + , text " { " + |> el [ F.color syntaxTheme.punctuation ] + , text "inherit inputs" + |> el [ F.color syntaxTheme.keyword ] + , text " } " + |> el [ F.color syntaxTheme.punctuation ] + , text "{" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 24 0 ] + , text "imports" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "[" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "./parts" + |> el [ F.color syntaxTheme.string ] + , text "," + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "inputs.haskell-flake.flakeModule" + |> el [ F.color syntaxTheme.keyword ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 24 0 ] + , text "]" + |> el [ F.color syntaxTheme.punctuation ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 24 0 ] + , text "systems" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "[ " + |> el [ F.color syntaxTheme.punctuation ] + , text "system" + |> el [ F.color syntaxTheme.keyword ] + , text " ]" + |> el [ F.color syntaxTheme.punctuation ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 24 0 ] + , text "perSystem" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "{ " + |> el [ F.color syntaxTheme.punctuation ] + , text "pkgs" + |> el [ F.color syntaxTheme.keyword ] + , text ", ... " + |> el [ F.color syntaxTheme.operator ] + , text "} " + |> el [ F.color syntaxTheme.punctuation ] + , text ": " + |> el [ F.color syntaxTheme.operator ] + , text "{" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "_module.args.pkgs" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "import" + |> el [ F.color syntaxTheme.keyword ] + , text " inputs.nixpkgs " + |> el [ F.color syntaxTheme.keyword ] + , text "{ " + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 40 0 ] + , text "inherit system" + |> el [ F.color syntaxTheme.key ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "}" + |> el [ F.color syntaxTheme.punctuation ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "_module.args.pkgs-stable" + |> el [ F.color syntaxTheme.key ] + , text " = " + |> el [ F.color syntaxTheme.operator ] + , text "import" + |> el [ F.color syntaxTheme.keyword ] + , text " inputs.nixpkgs-stable " + |> el [ F.color syntaxTheme.keyword ] + , text "{ " + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 40 0 ] + , text "inherit system" + |> el [ F.color syntaxTheme.key ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 32 0 ] + , text "}" + |> el [ F.color syntaxTheme.punctuation ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 24 0 ] + , text "}" + |> el [ F.color syntaxTheme.punctuation ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "" + |> el [ paddingXY 16 0 ] + , text "}" + |> el [ F.color syntaxTheme.punctuation ] + , text ";" + |> el [ F.color syntaxTheme.punctuation ] + ] + , renderCodeLine syntaxTheme + [ text "}" + |> el [ F.color syntaxTheme.punctuation ] + ] + ] diff --git a/packages/website/frontend/src/Pages/Services/Nutrition.elm b/packages/website/frontend/src/Pages/Services/Nutrition.elm new file mode 100755 index 0000000..b3cb3c0 --- /dev/null +++ b/packages/website/frontend/src/Pages/Services/Nutrition.elm @@ -0,0 +1,183 @@ +module Pages.Services.Nutrition exposing (Model, Msg, page) + +import Config.Helpers.Articles.Article exposing (contentList) +import Config.Helpers.Articles.Markdown as Markdown +import Config.Helpers.Cards.Inner.BuyButton exposing (buyButton) +import Config.Helpers.Cards.Outer.Helpers exposing (cardMaker) +import Config.Helpers.Cards.Outer.Types as C exposing (Cardable(..)) +import Config.Helpers.Headers.Types exposing (Header) +import Config.Helpers.Response + exposing + ( pageList + , topLevelContainer + ) +import Config.Helpers.Viewport exposing (resetViewport) +import Config.Pages.Blogs.Types exposing (BlogArticle) +import Config.Pages.Services.Records.NutritionScience exposing (servicesNutritionScience) +import Config.Style.Colour.Helpers exposing (colourTheme) +import Effect exposing (Effect) +import Element as E + exposing + ( Device + , DeviceClass(..) + , Element + , Orientation(..) + , centerX + , column + , el + , paddingXY + ) +import Layouts +import Page exposing (Page) +import Ports +import Route exposing (Route) +import Route.Path as Path +import Shared +import View exposing (View) + + +page : Shared.Model -> Route () -> Page Model Msg +page shared route = + Page.new + { init = init + , update = update + , subscriptions = subscriptions + , view = view shared + } + |> Page.withLayout toLayout + + +toLayout : Model -> Layouts.Layout Msg +toLayout model = + Layouts.Navbar {} + + + +-- INIT + + +type alias Model = + {} + + +init : () -> ( Model, Effect Msg ) +init () = + ( {} + , Effect.map + (\_ -> NoOp) + (Effect.sendCmd resetViewport) + ) + + + +-- UPDATE + + +type Msg + = NoOp + | MarkdownMsg Markdown.Msg + + +update : Msg -> Model -> ( Model, Effect Msg ) +update msg model = + case msg of + NoOp -> + ( model + , Effect.none + ) + + MarkdownMsg (Markdown.ScrollToElement elementId) -> + ( model + , Effect.sendCmd (Ports.scrollToElement elementId) + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Model -> Sub Msg +subscriptions model = + Sub.none + + + +-- VIEW + + +view : Shared.Model -> Model -> View Msg +view shared model = + { title = "services (nutritionChat)" + , attributes = [] + , element = nutritionContainer shared.device + } + + +nutritionContainer : Device -> Element Msg +nutritionContainer device = + topLevelContainer (nutritionList device) + + +nutritionList : Device -> Element Msg +nutritionList device = + column + (case ( device.class, device.orientation ) of + _ -> + pageList device + ) + <| + List.concat + [ List.map + (\service -> + cardMaker device + (C.BlogArticle service) + (contentList service + [ el + [ paddingXY 0 10 + , centerX + ] + <| + buyButton "Book!" "https://buy.stripe.com/5kA5lz77pdJq6J28wz" + ] + MarkdownMsg + ) + ) + [ nutritionQA ] + ] + + +nutritionQA : BlogArticle +nutritionQA = + { articleName = String.toUpper "Nutrition Q&A" + , articleLink = "" + , articleAuthor = "" + , isNewTabLink = False + , hasReferences = False + , hasTableOfContents = False + , articleImage = "" + , articlePublished = "" + , articleBody = """ +This service is designed to help those interested in honing their nutrition science knowledge and boosting their intuition when reading nutrition science literature. Whether the client's goals are to achieve their academic ambitions, satisfy their personal curiosity, or improve their empirical debate chops. The client is free to guide the session in any direction they choose, so long as it is relevant to nutrition science. + +# BENEFITS + +1. One hour to ask me anything about nutrition science. + +2. Access to nutrition science evaluation cheat sheets. + +3. Sharper nutrition science critical appraisal skills. + +# REQUIREMENTS + +鈥 A list of five clear questions related to nutrition science. + +""" + , articleReferences = + [ { author = "" + , title = "" + , journal = "" + , year = "" + , link = "" + } + ] + } diff --git a/packages/website/frontend/src/Ports.elm b/packages/website/frontend/src/Ports.elm new file mode 100755 index 0000000..84ba076 --- /dev/null +++ b/packages/website/frontend/src/Ports.elm @@ -0,0 +1,16 @@ +port module Ports exposing + ( copyToClipboard + , scrollToElement + , sendToLocalStorage + ) + +import Json.Encode as Encode + + +port sendToLocalStorage : { key : String, value : Encode.Value } -> Cmd msg + + +port copyToClipboard : String -> Cmd msg + + +port scrollToElement : String -> Cmd msg diff --git a/packages/website/frontend/src/Shared.elm b/packages/website/frontend/src/Shared.elm new file mode 100755 index 0000000..efe26e7 --- /dev/null +++ b/packages/website/frontend/src/Shared.elm @@ -0,0 +1,257 @@ +module Shared exposing + ( Flags, decoder + , Model, Msg + , init, update, subscriptions + ) + +{-| + +@docs Flags, decoder +@docs Model, Msg +@docs init, update, subscriptions + +-} + +import Browser.Events as BR exposing (..) +import Config.Data.Language as TyLang +import Dict +import Effect exposing (Effect, none) +import Element as E exposing (..) +import Json.Decode exposing (..) +import Route exposing (Route) +import Route.Path +import Shared.Model exposing (..) +import Shared.Msg + + + +-- FLAGS + + +type alias Flags = + { height : Int + , user : Maybe Shared.Model.User + , width : Int + } + + +decoder : Json.Decode.Decoder Flags +decoder = + Json.Decode.map3 + (\height user width -> + { height = height + , user = user + , width = width + } + ) + (field "height" int) + (field "user" (Json.Decode.maybe userDecoder)) + (field "width" int) + + +userDecoder : Json.Decode.Decoder Shared.Model.User +userDecoder = + Json.Decode.map2 Shared.Model.User + (Json.Decode.field "token" Json.Decode.string) + (Json.Decode.field "name" Json.Decode.string) + + + +-- INIT + + +type alias Model = + Shared.Model.Model + + +init : Result Json.Decode.Error Flags -> Route () -> ( Model, Effect Msg ) +init flagsResult route = + ( modelFromFlagsResult flagsResult + , Effect.none + ) + + +modelFromFlagsResult : Result Error Flags -> Model +modelFromFlagsResult f = + case f of + Ok flags -> + { device = classifyDevice flags + , height = flags.height + , isNavbarExpanded = False + , language = TyLang.English + , user = Just { token = "asht", name = "billy" } + , width = flags.width + , isPopUpClicked = False + } + + Err e -> + { device = + classifyDevice + { height = 0 + , width = 0 + } + , height = 10 + , isNavbarExpanded = False + , language = TyLang.English + , user = Nothing + , width = 10 + , isPopUpClicked = False + } + + + +-- UPDATE + + +type alias Msg = + Shared.Msg.Msg + + +update : Route () -> Msg -> Model -> ( Model, Effect Msg ) +update route msg model = + case msg of + Shared.Msg.Resize width height -> + ( { model + | device = + { height = height + , width = width + } + |> E.classifyDevice + , height = height + , width = width + } + , Effect.none + ) + + Shared.Msg.ToggleNavbarExpansion -> + ( { model | isNavbarExpanded = not model.isNavbarExpanded } + , Effect.none + ) + + Shared.Msg.TogglePopUp -> + ( { model | isPopUpClicked = not model.isPopUpClicked } + , Effect.none + ) + + Shared.Msg.SignIn user -> + ( { model | user = Just user } + , Effect.batch + [ Effect.pushRoute + { path = + Dict.get "from" route.query + |> Maybe.andThen Route.Path.fromString + |> Maybe.withDefault Route.Path.Contact + , query = Dict.empty + , hash = Nothing + } + , Effect.saveUser user + ] + ) + + Shared.Msg.SignOut -> + ( { model | user = Nothing } + , Effect.clearUser + ) + + Shared.Msg.ToggleLanguage -> + ( { model + | language = + case model.language of + TyLang.Bulgarian -> + TyLang.Chinese + + TyLang.Chinese -> + TyLang.Czech + + TyLang.Czech -> + TyLang.Danish + + TyLang.Danish -> + TyLang.Dutch + + TyLang.Dutch -> + TyLang.English + + TyLang.English -> + TyLang.Estonian + + TyLang.Estonian -> + TyLang.Finnish + + TyLang.Finnish -> + TyLang.French + + TyLang.French -> + TyLang.German + + TyLang.German -> + TyLang.Greek + + TyLang.Greek -> + TyLang.Hungarian + + TyLang.Hungarian -> + TyLang.Indonesian + + TyLang.Indonesian -> + TyLang.Italian + + TyLang.Italian -> + TyLang.Japanese + + TyLang.Japanese -> + TyLang.Korean + + TyLang.Korean -> + TyLang.Latvian + + TyLang.Latvian -> + TyLang.Lithuanian + + TyLang.Lithuanian -> + TyLang.Norwegian + + TyLang.Norwegian -> + TyLang.Polish + + TyLang.Polish -> + TyLang.Portuguese + + TyLang.Portuguese -> + TyLang.Romanian + + TyLang.Romanian -> + TyLang.Russian + + TyLang.Russian -> + TyLang.Slovak + + TyLang.Slovak -> + TyLang.Slovenian + + TyLang.Slovenian -> + TyLang.Spanish + + TyLang.Spanish -> + TyLang.Swedish + + TyLang.Swedish -> + TyLang.Turkish + + TyLang.Turkish -> + TyLang.Ukranian + + TyLang.Ukranian -> + TyLang.Bulgarian + } + , Effect.none + ) + + + +-- SUBSCRIPTIONS + + +subscriptions : Route () -> Model -> Sub Msg +subscriptions route model = + BR.onResize Shared.Msg.Resize diff --git a/packages/website/frontend/src/Shared/Model.elm b/packages/website/frontend/src/Shared/Model.elm new file mode 100755 index 0000000..1917634 --- /dev/null +++ b/packages/website/frontend/src/Shared/Model.elm @@ -0,0 +1,21 @@ +module Shared.Model exposing (Model, User) + +import Config.Data.Language as TyLang +import Element exposing (Device) + + +type alias Model = + { height : Int + , width : Int + , device : Device + , language : TyLang.Language + , isNavbarExpanded : Bool + , user : Maybe User + , isPopUpClicked : Bool + } + + +type alias User = + { token : String + , name : String + } diff --git a/packages/website/frontend/src/Shared/Msg.elm b/packages/website/frontend/src/Shared/Msg.elm new file mode 100755 index 0000000..8a11a8e --- /dev/null +++ b/packages/website/frontend/src/Shared/Msg.elm @@ -0,0 +1,22 @@ +module Shared.Msg exposing (Msg(..)) + +{-| -} + + +{-| Normally, this value would live in "Shared.elm" +but that would lead to a circular dependency import cycle. + +For that reason, both `Shared.Model` and `Shared.Msg` are in their +own file, so they can be imported by `Effect.elm` + +-} +type Msg + = Resize Int Int + | SignIn + { token : String + , name : String + } + | SignOut + | ToggleLanguage + | ToggleNavbarExpansion + | TogglePopUp diff --git a/packages/website/frontend/src/View.elm b/packages/website/frontend/src/View.elm new file mode 100755 index 0000000..823d7e9 --- /dev/null +++ b/packages/website/frontend/src/View.elm @@ -0,0 +1,89 @@ +module View exposing + ( View, map + , none, fromString + , toBrowserDocument + ) + +{-| + +@docs View, map +@docs none, fromString +@docs toBrowserDocument + +-} + +import Browser +import Element exposing (Attribute, Element, layout, mapAttribute, text) +import Route exposing (Route) +import Shared.Model + + +type alias View msg = + { title : String + , attributes : List (Attribute msg) + , element : Element msg + } + + +{-| Used internally by Elm Land to create your application +so it works with Elm's expected `Browser.Document msg` type. +-} +toBrowserDocument : + { shared : Shared.Model.Model + , route : Route () + , view : View msg + } + -> Browser.Document msg +toBrowserDocument { view } = + { title = view.title + , body = [ layout view.attributes view.element ] + } + + + +-- toBrowserDocument : +-- { shared : Shared.Model.Model +-- , route : Route () +-- , view : View msg +-- } +-- -> Browser.Document msg +-- toBrowserDocument { view } = +-- { title = view.title +-- , body = view.body +-- } + + +{-| Used internally by Elm Land to connect your pages together. +-} +map : (msg1 -> msg2) -> View msg1 -> View msg2 +map fn view = + { title = view.title + , attributes = List.map (mapAttribute fn) view.attributes + , element = Element.map fn view.element + } + + +{-| Used internally by Elm Land whenever transitioning between +authenticated pages. +-} +none : View msg +none = + { title = "" + , attributes = [] + , element = Element.none + } + + +{-| If you customize the `View` module, anytime you run `elm-land add page`, +the generated page will use this when adding your `view` function. + +That way your app will compile after adding new pages, and you can see +the new page working in the web browser! + +-} +fromString : String -> View msg +fromString moduleName = + { title = moduleName + , attributes = [] + , element = text moduleName + } diff --git a/packages/website/frontend/src/interop.ts b/packages/website/frontend/src/interop.ts new file mode 100755 index 0000000..afddefc --- /dev/null +++ b/packages/website/frontend/src/interop.ts @@ -0,0 +1,48 @@ +// On init: +export const flags = ({ env }) => { + return { + height: window.innerHeight, + user: JSON.parse(window.localStorage.user || null), + width: window.innerWidth, + }; +}; + +// While running: +export const onReady = ({ app, env }) => { + app.ports.copyToClipboard.subscribe(function (text) { + navigator.clipboard.writeText(text).catch(function (err) { + console.error("Failed to copy text: ", err); + }); + }); + + app.ports.scrollToElement.subscribe(function (elementId) { + const element = document.getElementById(elementId); + if (element) { + element.scrollIntoView({ behavior: "smooth", block: "start" }); + } + }); + // app.ports.copy.subscribe((text: string) => { + // const clipboard = navigator.clipboard; + // if (!clipboard) return; + // clipboard.writeText(text); + // }); + + // app.ports.popup.subscribe(() => { + // setTimeout(() => { + // app.ports.popupDone.send(null); + // }, 2000); + // }); + + // if (app.ports && app.ports.sendToLocalStorage) { + // app.ports.sendToLocalStorage.subscribe(({ key, value }) => { + // window.localStorage[key] = JSON.stringify(value); + // }); + // } + + // app.ports.arrow.subscribe((text: string) => { + // const elements = document.getElementsByClassName(text); + // Array.from(elements).forEach(element => { + // element.setAttribute('display', 'highlight'); + // }); + // }) +}; diff --git a/packages/website/frontend/static/arguments/abortion.png b/packages/website/frontend/static/arguments/abortion.png new file mode 100755 index 0000000..e2ba2bd Binary files /dev/null and b/packages/website/frontend/static/arguments/abortion.png differ diff --git a/packages/website/frontend/static/arguments/agnostic.png b/packages/website/frontend/static/arguments/agnostic.png new file mode 100755 index 0000000..4b199f8 Binary files /dev/null and b/packages/website/frontend/static/arguments/agnostic.png differ diff --git a/packages/website/frontend/static/arguments/anabolicketo.png b/packages/website/frontend/static/arguments/anabolicketo.png new file mode 100755 index 0000000..cf62ee4 Binary files /dev/null and b/packages/website/frontend/static/arguments/anabolicketo.png differ diff --git a/packages/website/frontend/static/arguments/animalrights.png b/packages/website/frontend/static/arguments/animalrights.png new file mode 100755 index 0000000..2a4deb9 Binary files /dev/null and b/packages/website/frontend/static/arguments/animalrights.png differ diff --git a/packages/website/frontend/static/arguments/antagonisticpleiotropy.png b/packages/website/frontend/static/arguments/antagonisticpleiotropy.png new file mode 100755 index 0000000..ab71220 Binary files /dev/null and b/packages/website/frontend/static/arguments/antagonisticpleiotropy.png differ diff --git a/packages/website/frontend/static/arguments/antivandalism.png b/packages/website/frontend/static/arguments/antivandalism.png new file mode 100755 index 0000000..0e2df47 Binary files /dev/null and b/packages/website/frontend/static/arguments/antivandalism.png differ diff --git a/packages/website/frontend/static/arguments/carbobesity.png b/packages/website/frontend/static/arguments/carbobesity.png new file mode 100755 index 0000000..7533e94 Binary files /dev/null and b/packages/website/frontend/static/arguments/carbobesity.png differ diff --git a/packages/website/frontend/static/arguments/cateupfreductio.png b/packages/website/frontend/static/arguments/cateupfreductio.png new file mode 100755 index 0000000..f72d466 Binary files /dev/null and b/packages/website/frontend/static/arguments/cateupfreductio.png differ diff --git a/packages/website/frontend/static/arguments/chocolate.png b/packages/website/frontend/static/arguments/chocolate.png new file mode 100755 index 0000000..d543de9 Binary files /dev/null and b/packages/website/frontend/static/arguments/chocolate.png differ diff --git a/packages/website/frontend/static/arguments/coconutoil.png b/packages/website/frontend/static/arguments/coconutoil.png new file mode 100755 index 0000000..32162f9 Binary files /dev/null and b/packages/website/frontend/static/arguments/coconutoil.png differ diff --git a/packages/website/frontend/static/arguments/colonizingnature.png b/packages/website/frontend/static/arguments/colonizingnature.png new file mode 100755 index 0000000..d4a4784 Binary files /dev/null and b/packages/website/frontend/static/arguments/colonizingnature.png differ diff --git a/packages/website/frontend/static/arguments/cowrape.png b/packages/website/frontend/static/arguments/cowrape.png new file mode 100755 index 0000000..a251b04 Binary files /dev/null and b/packages/website/frontend/static/arguments/cowrape.png differ diff --git a/packages/website/frontend/static/arguments/cropdeaths.png b/packages/website/frontend/static/arguments/cropdeaths.png new file mode 100755 index 0000000..bfb88b9 Binary files /dev/null and b/packages/website/frontend/static/arguments/cropdeaths.png differ diff --git a/packages/website/frontend/static/arguments/dairy.png b/packages/website/frontend/static/arguments/dairy.png new file mode 100755 index 0000000..73a5b79 Binary files /dev/null and b/packages/website/frontend/static/arguments/dairy.png differ diff --git a/packages/website/frontend/static/arguments/dietarycholesterol.png b/packages/website/frontend/static/arguments/dietarycholesterol.png new file mode 100755 index 0000000..09f15a0 Binary files /dev/null and b/packages/website/frontend/static/arguments/dietarycholesterol.png differ diff --git a/packages/website/frontend/static/arguments/efilism.png b/packages/website/frontend/static/arguments/efilism.png new file mode 100755 index 0000000..527f800 Binary files /dev/null and b/packages/website/frontend/static/arguments/efilism.png differ diff --git a/packages/website/frontend/static/arguments/epidemiologycausality.png b/packages/website/frontend/static/arguments/epidemiologycausality.png new file mode 100755 index 0000000..d87556e Binary files /dev/null and b/packages/website/frontend/static/arguments/epidemiologycausality.png differ diff --git a/packages/website/frontend/static/arguments/ethicalslurs.png b/packages/website/frontend/static/arguments/ethicalslurs.png new file mode 100755 index 0000000..0540448 Binary files /dev/null and b/packages/website/frontend/static/arguments/ethicalslurs.png differ diff --git a/packages/website/frontend/static/arguments/fattyfish.png b/packages/website/frontend/static/arguments/fattyfish.png new file mode 100755 index 0000000..e6a8ac2 Binary files /dev/null and b/packages/website/frontend/static/arguments/fattyfish.png differ diff --git a/packages/website/frontend/static/arguments/fibre.png b/packages/website/frontend/static/arguments/fibre.png new file mode 100755 index 0000000..658f5b5 Binary files /dev/null and b/packages/website/frontend/static/arguments/fibre.png differ diff --git a/packages/website/frontend/static/arguments/finetuning.png b/packages/website/frontend/static/arguments/finetuning.png new file mode 100755 index 0000000..dd6d304 Binary files /dev/null and b/packages/website/frontend/static/arguments/finetuning.png differ diff --git a/packages/website/frontend/static/arguments/flatearth.png b/packages/website/frontend/static/arguments/flatearth.png new file mode 100755 index 0000000..399eb29 Binary files /dev/null and b/packages/website/frontend/static/arguments/flatearth.png differ diff --git a/packages/website/frontend/static/arguments/foodsubstitution.png b/packages/website/frontend/static/arguments/foodsubstitution.png new file mode 100755 index 0000000..b0e5a89 Binary files /dev/null and b/packages/website/frontend/static/arguments/foodsubstitution.png differ diff --git a/packages/website/frontend/static/arguments/fructosenafld.png b/packages/website/frontend/static/arguments/fructosenafld.png new file mode 100755 index 0000000..d43958d Binary files /dev/null and b/packages/website/frontend/static/arguments/fructosenafld.png differ diff --git a/packages/website/frontend/static/arguments/healthfoods.png b/packages/website/frontend/static/arguments/healthfoods.png new file mode 100755 index 0000000..93a038f Binary files /dev/null and b/packages/website/frontend/static/arguments/healthfoods.png differ diff --git a/packages/website/frontend/static/arguments/healthseeker.png b/packages/website/frontend/static/arguments/healthseeker.png new file mode 100755 index 0000000..84a4a05 Binary files /dev/null and b/packages/website/frontend/static/arguments/healthseeker.png differ diff --git a/packages/website/frontend/static/arguments/immortality.png b/packages/website/frontend/static/arguments/immortality.png new file mode 100755 index 0000000..99506b6 Binary files /dev/null and b/packages/website/frontend/static/arguments/immortality.png differ diff --git a/packages/website/frontend/static/arguments/lipoprotein.png b/packages/website/frontend/static/arguments/lipoprotein.png new file mode 100755 index 0000000..a8d498e Binary files /dev/null and b/packages/website/frontend/static/arguments/lipoprotein.png differ diff --git a/packages/website/frontend/static/arguments/luigiterrorist.png b/packages/website/frontend/static/arguments/luigiterrorist.png new file mode 100755 index 0000000..905f0a3 Binary files /dev/null and b/packages/website/frontend/static/arguments/luigiterrorist.png differ diff --git a/packages/website/frontend/static/arguments/mda.png b/packages/website/frontend/static/arguments/mda.png new file mode 100755 index 0000000..19bb44a Binary files /dev/null and b/packages/website/frontend/static/arguments/mda.png differ diff --git a/packages/website/frontend/static/arguments/oddorderpredators.png b/packages/website/frontend/static/arguments/oddorderpredators.png new file mode 100755 index 0000000..d94b0a1 Binary files /dev/null and b/packages/website/frontend/static/arguments/oddorderpredators.png differ diff --git a/packages/website/frontend/static/arguments/omega6omega3ratio.png b/packages/website/frontend/static/arguments/omega6omega3ratio.png new file mode 100755 index 0000000..740214f Binary files /dev/null and b/packages/website/frontend/static/arguments/omega6omega3ratio.png differ diff --git a/packages/website/frontend/static/arguments/ostroveganism.png b/packages/website/frontend/static/arguments/ostroveganism.png new file mode 100755 index 0000000..4e63876 Binary files /dev/null and b/packages/website/frontend/static/arguments/ostroveganism.png differ diff --git a/packages/website/frontend/static/arguments/pagers.png b/packages/website/frontend/static/arguments/pagers.png new file mode 100755 index 0000000..d3a3724 Binary files /dev/null and b/packages/website/frontend/static/arguments/pagers.png differ diff --git a/packages/website/frontend/static/arguments/plantbasedcvd.png b/packages/website/frontend/static/arguments/plantbasedcvd.png new file mode 100755 index 0000000..5ec755f Binary files /dev/null and b/packages/website/frontend/static/arguments/plantbasedcvd.png differ diff --git a/packages/website/frontend/static/arguments/plantfoods.png b/packages/website/frontend/static/arguments/plantfoods.png new file mode 100755 index 0000000..5ce5f43 Binary files /dev/null and b/packages/website/frontend/static/arguments/plantfoods.png differ diff --git a/packages/website/frontend/static/arguments/pollinationreductio.png b/packages/website/frontend/static/arguments/pollinationreductio.png new file mode 100755 index 0000000..16de505 Binary files /dev/null and b/packages/website/frontend/static/arguments/pollinationreductio.png differ diff --git a/packages/website/frontend/static/arguments/polyphenolreductio.png b/packages/website/frontend/static/arguments/polyphenolreductio.png new file mode 100755 index 0000000..d1b3b82 Binary files /dev/null and b/packages/website/frontend/static/arguments/polyphenolreductio.png differ diff --git a/packages/website/frontend/static/arguments/predatoragriculture.png b/packages/website/frontend/static/arguments/predatoragriculture.png new file mode 100755 index 0000000..1a6dacf Binary files /dev/null and b/packages/website/frontend/static/arguments/predatoragriculture.png differ diff --git a/packages/website/frontend/static/arguments/processedmeat.png b/packages/website/frontend/static/arguments/processedmeat.png new file mode 100755 index 0000000..29ac296 Binary files /dev/null and b/packages/website/frontend/static/arguments/processedmeat.png differ diff --git a/packages/website/frontend/static/arguments/redmeat.png b/packages/website/frontend/static/arguments/redmeat.png new file mode 100755 index 0000000..f40b91d Binary files /dev/null and b/packages/website/frontend/static/arguments/redmeat.png differ diff --git a/packages/website/frontend/static/arguments/rewilding.png b/packages/website/frontend/static/arguments/rewilding.png new file mode 100755 index 0000000..d37ca6e Binary files /dev/null and b/packages/website/frontend/static/arguments/rewilding.png differ diff --git a/packages/website/frontend/static/arguments/saturatedfat.png b/packages/website/frontend/static/arguments/saturatedfat.png new file mode 100755 index 0000000..5f38ada Binary files /dev/null and b/packages/website/frontend/static/arguments/saturatedfat.png differ diff --git a/packages/website/frontend/static/arguments/seedoils.png b/packages/website/frontend/static/arguments/seedoils.png new file mode 100755 index 0000000..4245e01 Binary files /dev/null and b/packages/website/frontend/static/arguments/seedoils.png differ diff --git a/packages/website/frontend/static/arguments/sodiumcvd.png b/packages/website/frontend/static/arguments/sodiumcvd.png new file mode 100755 index 0000000..4a11ba9 Binary files /dev/null and b/packages/website/frontend/static/arguments/sodiumcvd.png differ diff --git a/packages/website/frontend/static/arguments/soyproducts.png b/packages/website/frontend/static/arguments/soyproducts.png new file mode 100755 index 0000000..fac799e Binary files /dev/null and b/packages/website/frontend/static/arguments/soyproducts.png differ diff --git a/packages/website/frontend/static/arguments/tattooscratchers.png b/packages/website/frontend/static/arguments/tattooscratchers.png new file mode 100755 index 0000000..b4e7f8e Binary files /dev/null and b/packages/website/frontend/static/arguments/tattooscratchers.png differ diff --git a/packages/website/frontend/static/arguments/tmaocausality.png b/packages/website/frontend/static/arguments/tmaocausality.png new file mode 100755 index 0000000..e5d1063 Binary files /dev/null and b/packages/website/frontend/static/arguments/tmaocausality.png differ diff --git a/packages/website/frontend/static/arguments/transpeople.png b/packages/website/frontend/static/arguments/transpeople.png new file mode 100755 index 0000000..a91e98d Binary files /dev/null and b/packages/website/frontend/static/arguments/transpeople.png differ diff --git a/packages/website/frontend/static/arguments/truncatedmetas.png b/packages/website/frontend/static/arguments/truncatedmetas.png new file mode 100755 index 0000000..6a2cf7d Binary files /dev/null and b/packages/website/frontend/static/arguments/truncatedmetas.png differ diff --git a/packages/website/frontend/static/arguments/vegansociety.png b/packages/website/frontend/static/arguments/vegansociety.png new file mode 100755 index 0000000..e68a517 Binary files /dev/null and b/packages/website/frontend/static/arguments/vegansociety.png differ diff --git a/packages/website/frontend/static/assets/favicon.png b/packages/website/frontend/static/assets/favicon.png new file mode 100755 index 0000000..f8ba801 Binary files /dev/null and b/packages/website/frontend/static/assets/favicon.png differ diff --git a/packages/website/frontend/static/assets/logo.png b/packages/website/frontend/static/assets/logo.png new file mode 100755 index 0000000..b6c7ca3 Binary files /dev/null and b/packages/website/frontend/static/assets/logo.png differ diff --git a/packages/website/frontend/static/assets/logo.svg b/packages/website/frontend/static/assets/logo.svg new file mode 100755 index 0000000..bc6f912 --- /dev/null +++ b/packages/website/frontend/static/assets/logo.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/website/frontend/static/assets/logo_extended.png b/packages/website/frontend/static/assets/logo_extended.png new file mode 100755 index 0000000..165fecf Binary files /dev/null and b/packages/website/frontend/static/assets/logo_extended.png differ diff --git a/packages/website/frontend/static/assets/logo_extended.svg b/packages/website/frontend/static/assets/logo_extended.svg new file mode 100755 index 0000000..17a5eb2 --- /dev/null +++ b/packages/website/frontend/static/assets/logo_extended.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/website/frontend/static/assets/logo_lambda.png b/packages/website/frontend/static/assets/logo_lambda.png new file mode 100755 index 0000000..cc1e85f Binary files /dev/null and b/packages/website/frontend/static/assets/logo_lambda.png differ diff --git a/packages/website/frontend/static/assets/logo_lambda_square.png b/packages/website/frontend/static/assets/logo_lambda_square.png new file mode 100755 index 0000000..ba7e6f2 Binary files /dev/null and b/packages/website/frontend/static/assets/logo_lambda_square.png differ diff --git a/packages/website/frontend/static/assets/logo_n.svg b/packages/website/frontend/static/assets/logo_n.svg new file mode 100755 index 0000000..f1702da --- /dev/null +++ b/packages/website/frontend/static/assets/logo_n.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/packages/website/frontend/static/assets/logo_r.png b/packages/website/frontend/static/assets/logo_r.png new file mode 100755 index 0000000..e598d5d Binary files /dev/null and b/packages/website/frontend/static/assets/logo_r.png differ diff --git a/packages/website/frontend/static/assets/logo_r.svg b/packages/website/frontend/static/assets/logo_r.svg new file mode 100755 index 0000000..bffb415 --- /dev/null +++ b/packages/website/frontend/static/assets/logo_r.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/website/frontend/static/assets/logo_r_square.png b/packages/website/frontend/static/assets/logo_r_square.png new file mode 100755 index 0000000..dcd1be4 Binary files /dev/null and b/packages/website/frontend/static/assets/logo_r_square.png differ diff --git a/packages/website/frontend/static/assets/logo_u.png b/packages/website/frontend/static/assets/logo_u.png new file mode 100755 index 0000000..60845ca Binary files /dev/null and b/packages/website/frontend/static/assets/logo_u.png differ diff --git a/packages/website/frontend/static/assets/logo_u.svg b/packages/website/frontend/static/assets/logo_u.svg new file mode 100755 index 0000000..58f135b --- /dev/null +++ b/packages/website/frontend/static/assets/logo_u.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/packages/website/frontend/static/assets/logo_u_square.png b/packages/website/frontend/static/assets/logo_u_square.png new file mode 100755 index 0000000..cb83d5e Binary files /dev/null and b/packages/website/frontend/static/assets/logo_u_square.png differ diff --git a/packages/website/frontend/static/assets/meta.png b/packages/website/frontend/static/assets/meta.png new file mode 100755 index 0000000..dd9898b Binary files /dev/null and b/packages/website/frontend/static/assets/meta.png differ diff --git a/packages/website/frontend/static/assets/nutridex.png b/packages/website/frontend/static/assets/nutridex.png new file mode 100755 index 0000000..12ea8f8 Binary files /dev/null and b/packages/website/frontend/static/assets/nutridex.png differ diff --git a/packages/website/frontend/static/assets/nutridex.svg b/packages/website/frontend/static/assets/nutridex.svg new file mode 100755 index 0000000..216d3cc --- /dev/null +++ b/packages/website/frontend/static/assets/nutridex.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/website/frontend/static/assets/nutridex_brightorange.svg b/packages/website/frontend/static/assets/nutridex_brightorange.svg new file mode 100755 index 0000000..b270420 --- /dev/null +++ b/packages/website/frontend/static/assets/nutridex_brightorange.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/website/frontend/static/assets/nutridex_darkorange.svg b/packages/website/frontend/static/assets/nutridex_darkorange.svg new file mode 100755 index 0000000..68f8518 --- /dev/null +++ b/packages/website/frontend/static/assets/nutridex_darkorange.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/website/frontend/static/assets/qr_aEUaFT3Vd9ta1oI144.png b/packages/website/frontend/static/assets/qr_aEUaFT3Vd9ta1oI144.png new file mode 100755 index 0000000..559a0b6 Binary files /dev/null and b/packages/website/frontend/static/assets/qr_aEUaFT3Vd9ta1oI144.png differ diff --git a/packages/website/frontend/static/assets/twittercard.png b/packages/website/frontend/static/assets/twittercard.png new file mode 100755 index 0000000..7edd955 Binary files /dev/null and b/packages/website/frontend/static/assets/twittercard.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise.png b/packages/website/frontend/static/blog/bigfatsurprise.png new file mode 100755 index 0000000..e2d75d8 Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image1.png b/packages/website/frontend/static/blog/bigfatsurprise/image1.png new file mode 100755 index 0000000..5f80fd5 Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image1.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image10.png b/packages/website/frontend/static/blog/bigfatsurprise/image10.png new file mode 100755 index 0000000..6ee5460 Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image10.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image11.png b/packages/website/frontend/static/blog/bigfatsurprise/image11.png new file mode 100755 index 0000000..217d1cd Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image11.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image12.png b/packages/website/frontend/static/blog/bigfatsurprise/image12.png new file mode 100755 index 0000000..2ebd820 Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image12.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image2.png b/packages/website/frontend/static/blog/bigfatsurprise/image2.png new file mode 100755 index 0000000..996e007 Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image2.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image3.png b/packages/website/frontend/static/blog/bigfatsurprise/image3.png new file mode 100755 index 0000000..194d7ed Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image3.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image4.png b/packages/website/frontend/static/blog/bigfatsurprise/image4.png new file mode 100755 index 0000000..c02d25a Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image4.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image5.png b/packages/website/frontend/static/blog/bigfatsurprise/image5.png new file mode 100755 index 0000000..89563b7 Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image5.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image6.png b/packages/website/frontend/static/blog/bigfatsurprise/image6.png new file mode 100755 index 0000000..e6c2f8f Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image6.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image7.png b/packages/website/frontend/static/blog/bigfatsurprise/image7.png new file mode 100755 index 0000000..fd53eeb Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image7.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image8.png b/packages/website/frontend/static/blog/bigfatsurprise/image8.png new file mode 100755 index 0000000..a742371 Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image8.png differ diff --git a/packages/website/frontend/static/blog/bigfatsurprise/image9.png b/packages/website/frontend/static/blog/bigfatsurprise/image9.png new file mode 100755 index 0000000..2e242bf Binary files /dev/null and b/packages/website/frontend/static/blog/bigfatsurprise/image9.png differ diff --git a/packages/website/frontend/static/blog/everettvegans.png b/packages/website/frontend/static/blog/everettvegans.png new file mode 100755 index 0000000..6f38a10 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/argument1.png b/packages/website/frontend/static/blog/everettvegans/argument1.png new file mode 100755 index 0000000..2e95592 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/argument1.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/argument2.png b/packages/website/frontend/static/blog/everettvegans/argument2.png new file mode 100755 index 0000000..9cdc350 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/argument2.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image1.png b/packages/website/frontend/static/blog/everettvegans/image1.png new file mode 100755 index 0000000..e53e9ae Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image1.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image10.png b/packages/website/frontend/static/blog/everettvegans/image10.png new file mode 100755 index 0000000..6cb6d39 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image10.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image11.png b/packages/website/frontend/static/blog/everettvegans/image11.png new file mode 100755 index 0000000..8ee8c73 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image11.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image12.png b/packages/website/frontend/static/blog/everettvegans/image12.png new file mode 100755 index 0000000..751f1d4 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image12.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image13.png b/packages/website/frontend/static/blog/everettvegans/image13.png new file mode 100755 index 0000000..5b6d422 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image13.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image14.png b/packages/website/frontend/static/blog/everettvegans/image14.png new file mode 100755 index 0000000..b1426f5 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image14.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image15.png b/packages/website/frontend/static/blog/everettvegans/image15.png new file mode 100755 index 0000000..a0b343c Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image15.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image16.png b/packages/website/frontend/static/blog/everettvegans/image16.png new file mode 100755 index 0000000..d1583c5 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image16.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image17.png b/packages/website/frontend/static/blog/everettvegans/image17.png new file mode 100755 index 0000000..0f37b5c Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image17.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image18.png b/packages/website/frontend/static/blog/everettvegans/image18.png new file mode 100755 index 0000000..ff86991 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image18.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image19.png b/packages/website/frontend/static/blog/everettvegans/image19.png new file mode 100755 index 0000000..39656ac Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image19.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image2.png b/packages/website/frontend/static/blog/everettvegans/image2.png new file mode 100755 index 0000000..7f5ecf2 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image2.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image20.png b/packages/website/frontend/static/blog/everettvegans/image20.png new file mode 100755 index 0000000..4e04fa5 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image20.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image21.png b/packages/website/frontend/static/blog/everettvegans/image21.png new file mode 100755 index 0000000..3cef856 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image21.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image22.png b/packages/website/frontend/static/blog/everettvegans/image22.png new file mode 100755 index 0000000..b2b5f00 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image22.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image23.png b/packages/website/frontend/static/blog/everettvegans/image23.png new file mode 100755 index 0000000..94eeae9 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image23.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image24.png b/packages/website/frontend/static/blog/everettvegans/image24.png new file mode 100755 index 0000000..ba2b567 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image24.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image25.png b/packages/website/frontend/static/blog/everettvegans/image25.png new file mode 100755 index 0000000..5bd9a1e Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image25.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image26.png b/packages/website/frontend/static/blog/everettvegans/image26.png new file mode 100755 index 0000000..25a5b59 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image26.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image27.png b/packages/website/frontend/static/blog/everettvegans/image27.png new file mode 100755 index 0000000..a461a25 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image27.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image28.png b/packages/website/frontend/static/blog/everettvegans/image28.png new file mode 100755 index 0000000..56de692 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image28.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image29.png b/packages/website/frontend/static/blog/everettvegans/image29.png new file mode 100755 index 0000000..7e9a3a8 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image29.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image3.png b/packages/website/frontend/static/blog/everettvegans/image3.png new file mode 100755 index 0000000..a50b0fb Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image3.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image4.png b/packages/website/frontend/static/blog/everettvegans/image4.png new file mode 100755 index 0000000..23c6cdc Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image4.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image5.png b/packages/website/frontend/static/blog/everettvegans/image5.png new file mode 100755 index 0000000..235d403 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image5.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image6.png b/packages/website/frontend/static/blog/everettvegans/image6.png new file mode 100755 index 0000000..5aad2f5 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image6.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image7.png b/packages/website/frontend/static/blog/everettvegans/image7.png new file mode 100755 index 0000000..24d62c7 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image7.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image8.png b/packages/website/frontend/static/blog/everettvegans/image8.png new file mode 100755 index 0000000..c530881 Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image8.png differ diff --git a/packages/website/frontend/static/blog/everettvegans/image9.png b/packages/website/frontend/static/blog/everettvegans/image9.png new file mode 100755 index 0000000..8264a5c Binary files /dev/null and b/packages/website/frontend/static/blog/everettvegans/image9.png differ diff --git a/packages/website/frontend/static/blog/huntergatherers.png b/packages/website/frontend/static/blog/huntergatherers.png new file mode 100755 index 0000000..bde30aa Binary files /dev/null and b/packages/website/frontend/static/blog/huntergatherers.png differ diff --git a/packages/website/frontend/static/blog/huntergatherers/argument1.png b/packages/website/frontend/static/blog/huntergatherers/argument1.png new file mode 100755 index 0000000..60463db Binary files /dev/null and b/packages/website/frontend/static/blog/huntergatherers/argument1.png differ diff --git a/packages/website/frontend/static/blog/huntergatherers/argument2.png b/packages/website/frontend/static/blog/huntergatherers/argument2.png new file mode 100755 index 0000000..f33380c Binary files /dev/null and b/packages/website/frontend/static/blog/huntergatherers/argument2.png differ diff --git a/packages/website/frontend/static/blog/huntergatherers/image1.png b/packages/website/frontend/static/blog/huntergatherers/image1.png new file mode 100755 index 0000000..dda8bd4 Binary files /dev/null and b/packages/website/frontend/static/blog/huntergatherers/image1.png differ diff --git a/packages/website/frontend/static/blog/huntergatherers/image2.png b/packages/website/frontend/static/blog/huntergatherers/image2.png new file mode 100755 index 0000000..a0cd820 Binary files /dev/null and b/packages/website/frontend/static/blog/huntergatherers/image2.png differ diff --git a/packages/website/frontend/static/blog/huntergatherers/image3.png b/packages/website/frontend/static/blog/huntergatherers/image3.png new file mode 100755 index 0000000..0951ec0 Binary files /dev/null and b/packages/website/frontend/static/blog/huntergatherers/image3.png differ diff --git a/packages/website/frontend/static/blog/huntergatherers/image4.png b/packages/website/frontend/static/blog/huntergatherers/image4.png new file mode 100755 index 0000000..3f8e381 Binary files /dev/null and b/packages/website/frontend/static/blog/huntergatherers/image4.png differ diff --git a/packages/website/frontend/static/blog/huntergatherers/image5.png b/packages/website/frontend/static/blog/huntergatherers/image5.png new file mode 100755 index 0000000..66a0c8e Binary files /dev/null and b/packages/website/frontend/static/blog/huntergatherers/image5.png differ diff --git a/packages/website/frontend/static/blog/huntergatherers/image6.png b/packages/website/frontend/static/blog/huntergatherers/image6.png new file mode 100755 index 0000000..4535b66 Binary files /dev/null and b/packages/website/frontend/static/blog/huntergatherers/image6.png differ diff --git a/packages/website/frontend/static/blog/huntergatherers/image7.png b/packages/website/frontend/static/blog/huntergatherers/image7.png new file mode 100755 index 0000000..0a9e502 Binary files /dev/null and b/packages/website/frontend/static/blog/huntergatherers/image7.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics.png b/packages/website/frontend/static/blog/meatapologetics.png new file mode 100755 index 0000000..11daca7 Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics/argument1.png b/packages/website/frontend/static/blog/meatapologetics/argument1.png new file mode 100755 index 0000000..7b69963 Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics/argument1.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics/argument2.png b/packages/website/frontend/static/blog/meatapologetics/argument2.png new file mode 100755 index 0000000..e6b20fa Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics/argument2.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics/argument3.png b/packages/website/frontend/static/blog/meatapologetics/argument3.png new file mode 100755 index 0000000..83d0832 Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics/argument3.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics/argument4.png b/packages/website/frontend/static/blog/meatapologetics/argument4.png new file mode 100755 index 0000000..d07c969 Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics/argument4.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics/argument5.png b/packages/website/frontend/static/blog/meatapologetics/argument5.png new file mode 100755 index 0000000..57dbb36 Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics/argument5.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics/image1.png b/packages/website/frontend/static/blog/meatapologetics/image1.png new file mode 100755 index 0000000..2b0a89a Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics/image1.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics/image2.png b/packages/website/frontend/static/blog/meatapologetics/image2.png new file mode 100755 index 0000000..e403977 Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics/image2.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics/image3.png b/packages/website/frontend/static/blog/meatapologetics/image3.png new file mode 100755 index 0000000..5fdddc0 Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics/image3.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics/image4.png b/packages/website/frontend/static/blog/meatapologetics/image4.png new file mode 100755 index 0000000..fe76f37 Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics/image4.png differ diff --git a/packages/website/frontend/static/blog/meatapologetics/image5.png b/packages/website/frontend/static/blog/meatapologetics/image5.png new file mode 100755 index 0000000..257f854 Binary files /dev/null and b/packages/website/frontend/static/blog/meatapologetics/image5.png differ diff --git a/packages/website/frontend/static/blog/nagragoodrich.png b/packages/website/frontend/static/blog/nagragoodrich.png new file mode 100755 index 0000000..4c1f01b Binary files /dev/null and b/packages/website/frontend/static/blog/nagragoodrich.png differ diff --git a/packages/website/frontend/static/blog/nagragoodrich/argument1.png b/packages/website/frontend/static/blog/nagragoodrich/argument1.png new file mode 100755 index 0000000..b33fead Binary files /dev/null and b/packages/website/frontend/static/blog/nagragoodrich/argument1.png differ diff --git a/packages/website/frontend/static/blog/nagragoodrich/argument2.png b/packages/website/frontend/static/blog/nagragoodrich/argument2.png new file mode 100755 index 0000000..0e3c345 Binary files /dev/null and b/packages/website/frontend/static/blog/nagragoodrich/argument2.png differ diff --git a/packages/website/frontend/static/blog/nagragoodrich/argument3.png b/packages/website/frontend/static/blog/nagragoodrich/argument3.png new file mode 100755 index 0000000..bfec536 Binary files /dev/null and b/packages/website/frontend/static/blog/nagragoodrich/argument3.png differ diff --git a/packages/website/frontend/static/blog/nagragoodrich/argument4.png b/packages/website/frontend/static/blog/nagragoodrich/argument4.png new file mode 100755 index 0000000..8a5d215 Binary files /dev/null and b/packages/website/frontend/static/blog/nagragoodrich/argument4.png differ diff --git a/packages/website/frontend/static/blog/nagragoodrich/argument5.png b/packages/website/frontend/static/blog/nagragoodrich/argument5.png new file mode 100755 index 0000000..e350e81 Binary files /dev/null and b/packages/website/frontend/static/blog/nagragoodrich/argument5.png differ diff --git a/packages/website/frontend/static/blog/nagragoodrich/argument6.png b/packages/website/frontend/static/blog/nagragoodrich/argument6.png new file mode 100755 index 0000000..306c5c4 Binary files /dev/null and b/packages/website/frontend/static/blog/nagragoodrich/argument6.png differ diff --git a/packages/website/frontend/static/blog/nagragoodrich/argument7.png b/packages/website/frontend/static/blog/nagragoodrich/argument7.png new file mode 100755 index 0000000..31a0730 Binary files /dev/null and b/packages/website/frontend/static/blog/nagragoodrich/argument7.png differ diff --git a/packages/website/frontend/static/blog/nagragoodrich/argument8.png b/packages/website/frontend/static/blog/nagragoodrich/argument8.png new file mode 100755 index 0000000..46c8f16 Binary files /dev/null and b/packages/website/frontend/static/blog/nagragoodrich/argument8.png differ diff --git a/packages/website/frontend/static/blog/nagragoodrich/argument9.png b/packages/website/frontend/static/blog/nagragoodrich/argument9.png new file mode 100755 index 0000000..570bc3b Binary files /dev/null and b/packages/website/frontend/static/blog/nagragoodrich/argument9.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta.png b/packages/website/frontend/static/blog/plantbasedmeta.png new file mode 100755 index 0000000..21b6db0 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image10.png b/packages/website/frontend/static/blog/plantbasedmeta/image10.png new file mode 100755 index 0000000..e51aa5e Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image10.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image100.png b/packages/website/frontend/static/blog/plantbasedmeta/image100.png new file mode 100755 index 0000000..a72c762 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image100.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image101.png b/packages/website/frontend/static/blog/plantbasedmeta/image101.png new file mode 100755 index 0000000..5f409e7 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image101.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image102.png b/packages/website/frontend/static/blog/plantbasedmeta/image102.png new file mode 100755 index 0000000..99e6d14 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image102.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image103.png b/packages/website/frontend/static/blog/plantbasedmeta/image103.png new file mode 100755 index 0000000..85a2579 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image103.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image104.png b/packages/website/frontend/static/blog/plantbasedmeta/image104.png new file mode 100755 index 0000000..facd08f Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image104.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image105.png b/packages/website/frontend/static/blog/plantbasedmeta/image105.png new file mode 100755 index 0000000..fadaab8 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image105.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image106.png b/packages/website/frontend/static/blog/plantbasedmeta/image106.png new file mode 100755 index 0000000..499403f Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image106.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image107.png b/packages/website/frontend/static/blog/plantbasedmeta/image107.png new file mode 100755 index 0000000..76f94f2 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image107.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image108.png b/packages/website/frontend/static/blog/plantbasedmeta/image108.png new file mode 100755 index 0000000..bec01e0 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image108.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image109.png b/packages/website/frontend/static/blog/plantbasedmeta/image109.png new file mode 100755 index 0000000..5c5aaad Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image109.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image11.png b/packages/website/frontend/static/blog/plantbasedmeta/image11.png new file mode 100755 index 0000000..c1f7b96 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image11.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image110.png b/packages/website/frontend/static/blog/plantbasedmeta/image110.png new file mode 100755 index 0000000..348d760 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image110.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image111.png b/packages/website/frontend/static/blog/plantbasedmeta/image111.png new file mode 100755 index 0000000..ee1634c Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image111.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image112.png b/packages/website/frontend/static/blog/plantbasedmeta/image112.png new file mode 100755 index 0000000..8bb67ce Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image112.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image113.png b/packages/website/frontend/static/blog/plantbasedmeta/image113.png new file mode 100755 index 0000000..405949a Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image113.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image114.png b/packages/website/frontend/static/blog/plantbasedmeta/image114.png new file mode 100755 index 0000000..77398d1 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image114.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image115.png b/packages/website/frontend/static/blog/plantbasedmeta/image115.png new file mode 100755 index 0000000..40e9d88 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image115.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image116.png b/packages/website/frontend/static/blog/plantbasedmeta/image116.png new file mode 100755 index 0000000..2a4cada Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image116.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image117.png b/packages/website/frontend/static/blog/plantbasedmeta/image117.png new file mode 100755 index 0000000..403f026 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image117.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image118.png b/packages/website/frontend/static/blog/plantbasedmeta/image118.png new file mode 100755 index 0000000..e8bedbb Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image118.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image119.png b/packages/website/frontend/static/blog/plantbasedmeta/image119.png new file mode 100755 index 0000000..d46bbbd Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image119.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image12.png b/packages/website/frontend/static/blog/plantbasedmeta/image12.png new file mode 100755 index 0000000..e2c039c Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image12.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image120.png b/packages/website/frontend/static/blog/plantbasedmeta/image120.png new file mode 100755 index 0000000..9ef9752 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image120.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image121.png b/packages/website/frontend/static/blog/plantbasedmeta/image121.png new file mode 100755 index 0000000..8abbacb Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image121.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image122.png b/packages/website/frontend/static/blog/plantbasedmeta/image122.png new file mode 100755 index 0000000..d95847f Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image122.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image123.png b/packages/website/frontend/static/blog/plantbasedmeta/image123.png new file mode 100755 index 0000000..33914e9 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image123.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image124.png b/packages/website/frontend/static/blog/plantbasedmeta/image124.png new file mode 100755 index 0000000..491ba06 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image124.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image125.png b/packages/website/frontend/static/blog/plantbasedmeta/image125.png new file mode 100755 index 0000000..267121a Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image125.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image126.png b/packages/website/frontend/static/blog/plantbasedmeta/image126.png new file mode 100755 index 0000000..a5701d5 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image126.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image127.png b/packages/website/frontend/static/blog/plantbasedmeta/image127.png new file mode 100755 index 0000000..fbf7bc2 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image127.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image128.png b/packages/website/frontend/static/blog/plantbasedmeta/image128.png new file mode 100755 index 0000000..4b4ae88 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image128.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image129.png b/packages/website/frontend/static/blog/plantbasedmeta/image129.png new file mode 100755 index 0000000..66a94f1 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image129.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image13.png b/packages/website/frontend/static/blog/plantbasedmeta/image13.png new file mode 100755 index 0000000..a90f724 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image13.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image130.png b/packages/website/frontend/static/blog/plantbasedmeta/image130.png new file mode 100755 index 0000000..2a21b9f Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image130.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image131.png b/packages/website/frontend/static/blog/plantbasedmeta/image131.png new file mode 100755 index 0000000..3c87d75 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image131.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image132.png b/packages/website/frontend/static/blog/plantbasedmeta/image132.png new file mode 100755 index 0000000..19339ee Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image132.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image133.png b/packages/website/frontend/static/blog/plantbasedmeta/image133.png new file mode 100755 index 0000000..d4fac63 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image133.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image134.png b/packages/website/frontend/static/blog/plantbasedmeta/image134.png new file mode 100755 index 0000000..363b8c3 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image134.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image135.png b/packages/website/frontend/static/blog/plantbasedmeta/image135.png new file mode 100755 index 0000000..43dad14 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image135.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image136.png b/packages/website/frontend/static/blog/plantbasedmeta/image136.png new file mode 100755 index 0000000..9392553 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image136.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image137.png b/packages/website/frontend/static/blog/plantbasedmeta/image137.png new file mode 100755 index 0000000..ebd6864 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image137.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image138.png b/packages/website/frontend/static/blog/plantbasedmeta/image138.png new file mode 100755 index 0000000..40b6a8f Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image138.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image139.png b/packages/website/frontend/static/blog/plantbasedmeta/image139.png new file mode 100755 index 0000000..a70d04e Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image139.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image14.png b/packages/website/frontend/static/blog/plantbasedmeta/image14.png new file mode 100755 index 0000000..5942a86 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image14.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image140.png b/packages/website/frontend/static/blog/plantbasedmeta/image140.png new file mode 100755 index 0000000..e391929 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image140.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image141.png b/packages/website/frontend/static/blog/plantbasedmeta/image141.png new file mode 100755 index 0000000..358f65f Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image141.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image142.png b/packages/website/frontend/static/blog/plantbasedmeta/image142.png new file mode 100755 index 0000000..5727b93 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image142.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image143.png b/packages/website/frontend/static/blog/plantbasedmeta/image143.png new file mode 100755 index 0000000..bd2da0b Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image143.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image144.png b/packages/website/frontend/static/blog/plantbasedmeta/image144.png new file mode 100755 index 0000000..738e880 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image144.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image145.png b/packages/website/frontend/static/blog/plantbasedmeta/image145.png new file mode 100755 index 0000000..e5c75eb Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image145.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image146.png b/packages/website/frontend/static/blog/plantbasedmeta/image146.png new file mode 100755 index 0000000..7ce6bf0 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image146.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image147.png b/packages/website/frontend/static/blog/plantbasedmeta/image147.png new file mode 100755 index 0000000..f37ba0f Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image147.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image148.png b/packages/website/frontend/static/blog/plantbasedmeta/image148.png new file mode 100755 index 0000000..532744e Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image148.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image149.png b/packages/website/frontend/static/blog/plantbasedmeta/image149.png new file mode 100755 index 0000000..804dee4 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image149.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image15.png b/packages/website/frontend/static/blog/plantbasedmeta/image15.png new file mode 100755 index 0000000..0ce6cba Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image15.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image150.png b/packages/website/frontend/static/blog/plantbasedmeta/image150.png new file mode 100755 index 0000000..3cb20d8 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image150.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image151.png b/packages/website/frontend/static/blog/plantbasedmeta/image151.png new file mode 100755 index 0000000..f7cbca2 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image151.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image152.png b/packages/website/frontend/static/blog/plantbasedmeta/image152.png new file mode 100755 index 0000000..e6345f6 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image152.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image153.png b/packages/website/frontend/static/blog/plantbasedmeta/image153.png new file mode 100755 index 0000000..e1bc61d Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image153.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image154.png b/packages/website/frontend/static/blog/plantbasedmeta/image154.png new file mode 100755 index 0000000..771c03e Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image154.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image155.png b/packages/website/frontend/static/blog/plantbasedmeta/image155.png new file mode 100755 index 0000000..19aa8c6 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image155.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image156.png b/packages/website/frontend/static/blog/plantbasedmeta/image156.png new file mode 100755 index 0000000..9f59f0b Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image156.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image157.png b/packages/website/frontend/static/blog/plantbasedmeta/image157.png new file mode 100755 index 0000000..79710a1 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image157.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image158.png b/packages/website/frontend/static/blog/plantbasedmeta/image158.png new file mode 100755 index 0000000..4b535a5 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image158.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image159.png b/packages/website/frontend/static/blog/plantbasedmeta/image159.png new file mode 100755 index 0000000..7150ead Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image159.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image16.png b/packages/website/frontend/static/blog/plantbasedmeta/image16.png new file mode 100755 index 0000000..f7662d0 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image16.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image160.png b/packages/website/frontend/static/blog/plantbasedmeta/image160.png new file mode 100755 index 0000000..691ff0b Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image160.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image161.png b/packages/website/frontend/static/blog/plantbasedmeta/image161.png new file mode 100755 index 0000000..7353d32 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image161.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image162.png b/packages/website/frontend/static/blog/plantbasedmeta/image162.png new file mode 100755 index 0000000..320543b Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image162.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image163.png b/packages/website/frontend/static/blog/plantbasedmeta/image163.png new file mode 100755 index 0000000..63c099a Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image163.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image164.png b/packages/website/frontend/static/blog/plantbasedmeta/image164.png new file mode 100755 index 0000000..14d6956 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image164.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image165.png b/packages/website/frontend/static/blog/plantbasedmeta/image165.png new file mode 100755 index 0000000..fe97d4d Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image165.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image166.png b/packages/website/frontend/static/blog/plantbasedmeta/image166.png new file mode 100755 index 0000000..e718250 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image166.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image167.png b/packages/website/frontend/static/blog/plantbasedmeta/image167.png new file mode 100755 index 0000000..4c34b03 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image167.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image168.png b/packages/website/frontend/static/blog/plantbasedmeta/image168.png new file mode 100755 index 0000000..f7b61fa Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image168.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image169.png b/packages/website/frontend/static/blog/plantbasedmeta/image169.png new file mode 100755 index 0000000..07d6f20 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image169.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image17.png b/packages/website/frontend/static/blog/plantbasedmeta/image17.png new file mode 100755 index 0000000..07a8bf9 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image17.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image170.png b/packages/website/frontend/static/blog/plantbasedmeta/image170.png new file mode 100755 index 0000000..4850fba Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image170.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image171.png b/packages/website/frontend/static/blog/plantbasedmeta/image171.png new file mode 100755 index 0000000..b205102 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image171.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image172.png b/packages/website/frontend/static/blog/plantbasedmeta/image172.png new file mode 100755 index 0000000..0d0da05 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image172.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image173.png b/packages/website/frontend/static/blog/plantbasedmeta/image173.png new file mode 100755 index 0000000..e514fda Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image173.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image174.png b/packages/website/frontend/static/blog/plantbasedmeta/image174.png new file mode 100755 index 0000000..99873e9 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image174.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image175.png b/packages/website/frontend/static/blog/plantbasedmeta/image175.png new file mode 100755 index 0000000..bdc75ab Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image175.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image176.png b/packages/website/frontend/static/blog/plantbasedmeta/image176.png new file mode 100755 index 0000000..4e09d1f Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image176.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image177.png b/packages/website/frontend/static/blog/plantbasedmeta/image177.png new file mode 100755 index 0000000..61af542 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image177.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image178.png b/packages/website/frontend/static/blog/plantbasedmeta/image178.png new file mode 100755 index 0000000..acc11f1 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image178.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image179.png b/packages/website/frontend/static/blog/plantbasedmeta/image179.png new file mode 100755 index 0000000..7ba4dd4 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image179.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image18.png b/packages/website/frontend/static/blog/plantbasedmeta/image18.png new file mode 100755 index 0000000..d7b330d Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image18.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image180.png b/packages/website/frontend/static/blog/plantbasedmeta/image180.png new file mode 100755 index 0000000..dd45cec Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image180.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image181.png b/packages/website/frontend/static/blog/plantbasedmeta/image181.png new file mode 100755 index 0000000..2626b48 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image181.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image182.png b/packages/website/frontend/static/blog/plantbasedmeta/image182.png new file mode 100755 index 0000000..2fc50b1 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image182.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image183.png b/packages/website/frontend/static/blog/plantbasedmeta/image183.png new file mode 100755 index 0000000..ac55948 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image183.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image184.png b/packages/website/frontend/static/blog/plantbasedmeta/image184.png new file mode 100755 index 0000000..9a168ed Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image184.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image185.png b/packages/website/frontend/static/blog/plantbasedmeta/image185.png new file mode 100755 index 0000000..b113b89 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image185.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image186.png b/packages/website/frontend/static/blog/plantbasedmeta/image186.png new file mode 100755 index 0000000..c663813 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image186.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image19.png b/packages/website/frontend/static/blog/plantbasedmeta/image19.png new file mode 100755 index 0000000..2cbe25b Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image19.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image20.png b/packages/website/frontend/static/blog/plantbasedmeta/image20.png new file mode 100755 index 0000000..529c5d2 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image20.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image21.png b/packages/website/frontend/static/blog/plantbasedmeta/image21.png new file mode 100755 index 0000000..7828dc2 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image21.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image22.png b/packages/website/frontend/static/blog/plantbasedmeta/image22.png new file mode 100755 index 0000000..cb36c6e Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image22.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image23.png b/packages/website/frontend/static/blog/plantbasedmeta/image23.png new file mode 100755 index 0000000..a2d8f45 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image23.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image24.png b/packages/website/frontend/static/blog/plantbasedmeta/image24.png new file mode 100755 index 0000000..dbf451d Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image24.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image25.png b/packages/website/frontend/static/blog/plantbasedmeta/image25.png new file mode 100755 index 0000000..33dde19 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image25.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image26.png b/packages/website/frontend/static/blog/plantbasedmeta/image26.png new file mode 100755 index 0000000..1bb5c42 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image26.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image27.png b/packages/website/frontend/static/blog/plantbasedmeta/image27.png new file mode 100755 index 0000000..711ced0 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image27.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image28.png b/packages/website/frontend/static/blog/plantbasedmeta/image28.png new file mode 100755 index 0000000..0e9185a Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image28.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image29.png b/packages/website/frontend/static/blog/plantbasedmeta/image29.png new file mode 100755 index 0000000..32f729c Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image29.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image30.png b/packages/website/frontend/static/blog/plantbasedmeta/image30.png new file mode 100755 index 0000000..5fc0726 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image30.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image31.png b/packages/website/frontend/static/blog/plantbasedmeta/image31.png new file mode 100755 index 0000000..8453b88 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image31.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image32.png b/packages/website/frontend/static/blog/plantbasedmeta/image32.png new file mode 100755 index 0000000..a5f73e9 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image32.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image33.png b/packages/website/frontend/static/blog/plantbasedmeta/image33.png new file mode 100755 index 0000000..b60643a Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image33.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image34.png b/packages/website/frontend/static/blog/plantbasedmeta/image34.png new file mode 100755 index 0000000..9c0a792 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image34.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image35.png b/packages/website/frontend/static/blog/plantbasedmeta/image35.png new file mode 100755 index 0000000..a456bc1 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image35.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image36.png b/packages/website/frontend/static/blog/plantbasedmeta/image36.png new file mode 100755 index 0000000..7704444 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image36.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image37.png b/packages/website/frontend/static/blog/plantbasedmeta/image37.png new file mode 100755 index 0000000..dddfd2e Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image37.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image38.png b/packages/website/frontend/static/blog/plantbasedmeta/image38.png new file mode 100755 index 0000000..19d0880 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image38.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image39.png b/packages/website/frontend/static/blog/plantbasedmeta/image39.png new file mode 100755 index 0000000..39e04e2 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image39.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image40.png b/packages/website/frontend/static/blog/plantbasedmeta/image40.png new file mode 100755 index 0000000..d48fdbd Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image40.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image41.png b/packages/website/frontend/static/blog/plantbasedmeta/image41.png new file mode 100755 index 0000000..f26a6a9 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image41.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image42.png b/packages/website/frontend/static/blog/plantbasedmeta/image42.png new file mode 100755 index 0000000..7e7b2db Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image42.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image43.png b/packages/website/frontend/static/blog/plantbasedmeta/image43.png new file mode 100755 index 0000000..3e6a35b Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image43.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image44.png b/packages/website/frontend/static/blog/plantbasedmeta/image44.png new file mode 100755 index 0000000..8ec7503 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image44.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image45.png b/packages/website/frontend/static/blog/plantbasedmeta/image45.png new file mode 100755 index 0000000..198d584 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image45.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image46.png b/packages/website/frontend/static/blog/plantbasedmeta/image46.png new file mode 100755 index 0000000..258f931 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image46.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image47.png b/packages/website/frontend/static/blog/plantbasedmeta/image47.png new file mode 100755 index 0000000..fe7d4cb Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image47.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image48.png b/packages/website/frontend/static/blog/plantbasedmeta/image48.png new file mode 100755 index 0000000..56f4c9a Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image48.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image49.png b/packages/website/frontend/static/blog/plantbasedmeta/image49.png new file mode 100755 index 0000000..e912303 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image49.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image5.png b/packages/website/frontend/static/blog/plantbasedmeta/image5.png new file mode 100755 index 0000000..bf458d4 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image5.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image50.png b/packages/website/frontend/static/blog/plantbasedmeta/image50.png new file mode 100755 index 0000000..a9d6d41 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image50.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image51.png b/packages/website/frontend/static/blog/plantbasedmeta/image51.png new file mode 100755 index 0000000..e103e86 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image51.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image52.png b/packages/website/frontend/static/blog/plantbasedmeta/image52.png new file mode 100755 index 0000000..3858140 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image52.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image53.png b/packages/website/frontend/static/blog/plantbasedmeta/image53.png new file mode 100755 index 0000000..56b5e8e Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image53.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image54.png b/packages/website/frontend/static/blog/plantbasedmeta/image54.png new file mode 100755 index 0000000..b0ec631 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image54.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image55.png b/packages/website/frontend/static/blog/plantbasedmeta/image55.png new file mode 100755 index 0000000..11b171a Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image55.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image56.png b/packages/website/frontend/static/blog/plantbasedmeta/image56.png new file mode 100755 index 0000000..f84295b Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image56.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image57.png b/packages/website/frontend/static/blog/plantbasedmeta/image57.png new file mode 100755 index 0000000..78f0010 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image57.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image58.png b/packages/website/frontend/static/blog/plantbasedmeta/image58.png new file mode 100755 index 0000000..18c3f3a Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image58.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image59.png b/packages/website/frontend/static/blog/plantbasedmeta/image59.png new file mode 100755 index 0000000..b5dbcb7 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image59.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image6.png b/packages/website/frontend/static/blog/plantbasedmeta/image6.png new file mode 100755 index 0000000..c51b30b Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image6.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image60.png b/packages/website/frontend/static/blog/plantbasedmeta/image60.png new file mode 100755 index 0000000..adc4eb9 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image60.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image61.png b/packages/website/frontend/static/blog/plantbasedmeta/image61.png new file mode 100755 index 0000000..ad69498 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image61.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image62.png b/packages/website/frontend/static/blog/plantbasedmeta/image62.png new file mode 100755 index 0000000..8c2d0fd Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image62.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image63.png b/packages/website/frontend/static/blog/plantbasedmeta/image63.png new file mode 100755 index 0000000..cff37ba Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image63.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image64.png b/packages/website/frontend/static/blog/plantbasedmeta/image64.png new file mode 100755 index 0000000..19330a9 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image64.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image65.png b/packages/website/frontend/static/blog/plantbasedmeta/image65.png new file mode 100755 index 0000000..28a55b1 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image65.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image66.png b/packages/website/frontend/static/blog/plantbasedmeta/image66.png new file mode 100755 index 0000000..7353887 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image66.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image67.png b/packages/website/frontend/static/blog/plantbasedmeta/image67.png new file mode 100755 index 0000000..6bbd4b2 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image67.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image68.png b/packages/website/frontend/static/blog/plantbasedmeta/image68.png new file mode 100755 index 0000000..051cdd1 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image68.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image69.png b/packages/website/frontend/static/blog/plantbasedmeta/image69.png new file mode 100755 index 0000000..f215716 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image69.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image7.png b/packages/website/frontend/static/blog/plantbasedmeta/image7.png new file mode 100755 index 0000000..2c4f901 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image7.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image70.png b/packages/website/frontend/static/blog/plantbasedmeta/image70.png new file mode 100755 index 0000000..32cf3cf Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image70.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image71.png b/packages/website/frontend/static/blog/plantbasedmeta/image71.png new file mode 100755 index 0000000..2832269 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image71.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image72.png b/packages/website/frontend/static/blog/plantbasedmeta/image72.png new file mode 100755 index 0000000..9f1c118 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image72.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image73.png b/packages/website/frontend/static/blog/plantbasedmeta/image73.png new file mode 100755 index 0000000..4198a5e Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image73.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image74.png b/packages/website/frontend/static/blog/plantbasedmeta/image74.png new file mode 100755 index 0000000..8a70ee3 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image74.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image75.png b/packages/website/frontend/static/blog/plantbasedmeta/image75.png new file mode 100755 index 0000000..c2db249 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image75.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image76.png b/packages/website/frontend/static/blog/plantbasedmeta/image76.png new file mode 100755 index 0000000..f9aa618 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image76.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image77.png b/packages/website/frontend/static/blog/plantbasedmeta/image77.png new file mode 100755 index 0000000..3ec4f38 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image77.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image78.png b/packages/website/frontend/static/blog/plantbasedmeta/image78.png new file mode 100755 index 0000000..33f8bee Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image78.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image79.png b/packages/website/frontend/static/blog/plantbasedmeta/image79.png new file mode 100755 index 0000000..4ef7a4f Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image79.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image8.png b/packages/website/frontend/static/blog/plantbasedmeta/image8.png new file mode 100755 index 0000000..129a910 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image8.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image80.png b/packages/website/frontend/static/blog/plantbasedmeta/image80.png new file mode 100755 index 0000000..4b0e21a Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image80.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image81.png b/packages/website/frontend/static/blog/plantbasedmeta/image81.png new file mode 100755 index 0000000..d333e4a Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image81.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image82.png b/packages/website/frontend/static/blog/plantbasedmeta/image82.png new file mode 100755 index 0000000..4af49f0 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image82.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image83.png b/packages/website/frontend/static/blog/plantbasedmeta/image83.png new file mode 100755 index 0000000..78459d4 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image83.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image84.png b/packages/website/frontend/static/blog/plantbasedmeta/image84.png new file mode 100755 index 0000000..2e7c2be Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image84.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image85.png b/packages/website/frontend/static/blog/plantbasedmeta/image85.png new file mode 100755 index 0000000..e0999f0 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image85.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image86.png b/packages/website/frontend/static/blog/plantbasedmeta/image86.png new file mode 100755 index 0000000..5549067 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image86.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image87.png b/packages/website/frontend/static/blog/plantbasedmeta/image87.png new file mode 100755 index 0000000..15fa6be Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image87.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image88.png b/packages/website/frontend/static/blog/plantbasedmeta/image88.png new file mode 100755 index 0000000..4b4f4c6 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image88.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image89.png b/packages/website/frontend/static/blog/plantbasedmeta/image89.png new file mode 100755 index 0000000..1db65f3 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image89.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image9.png b/packages/website/frontend/static/blog/plantbasedmeta/image9.png new file mode 100755 index 0000000..7dc3698 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image9.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image90.png b/packages/website/frontend/static/blog/plantbasedmeta/image90.png new file mode 100755 index 0000000..9725a8b Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image90.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image91.png b/packages/website/frontend/static/blog/plantbasedmeta/image91.png new file mode 100755 index 0000000..3d40782 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image91.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image92.png b/packages/website/frontend/static/blog/plantbasedmeta/image92.png new file mode 100755 index 0000000..205f56d Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image92.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image93.png b/packages/website/frontend/static/blog/plantbasedmeta/image93.png new file mode 100755 index 0000000..8683110 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image93.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image94.png b/packages/website/frontend/static/blog/plantbasedmeta/image94.png new file mode 100755 index 0000000..9ca54a3 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image94.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image95.png b/packages/website/frontend/static/blog/plantbasedmeta/image95.png new file mode 100755 index 0000000..70cf37c Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image95.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image96.png b/packages/website/frontend/static/blog/plantbasedmeta/image96.png new file mode 100755 index 0000000..cdfaedd Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image96.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image97.png b/packages/website/frontend/static/blog/plantbasedmeta/image97.png new file mode 100755 index 0000000..f9042b7 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image97.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image98.png b/packages/website/frontend/static/blog/plantbasedmeta/image98.png new file mode 100755 index 0000000..d55af52 Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image98.png differ diff --git a/packages/website/frontend/static/blog/plantbasedmeta/image99.png b/packages/website/frontend/static/blog/plantbasedmeta/image99.png new file mode 100755 index 0000000..3012a6d Binary files /dev/null and b/packages/website/frontend/static/blog/plantbasedmeta/image99.png differ diff --git a/packages/website/frontend/static/blog/quacksmashing.png b/packages/website/frontend/static/blog/quacksmashing.png new file mode 100755 index 0000000..af60fc3 Binary files /dev/null and b/packages/website/frontend/static/blog/quacksmashing.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet.png b/packages/website/frontend/static/blog/sapiendiet.png new file mode 100755 index 0000000..7060da9 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/argument1.png b/packages/website/frontend/static/blog/sapiendiet/argument1.png new file mode 100755 index 0000000..29688e0 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/argument1.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image1.png b/packages/website/frontend/static/blog/sapiendiet/image1.png new file mode 100755 index 0000000..65b6147 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image1.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image10.png b/packages/website/frontend/static/blog/sapiendiet/image10.png new file mode 100755 index 0000000..13cee7b Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image10.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image11.png b/packages/website/frontend/static/blog/sapiendiet/image11.png new file mode 100755 index 0000000..311c9d5 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image11.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image12.png b/packages/website/frontend/static/blog/sapiendiet/image12.png new file mode 100755 index 0000000..4f7b616 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image12.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image13.png b/packages/website/frontend/static/blog/sapiendiet/image13.png new file mode 100755 index 0000000..f5288ce Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image13.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image14.png b/packages/website/frontend/static/blog/sapiendiet/image14.png new file mode 100755 index 0000000..6da9259 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image14.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image15.png b/packages/website/frontend/static/blog/sapiendiet/image15.png new file mode 100755 index 0000000..bc7aacb Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image15.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image16.png b/packages/website/frontend/static/blog/sapiendiet/image16.png new file mode 100755 index 0000000..6991f14 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image16.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image17.png b/packages/website/frontend/static/blog/sapiendiet/image17.png new file mode 100755 index 0000000..ff1f5b7 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image17.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image18.png b/packages/website/frontend/static/blog/sapiendiet/image18.png new file mode 100755 index 0000000..a9a6ac4 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image18.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image19.png b/packages/website/frontend/static/blog/sapiendiet/image19.png new file mode 100755 index 0000000..c7499a8 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image19.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image2.png b/packages/website/frontend/static/blog/sapiendiet/image2.png new file mode 100755 index 0000000..271c1e2 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image2.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image20.png b/packages/website/frontend/static/blog/sapiendiet/image20.png new file mode 100755 index 0000000..cc617b2 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image20.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image21.png b/packages/website/frontend/static/blog/sapiendiet/image21.png new file mode 100755 index 0000000..e431ec8 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image21.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image22.png b/packages/website/frontend/static/blog/sapiendiet/image22.png new file mode 100755 index 0000000..58aca57 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image22.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image23.png b/packages/website/frontend/static/blog/sapiendiet/image23.png new file mode 100755 index 0000000..3769c21 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image23.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image24.png b/packages/website/frontend/static/blog/sapiendiet/image24.png new file mode 100755 index 0000000..d394803 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image24.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image25.png b/packages/website/frontend/static/blog/sapiendiet/image25.png new file mode 100755 index 0000000..fa16660 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image25.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image3.png b/packages/website/frontend/static/blog/sapiendiet/image3.png new file mode 100755 index 0000000..eac23dd Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image3.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image4.png b/packages/website/frontend/static/blog/sapiendiet/image4.png new file mode 100755 index 0000000..f7557f0 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image4.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image5.png b/packages/website/frontend/static/blog/sapiendiet/image5.png new file mode 100755 index 0000000..af8cc17 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image5.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image6.png b/packages/website/frontend/static/blog/sapiendiet/image6.png new file mode 100755 index 0000000..cbe50dc Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image6.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image7.png b/packages/website/frontend/static/blog/sapiendiet/image7.png new file mode 100755 index 0000000..bcfae16 Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image7.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image8.png b/packages/website/frontend/static/blog/sapiendiet/image8.png new file mode 100755 index 0000000..63dbb5f Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image8.png differ diff --git a/packages/website/frontend/static/blog/sapiendiet/image9.png b/packages/website/frontend/static/blog/sapiendiet/image9.png new file mode 100755 index 0000000..f675e1f Binary files /dev/null and b/packages/website/frontend/static/blog/sapiendiet/image9.png differ diff --git a/packages/website/frontend/static/blog/seedoils.png b/packages/website/frontend/static/blog/seedoils.png new file mode 100755 index 0000000..ca3ba8b Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image1.png b/packages/website/frontend/static/blog/seedoils/image1.png new file mode 100755 index 0000000..3b327f3 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image1.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image10.png b/packages/website/frontend/static/blog/seedoils/image10.png new file mode 100755 index 0000000..06d291e Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image10.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image11.png b/packages/website/frontend/static/blog/seedoils/image11.png new file mode 100755 index 0000000..8cf911d Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image11.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image12.png b/packages/website/frontend/static/blog/seedoils/image12.png new file mode 100755 index 0000000..dc44820 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image12.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image13.png b/packages/website/frontend/static/blog/seedoils/image13.png new file mode 100755 index 0000000..582991f Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image13.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image14.png b/packages/website/frontend/static/blog/seedoils/image14.png new file mode 100755 index 0000000..ab1374b Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image14.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image15.png b/packages/website/frontend/static/blog/seedoils/image15.png new file mode 100755 index 0000000..6fa6fd4 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image15.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image16.png b/packages/website/frontend/static/blog/seedoils/image16.png new file mode 100755 index 0000000..4d332c3 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image16.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image17.png b/packages/website/frontend/static/blog/seedoils/image17.png new file mode 100755 index 0000000..9c4f912 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image17.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image18.png b/packages/website/frontend/static/blog/seedoils/image18.png new file mode 100755 index 0000000..138bbe5 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image18.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image19.png b/packages/website/frontend/static/blog/seedoils/image19.png new file mode 100755 index 0000000..041e38a Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image19.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image2.png b/packages/website/frontend/static/blog/seedoils/image2.png new file mode 100755 index 0000000..3112e50 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image2.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image20.png b/packages/website/frontend/static/blog/seedoils/image20.png new file mode 100755 index 0000000..889a7db Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image20.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image21.png b/packages/website/frontend/static/blog/seedoils/image21.png new file mode 100755 index 0000000..5278dc3 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image21.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image22.png b/packages/website/frontend/static/blog/seedoils/image22.png new file mode 100755 index 0000000..f9170a3 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image22.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image23.png b/packages/website/frontend/static/blog/seedoils/image23.png new file mode 100755 index 0000000..b1f0a9e Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image23.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image24.png b/packages/website/frontend/static/blog/seedoils/image24.png new file mode 100755 index 0000000..2d405f5 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image24.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image25.png b/packages/website/frontend/static/blog/seedoils/image25.png new file mode 100755 index 0000000..a2cd8e9 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image25.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image26.png b/packages/website/frontend/static/blog/seedoils/image26.png new file mode 100755 index 0000000..a970b69 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image26.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image27.png b/packages/website/frontend/static/blog/seedoils/image27.png new file mode 100755 index 0000000..482d6e1 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image27.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image28.png b/packages/website/frontend/static/blog/seedoils/image28.png new file mode 100755 index 0000000..ee49706 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image28.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image29.png b/packages/website/frontend/static/blog/seedoils/image29.png new file mode 100755 index 0000000..4abb2b6 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image29.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image3.png b/packages/website/frontend/static/blog/seedoils/image3.png new file mode 100755 index 0000000..8675eac Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image3.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image30.png b/packages/website/frontend/static/blog/seedoils/image30.png new file mode 100755 index 0000000..493e2ba Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image30.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image31.png b/packages/website/frontend/static/blog/seedoils/image31.png new file mode 100755 index 0000000..64470d4 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image31.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image32.png b/packages/website/frontend/static/blog/seedoils/image32.png new file mode 100755 index 0000000..b1c453d Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image32.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image33.png b/packages/website/frontend/static/blog/seedoils/image33.png new file mode 100755 index 0000000..d19e817 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image33.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image34.png b/packages/website/frontend/static/blog/seedoils/image34.png new file mode 100755 index 0000000..efbc053 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image34.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image35.png b/packages/website/frontend/static/blog/seedoils/image35.png new file mode 100755 index 0000000..385464e Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image35.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image36.png b/packages/website/frontend/static/blog/seedoils/image36.png new file mode 100755 index 0000000..e0d124f Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image36.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image37.png b/packages/website/frontend/static/blog/seedoils/image37.png new file mode 100755 index 0000000..8cc125f Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image37.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image38.png b/packages/website/frontend/static/blog/seedoils/image38.png new file mode 100755 index 0000000..95a58bf Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image38.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image39.png b/packages/website/frontend/static/blog/seedoils/image39.png new file mode 100755 index 0000000..abdbc07 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image39.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image4.png b/packages/website/frontend/static/blog/seedoils/image4.png new file mode 100755 index 0000000..c6a6fa9 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image4.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image40.png b/packages/website/frontend/static/blog/seedoils/image40.png new file mode 100755 index 0000000..9d679d3 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image40.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image42.png b/packages/website/frontend/static/blog/seedoils/image42.png new file mode 100755 index 0000000..cca3b4a Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image42.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image43.png b/packages/website/frontend/static/blog/seedoils/image43.png new file mode 100755 index 0000000..2db2009 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image43.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image44.png b/packages/website/frontend/static/blog/seedoils/image44.png new file mode 100755 index 0000000..5d3422a Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image44.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image45.png b/packages/website/frontend/static/blog/seedoils/image45.png new file mode 100755 index 0000000..28a80e0 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image45.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image46.png b/packages/website/frontend/static/blog/seedoils/image46.png new file mode 100755 index 0000000..98e7adf Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image46.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image47.png b/packages/website/frontend/static/blog/seedoils/image47.png new file mode 100755 index 0000000..5708ca8 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image47.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image48.png b/packages/website/frontend/static/blog/seedoils/image48.png new file mode 100755 index 0000000..8630215 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image48.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image49.png b/packages/website/frontend/static/blog/seedoils/image49.png new file mode 100755 index 0000000..643c2e0 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image49.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image5.png b/packages/website/frontend/static/blog/seedoils/image5.png new file mode 100755 index 0000000..d4818da Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image5.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image50.png b/packages/website/frontend/static/blog/seedoils/image50.png new file mode 100755 index 0000000..6b61385 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image50.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image51.png b/packages/website/frontend/static/blog/seedoils/image51.png new file mode 100755 index 0000000..723ac60 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image51.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image52.png b/packages/website/frontend/static/blog/seedoils/image52.png new file mode 100755 index 0000000..2ff7140 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image52.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image53.png b/packages/website/frontend/static/blog/seedoils/image53.png new file mode 100755 index 0000000..aeb407d Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image53.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image54.png b/packages/website/frontend/static/blog/seedoils/image54.png new file mode 100755 index 0000000..41456db Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image54.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image55.png b/packages/website/frontend/static/blog/seedoils/image55.png new file mode 100755 index 0000000..8a3c408 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image55.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image56.png b/packages/website/frontend/static/blog/seedoils/image56.png new file mode 100755 index 0000000..5fb1b5a Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image56.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image57.png b/packages/website/frontend/static/blog/seedoils/image57.png new file mode 100755 index 0000000..1d3fcbf Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image57.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image58.png b/packages/website/frontend/static/blog/seedoils/image58.png new file mode 100755 index 0000000..d8c061c Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image58.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image59.png b/packages/website/frontend/static/blog/seedoils/image59.png new file mode 100755 index 0000000..9f1b662 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image59.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image6.png b/packages/website/frontend/static/blog/seedoils/image6.png new file mode 100755 index 0000000..05bae7e Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image6.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image60.png b/packages/website/frontend/static/blog/seedoils/image60.png new file mode 100755 index 0000000..009d696 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image60.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image61.png b/packages/website/frontend/static/blog/seedoils/image61.png new file mode 100755 index 0000000..cdcc0e3 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image61.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image62.png b/packages/website/frontend/static/blog/seedoils/image62.png new file mode 100755 index 0000000..d5632b5 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image62.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image63.png b/packages/website/frontend/static/blog/seedoils/image63.png new file mode 100755 index 0000000..c60cb6a Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image63.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image64.png b/packages/website/frontend/static/blog/seedoils/image64.png new file mode 100755 index 0000000..c868620 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image64.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image65.png b/packages/website/frontend/static/blog/seedoils/image65.png new file mode 100755 index 0000000..b37c2bd Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image65.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image66.png b/packages/website/frontend/static/blog/seedoils/image66.png new file mode 100755 index 0000000..1cf6257 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image66.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image67.png b/packages/website/frontend/static/blog/seedoils/image67.png new file mode 100755 index 0000000..d1a3013 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image67.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image68.png b/packages/website/frontend/static/blog/seedoils/image68.png new file mode 100755 index 0000000..0041ba6 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image68.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image69.png b/packages/website/frontend/static/blog/seedoils/image69.png new file mode 100755 index 0000000..b6428f5 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image69.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image7.png b/packages/website/frontend/static/blog/seedoils/image7.png new file mode 100755 index 0000000..90ba7bf Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image7.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image70.png b/packages/website/frontend/static/blog/seedoils/image70.png new file mode 100755 index 0000000..3e709ce Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image70.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image71.png b/packages/website/frontend/static/blog/seedoils/image71.png new file mode 100755 index 0000000..2aa2e03 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image71.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image72.png b/packages/website/frontend/static/blog/seedoils/image72.png new file mode 100755 index 0000000..cd5ed48 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image72.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image73.png b/packages/website/frontend/static/blog/seedoils/image73.png new file mode 100755 index 0000000..70b08f3 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image73.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image74.png b/packages/website/frontend/static/blog/seedoils/image74.png new file mode 100755 index 0000000..b228e25 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image74.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image75.png b/packages/website/frontend/static/blog/seedoils/image75.png new file mode 100755 index 0000000..107ec8c Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image75.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image76.png b/packages/website/frontend/static/blog/seedoils/image76.png new file mode 100755 index 0000000..98773f2 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image76.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image77.png b/packages/website/frontend/static/blog/seedoils/image77.png new file mode 100755 index 0000000..1234e2f Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image77.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image78.png b/packages/website/frontend/static/blog/seedoils/image78.png new file mode 100755 index 0000000..e2add9c Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image78.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image79.png b/packages/website/frontend/static/blog/seedoils/image79.png new file mode 100755 index 0000000..e015e7a Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image79.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image8.png b/packages/website/frontend/static/blog/seedoils/image8.png new file mode 100755 index 0000000..dc29369 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image8.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image80.png b/packages/website/frontend/static/blog/seedoils/image80.png new file mode 100755 index 0000000..42f4f27 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image80.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image81.png b/packages/website/frontend/static/blog/seedoils/image81.png new file mode 100755 index 0000000..4598855 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image81.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image82.png b/packages/website/frontend/static/blog/seedoils/image82.png new file mode 100755 index 0000000..74be554 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image82.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image83.png b/packages/website/frontend/static/blog/seedoils/image83.png new file mode 100755 index 0000000..bcc4d3f Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image83.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image84.png b/packages/website/frontend/static/blog/seedoils/image84.png new file mode 100755 index 0000000..5ff71a6 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image84.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image85.png b/packages/website/frontend/static/blog/seedoils/image85.png new file mode 100755 index 0000000..6bb8bc4 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image85.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image86.png b/packages/website/frontend/static/blog/seedoils/image86.png new file mode 100755 index 0000000..be23e50 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image86.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image87.png b/packages/website/frontend/static/blog/seedoils/image87.png new file mode 100755 index 0000000..adcda5a Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image87.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image88.png b/packages/website/frontend/static/blog/seedoils/image88.png new file mode 100755 index 0000000..ad032b2 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image88.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image89.png b/packages/website/frontend/static/blog/seedoils/image89.png new file mode 100755 index 0000000..cdcf370 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image89.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image9.png b/packages/website/frontend/static/blog/seedoils/image9.png new file mode 100755 index 0000000..a609041 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image9.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image90.png b/packages/website/frontend/static/blog/seedoils/image90.png new file mode 100755 index 0000000..c5aa7fe Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image90.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image91.png b/packages/website/frontend/static/blog/seedoils/image91.png new file mode 100755 index 0000000..82c02f4 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image91.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image92.png b/packages/website/frontend/static/blog/seedoils/image92.png new file mode 100755 index 0000000..a77aed3 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image92.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image93.png b/packages/website/frontend/static/blog/seedoils/image93.png new file mode 100755 index 0000000..cf2a7db Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image93.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image94.png b/packages/website/frontend/static/blog/seedoils/image94.png new file mode 100755 index 0000000..70f6607 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image94.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image95.png b/packages/website/frontend/static/blog/seedoils/image95.png new file mode 100755 index 0000000..12ad9b3 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image95.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image96.png b/packages/website/frontend/static/blog/seedoils/image96.png new file mode 100755 index 0000000..5189fd7 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image96.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image97.png b/packages/website/frontend/static/blog/seedoils/image97.png new file mode 100755 index 0000000..faae68e Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image97.png differ diff --git a/packages/website/frontend/static/blog/seedoils/image98.png b/packages/website/frontend/static/blog/seedoils/image98.png new file mode 100755 index 0000000..06e8ae5 Binary files /dev/null and b/packages/website/frontend/static/blog/seedoils/image98.png differ diff --git a/packages/website/frontend/static/blog/shenanigans.png b/packages/website/frontend/static/blog/shenanigans.png new file mode 100755 index 0000000..3a4b661 Binary files /dev/null and b/packages/website/frontend/static/blog/shenanigans.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception.png b/packages/website/frontend/static/blog/sweetdeception.png new file mode 100755 index 0000000..71bd784 Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image1.png b/packages/website/frontend/static/blog/sweetdeception/image1.png new file mode 100755 index 0000000..5e340ad Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image1.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image10.png b/packages/website/frontend/static/blog/sweetdeception/image10.png new file mode 100755 index 0000000..58f45cc Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image10.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image11.png b/packages/website/frontend/static/blog/sweetdeception/image11.png new file mode 100755 index 0000000..2ef6d89 Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image11.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image12.png b/packages/website/frontend/static/blog/sweetdeception/image12.png new file mode 100755 index 0000000..2b95c93 Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image12.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image13.png b/packages/website/frontend/static/blog/sweetdeception/image13.png new file mode 100755 index 0000000..c0eba9f Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image13.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image14.png b/packages/website/frontend/static/blog/sweetdeception/image14.png new file mode 100755 index 0000000..27fc7c8 Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image14.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image2.png b/packages/website/frontend/static/blog/sweetdeception/image2.png new file mode 100755 index 0000000..c6a65bc Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image2.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image3.png b/packages/website/frontend/static/blog/sweetdeception/image3.png new file mode 100755 index 0000000..610f467 Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image3.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image4.png b/packages/website/frontend/static/blog/sweetdeception/image4.png new file mode 100755 index 0000000..610f467 Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image4.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image5.png b/packages/website/frontend/static/blog/sweetdeception/image5.png new file mode 100755 index 0000000..88e026c Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image5.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image6.png b/packages/website/frontend/static/blog/sweetdeception/image6.png new file mode 100755 index 0000000..c35cee2 Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image6.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image7.png b/packages/website/frontend/static/blog/sweetdeception/image7.png new file mode 100755 index 0000000..412bd9f Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image7.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image8.png b/packages/website/frontend/static/blog/sweetdeception/image8.png new file mode 100755 index 0000000..7184970 Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image8.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/image9.png b/packages/website/frontend/static/blog/sweetdeception/image9.png new file mode 100755 index 0000000..b5ced7d Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/image9.png differ diff --git a/packages/website/frontend/static/blog/sweetdeception/shenanigans.png b/packages/website/frontend/static/blog/sweetdeception/shenanigans.png new file mode 100755 index 0000000..3a4b661 Binary files /dev/null and b/packages/website/frontend/static/blog/sweetdeception/shenanigans.png differ diff --git a/packages/website/frontend/static/blog/thumbs/bigfatsurprise.png b/packages/website/frontend/static/blog/thumbs/bigfatsurprise.png new file mode 100755 index 0000000..851654d Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/bigfatsurprise.png differ diff --git a/packages/website/frontend/static/blog/thumbs/everettvegans.png b/packages/website/frontend/static/blog/thumbs/everettvegans.png new file mode 100755 index 0000000..2a5f0da Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/everettvegans.png differ diff --git a/packages/website/frontend/static/blog/thumbs/huntergatherers.png b/packages/website/frontend/static/blog/thumbs/huntergatherers.png new file mode 100755 index 0000000..8109d1b Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/huntergatherers.png differ diff --git a/packages/website/frontend/static/blog/thumbs/meatapologetics.png b/packages/website/frontend/static/blog/thumbs/meatapologetics.png new file mode 100755 index 0000000..d30c37e Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/meatapologetics.png differ diff --git a/packages/website/frontend/static/blog/thumbs/nagragoodrich.png b/packages/website/frontend/static/blog/thumbs/nagragoodrich.png new file mode 100755 index 0000000..5953f90 Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/nagragoodrich.png differ diff --git a/packages/website/frontend/static/blog/thumbs/plantbasedmeta.png b/packages/website/frontend/static/blog/thumbs/plantbasedmeta.png new file mode 100755 index 0000000..84c8d68 Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/plantbasedmeta.png differ diff --git a/packages/website/frontend/static/blog/thumbs/quacksmashing.png b/packages/website/frontend/static/blog/thumbs/quacksmashing.png new file mode 100755 index 0000000..ca378ab Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/quacksmashing.png differ diff --git a/packages/website/frontend/static/blog/thumbs/sapiendiet.png b/packages/website/frontend/static/blog/thumbs/sapiendiet.png new file mode 100755 index 0000000..323e045 Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/sapiendiet.png differ diff --git a/packages/website/frontend/static/blog/thumbs/seedoils.png b/packages/website/frontend/static/blog/thumbs/seedoils.png new file mode 100755 index 0000000..4926318 Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/seedoils.png differ diff --git a/packages/website/frontend/static/blog/thumbs/shenanigans.png b/packages/website/frontend/static/blog/thumbs/shenanigans.png new file mode 100755 index 0000000..36699d9 Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/shenanigans.png differ diff --git a/packages/website/frontend/static/blog/thumbs/sweetdeception.png b/packages/website/frontend/static/blog/thumbs/sweetdeception.png new file mode 100755 index 0000000..54f8f2d Binary files /dev/null and b/packages/website/frontend/static/blog/thumbs/sweetdeception.png differ diff --git a/packages/website/frontend/static/contact/discord.png b/packages/website/frontend/static/contact/discord.png new file mode 100755 index 0000000..f731098 Binary files /dev/null and b/packages/website/frontend/static/contact/discord.png differ diff --git a/packages/website/frontend/static/contact/email.png b/packages/website/frontend/static/contact/email.png new file mode 100755 index 0000000..101e893 Binary files /dev/null and b/packages/website/frontend/static/contact/email.png differ diff --git a/packages/website/frontend/static/cucks/adamsinger/adamsinger.png b/packages/website/frontend/static/cucks/adamsinger/adamsinger.png new file mode 100755 index 0000000..b9321dd Binary files /dev/null and b/packages/website/frontend/static/cucks/adamsinger/adamsinger.png differ diff --git a/packages/website/frontend/static/cucks/adamsinger/receipt1.png b/packages/website/frontend/static/cucks/adamsinger/receipt1.png new file mode 100755 index 0000000..2195487 Binary files /dev/null and b/packages/website/frontend/static/cucks/adamsinger/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/adamsinger/receipt2.png b/packages/website/frontend/static/cucks/adamsinger/receipt2.png new file mode 100755 index 0000000..76731d9 Binary files /dev/null and b/packages/website/frontend/static/cucks/adamsinger/receipt2.png differ diff --git a/packages/website/frontend/static/cucks/allengreen/allengreen.png b/packages/website/frontend/static/cucks/allengreen/allengreen.png new file mode 100755 index 0000000..11624f8 Binary files /dev/null and b/packages/website/frontend/static/cucks/allengreen/allengreen.png differ diff --git a/packages/website/frontend/static/cucks/amberohearn/amberohearn.png b/packages/website/frontend/static/cucks/amberohearn/amberohearn.png new file mode 100755 index 0000000..a35f93d Binary files /dev/null and b/packages/website/frontend/static/cucks/amberohearn/amberohearn.png differ diff --git a/packages/website/frontend/static/cucks/amberohearn/receipt1.png b/packages/website/frontend/static/cucks/amberohearn/receipt1.png new file mode 100755 index 0000000..30ee2c9 Binary files /dev/null and b/packages/website/frontend/static/cucks/amberohearn/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/annchilders/annchilders.png b/packages/website/frontend/static/cucks/annchilders/annchilders.png new file mode 100755 index 0000000..f21885f Binary files /dev/null and b/packages/website/frontend/static/cucks/annchilders/annchilders.png differ diff --git a/packages/website/frontend/static/cucks/annchilders/receipt1.png b/packages/website/frontend/static/cucks/annchilders/receipt1.png new file mode 100755 index 0000000..f1e64f1 Binary files /dev/null and b/packages/website/frontend/static/cucks/annchilders/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/anthonygustin/anthonygustin.png b/packages/website/frontend/static/cucks/anthonygustin/anthonygustin.png new file mode 100755 index 0000000..2d974f4 Binary files /dev/null and b/packages/website/frontend/static/cucks/anthonygustin/anthonygustin.png differ diff --git a/packages/website/frontend/static/cucks/anthonygustin/receipt1.png b/packages/website/frontend/static/cucks/anthonygustin/receipt1.png new file mode 100755 index 0000000..bfe4a74 Binary files /dev/null and b/packages/website/frontend/static/cucks/anthonygustin/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/ashwanigarg/ashwanigarg.png b/packages/website/frontend/static/cucks/ashwanigarg/ashwanigarg.png new file mode 100755 index 0000000..b858006 Binary files /dev/null and b/packages/website/frontend/static/cucks/ashwanigarg/ashwanigarg.png differ diff --git a/packages/website/frontend/static/cucks/ashwanigarg/receipt1.png b/packages/website/frontend/static/cucks/ashwanigarg/receipt1.png new file mode 100755 index 0000000..d5f0ce9 Binary files /dev/null and b/packages/website/frontend/static/cucks/ashwanigarg/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/austinherbert/austinherbert.png b/packages/website/frontend/static/cucks/austinherbert/austinherbert.png new file mode 100755 index 0000000..134f5c3 Binary files /dev/null and b/packages/website/frontend/static/cucks/austinherbert/austinherbert.png differ diff --git a/packages/website/frontend/static/cucks/austinherbert/receipt1.png b/packages/website/frontend/static/cucks/austinherbert/receipt1.png new file mode 100755 index 0000000..ccbf626 Binary files /dev/null and b/packages/website/frontend/static/cucks/austinherbert/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/austinhiggs/austinhiggs.png b/packages/website/frontend/static/cucks/austinhiggs/austinhiggs.png new file mode 100755 index 0000000..4422a4b Binary files /dev/null and b/packages/website/frontend/static/cucks/austinhiggs/austinhiggs.png differ diff --git a/packages/website/frontend/static/cucks/bartkay/bartkay.png b/packages/website/frontend/static/cucks/bartkay/bartkay.png new file mode 100755 index 0000000..e13ad5c Binary files /dev/null and b/packages/website/frontend/static/cucks/bartkay/bartkay.png differ diff --git a/packages/website/frontend/static/cucks/bartkay/receipt1.png b/packages/website/frontend/static/cucks/bartkay/receipt1.png new file mode 100755 index 0000000..9f01d43 Binary files /dev/null and b/packages/website/frontend/static/cucks/bartkay/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/benbikman/benbikman.png b/packages/website/frontend/static/cucks/benbikman/benbikman.png new file mode 100755 index 0000000..75cacc9 Binary files /dev/null and b/packages/website/frontend/static/cucks/benbikman/benbikman.png differ diff --git a/packages/website/frontend/static/cucks/benbikman/receipt1.png b/packages/website/frontend/static/cucks/benbikman/receipt1.png new file mode 100755 index 0000000..c8f2640 Binary files /dev/null and b/packages/website/frontend/static/cucks/benbikman/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/bennymalone/bennymalone.png b/packages/website/frontend/static/cucks/bennymalone/bennymalone.png new file mode 100755 index 0000000..a2f1066 Binary files /dev/null and b/packages/website/frontend/static/cucks/bennymalone/bennymalone.png differ diff --git a/packages/website/frontend/static/cucks/bennymalone/receipt1.png b/packages/website/frontend/static/cucks/bennymalone/receipt1.png new file mode 100755 index 0000000..b9bb5df Binary files /dev/null and b/packages/website/frontend/static/cucks/bennymalone/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/bowtiedox/bowtiedox.png b/packages/website/frontend/static/cucks/bowtiedox/bowtiedox.png new file mode 100755 index 0000000..2437c7f Binary files /dev/null and b/packages/website/frontend/static/cucks/bowtiedox/bowtiedox.png differ diff --git a/packages/website/frontend/static/cucks/bradcampbell/bradcampbell.png b/packages/website/frontend/static/cucks/bradcampbell/bradcampbell.png new file mode 100755 index 0000000..a3f9296 Binary files /dev/null and b/packages/website/frontend/static/cucks/bradcampbell/bradcampbell.png differ diff --git a/packages/website/frontend/static/cucks/bradcampbell/receipt1.png b/packages/website/frontend/static/cucks/bradcampbell/receipt1.png new file mode 100755 index 0000000..1705fd4 Binary files /dev/null and b/packages/website/frontend/static/cucks/bradcampbell/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/bradcohn/bradcohn.png b/packages/website/frontend/static/cucks/bradcohn/bradcohn.png new file mode 100755 index 0000000..f9a2b0a Binary files /dev/null and b/packages/website/frontend/static/cucks/bradcohn/bradcohn.png differ diff --git a/packages/website/frontend/static/cucks/bradcohn/receipt1.png b/packages/website/frontend/static/cucks/bradcohn/receipt1.png new file mode 100755 index 0000000..9862b94 Binary files /dev/null and b/packages/website/frontend/static/cucks/bradcohn/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/bradmarshall/bradmarshall.png b/packages/website/frontend/static/cucks/bradmarshall/bradmarshall.png new file mode 100755 index 0000000..1ed91f3 Binary files /dev/null and b/packages/website/frontend/static/cucks/bradmarshall/bradmarshall.png differ diff --git a/packages/website/frontend/static/cucks/bradmarshall/receipt1.png b/packages/website/frontend/static/cucks/bradmarshall/receipt1.png new file mode 100755 index 0000000..44854fe Binary files /dev/null and b/packages/website/frontend/static/cucks/bradmarshall/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/bretscher/bretscher.png b/packages/website/frontend/static/cucks/bretscher/bretscher.png new file mode 100755 index 0000000..5c5e43f Binary files /dev/null and b/packages/website/frontend/static/cucks/bretscher/bretscher.png differ diff --git a/packages/website/frontend/static/cucks/bretweinstein/bretweinstein.png b/packages/website/frontend/static/cucks/bretweinstein/bretweinstein.png new file mode 100755 index 0000000..b8e6bc6 Binary files /dev/null and b/packages/website/frontend/static/cucks/bretweinstein/bretweinstein.png differ diff --git a/packages/website/frontend/static/cucks/bretweinstein/receipt1.png b/packages/website/frontend/static/cucks/bretweinstein/receipt1.png new file mode 100755 index 0000000..6fc3559 Binary files /dev/null and b/packages/website/frontend/static/cucks/bretweinstein/receipt1.png differ diff --git a/packages/website/frontend/static/cucks/bretweinstein/receipt2.png b/packages/website/frontend/static/cucks/bretweinstein/receipt2.png new file mode 100755 index 0000000..beb31f5 Binary files /dev/null and b/packages/website/frontend/static/cucks/bretweinstein/receipt2.png differ diff --git a/packages/website/frontend/static/cucks/bretweinstein/receipt3.png b/packages/website/frontend/static/cucks/bretweinstein/receipt3.png new file mode 100755 index 0000000..ce396d0 Binary files /dev/null and b/packages/website/frontend/static/cucks/bretweinstein/receipt3.png differ diff --git a/packages/website/frontend/static/cucks/briankateman/briankateman.png b/packages/website/frontend/static/cucks/briankateman/briankateman.png new file mode 100755 index 0000000..bd878a3 Binary files /dev/null and b/packages/website/frontend/static/cucks/briankateman/briankateman.png differ diff --git a/packages/website/frontend/static/cucks/briankerley/briankerley.png b/packages/website/frontend/static/cucks/briankerley/briankerley.png new file mode 100755 index 0000000..98ec43f Binary files /dev/null and b/packages/website/frontend/static/cucks/briankerley/briankerley.png differ diff --git a/packages/website/frontend/static/cucks/cameronruggles/cameronruggles.png b/packages/website/frontend/static/cucks/cameronruggles/cameronruggles.png new file mode 100755 index 0000000..5be3d53 Binary files /dev/null and b/packages/website/frontend/static/cucks/cameronruggles/cameronruggles.png differ diff --git a/packages/website/frontend/static/cucks/carnivoreaurelius/carnivoreaurelius.png b/packages/website/frontend/static/cucks/carnivoreaurelius/carnivoreaurelius.png new file mode 100755 index 0000000..06d0f8c Binary files /dev/null and b/packages/website/frontend/static/cucks/carnivoreaurelius/carnivoreaurelius.png differ diff --git a/packages/website/frontend/static/cucks/carykelly/carykelly.png b/packages/website/frontend/static/cucks/carykelly/carykelly.png new file mode 100755 index 0000000..c0cd9b5 Binary files /dev/null and b/packages/website/frontend/static/cucks/carykelly/carykelly.png differ diff --git a/packages/website/frontend/static/cucks/cateshanahan/cateshanahan.png b/packages/website/frontend/static/cucks/cateshanahan/cateshanahan.png new file mode 100755 index 0000000..399042b Binary files /dev/null and b/packages/website/frontend/static/cucks/cateshanahan/cateshanahan.png differ diff --git a/packages/website/frontend/static/cucks/chrisboettcher/chrisboettcher.png b/packages/website/frontend/static/cucks/chrisboettcher/chrisboettcher.png new file mode 100755 index 0000000..992acba Binary files /dev/null and b/packages/website/frontend/static/cucks/chrisboettcher/chrisboettcher.png differ diff --git a/packages/website/frontend/static/cucks/claraaboel/claraaboel.png b/packages/website/frontend/static/cucks/claraaboel/claraaboel.png new file mode 100755 index 0000000..78a8c7f Binary files /dev/null and b/packages/website/frontend/static/cucks/claraaboel/claraaboel.png differ diff --git a/packages/website/frontend/static/cucks/cliffharvey/cliffharvey.png b/packages/website/frontend/static/cucks/cliffharvey/cliffharvey.png new file mode 100755 index 0000000..654046c Binary files /dev/null and b/packages/website/frontend/static/cucks/cliffharvey/cliffharvey.png differ diff --git a/packages/website/frontend/static/cucks/daltongraham/daltongraham.png b/packages/website/frontend/static/cucks/daltongraham/daltongraham.png new file mode 100755 index 0000000..a1e91b5 Binary files /dev/null and b/packages/website/frontend/static/cucks/daltongraham/daltongraham.png differ diff --git a/packages/website/frontend/static/cucks/davecali/davecali.png b/packages/website/frontend/static/cucks/davecali/davecali.png new file mode 100755 index 0000000..40f9838 Binary files /dev/null and b/packages/website/frontend/static/cucks/davecali/davecali.png differ diff --git a/packages/website/frontend/static/cucks/davefeldman/davefeldman.png b/packages/website/frontend/static/cucks/davefeldman/davefeldman.png new file mode 100755 index 0000000..d93f52b Binary files /dev/null and b/packages/website/frontend/static/cucks/davefeldman/davefeldman.png differ diff --git a/packages/website/frontend/static/cucks/davidberuh/davidberuh.png b/packages/website/frontend/static/cucks/davidberuh/davidberuh.png new file mode 100755 index 0000000..4a3bf44 Binary files /dev/null and b/packages/website/frontend/static/cucks/davidberuh/davidberuh.png differ diff --git a/packages/website/frontend/static/cucks/daviddiamond/daviddiamond.png b/packages/website/frontend/static/cucks/daviddiamond/daviddiamond.png new file mode 100755 index 0000000..b25f8e1 Binary files /dev/null and b/packages/website/frontend/static/cucks/daviddiamond/daviddiamond.png differ diff --git a/packages/website/frontend/static/cucks/davidgornoski/davidgornoski.png b/packages/website/frontend/static/cucks/davidgornoski/davidgornoski.png new file mode 100755 index 0000000..8492a37 Binary files /dev/null and b/packages/website/frontend/static/cucks/davidgornoski/davidgornoski.png differ diff --git a/packages/website/frontend/static/cucks/davidzarkov/davidzarkov.png b/packages/website/frontend/static/cucks/davidzarkov/davidzarkov.png new file mode 100755 index 0000000..81c5384 Binary files /dev/null and b/packages/website/frontend/static/cucks/davidzarkov/davidzarkov.png differ diff --git a/packages/website/frontend/static/cucks/devanandprabhu/devanandprabhu.png b/packages/website/frontend/static/cucks/devanandprabhu/devanandprabhu.png new file mode 100755 index 0000000..d25ae9e Binary files /dev/null and b/packages/website/frontend/static/cucks/devanandprabhu/devanandprabhu.png differ diff --git a/packages/website/frontend/static/cucks/dianarodgers/dianarodgers.png b/packages/website/frontend/static/cucks/dianarodgers/dianarodgers.png new file mode 100755 index 0000000..b7877bf Binary files /dev/null and b/packages/website/frontend/static/cucks/dianarodgers/dianarodgers.png differ diff --git a/packages/website/frontend/static/cucks/edserrano/edserrano.png b/packages/website/frontend/static/cucks/edserrano/edserrano.png new file mode 100755 index 0000000..12ed319 Binary files /dev/null and b/packages/website/frontend/static/cucks/edserrano/edserrano.png differ diff --git a/packages/website/frontend/static/cucks/edwardgoeke/edwardgoeke.png b/packages/website/frontend/static/cucks/edwardgoeke/edwardgoeke.png new file mode 100755 index 0000000..832aff4 Binary files /dev/null and b/packages/website/frontend/static/cucks/edwardgoeke/edwardgoeke.png differ diff --git a/packages/website/frontend/static/cucks/eliejarrouge/eliejarrouge.png b/packages/website/frontend/static/cucks/eliejarrouge/eliejarrouge.png new file mode 100755 index 0000000..b4f22a5 Binary files /dev/null and b/packages/website/frontend/static/cucks/eliejarrouge/eliejarrouge.png differ diff --git a/packages/website/frontend/static/cucks/ericsartori/ericsartori.png b/packages/website/frontend/static/cucks/ericsartori/ericsartori.png new file mode 100755 index 0000000..5783472 Binary files /dev/null and b/packages/website/frontend/static/cucks/ericsartori/ericsartori.png differ diff --git a/packages/website/frontend/static/cucks/garrylee/garrylee.png b/packages/website/frontend/static/cucks/garrylee/garrylee.png new file mode 100755 index 0000000..58ddaaa Binary files /dev/null and b/packages/website/frontend/static/cucks/garrylee/garrylee.png differ diff --git a/packages/website/frontend/static/cucks/garybrecka/garybrecka.png b/packages/website/frontend/static/cucks/garybrecka/garybrecka.png new file mode 100755 index 0000000..1ccb1c7 Binary files /dev/null and b/packages/website/frontend/static/cucks/garybrecka/garybrecka.png differ diff --git a/packages/website/frontend/static/cucks/garyfettke/garyfettke.png b/packages/website/frontend/static/cucks/garyfettke/garyfettke.png new file mode 100755 index 0000000..3a77b94 Binary files /dev/null and b/packages/website/frontend/static/cucks/garyfettke/garyfettke.png differ diff --git a/packages/website/frontend/static/cucks/garytaubes/garytaubes.png b/packages/website/frontend/static/cucks/garytaubes/garytaubes.png new file mode 100755 index 0000000..d655567 Binary files /dev/null and b/packages/website/frontend/static/cucks/garytaubes/garytaubes.png differ diff --git a/packages/website/frontend/static/cucks/georgemartin/georgemartin.png b/packages/website/frontend/static/cucks/georgemartin/georgemartin.png new file mode 100755 index 0000000..f45ca88 Binary files /dev/null and b/packages/website/frontend/static/cucks/georgemartin/georgemartin.png differ diff --git a/packages/website/frontend/static/cucks/guyaustin/guyaustin.png b/packages/website/frontend/static/cucks/guyaustin/guyaustin.png new file mode 100755 index 0000000..bd81ce8 Binary files /dev/null and b/packages/website/frontend/static/cucks/guyaustin/guyaustin.png differ diff --git a/packages/website/frontend/static/cucks/ivorcummins/ivorcummins.png b/packages/website/frontend/static/cucks/ivorcummins/ivorcummins.png new file mode 100755 index 0000000..9c4c71a Binary files /dev/null and b/packages/website/frontend/static/cucks/ivorcummins/ivorcummins.png differ diff --git a/packages/website/frontend/static/cucks/jaimiedrew/jaimiedrew.png b/packages/website/frontend/static/cucks/jaimiedrew/jaimiedrew.png new file mode 100755 index 0000000..a127ed5 Binary files /dev/null and b/packages/website/frontend/static/cucks/jaimiedrew/jaimiedrew.png differ diff --git a/packages/website/frontend/static/cucks/jakemey/jakemey.png b/packages/website/frontend/static/cucks/jakemey/jakemey.png new file mode 100755 index 0000000..7c50e7b Binary files /dev/null and b/packages/website/frontend/static/cucks/jakemey/jakemey.png differ diff --git a/packages/website/frontend/static/cucks/jamesdinicolantonio/jamesdinicolantonio.png b/packages/website/frontend/static/cucks/jamesdinicolantonio/jamesdinicolantonio.png new file mode 100755 index 0000000..f4c7e43 Binary files /dev/null and b/packages/website/frontend/static/cucks/jamesdinicolantonio/jamesdinicolantonio.png differ diff --git a/packages/website/frontend/static/cucks/josepheverett/josepheverett.png b/packages/website/frontend/static/cucks/josepheverett/josepheverett.png new file mode 100755 index 0000000..b12222e Binary files /dev/null and b/packages/website/frontend/static/cucks/josepheverett/josepheverett.png differ diff --git a/packages/website/frontend/static/cucks/justinmares/justinmares.png b/packages/website/frontend/static/cucks/justinmares/justinmares.png new file mode 100755 index 0000000..a5ea73d Binary files /dev/null and b/packages/website/frontend/static/cucks/justinmares/justinmares.png differ diff --git a/packages/website/frontend/static/cucks/kaitmalthaner/kaitmalthaner.png b/packages/website/frontend/static/cucks/kaitmalthaner/kaitmalthaner.png new file mode 100755 index 0000000..cbbb7b3 Binary files /dev/null and b/packages/website/frontend/static/cucks/kaitmalthaner/kaitmalthaner.png differ diff --git a/packages/website/frontend/static/cucks/kemminnick/kemminnick.png b/packages/website/frontend/static/cucks/kemminnick/kemminnick.png new file mode 100755 index 0000000..c894c65 Binary files /dev/null and b/packages/website/frontend/static/cucks/kemminnick/kemminnick.png differ diff --git a/packages/website/frontend/static/cucks/kenberry/kenberry.png b/packages/website/frontend/static/cucks/kenberry/kenberry.png new file mode 100755 index 0000000..f48c54e Binary files /dev/null and b/packages/website/frontend/static/cucks/kenberry/kenberry.png differ diff --git a/packages/website/frontend/static/cucks/kevinstock/kevinstock.png b/packages/website/frontend/static/cucks/kevinstock/kevinstock.png new file mode 100755 index 0000000..de35445 Binary files /dev/null and b/packages/website/frontend/static/cucks/kevinstock/kevinstock.png differ diff --git a/packages/website/frontend/static/cucks/kylemamounis/kylemamounis.png b/packages/website/frontend/static/cucks/kylemamounis/kylemamounis.png new file mode 100755 index 0000000..587f2cc Binary files /dev/null and b/packages/website/frontend/static/cucks/kylemamounis/kylemamounis.png differ diff --git a/packages/website/frontend/static/cucks/lewiswhitfield.png b/packages/website/frontend/static/cucks/lewiswhitfield.png new file mode 100755 index 0000000..79c02c7 Binary files /dev/null and b/packages/website/frontend/static/cucks/lewiswhitfield.png differ diff --git a/packages/website/frontend/static/cucks/lewiswhitfield/lewiswhitfield.png b/packages/website/frontend/static/cucks/lewiswhitfield/lewiswhitfield.png new file mode 100755 index 0000000..7ee80b7 Binary files /dev/null and b/packages/website/frontend/static/cucks/lewiswhitfield/lewiswhitfield.png differ diff --git a/packages/website/frontend/static/cucks/macrofour/macrofour.png b/packages/website/frontend/static/cucks/macrofour/macrofour.png new file mode 100755 index 0000000..ae61fd1 Binary files /dev/null and b/packages/website/frontend/static/cucks/macrofour/macrofour.png differ diff --git a/packages/website/frontend/static/cucks/marionholman/marionholman.png b/packages/website/frontend/static/cucks/marionholman/marionholman.png new file mode 100755 index 0000000..53f237f Binary files /dev/null and b/packages/website/frontend/static/cucks/marionholman/marionholman.png differ diff --git a/packages/website/frontend/static/cucks/markbski/markbski.png b/packages/website/frontend/static/cucks/markbski/markbski.png new file mode 100755 index 0000000..b908f64 Binary files /dev/null and b/packages/website/frontend/static/cucks/markbski/markbski.png differ diff --git a/packages/website/frontend/static/cucks/marksisson/marksisson.png b/packages/website/frontend/static/cucks/marksisson/marksisson.png new file mode 100755 index 0000000..79d5630 Binary files /dev/null and b/packages/website/frontend/static/cucks/marksisson/marksisson.png differ diff --git a/packages/website/frontend/static/cucks/martykendall/martykendall.png b/packages/website/frontend/static/cucks/martykendall/martykendall.png new file mode 100755 index 0000000..f859ab5 Binary files /dev/null and b/packages/website/frontend/static/cucks/martykendall/martykendall.png differ diff --git a/packages/website/frontend/static/cucks/maxlugavere/maxlugavere.png b/packages/website/frontend/static/cucks/maxlugavere/maxlugavere.png new file mode 100755 index 0000000..f1ffe19 Binary files /dev/null and b/packages/website/frontend/static/cucks/maxlugavere/maxlugavere.png differ diff --git a/packages/website/frontend/static/cucks/michaelkummer/michaelkummer.png b/packages/website/frontend/static/cucks/michaelkummer/michaelkummer.png new file mode 100755 index 0000000..3d11cd4 Binary files /dev/null and b/packages/website/frontend/static/cucks/michaelkummer/michaelkummer.png differ diff --git a/packages/website/frontend/static/cucks/michaelmanderville/michaelmanderville.png b/packages/website/frontend/static/cucks/michaelmanderville/michaelmanderville.png new file mode 100755 index 0000000..afa72d0 Binary files /dev/null and b/packages/website/frontend/static/cucks/michaelmanderville/michaelmanderville.png differ diff --git a/packages/website/frontend/static/cucks/miguelespejel/miguelespejel.png b/packages/website/frontend/static/cucks/miguelespejel/miguelespejel.png new file mode 100755 index 0000000..2d8709d Binary files /dev/null and b/packages/website/frontend/static/cucks/miguelespejel/miguelespejel.png differ diff --git a/packages/website/frontend/static/cucks/mikemutzel/mikemutzel.png b/packages/website/frontend/static/cucks/mikemutzel/mikemutzel.png new file mode 100755 index 0000000..1355c5a Binary files /dev/null and b/packages/website/frontend/static/cucks/mikemutzel/mikemutzel.png differ diff --git a/packages/website/frontend/static/cucks/mikesweeney/mikesweeney.png b/packages/website/frontend/static/cucks/mikesweeney/mikesweeney.png new file mode 100755 index 0000000..675c6aa Binary files /dev/null and b/packages/website/frontend/static/cucks/mikesweeney/mikesweeney.png differ diff --git a/packages/website/frontend/static/cucks/nickeggleton/nickeggleton.png b/packages/website/frontend/static/cucks/nickeggleton/nickeggleton.png new file mode 100755 index 0000000..b50e65b Binary files /dev/null and b/packages/website/frontend/static/cucks/nickeggleton/nickeggleton.png differ diff --git a/packages/website/frontend/static/cucks/ninateicholz/ninateicholz.png b/packages/website/frontend/static/cucks/ninateicholz/ninateicholz.png new file mode 100755 index 0000000..84fe876 Binary files /dev/null and b/packages/website/frontend/static/cucks/ninateicholz/ninateicholz.png differ diff --git a/packages/website/frontend/static/cucks/ninateicholz/ninateicholz1.png b/packages/website/frontend/static/cucks/ninateicholz/ninateicholz1.png new file mode 100755 index 0000000..2e182f1 Binary files /dev/null and b/packages/website/frontend/static/cucks/ninateicholz/ninateicholz1.png differ diff --git a/packages/website/frontend/static/cucks/nocarbsnation/nocarbsnation.png b/packages/website/frontend/static/cucks/nocarbsnation/nocarbsnation.png new file mode 100755 index 0000000..ae4dbe1 Binary files /dev/null and b/packages/website/frontend/static/cucks/nocarbsnation/nocarbsnation.png differ diff --git a/packages/website/frontend/static/cucks/norstrongchris/norstrongchris.png b/packages/website/frontend/static/cucks/norstrongchris/norstrongchris.png new file mode 100755 index 0000000..480b8b2 Binary files /dev/null and b/packages/website/frontend/static/cucks/norstrongchris/norstrongchris.png differ diff --git a/packages/website/frontend/static/cucks/paulmason/paulmason.png b/packages/website/frontend/static/cucks/paulmason/paulmason.png new file mode 100755 index 0000000..7070d9a Binary files /dev/null and b/packages/website/frontend/static/cucks/paulmason/paulmason.png differ diff --git a/packages/website/frontend/static/cucks/paulsaladino/paulsaladino.png b/packages/website/frontend/static/cucks/paulsaladino/paulsaladino.png new file mode 100755 index 0000000..8f2a34c Binary files /dev/null and b/packages/website/frontend/static/cucks/paulsaladino/paulsaladino.png differ diff --git a/packages/website/frontend/static/cucks/peterfaber/peterfaber.png b/packages/website/frontend/static/cucks/peterfaber/peterfaber.png new file mode 100755 index 0000000..4c5b705 Binary files /dev/null and b/packages/website/frontend/static/cucks/peterfaber/peterfaber.png differ diff --git a/packages/website/frontend/static/cucks/philipovadia/philipovadia.png b/packages/website/frontend/static/cucks/philipovadia/philipovadia.png new file mode 100755 index 0000000..88d5fb1 Binary files /dev/null and b/packages/website/frontend/static/cucks/philipovadia/philipovadia.png differ diff --git a/packages/website/frontend/static/cucks/philippestephenson/philippestephenson.png b/packages/website/frontend/static/cucks/philippestephenson/philippestephenson.png new file mode 100755 index 0000000..82a6257 Binary files /dev/null and b/packages/website/frontend/static/cucks/philippestephenson/philippestephenson.png differ diff --git a/packages/website/frontend/static/cucks/ralphnapolitano/ralphnapolitano.png b/packages/website/frontend/static/cucks/ralphnapolitano/ralphnapolitano.png new file mode 100755 index 0000000..7070777 Binary files /dev/null and b/packages/website/frontend/static/cucks/ralphnapolitano/ralphnapolitano.png differ diff --git a/packages/website/frontend/static/cucks/raphaelsirtoli/raphaelsirtoli.png b/packages/website/frontend/static/cucks/raphaelsirtoli/raphaelsirtoli.png new file mode 100755 index 0000000..dde10e8 Binary files /dev/null and b/packages/website/frontend/static/cucks/raphaelsirtoli/raphaelsirtoli.png differ diff --git a/packages/website/frontend/static/cucks/robbwolf/robbwolf.png b/packages/website/frontend/static/cucks/robbwolf/robbwolf.png new file mode 100755 index 0000000..a7905ac Binary files /dev/null and b/packages/website/frontend/static/cucks/robbwolf/robbwolf.png differ diff --git a/packages/website/frontend/static/cucks/robmeijer/robmeijer.png b/packages/website/frontend/static/cucks/robmeijer/robmeijer.png new file mode 100755 index 0000000..7b23e19 Binary files /dev/null and b/packages/website/frontend/static/cucks/robmeijer/robmeijer.png differ diff --git a/packages/website/frontend/static/cucks/samtsimikas/samtsimikas.png b/packages/website/frontend/static/cucks/samtsimikas/samtsimikas.png new file mode 100755 index 0000000..c09b885 Binary files /dev/null and b/packages/website/frontend/static/cucks/samtsimikas/samtsimikas.png differ diff --git a/packages/website/frontend/static/cucks/scottpsysher/scottpsysher.png b/packages/website/frontend/static/cucks/scottpsysher/scottpsysher.png new file mode 100755 index 0000000..efc6b88 Binary files /dev/null and b/packages/website/frontend/static/cucks/scottpsysher/scottpsysher.png differ diff --git a/packages/website/frontend/static/cucks/sebastianramirez/sebastianramirez.png b/packages/website/frontend/static/cucks/sebastianramirez/sebastianramirez.png new file mode 100755 index 0000000..7dd610a Binary files /dev/null and b/packages/website/frontend/static/cucks/sebastianramirez/sebastianramirez.png differ diff --git a/packages/website/frontend/static/cucks/shawnbaker/shawnbaker.png b/packages/website/frontend/static/cucks/shawnbaker/shawnbaker.png new file mode 100755 index 0000000..c5c7639 Binary files /dev/null and b/packages/website/frontend/static/cucks/shawnbaker/shawnbaker.png differ diff --git a/packages/website/frontend/static/cucks/simongoddek/simongoddek.png b/packages/website/frontend/static/cucks/simongoddek/simongoddek.png new file mode 100755 index 0000000..fe3ddcf Binary files /dev/null and b/packages/website/frontend/static/cucks/simongoddek/simongoddek.png differ diff --git a/packages/website/frontend/static/cucks/stevenarena/stevenarena.png b/packages/website/frontend/static/cucks/stevenarena/stevenarena.png new file mode 100755 index 0000000..41b65b1 Binary files /dev/null and b/packages/website/frontend/static/cucks/stevenarena/stevenarena.png differ diff --git a/packages/website/frontend/static/cucks/stevenbelknap/stevenbelknap.png b/packages/website/frontend/static/cucks/stevenbelknap/stevenbelknap.png new file mode 100755 index 0000000..c0ef099 Binary files /dev/null and b/packages/website/frontend/static/cucks/stevenbelknap/stevenbelknap.png differ diff --git a/packages/website/frontend/static/cucks/therealtruther/therealtruther.png b/packages/website/frontend/static/cucks/therealtruther/therealtruther.png new file mode 100755 index 0000000..af53bbb Binary files /dev/null and b/packages/website/frontend/static/cucks/therealtruther/therealtruther.png differ diff --git a/packages/website/frontend/static/cucks/thomasdayspring/thomasdayspring.png b/packages/website/frontend/static/cucks/thomasdayspring/thomasdayspring.png new file mode 100755 index 0000000..e16794c Binary files /dev/null and b/packages/website/frontend/static/cucks/thomasdayspring/thomasdayspring.png differ diff --git a/packages/website/frontend/static/cucks/travisstatham/travisstatham.png b/packages/website/frontend/static/cucks/travisstatham/travisstatham.png new file mode 100755 index 0000000..0f51d33 Binary files /dev/null and b/packages/website/frontend/static/cucks/travisstatham/travisstatham.png differ diff --git a/packages/website/frontend/static/cucks/tristanhaggard/tristanhaggard.png b/packages/website/frontend/static/cucks/tristanhaggard/tristanhaggard.png new file mode 100755 index 0000000..5df951a Binary files /dev/null and b/packages/website/frontend/static/cucks/tristanhaggard/tristanhaggard.png differ diff --git a/packages/website/frontend/static/cucks/trokalayjian/trokalayjian.png b/packages/website/frontend/static/cucks/trokalayjian/trokalayjian.png new file mode 100755 index 0000000..1299313 Binary files /dev/null and b/packages/website/frontend/static/cucks/trokalayjian/trokalayjian.png differ diff --git a/packages/website/frontend/static/cucks/tuckergoodrich/tuckergoodrich.png b/packages/website/frontend/static/cucks/tuckergoodrich/tuckergoodrich.png new file mode 100755 index 0000000..c663a19 Binary files /dev/null and b/packages/website/frontend/static/cucks/tuckergoodrich/tuckergoodrich.png differ diff --git a/packages/website/frontend/static/cucks/zoeharcombe/zoeharcombe.png b/packages/website/frontend/static/cucks/zoeharcombe/zoeharcombe.png new file mode 100755 index 0000000..804a1d0 Binary files /dev/null and b/packages/website/frontend/static/cucks/zoeharcombe/zoeharcombe.png differ diff --git a/packages/website/frontend/static/cucks/zs贸fiaclemens/zs贸fiaclemens.png b/packages/website/frontend/static/cucks/zs贸fiaclemens/zs贸fiaclemens.png new file mode 100755 index 0000000..ef02513 Binary files /dev/null and b/packages/website/frontend/static/cucks/zs贸fiaclemens/zs贸fiaclemens.png differ diff --git a/packages/website/frontend/static/debate/arguments.png b/packages/website/frontend/static/debate/arguments.png new file mode 100755 index 0000000..ee24700 Binary files /dev/null and b/packages/website/frontend/static/debate/arguments.png differ diff --git a/packages/website/frontend/static/debate/cucklist.png b/packages/website/frontend/static/debate/cucklist.png new file mode 100755 index 0000000..cab53f2 Binary files /dev/null and b/packages/website/frontend/static/debate/cucklist.png differ diff --git a/packages/website/frontend/static/debate/cucklist1.png b/packages/website/frontend/static/debate/cucklist1.png new file mode 100755 index 0000000..1032bcb Binary files /dev/null and b/packages/website/frontend/static/debate/cucklist1.png differ diff --git a/packages/website/frontend/static/debate/gibberish.png b/packages/website/frontend/static/debate/gibberish.png new file mode 100755 index 0000000..c79f573 Binary files /dev/null and b/packages/website/frontend/static/debate/gibberish.png differ diff --git a/packages/website/frontend/static/donate/cardano.png b/packages/website/frontend/static/donate/cardano.png new file mode 100755 index 0000000..8ad57c3 Binary files /dev/null and b/packages/website/frontend/static/donate/cardano.png differ diff --git a/packages/website/frontend/static/donate/checkmark.png b/packages/website/frontend/static/donate/checkmark.png new file mode 100755 index 0000000..0d365d1 Binary files /dev/null and b/packages/website/frontend/static/donate/checkmark.png differ diff --git a/packages/website/frontend/static/donate/ex.png b/packages/website/frontend/static/donate/ex.png new file mode 100755 index 0000000..6b58b9b Binary files /dev/null and b/packages/website/frontend/static/donate/ex.png differ diff --git a/packages/website/frontend/static/donate/gibberish.gif b/packages/website/frontend/static/donate/gibberish.gif new file mode 100755 index 0000000..d9fe209 Binary files /dev/null and b/packages/website/frontend/static/donate/gibberish.gif differ diff --git a/packages/website/frontend/static/donate/kofi.png b/packages/website/frontend/static/donate/kofi.png new file mode 100755 index 0000000..8ba1b24 Binary files /dev/null and b/packages/website/frontend/static/donate/kofi.png differ diff --git a/packages/website/frontend/static/donate/liberapay.png b/packages/website/frontend/static/donate/liberapay.png new file mode 100755 index 0000000..a2b85d4 Binary files /dev/null and b/packages/website/frontend/static/donate/liberapay.png differ diff --git a/packages/website/frontend/static/donate/merchandise.png b/packages/website/frontend/static/donate/merchandise.png new file mode 100755 index 0000000..af49dae Binary files /dev/null and b/packages/website/frontend/static/donate/merchandise.png differ diff --git a/packages/website/frontend/static/donate/patreon.png b/packages/website/frontend/static/donate/patreon.png new file mode 100755 index 0000000..c939708 Binary files /dev/null and b/packages/website/frontend/static/donate/patreon.png differ diff --git a/packages/website/frontend/static/donate/paypal.png b/packages/website/frontend/static/donate/paypal.png new file mode 100755 index 0000000..aca4d98 Binary files /dev/null and b/packages/website/frontend/static/donate/paypal.png differ diff --git a/packages/website/frontend/static/donate/question.png b/packages/website/frontend/static/donate/question.png new file mode 100755 index 0000000..820d581 Binary files /dev/null and b/packages/website/frontend/static/donate/question.png differ diff --git a/packages/website/frontend/static/donate/stripe.png b/packages/website/frontend/static/donate/stripe.png new file mode 100755 index 0000000..5faf7a6 Binary files /dev/null and b/packages/website/frontend/static/donate/stripe.png differ diff --git a/packages/website/frontend/static/donate/youtube.png b/packages/website/frontend/static/donate/youtube.png new file mode 100755 index 0000000..f6d08e0 Binary files /dev/null and b/packages/website/frontend/static/donate/youtube.png differ diff --git a/packages/website/frontend/static/gibberish/epistemology.png b/packages/website/frontend/static/gibberish/epistemology.png new file mode 100755 index 0000000..05a7611 Binary files /dev/null and b/packages/website/frontend/static/gibberish/epistemology.png differ diff --git a/packages/website/frontend/static/gibberish/gibberish.png b/packages/website/frontend/static/gibberish/gibberish.png new file mode 100755 index 0000000..91244e7 Binary files /dev/null and b/packages/website/frontend/static/gibberish/gibberish.png differ diff --git a/packages/website/frontend/static/gibberish/metaphysics.png b/packages/website/frontend/static/gibberish/metaphysics.png new file mode 100755 index 0000000..124e629 Binary files /dev/null and b/packages/website/frontend/static/gibberish/metaphysics.png differ diff --git a/packages/website/frontend/static/gibberish/normativity.png b/packages/website/frontend/static/gibberish/normativity.png new file mode 100755 index 0000000..3a5e1b3 Binary files /dev/null and b/packages/website/frontend/static/gibberish/normativity.png differ diff --git a/packages/website/frontend/static/gibberish/ontology.png b/packages/website/frontend/static/gibberish/ontology.png new file mode 100755 index 0000000..5c80581 Binary files /dev/null and b/packages/website/frontend/static/gibberish/ontology.png differ diff --git a/packages/website/frontend/static/gibberish/philosophyoflanguage.png b/packages/website/frontend/static/gibberish/philosophyoflanguage.png new file mode 100755 index 0000000..8157c7a Binary files /dev/null and b/packages/website/frontend/static/gibberish/philosophyoflanguage.png differ diff --git a/packages/website/frontend/static/gibberish/philosophyofmind.png b/packages/website/frontend/static/gibberish/philosophyofmind.png new file mode 100755 index 0000000..a6e9c6f Binary files /dev/null and b/packages/website/frontend/static/gibberish/philosophyofmind.png differ diff --git a/packages/website/frontend/static/gibberish/theology.png b/packages/website/frontend/static/gibberish/theology.png new file mode 100755 index 0000000..a566592 Binary files /dev/null and b/packages/website/frontend/static/gibberish/theology.png differ diff --git a/packages/website/frontend/static/interviews/drshawnbakerpodcast.png b/packages/website/frontend/static/interviews/drshawnbakerpodcast.png new file mode 100755 index 0000000..f0ff674 Binary files /dev/null and b/packages/website/frontend/static/interviews/drshawnbakerpodcast.png differ diff --git a/packages/website/frontend/static/interviews/fitandfurious.png b/packages/website/frontend/static/interviews/fitandfurious.png new file mode 100755 index 0000000..41ddb19 Binary files /dev/null and b/packages/website/frontend/static/interviews/fitandfurious.png differ diff --git a/packages/website/frontend/static/interviews/foolproofmastery.png b/packages/website/frontend/static/interviews/foolproofmastery.png new file mode 100755 index 0000000..48d5398 Binary files /dev/null and b/packages/website/frontend/static/interviews/foolproofmastery.png differ diff --git a/packages/website/frontend/static/interviews/ketogeekspodcast.png b/packages/website/frontend/static/interviews/ketogeekspodcast.png new file mode 100755 index 0000000..b77cfb7 Binary files /dev/null and b/packages/website/frontend/static/interviews/ketogeekspodcast.png differ diff --git a/packages/website/frontend/static/interviews/legendarylifepodcast.png b/packages/website/frontend/static/interviews/legendarylifepodcast.png new file mode 100755 index 0000000..e7a9daa Binary files /dev/null and b/packages/website/frontend/static/interviews/legendarylifepodcast.png differ diff --git a/packages/website/frontend/static/interviews/markbellspowerproject.png b/packages/website/frontend/static/interviews/markbellspowerproject.png new file mode 100755 index 0000000..52d92ae Binary files /dev/null and b/packages/website/frontend/static/interviews/markbellspowerproject.png differ diff --git a/packages/website/frontend/static/interviews/musclememoirspodcast.png b/packages/website/frontend/static/interviews/musclememoirspodcast.png new file mode 100755 index 0000000..7dfd2ec Binary files /dev/null and b/packages/website/frontend/static/interviews/musclememoirspodcast.png differ diff --git a/packages/website/frontend/static/interviews/sigmanutritionradio.png b/packages/website/frontend/static/interviews/sigmanutritionradio.png new file mode 100755 index 0000000..330eb90 Binary files /dev/null and b/packages/website/frontend/static/interviews/sigmanutritionradio.png differ diff --git a/packages/website/frontend/static/interviews/strenuouslifepodcast.png b/packages/website/frontend/static/interviews/strenuouslifepodcast.png new file mode 100755 index 0000000..6af4ab3 Binary files /dev/null and b/packages/website/frontend/static/interviews/strenuouslifepodcast.png differ diff --git a/packages/website/frontend/static/misc/seedoilphylogeny.html b/packages/website/frontend/static/misc/seedoilphylogeny.html new file mode 100755 index 0000000..816ff43 --- /dev/null +++ b/packages/website/frontend/static/misc/seedoilphylogeny.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/website/frontend/static/navbar/arguments-dark.png b/packages/website/frontend/static/navbar/arguments-dark.png new file mode 100755 index 0000000..af20f4c Binary files /dev/null and b/packages/website/frontend/static/navbar/arguments-dark.png differ diff --git a/packages/website/frontend/static/navbar/arguments.png b/packages/website/frontend/static/navbar/arguments.png new file mode 100755 index 0000000..f81cf3b Binary files /dev/null and b/packages/website/frontend/static/navbar/arguments.png differ diff --git a/packages/website/frontend/static/navbar/community-dark.png b/packages/website/frontend/static/navbar/community-dark.png new file mode 100755 index 0000000..1580bc7 Binary files /dev/null and b/packages/website/frontend/static/navbar/community-dark.png differ diff --git a/packages/website/frontend/static/navbar/community.png b/packages/website/frontend/static/navbar/community.png new file mode 100755 index 0000000..e27ea6d Binary files /dev/null and b/packages/website/frontend/static/navbar/community.png differ diff --git a/packages/website/frontend/static/navbar/contact-dark.png b/packages/website/frontend/static/navbar/contact-dark.png new file mode 100755 index 0000000..d3d15fe Binary files /dev/null and b/packages/website/frontend/static/navbar/contact-dark.png differ diff --git a/packages/website/frontend/static/navbar/contact.png b/packages/website/frontend/static/navbar/contact.png new file mode 100755 index 0000000..e24e881 Binary files /dev/null and b/packages/website/frontend/static/navbar/contact.png differ diff --git a/packages/website/frontend/static/navbar/cucklist-dark.png b/packages/website/frontend/static/navbar/cucklist-dark.png new file mode 100755 index 0000000..a1aca83 Binary files /dev/null and b/packages/website/frontend/static/navbar/cucklist-dark.png differ diff --git a/packages/website/frontend/static/navbar/cucklist.png b/packages/website/frontend/static/navbar/cucklist.png new file mode 100755 index 0000000..3838466 Binary files /dev/null and b/packages/website/frontend/static/navbar/cucklist.png differ diff --git a/packages/website/frontend/static/navbar/cucklist1.png b/packages/website/frontend/static/navbar/cucklist1.png new file mode 100755 index 0000000..8c115ae Binary files /dev/null and b/packages/website/frontend/static/navbar/cucklist1.png differ diff --git a/packages/website/frontend/static/navbar/cucklist2.png b/packages/website/frontend/static/navbar/cucklist2.png new file mode 100755 index 0000000..3bbd9e4 Binary files /dev/null and b/packages/website/frontend/static/navbar/cucklist2.png differ diff --git a/packages/website/frontend/static/navbar/debate-dark.png b/packages/website/frontend/static/navbar/debate-dark.png new file mode 100755 index 0000000..b263626 Binary files /dev/null and b/packages/website/frontend/static/navbar/debate-dark.png differ diff --git a/packages/website/frontend/static/navbar/debate.png b/packages/website/frontend/static/navbar/debate.png new file mode 100755 index 0000000..21b2af6 Binary files /dev/null and b/packages/website/frontend/static/navbar/debate.png differ diff --git a/packages/website/frontend/static/navbar/discord-light.png b/packages/website/frontend/static/navbar/discord-light.png new file mode 100755 index 0000000..bfb8246 Binary files /dev/null and b/packages/website/frontend/static/navbar/discord-light.png differ diff --git a/packages/website/frontend/static/navbar/discord.png b/packages/website/frontend/static/navbar/discord.png new file mode 100755 index 0000000..c9d568b Binary files /dev/null and b/packages/website/frontend/static/navbar/discord.png differ diff --git a/packages/website/frontend/static/navbar/donate-dark.png b/packages/website/frontend/static/navbar/donate-dark.png new file mode 100755 index 0000000..7f39a1b Binary files /dev/null and b/packages/website/frontend/static/navbar/donate-dark.png differ diff --git a/packages/website/frontend/static/navbar/donate.png b/packages/website/frontend/static/navbar/donate.png new file mode 100755 index 0000000..773611a Binary files /dev/null and b/packages/website/frontend/static/navbar/donate.png differ diff --git a/packages/website/frontend/static/navbar/gibberish-dark.png b/packages/website/frontend/static/navbar/gibberish-dark.png new file mode 100755 index 0000000..3f4a501 Binary files /dev/null and b/packages/website/frontend/static/navbar/gibberish-dark.png differ diff --git a/packages/website/frontend/static/navbar/gibberish.png b/packages/website/frontend/static/navbar/gibberish.png new file mode 100755 index 0000000..574aec3 Binary files /dev/null and b/packages/website/frontend/static/navbar/gibberish.png differ diff --git a/packages/website/frontend/static/navbar/gitlab-light.png b/packages/website/frontend/static/navbar/gitlab-light.png new file mode 100755 index 0000000..69bee86 Binary files /dev/null and b/packages/website/frontend/static/navbar/gitlab-light.png differ diff --git a/packages/website/frontend/static/navbar/gitlab.png b/packages/website/frontend/static/navbar/gitlab.png new file mode 100755 index 0000000..38876e9 Binary files /dev/null and b/packages/website/frontend/static/navbar/gitlab.png differ diff --git a/packages/website/frontend/static/navbar/home-dark.png b/packages/website/frontend/static/navbar/home-dark.png new file mode 100755 index 0000000..8320dae Binary files /dev/null and b/packages/website/frontend/static/navbar/home-dark.png differ diff --git a/packages/website/frontend/static/navbar/home.png b/packages/website/frontend/static/navbar/home.png new file mode 100755 index 0000000..8568836 Binary files /dev/null and b/packages/website/frontend/static/navbar/home.png differ diff --git a/packages/website/frontend/static/navbar/hyperblog-dark.png b/packages/website/frontend/static/navbar/hyperblog-dark.png new file mode 100755 index 0000000..869ab68 Binary files /dev/null and b/packages/website/frontend/static/navbar/hyperblog-dark.png differ diff --git a/packages/website/frontend/static/navbar/hyperblog.png b/packages/website/frontend/static/navbar/hyperblog.png new file mode 100755 index 0000000..14bcbc2 Binary files /dev/null and b/packages/website/frontend/static/navbar/hyperblog.png differ diff --git a/packages/website/frontend/static/navbar/interviews-dark.png b/packages/website/frontend/static/navbar/interviews-dark.png new file mode 100755 index 0000000..5c20202 Binary files /dev/null and b/packages/website/frontend/static/navbar/interviews-dark.png differ diff --git a/packages/website/frontend/static/navbar/interviews.png b/packages/website/frontend/static/navbar/interviews.png new file mode 100755 index 0000000..6f2cbfe Binary files /dev/null and b/packages/website/frontend/static/navbar/interviews.png differ diff --git a/packages/website/frontend/static/navbar/mastodon-light.png b/packages/website/frontend/static/navbar/mastodon-light.png new file mode 100755 index 0000000..7372c8b Binary files /dev/null and b/packages/website/frontend/static/navbar/mastodon-light.png differ diff --git a/packages/website/frontend/static/navbar/mastodon.png b/packages/website/frontend/static/navbar/mastodon.png new file mode 100755 index 0000000..75a7270 Binary files /dev/null and b/packages/website/frontend/static/navbar/mastodon.png differ diff --git a/packages/website/frontend/static/navbar/nutridex-dark.png b/packages/website/frontend/static/navbar/nutridex-dark.png new file mode 100755 index 0000000..55661ab Binary files /dev/null and b/packages/website/frontend/static/navbar/nutridex-dark.png differ diff --git a/packages/website/frontend/static/navbar/nutridex.png b/packages/website/frontend/static/navbar/nutridex.png new file mode 100755 index 0000000..e4eb8d5 Binary files /dev/null and b/packages/website/frontend/static/navbar/nutridex.png differ diff --git a/packages/website/frontend/static/navbar/nutrivorelogo.png b/packages/website/frontend/static/navbar/nutrivorelogo.png new file mode 100755 index 0000000..e56c949 Binary files /dev/null and b/packages/website/frontend/static/navbar/nutrivorelogo.png differ diff --git a/packages/website/frontend/static/navbar/services-dark.png b/packages/website/frontend/static/navbar/services-dark.png new file mode 100755 index 0000000..8260f27 Binary files /dev/null and b/packages/website/frontend/static/navbar/services-dark.png differ diff --git a/packages/website/frontend/static/navbar/services.png b/packages/website/frontend/static/navbar/services.png new file mode 100755 index 0000000..f8d8a4a Binary files /dev/null and b/packages/website/frontend/static/navbar/services.png differ diff --git a/packages/website/frontend/static/navbar/twitter-light.png b/packages/website/frontend/static/navbar/twitter-light.png new file mode 100755 index 0000000..f5d964a Binary files /dev/null and b/packages/website/frontend/static/navbar/twitter-light.png differ diff --git a/packages/website/frontend/static/navbar/twitter.png b/packages/website/frontend/static/navbar/twitter.png new file mode 100755 index 0000000..415fa9a Binary files /dev/null and b/packages/website/frontend/static/navbar/twitter.png differ diff --git a/packages/website/frontend/static/navbar/upRootNutrition1.ps b/packages/website/frontend/static/navbar/upRootNutrition1.ps new file mode 100755 index 0000000..6b02df4 --- /dev/null +++ b/packages/website/frontend/static/navbar/upRootNutrition1.ps @@ -0,0 +1,3340 @@ +%PDF-1.5 %忏嫌 +1 0 obj <>/OCGs[32 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + upRootNutrition1 + + + 2024-12-02T18:04:09+05:00 + 2024-12-02T18:04:09+05:00 + 2024-12-02T18:04:09+06:00 + Adobe Illustrator 28.0 (Windows) + + + + 256 + 44 + JPEG + /9j/4AAQSkZJRgABAgEBLAEsAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABABLAAAAAEA AQEsAAAAAQAB/+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJ AAYAMQAAYWNzcE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARY3BydAAAAVAAAAAz ZGVzYwAAAYQAAABsd3RwdAAAAfAAAAAUYmtwdAAAAgQAAAAUclhZWgAAAhgAAAAUZ1hZWgAAAiwA AAAUYlhZWgAAAkAAAAAUZG1uZAAAAlQAAABwZG1kZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAA A9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAkdGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RS QwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABDb3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1Q YWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAS c1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAA AAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNj AAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5p ZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAA AAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAA AAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJHQiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAA AAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBp biBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4g SUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDP FAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYAUAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAA AAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMA KAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0AcgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCy ALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEBAQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIB WQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEByQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4 AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLLAtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oD ZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBMEIAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATT BOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowG nQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kHrAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiq CL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnlCfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsL Igs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUMjgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3e DfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPUR ExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSL FK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaPFrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUY ihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4axRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzM HPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUh oSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8kTSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3 JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymdKdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDks biyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ovkS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJj Mpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXCNf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5 BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/i QCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPARANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVH e0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NLmkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9J T5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1OqU/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX 4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVchlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2Cq YPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWSZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFq SGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5veG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQU dHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJeed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+ wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2EgITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZ if6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+ekAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSV X5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kbr5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFH obaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfgqFKoxKk3qamqHKqPqwKrdavprFys0K1Erbiu La6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsu u6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48JfwtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJ Osm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQutE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc 1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3m lucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7ijutO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe 9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L/tz/bf///+4ADkFkb2JlAGTAAAAAAf/bAIQA BgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoKDBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8f Hx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f Hx8fHx8fHx8fHx8fHx8f/8AAEQgALAEAAwERAAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQF AwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMB AgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdU ZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eX p7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUE BQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEyobHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PS NeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG 1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/a AAwDAQACEQMRAD8A9U4q7FVqSxSFhG6uUPF+JBow7GnQ4quxV2KuxV2KuxV2KuxV2KuxV2KuxV2K vO9Q80aRpXn+W9iVxZtF9U1y5VWKC4HL0PhpuwEDLVc0mTURx6uxyIqR8/4fjs7fHglk0tHmDcfd /F970TN26h2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KvO73XtF8t/mPPQmK1vbTnqvE MyrcDlKj8RU8ig6Ad8hkyCETI8gzhAykIjmWcaRrGm6vYpfadMLi1kJCyAMu6mhBVgrD6RkcGeGW PFA3Flmwyxy4ZCijMtanYq7FXYq7FXYq7FXYq7FXYqlHmTzHaaJZerJ+8upQwtLZalpHVa70rRR+ 036yQDTnzjGLLbhwmZoPG0h1i4mayWQzxalJBM60QpK92nqW0klwjMFkdU5IVDKD1rVs5OYyymY/ ziPt+m5dDttzH2vTQ8OMBL+aD9n1UO7ffl9z0/8AL/zTYappNvaLKfrUEdIg5BM0KHisiNyfmAKK xqfi9iCem0eoE4gfxB57VYDCV9GWZmOK7FXYq7FXYq7FXYq7FXYqlckeiPqzw3c1vPfzqpgtJTGZ FiQH7CMS1K8iSB+rKjhiSSd20ZSAANmAfmXqlkIdLXy1cWzy3Ms0ZFkkM3NlCUUstaU59PfNH20T DgGPaUr5Ab8ncdkjj4jPcCuZSnyx57uL280qx1DT4vTu5RZ/XYYoAzSkqOTK8Tio9ReVKeOYui7T 4pQjOETxGrrr+C5Os7O4RKUJkULpNtU84LaXt/8AorRV1TT9Mb0726ljhVFblQ8fSiXaoIqSfGmd N4EP5o+TzvjT7z81HzZrkWp2fl5tBuPqEeqTD1Le3VYmSWJlBaV1of3bNsKAftfKQjGI2ACDKUuZ t6hphnOnWzTyGaZo1LysgjZiRWrICwU+NDhjKwCxkKNLdX1KLTNLutRmVnitImldEpyIQVIFaDIZ 8oxwMzyiLZ4cRyTER1KDvPMtpa6TYak8btFqD28cSDjyBuaca702rvlU9XGMIzraVf7JthpjKcod Y39jzky6BfeW7m61jUIrLXNTvJby2uJI2kVDBJ6aIAA3wUSm/j3zJIvYuODSXaVq/mCz1SG70FYp ri8uJYJkgUx2d76MSyFljcJwk61K07e9dFrIS0+WMsA3ndx6Gv0u50s458Uhm5QqpdRbNn/MJbxt Gjsf9GvLjUI7TVdPnX99CGB5LQ0PUbNT8dsuPafHwCO0jMRlE8x+O9qHZ3Dx8W8REmJHIs4zcOqd irsVdirsVdirsVdirsVeVfmjNKnnXRER2VJLecSKCQGAtrsio775r9V/eR/HQudpvoP46hJ/K87r caFAIXZJY/LTNOKcEKWTUVu9X5bfI5pxL9+BXXFv/ml2pj+5Jvpl+8MY/IDUr+bzdZWUzsLeztXS CIk8aP683Lj0rWZt8zOz5EzA7h+txNdECBPeX0pm8dO7FXYq7FXYq7FXYq7FVk00cMLzStxiiUu7 HsqipP3YJSAFnkmIJNB5h5usfM1p50u9T0+OCcahZi3tZJpY4zAHQIzcXdCCCrEE7b/RhQlumfl5 qNzrllZRXpgtNOtvUbUrSRCTcOebenxbmN3C1IGy5otXosmfUg7xhGO0h3u50usx4dORtKcjyPcg dCttJ8q+dNWh1Te4sI5ZNGaTZGlYVi9uTIwpXYHNbo8eLT6qUcv8P0/j3Ow1c8mfTROP+L6vx707 t/y58wHyUfSeS212SeSae29Xis0bUT05KNwOy8hXbcjvnXvLN6Z5N12fUYNS1qwtNLjiVbSCztEj T1HnPpPKyxll5Kjs1a/sjamU5/pr+dt8/wBjbh+q+7f5PVsuamJz+f8Aypd20kDepcQ3FuzPGUqr I8XMo2/VlPH55r46/DlIhz4v0udLRZcY4+XD+hjulp+W8ElrevHeRmHlcW1tcSSyxRmEycSoDMp/ uH47npgx9lYYyBo7chZpM+0ssgRtvz2Fom41jyLa6I2ly6fPd6Wjs1XXkVeRZJWINQ60ZCpI6fLL 9Vq44ADIHf8AU06bSyzEiNKkF75OsnsSrXs66O9y8RduYgMccokU13IpbtxXMPLq8MpRkbuHF8Nj f+5LlYtLmjExFVOvjyr71+o6p5Qu9bg1S906aG+09/U+tEcDxjkeOsij4m4GKvEio6ZVlzYJZBOU SJR6/Ejf5NuPFmjjMIyBjLp8B+tkOm+c9E1HUI7C3aT6xIpYB4yoBUuCpP8AN+6b7szsWvx5JCIu /wC39RcLLoskI8R5f2frT3M1xHYq7FXYq7FXYq7FXYqwj8xfy/vPMjW9/pl+bHVbJWWAkAo1VdaG oPaVgajf265i6nTme4NEOTgziGxFgsW0qyu9LurOzuoJFurRtDj+rhayyCwtpIp3ijUkyIp/aWo/ HNT4Exl5fxY/9iDbs/GicfPpk/2RFJr+Wn5WTaBNY6rqDCLUbe0Fs8EZDhjVzzdh8IIEvHitfsg8 u2bLTaXgonnTr9RqeKwOVvS8znDdirsVdirsVdirsVQ2o6haafam7u3EdurRo8h2VfUdYwzE7BQW 3PYYqxy9/MXywFmt1Ju34yKIQFKyhQ3SpPJHC7NQrTAQCKKQa3CCTzl5RjaZL/TEtHib0zyiTiWo Sy1dY6Mu1VPjt3yvwIfzR8mfjT7z818vnPyInqcLRJGiI5qIIwQDIsbMwNCoXnWrU2x8CH80fJfG n3n5qM2teRbl4JrvRYvTkldLe7aCJkaOFHdpVkWo4qY6FSe4PTK5aPDLcwj8gzjqsseUpfNGDzT5 Ia7e2S1ikNQLd44onE5aT0R6NN3rJtUbZZ4EP5o+TDxp95+alH538pW885Nh9VuLOR0P7qJZAEkM Luqqefj0GEYoA2APkg5ZEUSUyg8+6DcRPLbiadIg7SmKP1AqRBS7koWWg9Qd65YwTZNE0dLgXCWU CzKhjVxGooprUDbvU1yoYICXEIi205pkUSaVjYWJfmbaIuQy8uC1o/2xWnRu/jlrU5dPsF+zbRL8 Ij2RR8ABAXp0ox298BiDzSCRyaOm6cSxNrCSzFmPpruxUqSduvFiPlkPCh3D5MvFl3lcbOzMnqGC Myb/AB8Fruanenjvh8ON3QRxy5W6GxsoeJht44ygonBFXiN9hQbfaOMccRyASckjzJVsmwdirsVd irsVdiqhfzywWNxPDH6ssUTvHEKksyqSF233OCRoJiLLyZvzR846vbiys9Ka1up4IpWkh5rLFzvp IFJMiOiq8cPVl/arQgZrvzU5CgPxbn/loR3J/FKtr+Z3ni10tUk0N9RuYLa1d7lllRpJJUUuGVIu PL1GMI4j7akmi4RqsgH03sPx+hB08CedIeXzt+Ylvr0dzJC89gYLyc2ccLCLnaWd1LHGTxL/AL5v T7/aXbrkTnyiV9N/sBSMOMxrrt9pCb2vn/zjeemx04W8NxJAVpHJzSMtbc/tgg8vrB3I6A/PLRqJ np+Nv1tZwQHX8bpfH+Z/nm0SZrjRjeMY5ZkKxyIi+lYQXCxqFQmrPK1eTfskA9sgNVkHMX/YCz/L wPX8WXpnl/UbrUdGtry7gFvcyqfVhFSFZWKmnIA0NKiuZ2ORlEEuHkiAaCYZNg7FXYq7FXYq7FVq xxqzsqhWcguwABYgUBPjsMVXYq7FXUH3dMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVQ kP6L/Sd16PpfpP0ofrnHj6vpVk9D1KfFxr6nGvvkRVnvZG68kXkmLsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVf/9k= + + + + uuid:284acf14-21d5-467c-a4cc-7ff053b61871 + xmp.did:1e6b69a4-aca4-4f44-967f-03e801d35322 + uuid:5D20892493BFDB11914A8590D31508C8 + proof:pdf + + uuid:593c3f81-b59f-4ed4-a601-11f9441e4f46 + xmp.did:4a10e5c1-906a-0d4e-96e5-2652a54bc3b3 + uuid:5D20892493BFDB11914A8590D31508C8 + default + + + + + saved + xmp.iid:193f220b-bc15-064d-b07e-aad815753e3a + 2024-12-02T17:59:50+05:00 + Adobe Illustrator 28.0 (Windows) + / + + + saved + xmp.iid:1e6b69a4-aca4-4f44-967f-03e801d35322 + 2024-12-02T18:01:31+05:00 + Adobe Illustrator 28.0 (Windows) + / + + + + Document + Print + AIRobin + False + True + 1 + + 1280.000000 + 769.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 35 + 31 + 32 + + + CMYK Red + RGB + PROCESS + 237 + 28 + 36 + + + CMYK Yellow + RGB + PROCESS + 255 + 242 + 0 + + + CMYK Green + RGB + PROCESS + 0 + 166 + 81 + + + CMYK Cyan + RGB + PROCESS + 0 + 174 + 239 + + + CMYK Blue + RGB + PROCESS + 46 + 49 + 146 + + + CMYK Magenta + RGB + PROCESS + 236 + 0 + 140 + + + C=15 M=100 Y=90 K=10 + RGB + PROCESS + 190 + 30 + 45 + + + C=0 M=90 Y=85 K=0 + RGB + PROCESS + 239 + 65 + 54 + + + C=0 M=80 Y=95 K=0 + RGB + PROCESS + 241 + 90 + 41 + + + C=0 M=50 Y=100 K=0 + RGB + PROCESS + 247 + 148 + 29 + + + C=0 M=35 Y=85 K=0 + RGB + PROCESS + 251 + 176 + 64 + + + C=5 M=0 Y=90 K=0 + RGB + PROCESS + 249 + 237 + 50 + + + C=20 M=0 Y=100 K=0 + RGB + PROCESS + 215 + 223 + 35 + + + C=50 M=0 Y=100 K=0 + RGB + PROCESS + 141 + 198 + 63 + + + C=75 M=0 Y=100 K=0 + RGB + PROCESS + 57 + 181 + 74 + + + C=85 M=10 Y=100 K=10 + RGB + PROCESS + 0 + 148 + 68 + + + C=90 M=30 Y=95 K=30 + RGB + PROCESS + 0 + 104 + 56 + + + C=75 M=0 Y=75 K=0 + RGB + PROCESS + 43 + 182 + 115 + + + C=80 M=10 Y=45 K=0 + RGB + PROCESS + 0 + 167 + 157 + + + C=70 M=15 Y=0 K=0 + RGB + PROCESS + 39 + 170 + 225 + + + C=85 M=50 Y=0 K=0 + RGB + PROCESS + 28 + 117 + 188 + + + C=100 M=95 Y=5 K=0 + RGB + PROCESS + 43 + 57 + 144 + + + C=100 M=100 Y=25 K=25 + RGB + PROCESS + 38 + 34 + 98 + + + C=75 M=100 Y=0 K=0 + RGB + PROCESS + 102 + 45 + 145 + + + C=50 M=100 Y=0 K=0 + RGB + PROCESS + 146 + 39 + 143 + + + C=35 M=100 Y=35 K=10 + RGB + PROCESS + 158 + 31 + 99 + + + C=10 M=100 Y=50 K=0 + RGB + PROCESS + 218 + 28 + 92 + + + C=0 M=95 Y=20 K=0 + RGB + PROCESS + 238 + 42 + 123 + + + C=25 M=25 Y=40 K=0 + RGB + PROCESS + 194 + 181 + 155 + + + C=40 M=45 Y=50 K=5 + RGB + PROCESS + 155 + 133 + 121 + + + C=50 M=50 Y=60 K=25 + RGB + PROCESS + 114 + 102 + 88 + + + C=55 M=60 Y=65 K=40 + RGB + PROCESS + 89 + 74 + 66 + + + C=25 M=40 Y=65 K=0 + RGB + PROCESS + 196 + 154 + 108 + + + C=30 M=50 Y=75 K=10 + RGB + PROCESS + 169 + 124 + 80 + + + C=35 M=60 Y=80 K=25 + RGB + PROCESS + 139 + 94 + 60 + + + C=40 M=65 Y=90 K=35 + RGB + PROCESS + 117 + 76 + 41 + + + C=40 M=70 Y=100 K=50 + RGB + PROCESS + 96 + 57 + 19 + + + C=50 M=70 Y=80 K=70 + RGB + PROCESS + 60 + 36 + 21 + + + + + + Grays + 1 + + + + C=0 M=0 Y=0 K=100 + RGB + PROCESS + 35 + 31 + 32 + + + C=0 M=0 Y=0 K=90 + RGB + PROCESS + 65 + 64 + 66 + + + C=0 M=0 Y=0 K=80 + RGB + PROCESS + 88 + 89 + 91 + + + C=0 M=0 Y=0 K=70 + RGB + PROCESS + 109 + 110 + 113 + + + C=0 M=0 Y=0 K=60 + RGB + PROCESS + 128 + 130 + 133 + + + C=0 M=0 Y=0 K=50 + RGB + PROCESS + 147 + 149 + 152 + + + C=0 M=0 Y=0 K=40 + RGB + PROCESS + 167 + 169 + 172 + + + C=0 M=0 Y=0 K=30 + RGB + PROCESS + 188 + 190 + 192 + + + C=0 M=0 Y=0 K=20 + RGB + PROCESS + 209 + 211 + 212 + + + C=0 M=0 Y=0 K=10 + RGB + PROCESS + 230 + 231 + 232 + + + C=0 M=0 Y=0 K=5 + RGB + PROCESS + 241 + 242 + 242 + + + + + + Brights + 1 + + + + C=0 M=100 Y=100 K=0 + RGB + PROCESS + 237 + 28 + 36 + + + C=0 M=75 Y=100 K=0 + RGB + PROCESS + 242 + 101 + 34 + + + C=0 M=10 Y=95 K=0 + RGB + PROCESS + 255 + 222 + 23 + + + C=85 M=10 Y=100 K=0 + RGB + PROCESS + 0 + 161 + 75 + + + C=100 M=90 Y=0 K=0 + RGB + PROCESS + 33 + 64 + 154 + + + C=60 M=90 Y=0 K=0 + RGB + PROCESS + 127 + 63 + 152 + + + + + + + Adobe PDF library 17.00 + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 3 0 obj <> endobj 5 0 obj <>/ExtGState<>/Properties<>/Shading<>>>/TrimBox[0.0 0.0 1280.0 769.0]/Type/Page/PieceInfo<>>> endobj 31 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 1280.0 769.0]/Type/Page/PieceInfo<>>> endobj 34 0 obj <>/ExtGState<>/Properties<>>>/TrimBox[0.0 0.0 1280.0 769.0]/Type/Page/PieceInfo<>>> endobj 43 0 obj <>stream +H夓WI$甲+寎筳$z@償M潼悪/戀粘怌x.彧堭p73w庯!囥耋#/#彄焴耧悃莣彈廏 u7_瘐唣>>~>/8 敻謶K)鎩键W?>R网x謵Z9g睌#厹犟8GX鴲C体8Wh%3虐蔘C媿?L9擳鏈剼1B摕謤.闰訂;巹;f>h誖烊雈騉砡s∧0堊噛鴏蹎.at鴮遐zW僢-篥猌pE + +ePTcCQMB耩]D湞H$赨奃舐懆>^H8鮱嶥}鸉€T慼Qs$jL7Q@▎庺4鱗N2>迴Xv*伤!W1Kk擹TEz]艠p-淌*B)7 -驀?"驉遙Y铇淭 J苷p 鈋@C3 载Y匧 馵r諑K腈;rYk{ⅢN幄 汁槒nma0[哏;w壸-2~瘑蜏B藸頹7尙-{龙躍*鈟0韚O-U惠!昗姛龌椉;*kk骷绠z-鴍氍誝;:瞛芴漖_衂sm襜腭血://%鵱隅Z轩(R鲯嗝/%縔-Vし0唓|n-頝k>7┷驰~吮烳鵊|鬪斆:!H蜠h軼Q魧玆筢2&嬯觋[迴喘.范X毉赁wl茺"}譶鑻缵<嚼`蟨柏J颢嬔8-tT鐭欙{陠疫縆c7kL麚h铁f峐ㄆ溥1齥S劲1$鍵a闧叐 +S*侚溇/鐺}煽J_7樗爵痪敍驹翔藎/驣_鏃籁O鶵揸K娋/7杷'w80R !/2 厍葑7璿殓伄l&ExC怂F>仠E篣嬸盠驷<淓{\a秏亢峎O磫顶AvSA *$asoM<~僠Il媣笎Q梬'敺舄踩6鵧鴚X鐐娑* +0w:e>W偁慴d诟4趪鏒1BN 婼i +鯕杺蔓u峵'哪丰颮=@o蛌0邈T瀈nFH:鈱>牬Yda餺 珽4讙B2軱UcIw,挞5木m瓓7迷"瞁*裄箓 +(]J﹩鸴JG睜镣籴B蕰^[9宐~D)篓驠C,郇|mY&E創覥婤K/Z戭N罏攼2P$Wr啌 vF^}!~#b83C5R刣_蛝6n阉n媅齫磃Ee吓沕09]谵b5 4櫥莉S鞦]唤WE骝紑=y萏 wk>>踇T.*":縥= .N蔛mI挵!y4愘V耶4齏 lO碰C蚣綉/7sl顠[﨎/IR蓗恩葜,権3Z臼$\珵^)倀U瑈 ] 榆f*l番怀疾c嚔凌寱(~ 膊旤r'/iDx/窀e@uA帘[!郸 蛤wo$ +1=uy圀w臚墙遴:牻蔂慓ms诌_秖Rm+G樮A軺銵埰顔G%膬R擖Bク0*}ナW(鮁F峠F嵎孞o暈>猫9s槪}!賸堨* w柛4& 訳康\眪"fS¬=睯鮧>喧醛卯[{3{H謢缫n袔E薝9賫UFV濕&迒(l@痲 巠顡C勻V8莰>通弉 苤鼯N}>"泖j靥╄髲柌哥 霔騘爱骚(忀灢瑂)LzЬg4霝N矅<餇|VmⅥ ┼>ans缰宮綶8G鶛^k腙換竟唕R氶[嚩陑-'#樒鸸挪樆B貲M唑雊郅<嘝霖r化榦2~э(钖kr詉U^^B#倷榱r薱槎唞o訢貞W㈧>O鈟6O/ 3(鯠噾|锰裸0葱9H漿2?50j D锫'dg8糓c瘰翧D,>濆_ +rYl暲[徕寽同吣2苬獉 +#嬪殍姜 +D 増暒裉忻m8/铈粎][伿w錯鸠宎b叡n6K菑at;j褛n逬f&6u槹6.+尜6w%z.'Vh痟}稛才H涑&膝lO:%Z轢/MDO{"嵚确H=诧#:鑷欐* 痟圅2蜪GPA"蘲+uJ歞@俜b6琡巌搲蹂$Ir$Q綩Q(hH渂!z椓鼸馂YdV,豦黑<="芡訲誚K尧l槗狣8蛘[l咝佤K羺瑏疅8罹B 3傩逛x:8^VvL鰝6l$裬d鋬b钵F承e3品'!C猤5芳X  9/#EpX0坉摑7侈A^_蹙蕟您)%鬪嵱5q屾 l篼募磂/纹λo|綰6玳螏1a4圆+VY幝轇拴帖u獐牂w+颠K1O鄶./%甅P-Z?1&锭Y禥 +i0;、5zV陱眘羔供鍑*H蹑譟$KhL踤$寉麛ls橪[软;4亝9C(X+墴h缤'd噮沼庺歛59漢x!〈BAY2弄4衆y韚聤2躝謁8朹直CXa浭))缛啓) 娧^柟儱v |t 䎬鵑檟/鴜躯肄諫W3/艮5郣!戼毑X%愵檚弼捰桁焉抐劀尚簵芟澇*幮,膁K97W;領 秠╲熳V褤爃[蘛拴/增衜 Y 耽板勐赨廕褞漼'藓 + \}鹱鹭7孨轷癩\穃d7GU浪孉B輾崸畇拝惌z蓹曈鯌宯#稳i癃﹙^ +消膾聍﹒g德NH1j5臢n愦.6燾嚡豕-J銹[1x啌蒈K=?6孒hi媫持帛1兖1遆M=w粧=P漰玞劂g芆hx[革讕#騦勰儑袌@:3烉瞞%漪拻.瘵 #浂 ?q诬L荙%`K9暀浭d墍靘鶣:玓p畕B皜c廄L-d+#(捗蘞殥Y諑哇峭T嵷,g曯顽赺糨曰群)唥T絭'\炘2&諜宴Q^9爼1仅天61j镈V湠%aS钡晎庽]e鵦 5揘擫沌旈%捔鼊&L|阽薀yn]:'$%聲h9=薟鏲A蝞弶=切菺'c讔侨8N禀;)哊ミT6=!秖D>1灍o剅靏蚃鷐)\匄Y颡|匁/ 必1岲+馬*~b4跔^K Q}噥r唇箼翖w廖3i錣轄诐簡錚F鍥m 傼Jp* 鎚R淵H譃/鋰m5s臋鼆渽@3M髙NI幝*9x軺WLW亦m褦n狂 N8聜斾T7v'俚新G阣ㄊ+/﹙娺ㄥvd.lrxp0 +=J]wAX夊  m;# 劖$鯳xhj 饪>尛>酑=+裤瓌会kIy8 },lG戱^氣櫛曈r沲$喲宷,j47┫K棐繿隂綼*6悤圙孼9F刽狼#x攖TN +C茡舆鹀嬽d虼b×髺:蒩掞/拓dV*-欢愙闤抎訓?鬄匛挡R*Vu俒c%}:庲孾瑃WZ +-q7o膾K#銤0e'嘁膄冲Eqň⑵麮#,鑍N<-碹蔞Sj91練盝┺蠽坿h訳~熚湋:h話扌㈦岆}胄8颩膽8帬瑩浏~W!PHu"l嗎Cq憸>7N2V什/Y1#Ь昴袪&䎱瀷嬽苉喚╧綺 .杽~5掑 /u闠溪0┕[zj鎼鴁恌oS3嗸愲 跻竬韰4h尕N愱4 傲7狏#噟,u眎!灬汬y覆 +5\嘣*嵦?椚婱:mwN0鄿a榐墒O栰钓\蜊V oc飸B洳DWh摪L蠐8铱辭宛>a63蕳邕黺y朴躭蝬满}晨鉶_ю? +endstream endobj 44 0 obj <> endobj 9 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <>stream +%!PS-Adobe-3.0 +%%Creator: Adobe Illustrator(R) 17.0 +%%AI8_CreatorVersion: 28.0.0 +%%For: (Hp zBoOk) () +%%Title: (upRootNutrition1.ai) +%%CreationDate: 12/2/2024 6:04 PM +%%Canvassize: 16383 +%%BoundingBox: 344 -651 3664 -118 +%%HiResBoundingBox: 344.832362721818 -650.330708661419 3663.81714782616 -118.669291338582 +%%DocumentProcessColors: Cyan Magenta Yellow Black +%AI5_FileFormat 13.0 +%AI12_BuildNumber: 88 +%AI3_ColorUsage: Color +%AI7_ImageSettings: 0 +%%RGBProcessColor: 0 0 0 ([Registration]) +%AI3_Cropmarks: 0 -769 1280 0 +%AI3_TemplateBox: 640.5 -384.5 640.5 -384.5 +%AI3_TileBox: 244 -690.5 1036 -78.5 +%AI3_DocumentPreview: None +%AI5_ArtSize: 14400 14400 +%AI5_RulerUnits: 6 +%AI9_ColorModel: 1 +%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 +%AI5_TargetResolution: 800 +%AI5_NumLayers: 1 +%AI9_OpenToView: 431.362204724409 876.858267716536 0.440972222222222 1897 917 18 1 0 5 108 0 0 0 1 1 0 1 1 0 1 +%AI5_OpenViewLayers: 7 +%%PageOrigin:334 -780 +%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 +%AI9_Flatten: 1 +%AI12_CMSettings: 00.MS +%%EndComments + +endstream endobj 13 0 obj <>stream +%%BoundingBox: 344 -651 3664 -118 +%%HiResBoundingBox: 344.832362721818 -650.330708661419 3663.81714782616 -118.669291338582 +%AI7_Thumbnail: 128 24 8 +%%BeginData: 3232 Hex Bytes +%0000330000660000990000CC0033000033330033660033990033CC0033FF +%0066000066330066660066990066CC0066FF009900009933009966009999 +%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 +%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 +%3333663333993333CC3333FF3366003366333366663366993366CC3366FF +%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 +%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 +%6600666600996600CC6600FF6633006633336633666633996633CC6633FF +%6666006666336666666666996666CC6666FF669900669933669966669999 +%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 +%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF +%9933009933339933669933999933CC9933FF996600996633996666996699 +%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 +%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF +%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 +%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 +%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF +%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC +%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 +%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 +%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 +%000011111111220000002200000022222222440000004400000044444444 +%550000005500000055555555770000007700000077777777880000008800 +%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB +%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF +%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF +%524C45FD3DFF99CAFD7EFFC9A0FD7EFFA79FFD7DFFA89F98A0FD48FFA87D +%FD32FFA79FCF98FD29FFCACFCACFCACFCACFCACFCACFCACFCACFCAFFA8FD +%0DFF7D84FD31FFFD049FA1FD28FFC9CAFFFFFF9999A0FFA8FFA8CAA8FFFF +%FF7D7DA8FD0CFFA87DFD30FFA89F989F99A7FD28FFCFFD04FF9F92989FA0 +%A8FFA87D7DFFFF7D52CAFD0CFFA852A7A1FD2DFFA8A09FA098A099A1FD2C +%FF99986E9892C9A87D52527DFF527DCAFD0CFF7D7D75BAC9FD2CFFA1A0A7 +%A0C8A1A0A0A7FD26FFA8A8FF7EA1BAA0C19F98C9A87DFFFD047DA1FD0CFF +%A87DA87DA19FA0FFFFFFCFFD26FFCA75A07CC2A0A14BA075FD26FF7D7DA8 +%52A1989F989899FF527D7D7DA8A852A7CAFD0BFF7DA8FF7D7DA198A0FFFF +%C9C9FD25FFA8757CA1A0C9A0754AA0FD26FF52A87D7D9F98A09F92CFAF52 +%A8A852A8597DCAFD07FFC9A7FFA7C97DAFFFFF7D7D999899FF9FC9FD25FF +%A851A07C9F98C94A4A75FD26FFA8527DA89F9FFFA798A1A852FFFF7D527D +%A8CAFD07FF9FC9FFC99F84A8FD047DC2C9C29FC2C9FD25FFA87C7CA19FC2 +%A1754AA0FD24FFCAFFCAA8A8FFA1FFFFFF98989FCFFD05FFCFCAFD07FFC9 +%98A098C97DA8A87D52FF98CFFFA06EC9FD25FFA84AA07CC2A0C9757575FD +%24FFCFA7CAA7CAA7CAA7CFCAC999C2CACAA7CFCACAA7FD09FFCFA0C9FD04 +%FFAFA8A8CACFFFFFCACAFD25FFCA764AA1C2C9A07C7CA1FD3DFFA8FFCAFF +%A8FD05FFA8CFCAFFA8FFA8CAA8FFCAFFCFFD23FFA87C7CC2A0A075A8A8FD +%24FFA87DA8A8FFA8FFA8FFA8A8A8FD05FFA8FFA8FFA8FFA8FFC8A0C2A17D +%A8A87DA87DA099C9A0C2A0C8A0C2A0C8A0C2FD25FFCAA0C9A0FD23FFA8A8 +%7DA87DA87DA87DA87DA87DA87D7D7DA87DA8A8A87DA87DA87DA87D9FC29F +%A87EA87DA87DA8A7C9A0C8A7C9A7C9A1C9A0C9A0FD27FFA8FD24FFFD0EA8 +%FFFD05A8FFFD04A87DA8A8FFFFCAFD35FFA1A8FD04FFA1A8FFFFCAFFCAFF +%A8FD6DFFCF7CA17C7575A1A1A17C754AA77CA07CA1767C7DA1A1FD6AFFA7 +%FD0475A0757C75A07C7576757CA0A0A0757575A0FD6BFFA1767CCAFD05A7 +%A8A1A8A1A8A7CAA7A8A1A7A7FD6CFFA8FDC9FFFF +%%EndData + +endstream endobj 14 0 obj <>stream +%AI12_CompressedDatax滌絠菚&鼭脈?4`Z{墉z<溯鉇c 蠷Y鏄"姴求脒9眃,y珚婨逗*D獂椞葓g}9笙_晋沩gf?頌>:骄}鲦针燂溴/^鉴7襉~饔 +麎:黚"}蜻n_鼽账燂艏熲7O坊{|鯖奎t鲹燆者?筲盹^絲箅镞紐_T鹓Z顚蜗捺cJ c襳>佥o%y鲵钧铢紮 _<菌W蟔~}|~3诸>驨韺鼬M鵲w鸧过l瘩:h5珯_汌芁a毥WV-紓傧*(f頃棲斫_簪寵莠y轶/骣鍥呔~蹂韜邼^絰斛粺颪鰎鳙g_銤gy奴宽/瀩|琊 髋腕稾灲)#玽鴧襙玙o眰,//洧畣 體y=|駤o鹨绶o捺﹑OY睘 +^曬蓓紫e'蹦毵痏}匙岱w縛葭i7シ/瞕轓{符烫?孏j賰P摿簠箌h]>魁巯w縹躜6狨浵阒Z;M耧糁锞q__>儔zym壂颢W_菥7諯芗x&!C匐痮還^进䦛许\顐宄窟rT荷o窘}W&S礔鞟0z8-9=槔嚑济揘{t﹜ 籈"余捥erj;M侘爿<黥坟孢紐髼?7苧=蝥鵚+經鉥蚰{<擹獇+孅~+i卑鬿捃咎z>"蟟8棗_漗}C*鳱/%h雠踊?=\恹o愈 _h~鵎^揰趋/~{践/痏}/^沼'?<爝ne}蝶7$Gg鼷紫灸5痫pz駵痮w馷|W䴔愶無劊縙 緕y.?鲪+崎._}}[fC.鬧钹霔縴塤;峻?飤暾2唆侓助娘入夫;嵬Hw9={疋療}鏮n輍泯r曲椒洪鏮蕍l莜}*近 掊穈鈎p;Jz?P锦T幱鶞噒鹡w~骟={箦忂=饉 /窥甛?⺳]瞋b铖祻t蟐>{-/e瓱伇瘲o唿犷kr~z+惼邕?s僕遼K祇鼯煙}藯譕~ Z7|踱鵺攥$X津踘<蚺礴钔m脓b祼厂O灶b蝥賅!胨椣緛t:酱蟾沃珢陑w閾{鷇J瞷覔欖0<豬8L情4]岙2Vy璩砕訟 悻n燿OZim'趇j膵>`鮕_魨櫊'C0衟L医槪9櫝箻;Ye[g v{'{{冮@1p芛鐪wP斳葙]uZ{悱>/怇湎o! 6*蘟 噋 ~$\峦`z 7X耒(銊q杚粮9兵G晢朼dX. <1葮e,e蕫\$鉢匹帶O⺧MH +攽i銗h 陥鬛S坘hw*:绚擠'砅蔘 +エD+磼╁幸擞'V4C奍4娚4暗婸 斻n剉2醺H?OEJT$t許楱PF$%i蓳枮>欩5EzZ)*覕﹉*SUT#e懚@]壎?B]+}E +氅3R赗p8躲〗~溩駧49啴琛爥L颐R8GK檣lP P("E+ =d姼&2U詔q悆x 蠨2。孠E曘D鷪\'4詑*湩馂>($襀昍謥)&V憨i绨RMG桤舰獑N盲a$$m7詬+;幾;醬壪懄摄"#5GZ&%G)4$I护\J?R-i謰#マF 3*彔小)\@m(厃暆 枞n桢碶0}嶟髫#熙 夭侓`2GJ傆t' 2 哪閠>]斡Y澩R艃-` 求閨>_7`偵_ 3M苘躙n7'垞萹 82囆荑u3]n.椝鵵傂9dg忥[\G鉰御W>G躨9羋=頽1嵸Ls;a蘵茖=X=<:M恉< 蟯烙蛒F'祒^崸M@耝'1冾=N吪)87窝g陝3v狸蚗C彆碭O崜9幛^pfO8渂宾;爍猝p凅飘q.崂/ 鴨 +;x>皼3鲈cg-鰲nB萄輤/澅颎忐z0鄀蔒鄈P \&1冪y袕i幸dn相怗`庎tgA}T8秀Tyu.犙铍@t罒蠣#▃Q鬮zP舓P>K幊乪罥859螔忾{G歺G歺M剌?}q|-f榇v ZYx窙>`E-O彠怶&肩!a缗yz潡IY梆N疶r戨澸鶟泇瞬鞩Am凕漼C:摽顆蟅9>;畔N{QJ偱臿吭搟x蹉yud缋較o}嘜徭c]幌騱>,2{K43n翖爔茖ma +M窨=菳(钃沢m_r z+68邴韱叟腼n畲/炔陽B"噗%螯釣!$Z堰o^?{?ж'i皗E俛/薝莽漸鷡专鰿уoYb夌鋜紒Μ A d 靛寡柀/k j薃翦V[[4f却9_]ぷ:\7; ]縂嵼蝻ぅ柉9綆悠8n屆艸f,(谦廟铼蘽惸儎兲薟囦嶤?pE抙\+v*撮_+暥扣- +纬&A 銣<曆d臩 綢饼屫~达鈕夹(E+Y紕kz i5q>垼+rG嘔4i鑚╢L雬nY忷'Qq绢]燕ǹi棋8_ 魱=祄昣[顷裷捧斛擈\俜.> 鷋\衿9衲E﨧阃従縴鶧糾舸a-藑艓k咵q玝g3ⅴ_9罗堉咾汬G+瑣 6嚂峆 嶤㈢)込煎睂CK52B5|竍淭B+鶓咧淚铺US膥1S巔豚嶎 Xr懋庉+蝵M碥荦iG,fDY宰葵M令f欻穋=c甕龅‰Q庍=c)耀h抂=3 5 尢u陭D嘡.匴p]Yu僓忞>K8.I:烁D;Gy潌膷q郏垙囦$*'嘔|騁Q "=D屆檛殞P籏4 /g$ rv骠,g*灜闷8Wl_9m忷燺辜死物7 +3瑚sEj栔鄄鶾睬%鶿⒆%鷀嶪頶I弇炸椧/瀌=i麵A|Zy a{鶕ub瑍岃扇 駀?#z4~ z6枸樺豂鳳貫?_RXaU88K鼱ы1鶧&Mi枡踜櫬忤[==脑=碶(汲2蒊`&Eh.鼟俷忪2DD霣 +凲(抂毴2饺6躴脄%>4襃)搅/>.鬺=鴅P{醖裾骝膪s 粇 抟濘荃闛o"寏鱫峡~y-=K走凝L屐勫佡(m}L{弽茫Ao Z哑肒諧鵘sСN癀kB艭议幽苍<蛬绯1yie8饡3魮毺肘靻殪嗁靻伸喒lP0撿F貘瞊v.扉瘵]湡苘挴縻蝛 h0 3j>kva賴>ˉ>臤c2鴦f鯑尣G峮!Iq8褿#庺G鷪#}膽>釮qG锑#M<夷#Mq徍Zt勵]{汓;禉>猦鲔熟椕楞菙幤:qD硆NG% &MKo糂<6襦屦D憸裴E岼⿷%G**1歺斻u圲'鋹1桪-戊邽鸾搢庯P"濆伱q#鋑1!蝗醃鋊Y)'摋儰!:*xx湅-%鍞 張戙q立X门C!釺C> +邮镎lAi耩$Vッd*闾YZQh泷#F釔在v,诉'1淇K鳶彡霅 H瘀貙c8Y%\2寷脬.T墦06]m]弬o荟;]:U>ъ%X瑻貈椻m噷L%-譁K咐%! :媁hk3多dрi2 +倩旪J噒軭衃5鉛0县緺lg9q=澞獉]!瘓%顤浶8'[ 帾S8 /2HH>cr}A↗D~=("V瑏X8Q祸镬M(刌D婫济艃 奄躗*  筘>惮6曄髕鏊t2薈埑B\W迨缯u貗S7kp-貜21)&貢驓C揗D_郣+*kb廾鰰匌!餁" +帐{3汪FSX虺RVz偯稱yJzv矈?=n軩V7寿潖:J$BC赬&# 9^/NM嬽.舰f&姞$#loVw蜨).洈僌gVq潹qN詗罯]/9;圚鄴~缅e瀍Q袛槌v皂溋烋[f D呶z3)阌樝{+捰&9酹 鶜$+`Ng霼H嘈,b32*╰5 S 濥憕p遀c:腤孃簣1)G2@vQqZ蔾K3鎓勪E靵d缠. &B](k鯲辘鬠彽z7媓|*(g馛S?R轐D蘃|L夆|K5嫺皟ㄑ評 W債災G~鵄隮琕憳b賘7鈣?I霅琖確艂暼u.%%Y'i艘殽=-Z+╓% 样9#鋹袇押嶖3fE&+"疒4Ok7" ]獎5d"" O;k)W璋PVD-褭29锊J獈祇%0海$zG嬓3瞶E笵u$yC酿儐/${B$孪$?谗#>㈢#=碾!c晆懠x需韴燑S騭D/荺L1晫背;9[ z6#{6zw进4圲~骾勞!f[鰅嶄(;yLg&Yg.澯紈礮┯鼽徔|騑,狓縩膫j啴F詺ТS 哜舃YGㄆ軐m轢蛞鄪穹:w镘岤俹秃梇a躝徫串唎FI摿C旲3:目G7J1K=G]鄹sV8$慱--謈Ez辍BxtG从輊k[刳岩6乓鰝;键悽w%X贙贝}l袞*v董盱B弅b圥W$](Z繰c邧菜qGe黩 8w 襛@9敘c钥廀 菴}9衪铛鎙鴕聈o眺鴖馔裳[P傡~趛愉61軖蹨5铋9韋躀+殗弡(s魡D/墈(E撊籌7.息9I濬擿N)_ざ鯌Kr,/X瘂磻3諜:橶赠;菕霨v喃T灸輮远蛅焅65缪Μ裰礣>磅t瀰覎3.*咀Y无溒R岰5幫8U#Ζ漿jHio倨6`8V蓀棐7%凱偎r厄赦:攲i%溫U9玉$甄(潰BGsE腚噴/]Y昁V9醍崙"殞墚贏罸敎.#Z嗕u曁1帆暑阺皇:>$鶢Hd6W苧e条\樭臫熴KY刷鼭a~儰)饣Bu咩補8,:Q肵爺J鸾n葒Rc蓯組=z香X'[|R髪k觴 髖?,.FMA娓愌殔附旘5侞硰倗漩珸矡'块泉]罉鸧萇hR墷偝f 炰 /顪f晏80W馿馊愧5`筀:l窉Z-z$q獀r┮2鋸ゝFW<悷葎捋i穄悥=鲰@扃.鹽帛RS償k橋獱*隁宅獖 +nUV/`縀灾SR[S3W*兆 畋?J匉T奔Δ襢 +U f 鈭[铙X d蓼 S蛱F!耚〡xQ"B糉(t嶃,@鹲闷Q昅;楝鷔G,9钶募蹈X3燬敻鞇滽峻R芄m<<评O轱寰( 9S凬身瑩揨嬠%%&7/市咊貟皩+Fe〩QQ:耐0猇渼柕写"Z│2稯 x5k邎鑵慨▔讛莊芄基*8嘵丷暍澱'鵖闎碩剥進秗隘叄V +駢倪BR3v"(gN庈争縧黕Q87焃)n`葻X狿C~h签 J毐擮粀檎cu舓8^鶁橭]醻み]X)V/X=5鈕劈鳁'&H━ 抄Qj袛罫-尒0 蔃`L刬LV霻#gE虓./'`j凶"\寞>,﹒怆矑i`嶞$2弁寈e蝛1哻5&Y>箶1韗稛B饱m敧:N国楾儱雺臵A焟'[@ T瑺Tk祫V[h璽敝E]鏱I^逗獏/P С┘S6 .侂nf愝檢R⑶H擇缧A2.弞藎5鄪vs\)幹祛M;Y &酯捼I]qれM洟HU瀵♀譌澂盫蓐>庻蛥朆〃<\5挆W\imジ*鸪TS宩鸜2▍琚崾dg蝤斪jS暳 2(蜾F j鮥中熄町夽T>uP牙赎)帐9u邕7;;蔿広)#搐鴎䎱- FH +~T鶍狦寂"忢=畼]2钍;砻2J蘖軾鈾~思兓赙]oK;5圊;艚V勖訇到U讒氜e-飿艋v-姏洄='嶍惣忋X1躸躀偎笡q?梗娑朒D蠒隞涄襏}壉g孩1嵹R+瓃鲨拕`!鮥 s 誾廔鷟辝箅{9榖_KK7Ml硯n稇颸.t憛or敾/v?欟珒腘7惦傞r IJ +Sv0 B拯9IN铏斚 \)#g脰撜%k4损 +?犬$涺(鹴?7vS䜣6&-錙~^繛@1trv亳茜<:w湜兼貰鶟闱ц+雁>vLaJ贘鲰9f握V禅4;詅幅羟XQ頹N齖謆-踄g煛8篗 W窃Y8")飠8遦應簮g(鸚;Z譇6卹蛉吺?賸e捽植~Q)Qq堣!絟R6!等0%岺睰"謍膱G$C叾PP塚t7A%.7U啬漻橶c]匭訰瑻5X臱3窽rN戭6p;馎9 搘W-浞藼*oj髋0fO翦= q毵b溑奔锳岘勆袓 啙<97岬Y9A巅!$j`筬╣vu夾5姿^矵b曌1WbQ娚\ w[/榓"f纅58祤! +樐8-[ |N猧 `钫~乥扼v廲S囥>㘎覛`;pp&pdnBpLnRj;L尠蜼{謜d蠴睔%对32&E櫤{癍];6阳託讃卿尔*iPj鷺!01nEpJ 姮X0*嬕辨`)HNF蓲ukA(裃<煪r>藕N惈罍聶}詪忝7帍祧窾枚.C^悽敲)gaU碍掊q録M灚醸% 棬役is蟹6酑>:X癦乁7!鞢5鷸;#<?糕T=&汹`h8(晆濘Y<盕鷯(zF9艭K/F'绀酂"_tQ#聍w_輗7纶bP欿1杝I礯J键"%w&墝灰 驌S宯棐r.晎+髹I熊Sj鱝 +葂.n誧c洏l8S6跱Jb椰洼h青@_.瞚})Vh +.'灁鵕緦簩饕孋!鵻Zowd W +笹N濽绎>ltY浔臀;7)戶A菑髪W啼;9G龇铿眧Kg钫忐郫q 6b[溔鷡拜o}C蕅厄, 害el迷齥7[揤銖㏑坱趸jV麶z`c䦶n尰\洠伱nA③蟧t!詻诜w_1庬~"1+舅碱?+禜憇牝#絵狉ゾ>捿榹犥鷺A燇A<薔|萐蒬湧}历↗轅翡GJ魻D颕鰸詾摼敃粆&阶涗(J帲h徝Q|P鋷搐楯H閊 フ飻砪o﹛$擖Oj韁UwSK窖$NG倷2>嵉烟趧f肜泟顤&1:.yCg5P^{玅纏`+鬒烫aF-!<Al膶缛b氶9#O>f:'䅟*5哧V[c捣籮絹[H磨u欧昽do椖?Nm 镩裒QCZ9~旭慵ba湭T﹡8! 洌壿: 矁燄'u隤驶0/A3廙硙莴k玠暞脀雾b>訴笛7|b漅縎fg譎f鹙>>,僅髒i~L靭L靭L靭L鞖沪悄^1彪1彪1鲍K靂R猎兒摵l曃JW]桇$譩A竪麵麵s鯒&4E貟TY1#︱YDWECDV闍ta舊熀贷峌L缲B ?s幌仞3膙熞堩>c-漛吴嫇"氟婹p熋巳ㄋ寗3毗习P曶19! H魷t點亰瘴`4阇h匆⑥hb5h磭尞`Q_祌*鯞墻>倁榥匀mU崐:羜隁):鯮苅埧伭L}閎.kl釙氡萑9r.-GΞ錒輕鋹殟xP暲庵6#筣DU婢k闭4!;6巿瑿薏q腇縄$ 綊G`嶿掲<8紣0y┣堉Ri齒W*棜绠)^nsU靼嫵M针虍Q/餚2 0卅攧24眠|訤11 'z郁*趡h9wSa Z'窬_ow/&P秡溠絀巇纳 +N凤J&@>3灮 y畇1tm琳濿-庢)痟虎_k窵卄mQ嬏苯媗%峗:"b幒蛋1Kg D訄yV奄愺v豫k;学4W晪幡r窛祂鐪衘筥!5粍{#NⅥ筕訄{^.籒9挮踤珄]g"孷鮪壣煴p1酜禒璐'q=殏璌斩T*H玬%U蹔甝'吻Rs+箃m)GR)揷*g:q]A{.:;坺棞辐cD=虂c_P綑P懇S4閻哠$鄵共灕x.WK*婮[趜蛎X恙晸罩RW鹖la$: ▕{Fド似莢e2糡愥A&鸢0E┼ .*`b癨)庁兏陣->&h +.兢P讛 *憶N6@B3'肜萹G麭匏C]X# 嫭愪K.-J&*:L7S;z;u瑩9:膑艼5"%Bm&$,p5} 0*曤╝⒕Q2雚M凫U蝫PP1--诧Q=飢y麘1F\`姭煋暉m9禀押廙!}Eq供轎 ㏕c埁績湴夓蹞`IP裦X!L泚H7%/矅蜕r+v钿+砮恮M翉IC\ :鋮4\儤8赬jmァ4侔@笳s狅Af牓奱觟巗]麎Y梒q陟優g薹 +n鼱鲘莅XF)邲\r0讻鱤z炆>S蟱熱ю俊Yw削u烽烁遇jCm>a蜧9菗s體濃1<6篿鱶據\≌4.駘N餆o巙r素墇 跣吼柣葫扪7?髀Md!e柟攓fRZ蘄IX鋏銼XaFy詃E姲7ㄌoXf帰収:z wr込驓j㈧A~?%-阑寿曮 +櫇戒-椗硋暸n:Z:}g鸪墖VEx 8 豂+n粰㈨儷錞迺r{W耺昻Kl ^2nM递j駗_擄榁K85ㄦ钢s|&$琜$/m嬩杤攸梁T蟛JV鍚t翜& 鎡宂澫]ウ*)咋喫1!5穃幓/)槉梓-桿J/諕T属R#桁楡闖音"嚘{皱渥暗恌%蚖恑wVイ悟wN,)潅-\74凸3<趞匋( 湛珅嫈蒺v蓲譙%蹣菕掃r氫$貵邧Jj;迴-%!)7n皚瓤+磑Φ.(UE鏀A(+猽懳緪oTM〇f4=B峘C[.TB#縑夐埊L0=u'鏘剜E衠箹I)$#梘冠c崇咆场)*+=$軻捕 街!%曦"蜋襬e袜e暴xQ]矮-5暭~垸睪A| +O總瞶肶 E崣,佄賲i)岆 繎偬蜭硊哉栳q嶋U2z煆睛-蔇=麡訄Bc‵贩.L刷羗椗霞 淙歶DE霈剮/X凋臊睫,们欳Z )鍻携枸XPh嶷Q tr;C垊v3p+鷼序j徝W昵汦^'忣x璯 `fm01%>N(缷t娀挏洢M冕摠歜蓬1拖螬L鑮晪韝妠瑐鳻癖 +鈉那*坘樟阺廢 >VA|瑐鳻癖 +鈉那*垙U n]癖 +鈉那*垙U >VA|瑐鳻癖 +鈉那*垷`D琪*贬恲弖 ~:坣R隩焒稸栈wl 侁榋`藆Tmυ斐e鬛Q秛れX\Qг;o抍*F3埱54鎄;㈱7誚I嵐qT滵匼Khh1鏪g#衎4辏8玆⿱c/g当燚q7@P産瓡 +Ur鼉Gx壤C壝渭_洨朏睻瓲S=)4湥貛;EeKD禗cW: 匓*増T羘隥]Xi鈷hb臖0 U刡>4幩(FA:Q隦墪H'苗凧垘5澨LM P使$栒l揨vāq帛广W訳-NSjr甤m=姨\猽f:NW壣篽<$^rI孑(芣嶲:QL囝e咯89妑xw4w鵕鄘JT満圢_F囮鑉裕祵U'りJQ轣喗礽oQ蠤{剌4笽Fck2圃隶2eo;X?汁嵃唗>曊F訲q^U爞礯!畁蒤1眖7?}2 犏W谈5前6鋳)'卄.m產錜尢5)W龅d^隈敮;穡鵄{,渵熓D賍﹩x/4'锶NL(筳▍ )羷J葼DH ,叉抧朊鐌m傏w}uT醥\窬0=酐遜.V麀0Bw{蓊挫3龅坶+卉铖N'勞=4鹝鄭+粙}]]1[櫬W\15w牀 螻儋k璝B荝计襏泗 =俙 磆:Y_:碈q;斁軳茳Df tヰ 銐焒県g<筲0疈&勬<8R鍹?A0樞?$捋艮.拋椷昔咀灶挽_]崸Xu4芭燴M刈碗蛑]褪瑀鏹曠bb隄 %Fj臓很cd餮5熄4Jf6L颸獯67矌J镽U誣_+ +鑱鶅岎隰3+徆樲筣隆樲冡]填K鰵G郴邢[気塨6宯榊獱劜賛+, +1犹儈禠飈灘 +7浍z.KN XrT镩揜譽&x]嗂辎IN氶2蚹W\ r_ 騪9^岏S銙罫9㑇聘腵6Mq蠴苝示GNQ悱冲-JL椧直氻!溏鋦护UU7漭nc釜靨覸9e<%y錃9#4UQ㭎f鞆龏wE纊C綅擔斱敨鯇k$甤訣胏i钣M鷞M琸惇5揎4雙炮皗搬~莠t袰 徽t燁 愹v=Ga蠼Q跼A 0橉){庯亞h爑嘬m?d進斤D郳喷遖蝊5骕穢4琨}飾v弑踇&}伙讓5_鮎ww唆k 845鱷S俊煈>0;糰豴爰晳菽莕逽h晔緊8赈甤符箢;C_]袤Pa.*詤4 筺靜;氘"/FWvZ+-Ks-V臡扼4 >狻)t ]啰杤зm昐礐<刂边蒧 +|2S鶻n枬-P&窬n亂+0)嗖S`Z礗UjJyA曜U3Ui$* 9轱Qc蟈Ih.I/_+\暇杜M﹌璼_达.噀幟鮫%1bu觥劺嬐Uu圶鸆ぎ個娰觰坈社8=R瘒芰鏟wl槆D:ko晚;W鉘彍攀/彪歼2虝狎8鼉丘+钧匣TеJ?+6鯼<羄聟<I|7偨++鉟]倪C m洷8彴Y<?仰6颮摃蔏l#鮔矎+Qn撚VzwXA淦k穾丞#w槿9@y嚬d^[輭C椶癸F畲q\{瞟扄h暂3飘1#"+Q廼[2R8V-O5\*迨臿蕄M磈=3桄K 〨悕c+1j~軴 ?$w3X讣:*陫mR~l宬W8]肕%鴙酥荳6{鲙辯+^y鏬钦+簑廤鼒Wl /湜颸+猾I篣N#W& j.v9$莲强=C珟F㈥: 匜摶赫骈Z儳¥j^赫陂奁N┉迂趇覸嫥≌8嶃-樴猼%}棻貮J褾>桫盺9<,ㄩprNGh憿欐JyFY&覭颺%'$'1 砸货"'n懫釅R姿靝聚 UQ郸.煉侁t:}爰櫨&pI霍捖撏U*鑤S捁.)蹰cI:旫ksI鹗I^q睦淜)_$~檾䲡G#畇蹎z”╢;螞鉐嬛v+妠歸t扭I爎n卟4齢鱰"幆悢m'D曗Li=廷絀mLQ趞蹲輒{藷c央*堠t樋謈綞_瘽骟n绺U趕9畻}OJn1絩簊9i*蔿+%>謯9H懱"I\奻%*S -鑱X1b58J-G鈕K F-カ鵔鈺孶┕u朲[V猯匧Uq<蠞k鴀赨m:垷>9渍?@3臫锋NC屙)蕑m撰Qr猻(hP璅j誋q<犣a]腽扉彾=孥W瓌!v唱<=}館婧肾促U琉|衇򶆼g挫*鲷-Nh苷嚇>X蘺檭翆 +73[,>*9o蛿蒈セJ焓揕8劲,駼*骝訕PjF 0C袷縹躜矾熆|簏遄焳V洤;O燑鶾y夏鱺蜎圩/a罐紌顸僮4Z蟑;e秊獽羦;ユ=鑤砏 t刎X 3a轈懩鉡J>!K煎繌P镼瘅庍7^Vk鳙菘痠髡S锬霖Oタ泐~燹夗~郭秉`寇甲蒿n哜%狨涹/<躜匐匡~]?;緕鮞鲹/谊q鶝W8>/兀/~炕蚈w蘯黭c  =o&*詪9犑畴!(c'越@7魥6剕!h 肤$⺋鴾邶釞,焒/▄瀡焪j{lV&脷蝯p唶O鞝7'1瑳頣傍鏵e"熇靝-$磙k; 噚a|m撯专烆溑ê郵/挹臶'O艹V) |b迌 消5}]p靎贩3寯/晊[赪鴝X鹇瀘}Px徇鈛寯殯僜.橚虖羻sX牜+??蒃攰馏ㄉ;嵸i> X柭门EV殈}E4鹽酳z瘏肱貪Sa`缞迂隄謅c潎Yb.vo犼c.bvOc淥0意h调d緹眝2登!龛 q.!<臉 嬏橋3媢鴢O`桨W柕)囥 d`鍞 +噾籽qOo1A^崮rnNq.X$銂熰2@缌8Z弜(壳W馪t4L厰@钼芗巄7鄔>&嘢猡4"IO咍懦(醏裍呰滙 t趆v7#銈摅捠B覔=(挼e({61盐{8vPQ躡栜 +朻&砭擺yI摿厰+")瑑&傉匒縢怄霡壭"vzr{/3$鄬酋1 伖=癳 +焔^n +18幸5`8v愮轑8_+;赔襽ワ兖qa揍4<@梇瑆'= X砟鎙Wf鐻yV# 鈖立h:籝: *猒 J鲚柙5悞:.亘歱沺o癋Y砤昷锉;xZvh猜g癉$SpZ'鹪 |慜纳h燄8枮)4>鰀饦鼊鰯* `矩0╯X.粈彜f馊<嗓 dR埃=>拝3骽芆`蹍肱剕&桶&wO藵灡姳(bq杗v(快a8Z燭p@餕z疖[0偢qg彈悱膦q' +減+镓褡`N (q!餑J畝ur!NF槔菃柩vg鍺鱞T/D嫦3坟|+|粝g嚫纋A哓6察阔=訳\咁*gd&*稹┮螠)榴3a綳l'実_dA~蘠-1pW,段岔+>■8迅廸箠殲/賯76h軌!ˋMBkV6 驄;L嫋佉椓櫏\縋8葤J(]茗侓,茱匩83林狼l<淘=堌b鯓l儩潶 BR慤'//*p|\-胾醞Q`,;拟洧 祉孲AB噺1摀yS <苹'S頿點预眖?輢"8@殮4汔L 榎鎶 +鑗j撏3utEQeI!汇准蒰卩*冺銨P~V侔(虀低, +呫果虊霼數`.郖 =]01X媢4摑@Al~殬 幁1E葁r糂软h枢S乚P96;cvG;个^皒W3%垖_婉p?栝@靔0]>7e婟O囒y'/ + +v<蔐鱾h仏R弿鳔(徸旕熣/靱鲭Wo爓縵H隉W(芔"飊熃7療~z鲹俞4焇浸&緱鮴椟_晋沩嘷,_`2熆;齯:咞珪搋狑黽$罴4~鲹燁?j憧|_攺Ca L`W<擿塴濊z +鉸9嬂YX# eb?鐮A\职煹栉抲莍;>柮甾s噋Lu忋(媋N飕庐仜徼苏吏擅覶f7~4v:X<> jD dJ\%圊 -"R乭鈫謩[鲆f9N乞楥;3l膵ヂ.-XX#l`胉租櫋-仺梐縡↘喆$宰4O眹 w蛐竁远 lc囩GYm!, 笔跋)詈娎颼G鈉鋜P贡;rW瞵状縬4牕頇盍t=p7G}邆)鑔K茸 刦鄗牄'S{J#峷8q罫罰~-鮂纭嘝翕Z貀(q;(`P滻J&儠吼DbYpU,瀰1愒?増漓N)=a新礀-8 *咝/g绢仕q嬃%aS裀4荅_驍 <哈0Q/纂邖3$i詘c}儥a觍9=7 )垜攬4D馤胄涶 O2 N烛!糵覒.用蔜i[cVU斥呎f毟赵}=卣L鴨灳н7韟貝碖]ァ=c<椡粔撊*渻. bIdyO-!"Zk按 镔"w]v蔭<尪*47K監6z5盓ly]郲;K䥺c(S艃薚翄‖bx^p'9樤~! .皹油A34繻`D+曩X"餼睝e,怾糰齢& 詃√濚~ 擟働i^E婹>觱%g:筯O0礸产ユ!跴.淇L錡E蕿'q嵭i穏籷慿啻禗\_`K呁脴v>3k摼l#緿tCp9<侸惮剈坎愉Y:񨿋r[92磚$礜4 !筳镴y拰,"瞼跔澇9n雂.璛p 7輕N: n^^眼揹邿¥銌f3! v t-9蕋 NrO.n&颂 +,凥C5岰.躻,<鬜<4ハ 敛幭, 1KO> +Mbκ#泭CUFSP&z]`b~[鶲遂偓7q2剝dk頦﹊)X!"蔽;钙皥鳸+y:俽鵷 醃駊煵[{潝寞-?nH& 瀂损=px!=Dn0/N(葝j煒JBVQ)OKE砬Ay荺绥外髏8友寇Ljx7?嫞妨3煀9L|xG+(:i籨閷9(膃チ槾#軼;B卟$Y命榣綃x簍1Zj輖G踎逘Q鑲骼 - 烧`篁j`+閝=5菡l嚶雂b厡HK晣柶鬽r!爚箁4` く醊 +R)%r;1FxFw9n 焹 1Z苇竡賢刵\鹎r议跾3筐筶 钂U挻2G仩囂;q<聝釕\说d蜍vNR0;O8dof彍繢!l蔚\w赜杫0dRr(鑎謊桫愉N繞齾氀"hC庹2愪Y,2覱*o詡2*乥細$紒oyS$荮襼AM畱忺殩`蛣; E╆ǘ7KM肻3CD)獫mシ8yㄩ鬊d★矕朼棼萰號.o袖W攰揣!:膓jIEY罧  兣 +蘝,,"$%+J泞鲪俼((@$)舮8o湺V"A螉杯l哑p恩T0w\/$鯈C;助湩c\, ,:攄`梵Q/7璽x7+硨!廼醆Y%K kAW,s鰡陝c 韦as3熔*{~1+<瞭G0{f5 竩z偤鈆扨4䦛)L牫瘴 /灤#妹篧嫞還<洢`]1x煤$_vT|U1S姠涄偰瞉錒<躣棠0j褬c|> 3 C沊堑浅貖i.v焺fD歺rLw舗潸Ps#m&现&僅\鄉杺H商f2e<~g虰会i禐v\1債5>犘*!捳虄%J尶 躢坻vI紫:%%摳:蘧gH乏@f90DT寣葤B)旰亳@椏q尰袓 浂馱@7e0\b1 ^/y7悺炃H婹zu噽嚴麛悠肪海c x9{\葊;熍A 帞]4QCK!8恢泵,珌Sb鹴1C鋞`8S>(Gu&O|nj:鈢"9绮 , ;庻螭s氣q-um墝@月缁$(X橢(貰 н殷F^犤曖cETm惇:GF騰軣 9P^聺鐠Z幄Z8 :雹鏤+╆袀萬HAE~蟭@庠釄;a{04 NAO #蓂丕揳0)' +=S别 軾增<朖C 學+顐楉{莛斘桖6#:"屍鐎W}Q-哰k<`K *D -$F]A䴓e>除bC#/U{${煚5-褧1l 胊対襎+渞凯;髖N渁虂>鳳L髞练d 0.蘥謱Sv49黹昴皜 ' L7蝥(9C?3 ~*洗钤苢批1畠 -熥阙瀧##n(鴤蠡)5鶹愀櫙纑c荈,>AN孩鰡)G_!.'cJe湋瀾2:<盀~煌鑗ht嘟娐N;塈郈斯秶M嬌64|約 "儜簩羿j9豶0椪Rh蟠6笡綀c<<"] +醿┭>哊*≧<\ ;`q5HdER.,N%:坒o紁'沯綂與閎d{檈噞韺篎A穴囁%;u-%vNH 彄1蒗Zつ' 4Aン%碨b 锐梏_ )X3晗|H2鶒觠谨7,*z祘誡1蛎3?釭\葘q堟糎介@媪G豓u V嚔m赤-/跐秸2|馑l4V蟲'ichmAx恸亼7毝eh+耾(繖E祥m恶酵G蜨)\静剞f$咩鲠B&m=.嫛鼆g涳楥f畽<亞胐e;CYP瀕k隠聛鰡6Y蓊`U犗鰡:y2a(笎f蠅輅怏倯伡爹袳@鞠n>欙詛%7獏膂 偠z偠栙蹋s冃UK9Vh●崹E燭呄=婅諭{闔91篎诽排笯h鍱隴鋫檍墟Dul甬c1;錏迷倖 +蒸N}E#2`m葦鷛`D禂%苝E'c*徱"庚懤硼n b邪#y[塿 ゜晫賒'B?0u翊 朄 灖絧 睆亘"潄[S豿!菉 諤m榵\5-@<.T5雕 2HX/Os%4鮛曝Z!(櫃戼祠钡:c漠熒鴫虶?6琈M追廎^(塧骓be6e録jG)溱擉л<C榳8[}x8濩9o阌橫 耢伱 耩mV5挠7勨緳鴽\w堹躿 `lK靶K陳d賵愗攨#垄#6矗戠#"ぷ0蔂S `攎錮 ZN喛d絟薼險謋P楴Rp隙f83脡睷:ヶ磯]蔎y旉科塽惄A; 獳癥聙 6+╨坳@i凒4噘l-7~ 3o&{剞禪"踲 +>[鲺魄:鹼8噽荟 2=4spW螹縂唂g蓘,⺶踑3郬舷}糋:[;犿啻0簝遦励n岎鄝信o)oz榮颰鹧 9廓7潣*;鸃鬣<宛飉鏺湼e>py秅/t弲斁v{>`鼆vCD`H;攘![a;1~繌j CddH簇 C坒L鲨;c秩f樔S酵,wCd]糏灈3熪乳隑V远d洐Ul鋁m啪<-(Q纣 礆=u2d靭埫E:0-頙@艹移棠\5E饯G熽%扯囏">4YryFu e(!駒`祌 +v2厶K7緅3 +DM#b:儻A|q虥滆琜愣9b衦O舠談{钳踽怦謢葃x>t鯦1餼I鸴z劙鱷C颀桍鼞26咍悅丠3a 0拰}蟇浉?終f瀿隁0蟣wK鳠娌1 膮k,T5鞰朌\*[@KQTП)癉垍嚴铀膴'庥C坚磽@h又厴$Ks`0媠刑硝睦0]擁鷌9$d X枢eRw榪塂枏z篼4螴6螘瀵麟腓}繵宴苽8b餜 偠蟒媸乾钢?[))0守餾; 吣≒j\樲桃爯熻炧蒜sj>X?M,蛄)0-盅'Y5$别Dx行 乙 /峤 跛9N婢}鵵豃m踓气$3呚@'儝 #v' +{Zcづ1J痛}氀跠"嗹oB痪X 鄶唞f俋 H凄t哭譹 +齀焑揺寢2\hX貫調眖鎧R滈 躇╱B$螅/e洎l1怆鶏頁祣#滨F=恁鶀雇 +萨=6=m*盗l鷤A廬㖞縇錐W謔=t猞翚滊鋸灀鋡袍h[偦8岈F<_"&趇60甁E [G#妷夝`袏TRr漢EC沪" d丬脄姳+5h3#+9BA\傩V(q'羂凌訨G 鈉瀺臩0u荶 N骎!#=猢旰譑T)笯T)"缜ggM膨坎:3岻";i齁 铸0.-笇紞迉ta +v 邿c磧RLx 擩m忸觟 垾3侲H鶋獓t槞C7r=Oa偂H{酪%bpG&夋郂AX[媢V6塾毟斈Q0.l\Z,!Uズ 硰^2jk1塘6笾雎u 靍还3鼧 揾Nt;婼矎礎:⑧銤ぉ+耘;嘌d1{2us錺 )滺鉲lGKw"3b鞆G涎wK#荪婃`|嗣n瀪烈0 娼楧ayLYn錊N2b+F6a:畗m福"鲛QS:H諿1u枝 +S䴓穡xb*$烨n0貚獸% >E\W犹6態檯}YT蕶橅滓 <0 毰喎奌E謩 +< +K>v鶋a預i<屷\w#-O剘Q烙牍P,C9v荨b裟Y3淕3qK_ru灹担vG鰺.倮骡D";艫<鋐笶+p葹o闤込煘enOo嘟 ;疞f:幰⑦嘠怍{9姰MZe`OT s熔v 冫2(齓{笮広J璇+:佐#a3焙L=z3礥[壿w助獮D;愋YNA枯盔K嬳g樍2璄蛣凮鄪魌︱AM=虔?|U焩莘j鼘雫o'Y垩Nd裞暵h|X間E@nk`礑蚙泿厲耡/M6盂3"$╜C,劺9"3曷垏a}0+卢"`嗻E躽狁酇卩g 哑"蔲7瀈 ベXh鱔炓ZV貌=詯T汈氰廢搼膁q kロ@獣欩=-Nl警 闶5藞E#YAm淓闐T让(|-u,薃B爃0甎W{窦怸Xu因V竼!帄亘愱RB>0z$+h櫯惆J%Q`襃eP疋釞臥K X沶臵q"6胜Ds\{払椞Q3濠eLj訮t-伮豵S睿6J'O>泩&$A梈=貕4方J(g慶挕-3桿3)%Y'=u詠I7&デN4P9.x厤'4镛SrZ祥]真皏x稨4(LP>+\1, +AH燔F9vi纛3&*L~f椔殀鏈`瑫D机/a3K#:"f S炟=>XT+󊕭斢<=8佄o<緎飗C,4仜&R!Yr懝 +獴3 rZ媧'$,婻7皺X埋鼊侜,銠LM绣 呋诬}尿氎"鯂枛+%#孍-齬1襹 6a)\g}0Ξ脞栽Z珐25ALwn?S^ 宧F#綡﹡B齭!骸W馀!U襈虉μ⑹3#飃f砚瞘X環b@*H7.a'J 駁*j3DG4A蕀2禛5怳膇︹勪; Uv┼+&獢遰帪蟥嬨TM怫惫Z -D2驢抣Λv 绶蓪-c69嶈o5>9箤0S(h払跳!甡Xh= 6#& -Nm珔龒邿鈔P饟邩粷[鎜]{)Yk篙謚 缷懇嗛m +BF鉿O&|傝秚, 貰l$'ひTE*ql2611 夋IU仓,犘宣濋檍屧+f豠f艋vIo|k朒! %烂裎癈槳@;$D疊*AP旝P 嚨儐厽'n"幕YN6Vb懓歞.輋廓`!v幣覎鶰刢.1%:絒j纔杧6覙7↗Et媸" U潬:eD%褊#匫寍瘛塉碵﨏-Y2[R斳丰◢闛8欮訽y獮i屗3瀉厈镜絊v|` 躼擔F掇擇咢鑾B/G譅蜺//钧鈝愤>{s舙/v棻戟]呏薴3q6$n'v$暡+ON?鞵憸呾轾`3kXs{"9?&Kr炚X憸什|鯜:+掋{e犷 E*捰餪牅!zcEr 垒h,齟菉2fΛ+19 f徭,I>蓂rc*z_圽陈}W陱驣Y9a[ ]8]r韁 鲄5Qj躭阾闖rM 峑á4迤鋞d0乁X\F疌[w\c>b[-8熬8/ 鈪〤廵臿 +鈲蚈溈Rx+H{b t3绛鈪c輖蛂(瞂次笢鹊K\j弃阋@剃厖R6陱h轤橓b,D蝦|^濌恔z8摵=.!党輨覥H党倌溛 f鳼0L \7缳9fh汦+慩T,间5p歛&8.PM 醓鉭襾趮v挐<3麷6-(〤]%6珻巇賢幸{嘤M捔伱O<鈀刦Y噌鳤}拝b[廫紓鑤裏螧黳ト?Bk#D镠UE鴠遮圷D,),"|]=4S专≦ W翆=$紾u瓖榵!C磶4荃8b螏EJ灷GL4琧8E葶HR{屢捼泗F#N澽0fh+M庤拚d襐乎裳5\懡茝@7!畑成莅補G?嵏&G毝N(3a斯彼罼腄/L嬸Lw揿r%銟83]推3}#-0&脩菀c輚9"+. 尮 递錒后垷扥,蔷藨):l!饡鱟w"q賋g69沒巹\ィP蠺叶.4Kf`^P劣閌苺忚⻊~S鳠:粈祊+閁3[;6#淵t >廾H|諵鍀c竾JrJ鋐窯e}倨D>箅l石K悔剓 癦+V] 鱄6嬡 +%塾厈0l捦犌p$6 -嫸顗郳pM栴梳殢,B髴箵%苊)搄鯐pフL徜0h禼竾橦瑂傘m$鉧鬈D#荏纮鳦=101ダ勣 +L;藕T3)|z毌v焌;5S钨F潺Nw卯愁佗%qI蓕H滅n;腆zT岀揃B楇Иid% 輚>丫嚇/Y 揼揼bq&繺)#3恆=槼晈B* (年%錬屠磒W0﹎;$荴櫊夔 +d籦 +b'榆妬v肣, 郮ㄩ郂倮婢u赖礧鶱r k榈襒鸍p微3!捲寕鱲e)訹i鼪篧p韶K&1挾鱗3W!z杣臜G箺(Ej觵兡菕$>,/7昫z茉砎nn瘛S媔煅n僁qG藶馕DゐN楚弟丏咰9_溚塂`銱蜌峋茼剉%k叫趹唬H竏8 +樳5b▋h;.山X亾栚[H3z櫤钒詧嫶宠Un毦葋 孨傇*F.'3M婓胖2浜R+ .W鳎泑bhl晸Z 杤nzO圧O攚h{(墳1蓮凹剀嬇xbuK炨崷撓餹湽弢,癮潳\舦A尷0睕66旀鯞 #E媔0(斂揔3僒畬7鑏ng湛[嘄[5T殚蔁X8乪れ,滰$樀%3玼z)饿挙F炶蚏OVA拫眛輣垊7澶瞻VZ詇I Wc*^嶛譐↑噩WRΧ&O蝹m嬯O@,wU 藑帅ll9_,&GUWQlN%s貕铀GX拈R:}yL廼胠>g6B8嫺NY; $a懳蛯.库母丷O:嫫嗃vYEi觢' 7穎兾dn斨卷鯢/迗嫻瑋?L"吅~sqw:瀑憧c;Jq堞韚琏瑐毰Z恟TK⒙苇琝W懌*k觼i摆畳樕竧l僝2掁v椤Y'n颴儶t镼L +懩b埚鑉X岲2敚bS>W Df:u q'+搾<1HEsi-艓xJB灬V+SL薫夔瑉Q崸<拦y鑅Y脒hU箕茛R6D!絡尃1uhc掅祳&36;\\a鲃蝎}貂F黜-*3>琱O0+J6薉y鯯隈漥甅寲湚骢k椥i頬│覣坭謋裍C嬮龄l堿莅+揔沴'楮鹑乄r諸,#僪溻t[:a 1宗穜:J$ )G}灂彸〨脩n銎0木2$拲秦廩e#╄佸 纲4Ql媏,塈惿b蟁員锋2霯筍椹C沥譜:6騽苀w糇R=蓫s耝 +旜012Y觕槹3vaM =C;壶"勪C氙k总鸯V怶瞖壯喧LY_<,K?Ov臔 ̄邙m騡种袗胨掔榤譹!缢&<堨豚"瘮餷 饰]k]C'8﹖ń沦Y6┌鏔谉嗺Tk[B6*㘎+<矛K鴊_窮DWn8么 m鰴,蘁{F榧局UF1p+麍%8籍(性"鹗鐁瘶|痢EL炃fg2FRy柰>0i}祁/yANe秢饯;寄]$氊甶h(塙(5R靎Y瓸馛Y痶4茒` ](枎軵,熛Y:疼敌史R 堤脾k墢lmKLg枡覲..q捕芢dvce耗K)荒9$6;韵它xl洅各昻)壸uP葧充噩'槬L瓸槬P_秔b涘宠'&9^舔t籶c柧C崆A^#G羅魠e痠 e/Ee粇鏍 8)尊,f较A# +受P|tP帆输茀:=t(ê駢隞糵統銔N蒉1;CA语噩;~/粵M摗b颼裭楟,ⅰ嗮`K u垞禮8[kC鋖 e;[p互蒨H骊蛢菀d癬s蹊dUM糫:啸磚4Z厣縍K;欘k 頷岛郕╋3粡d呗Pd<9"谮渖W1T4>嵕z駙lS/䲣T兘鳙襞v3T撓~牎}m直OΑ鰙鯠 e講5蛳砛鸠mw萵埂罄嗳霙鬾劳憋0z 界r粆绵? >榆9bp祅鳑<礐銑7?辟Ec黊虄wz呐un眄 僛|肝鄉2|b麢啅 嬘 譾 D敐"#嶔a+6凪z氻-征釟砻覩{#厍壠S芮櫘p.LU楬貼宦菌犣噚芾B噚&聛"胂+ⅲ廩"(:撊芒洅n 抮 撒Bv堢6⒐D{A>膵`7oC紌蠤哖w諽3Ui埻'莳鑟+d`戌(AV聉麗繮靼>d繫寊pT脖﹣廇" 衏M=Ve碕篹碿踲P~7ㄍh夣P+&]忯m#魫Ol讧闱zC稢7嵍r幒bt鬣B=.k 痬WB+R6:/zH/Hi)=n羧舁浩 xh韻兢匁踲A 亮呎c 咦圦荇 寝7#秤n繲n胡Hfv 瘟ヘc@==倀ph赜:`W7]5;`3Dv鹪融诳;鄎юx=@w鰛B技7窟惠3\zp(雖G#一1寪裢順K~/%^籤<.礷>hv/ +條钅,}%盛/s刭Ck掼%P)9`抳岋h-Y貎) + l噰X@*朤_^3P覩Θ_Eu柾撀F`鲫耡捴$AV!|P^tR d耰q-%Z9)2M捇:剶O1礼F}Lt!Hy>X9.蟜恆漜則軤>:铘f@v牁>;]D蹌媨毾卞翊袅棼35d岪雀膚羄GR忖侴睫3箥F 虁d﹠f@*i洼沌nhOJ*媆╆O'姟0`锽宝 Y%}2∠H洯迸$g偰]j枯7g绪He迟赂&脜唘;?\輻z#c朜jh篙d}穔1z眀C忈蹴~ 卓綡:#7>闭9c黊邆衕唬蚦弎挍鼲嘫+4吆限埚蕭\Wz 8*53齅l2,H瞝0M褳f EA摞Y;2隩(炈f嫝e蛯8=YU檻鹵淼*苳x兵熺飓潛蝐7 /稜霺z%罅弲Ly駘.D=篕=<3忀W作憺攵^堻導z?lV嬲Z禚y{甲饯3聨改64:~们?靽鲓?}屌~sE峹鲛 q,鳆醣y-z盚忀I㈢I2钄忀慏U+o遻[鏢 栩s{晾O殲萳yWf33珄妅頶T N1尸蜪eGJ亪汬v敩睅碃仹劎鍃セ焬朮唰D銨b埑:冪(Cl苑 頗_8薉;5↓xR蠯ヽl)~RMl℡羍($鉖/ j改r斔堺x┗羍7砧u』"ㄞ孬軰:W7C =沯扆u- +裙x*-惻 乚}A +兯新@sX_ qp +衵鮵瘭 窱罡5 虇挰Wj敦播8穫ャ泴C伥欂4 鰠貔眜+ 湿-泫W菔斕3儠< B砡x^剜W聥 )价噤謠$x税諅 涺蜇隡<~8-!j'.<铤鑶8&榾!0稍 r煺,0彆QwA庍I愩骼}蝢豾8婣9g]睄嵹\i45p耱qn趇e`M+$襇搗P AOJS湮]-螪-"&E銈鸤]⑥/猳:栊 +纸" +鏑*儥踬絈籼7N$N3Y銀孠3灀枆?蘈;}颊缢X" wP1 h wX$3鬤蛘5蚬X7 +婆齟L鸺顢笖 R緊嬜&$B*絰.h鯠5烶^Q'Ot勳Kl-(险\燣Y(8鬁t4砈卯/d羺K颣[?4↓4七=v珁跐畡-r蛊 皍`6靮y朝IO0鞡鯝馫橳 蕣臥洺丈啁鱔惣6鐝5.藼`wsJT澽>\泍K蜙6嵼!睈蜭S╂$颔秈?>y擺挘霠檴瓎.N%丂揽僣驴郓禌燥禴`Lv-p垒/msg啥aq4殅鞑嫙煒謔賿nwnW舯B枊睻Q砧+V鸦髖so脔G +8Y笃Yr]藺撩讴2g ?B釴Cy鳧憜hN<9忲作%嗖鴛((B`x跿q唅嬺抖(Pg+葈 片騹埩(!A觀b馍挝e劖3-\$-+匴燎e+詢|| 艟lHfBB8聢;徃篟>v藧R宋*l0偰虬 繎t4t纥/B 濦靘跸,Tw掤涪譬H 2s臹蔡J0p+K横z@7JB`bm(郱M戕nkZ`檧<|L搠錩蓈@攙 ,`Fy撤笊r6鎈 +,C霪?,挠,,5,pU靎5@O`粈 +嘘秓E墾噋8Ol麂库rf日s+む囨s?莼纰(54悕&璲銕t惞"n"菋X`䅟9<7玵拫纛 +<念 $溬B +巣BvM偎DBL!=<毷(鼈7麢>3}q~f`蠠緾a~驺-攵暤茵 诛.衞-@.帓J傞襕d2靽4鑐/讆i盩革;LB婌P佡/穞AB瞤蓥垷83犕$;1R禷k霡V杏0t敢q狴%*雽紃8蘬0酲藧 贩l嫖蕲佻秼蕎C +`n蘼虝 eK>Q2%纣艠s孩yA疁/ r侙Co<蜞 6|2m;節&澽:打-‖6楝6m塥賑麉4桁鬏蝁n诐寣I䦛航瀂癐3訟#). 宨鏧5盁#R麫釣 @.3嚥褌蟣x3H<.%{O(濋慬齌 \N0 奉縛, :传}犤qh貑虡!礲喙乯-諠X薧]子敎p鶠幃犄淳豦q4妥-}胄" $ ,nh 8W刼詒;7H羃龥H06d筇Ig &馲t蕎鯡}(!澦cJ YE2e顟檴 Z0s:95l飓9誅*疼萃s賈怸奧斩M>蓈醐WQm)韷v梒Di馱{X2镂;(, `'T6惿畵1HR蹕;`~媀D0!-瓔+f`hw'妏\筡┕墕(-o8伻qt啧|+P竑檈oFD醶髒憱鯱4錑奰F摾Q #{E\:禽琒#+樴猡騣=\8N苖釁憈摰5 4>m懧l凞康C竾m杨G頳囉英衿e拒|_ 0巌滑翑E蠳m襼姙E≒&凇=鮏'Cー,督葧N 窙~蠋M彭dP[Q=he)袨a*g>n瞊5#毄+翕<茸`+埚 ^詡=<諉苇Vb |謶=纷 +E86 1{gN埓(薏韎c憏縚餘媷盵/TaO祗Yen苬懗 Kn慽f嘹lE铫0城5熃Sfd烊)W礇.8A,穑^g裂鱟搤褻l"卽贴諽z塄\&4+y7烣嵛瀧 +鞈嘲 EAlW蝬4M{X堩2[鱉泳窻糫7陌蕦|媇qx-,c_蝦笲谸/筜昲檨2焃D碲 1亃+ 惮:皼卋晹翳佧 瀁|h盁肨玭浬枴jC*蚕v攬"R讻c^軛盢凜 +-儯杋[毖綦叢叻x闉&)騉Yp=*囓y 3_-寙lMc漭3侓3佣閻*E]H冻邃瞟袃"*礰瓤BT ]学冻躌旱洓&郸Nl 篈籬471tU k锣h: 触鋳鈾惤薈英%U搧r啷#鞿Z鎥得埁忀\3 ^咼5盳W炐.e'~擨(~遭玗1z儗诓花捨4迈暅暲纜桶汦乧9妀nT!︳*J祍S怴5赐JzZㄛ=Q糕>婽辷嵁乃'E梓芴秱5+酬0f胸_r騊遰釢濧ldqi 'C笚p膨♀e箨 囂顓|耗F?Z瓲F葽鍥醌歔2釢S?ad5L粱M耇s駘2摼躢嵐C@暣兀圿D膵屯(妎潺刨/mM縟蝭q葂儥襒c@1祤beJ*y璒笹!]晏貴矨士H怼窗<峣X{&0$l/LX  V磪*3澃j祧he忲碔笍zV/ 3$E束憰Yo寣 穥Z=IS=p[{=2;扜揆烦k⒗I啕爡蛅hpo茕Flb竪':^摕m癠睾貴f璨E_菪俺鼨毳蟧q[鬗搢s靈憼藋,:sM襌凈{獲笴曓靸Y=FDTM傩v垏**O蠳b蕔曬EY*l0%唚嶄Rヅ]CD瓀禥俽pk页k墖缯姀} +Z蹠咱蔆_Jz铏#:樾8弣穥)襩 F鄭a|g~;荘~蟄d+赃壛bN纐s0o9E+wn8 VY '韤銌 3誆rCUC┬b倓U礒奒D玅搯秵w!yZAd冤夌S紉2W寳虸'%^P=礈錒B鈯甬>]鲈*飼h21朏菧=T{|媽銣餭鯓酢$罰4%亝境渍7m鹘:^|\贯JXB4lx 雀+*栄TC壅:*: +h矫Hj: z$,爚峙!朑*硛鄡c)@ 鍮昷 +0篨糥f2-圥/5绌灾慧赡悔饨Y4c揤;e嬱E觭朝 " 垬坯}!霦!矋猒要弁v崺糍剞4skE 祦* 夷垾#oKL勪煟奫A釩I猗H隺U瑲 Fy絥鷧⿰6簷g簷婤4緳o啌#珫鳟|Mg蘚箕誳$t>(3颕紮c低*8瘵嶴":熥玶n瀟ZL贽;,锺 q芥_(郚1寖溅Mb鶋~臭c=贸閚业e娼GQ俙d?鰋Ev蓳v+簋譪3鱹 柠cT﹒伨匁偻'瘿N踑蟝涎'Z\j+狔L齦h5- q糫6泞wH [洟庶=!棠)Fl7" 漜触麭 姶瓪W'喗0A憍徯罊蛒3翱=7 蔵#钿nv%2l呾太Tq% 梠pg旹{i鯌>> +Z0[ +NS$ 辛搆璸浯攺"T鹛U脟洖56x +^<% +邝蜛%_甫cTQ黐HH.$! +W)焍汮霥T~@AEYn,郣戾R鰓裮幍Xqt檓)zWㄥ[,4 +t姳*婉[弁1"в祊:𚄫未嚪mH頜Js癡V{阺@癋狸瘴4填*讔`3"6长蛉貐 +;fQ?勫#枦6'EgPsJ#xX&w虰\?5#U鋘X3繘 逽N胉烗>$;*$G'C<暪;a檽,賫V-$jUl\玙X菍/\聩蕧濺区E#脘if臷揆]啖莽T礡Ρ胮渃$'淦駣9嵌C _溱)Y2BeK*n}"q1逾 +9q鸣拦es[hc嗞E鍇4 塘 X.櫿 +;翛)k赀諥褒*2\a& 1/v*軇鉉@庪ф +Q甀o..UK Oq9玊晳 6(`H掣=餞瞠琚$x-滞)9T0?sBO)ogV鯎,u`帘X &'=蟚E./3$&m*;BNX悻潅#dx*懼vx馯H 陽s檿+,芷9 Sㄗr8i椩[絧.黇f%圢5紖趒e勅舦Caˋ[ N ~薔镥阽b俄T誈,锥{魂鄷s 嚉霤垬觇>1岯@ N:係A2!鐘逭莤_苑パH蝸vU葱幸_5*/{颬Ho'^] ~溬苣欞@峋o忦Et]古Ⅺc埈聋歔5*能狣S藝86f{p裣繀禥厏N+蛣絪I)&紼+廎銼 g∪]f顽VX-胸X倿豐 V敭谸词wm騷o.;烃踍龇修兣x.趧x'礂-@<6嵩e0慴沌%/陌鍏簝寡Y 鋘)雪OJ)we7磇xh畹譃逆y-S闻{悰F陊-\6?柢@氡較?U腹M簫垯i倦ˇ巚疿>T,茈+<瀇悙驥 葎k;\嗸.0埌l"燹篨焸邎莍#$3"%貓j v&燾桍*爈f:羠溝陴楶班at冼Pz1)8 +N+牠洲/蓝 携鄟刲硎-6O.96/凥埙> +欣xaNq-纁;/琩圶2劸_/A!柘趏u倯啫﨎燸y@髨 I佬啢&`q踪Q莉蝁V嘍-^碧es陎a汣9#W匐3:淅濤W,箴舉S 纭0!鬃晞廮3冭CY#ⅠW囼囑J鯔0L.魟﹦P1妰 s臻孹V`臷 +<瞩0- +ya$汨什F_Bu2屜蘵0喅畯唝濸h W咑 Z謚琦炬曟"r榬ZC碩(jW.分0*鮝v*驀俪u 坍區C 龏0F穘|/崜0z.ap菁 叀ФQ渘\稛@QlSz鉳阠閕 秠冖S8德埶魊-:^嫋Z'G%魠WG軞掣翛派峍s桀泶X鑽佚0 侯毐凹闽!貌)徱P#淆蕩l淏_AL}像拪8壚撷齪2 _桔鯗回+韎;h嘭据U珻塵穐浥;**n瓄神嬫紮贡瀍n^躨弅;缝}'激棍?挎=76 g6@"漫俆勼3#2淎O*隥B +qV *B^v 3$蚺46垯袻u|凵CI礨Ml皍!c({儚帼?鵱'偈J飶粩 zb<"涮r?瓼裁!U掵鼼r諎璓Wn孄洴w~攫Eq嵨睙d&缑舿殈鏁 楋"0Iv醂#騚]\\f帺瀷b榤&1,=怟_\氧Q}羚ナL孄|桩.跶映l+宷gh遬E 鯽洋yh襢綤[z蹢鴍圣镼乾陨-愺巃y阃|鬊>噖橂媍E铅 oh穣死J8L姏婵鏼G铅)Wv洞V醸 棛T絃簯;泼d6煊 b`鲿_撯鼬幏0蝯|匃&".刘备z換Z鈱M;悂Jh弋z鍻薓g;Ka*]Py8跹跹Z|~趉彑0铠笠樠鶧f`裻奠厓`睉20忭ca4╘m禊`啹 n渑?5R鯩呲"匇*x&:睬薚茇蒤蛝7%<(掷I⒉x! 4焕莟F苎;棾倮f趘環$}ORNY25贜啠R`骾p$籈bazt炡 V懎u哟覗)UVU#禡8朔颉+ 癐舱'.暜Z贊T 鶐炓 篌2KT6 浒E+"h5/]6*#N袩5韌佴#&鑒 Ck +&Ut轋_瘿#歚犁 +Xxl劋 躺4&蔋w玢馂7赔瞖*籔庰v郔末>咧舊K佨す饱噭J狵,Wy;寓mtz)濵_毛:炭Pc﨏 + 钵魓|&〃睓稀t盭86"<旘kz脯 C敥3烋 6幜眡駂cwD]m&/鄔vvY堪18箽漰8纨 碒靍8躁X@夲3胈荮 +>K8隺炢H浵泯擞,葞諀荩Y廴/躊[x氃葌無 阮晐鳨醘ǒxi咰<_撤q𥲠f^ /LH省;枒栧緓 薼(糑I膦m议诮泡@穱怍u20劝$峃ZK%Or=')┭h"lh0P蓁嬩x0颧D4e;LC8aj蓓峨N[2窱熚fVzio眛 K励墕囈<隱 'C ` Sp +緷鯘踼瞙/毈b紬俸%绫旬蠇w鶇踱G2侥铓鎪]躵E_9o辱o=蓥篜荥8Y!^樝d|劐釒蘬 0殥稺唨ㄎR8 <-煚姠漙R0繒2u惋礠4玤9󥎌q2鎔95\鎌ID* 罜瀰V+:暴忠疴渪杨焉跐綜=毒裏+E+燻颱><緈h?R9臹臗fw.m !:mG巚L划仄W&E璇瘮 3邞庭S{F/抽婾o藊蚥m 餠P7f@歾ur灚稝b孨1"跉=u4囋汉o5踗F娘膰ЯI:波虷DI碛=災髠煦y'娂1(臠3鄾鶱齶g床' 澺樛ィ}+,2&俻㖞w猾妭l!b$j6趄徇⑤.nV0/瞹`帢睜r前跒塲BN墕.z嘍褯旗gA - 缍t&舁-^0艦WS=燣pg崷$5P渖>R T馱籱塁h'-戼櫱` 悪q菑J*蔹瓒佀蹝C甡#h篈/峥1zc'z潅侚.9Hsu蛄韇蛗 d<+3l滾F酜瓉#鰻穜餳= +&蓈鬍擙C<淉 +%亗W俦抐 vt_蕬齟碚铠冕浸騷䁖瘄艔(乪,]+*~賓櫯y 荘鼈贰'eまD#簞R剽 o-FF殬`' .シ&z!aZ炊炡抃殘藦\4驒蛡5%'S;|盚瓷綋F岁鉕6M训3++辆H,Jwl*B曆帅涕亸`+~{nR4M垘沊勶』叇坃猄N塕秤ON=杋覊郎&q旙芩C6b籘迃~笞>溓/&iE騗 菇笺md庼踣緓roi:5髧瘐桥3莻錉@顊}p~訵-H辂阤鉄4K蒃;鸃?桠$Q3☉朓櫴bC9:,O7ua; 1霖侧绝⑤榇7埧鏇A&泥儃瘵摣j彃隗M殹vXvうu礍E\8媈汶盠N略帚蚊胟&3dzM^){旨匽8.窺H音n=m賬鮢来禽摞H/:"-N埤|茻鷭g F\屬枘澀3辮盃a揇S钾l绚蠜v噎<:U$W篍槼『Kn"A!▂Hb,"c二唾垽 _猟衎u('5f5-臾屣砄粣8擠 $嬈瞙mK@蓲9c鏧捉 粽议漫Q堕EL|C赪A 慩WyEU躬bb黰颉潈(=聂酂夐+Búe遱1d)呼蘶*p穭@k懯渽鍾欅鬖l[炆 k運蚗 +d髤*鍆l展阍稀虈$(禬,t诧A$7-▌H酮 wIsl鬀e聽臊ゑK逓]b傽稠{旆⿷杲@D ,澢憷g薔$S4殧蟹!O Uq 蠟`+zζ"K諕р -"群阠偤娰臖k淟雄掅C寮c;鲭梶驕(塬\T Z妽蛻:琈,姛弾f 祴拧 颻C餞P晘H鯸鏰%`灾 籫i伵N?亝狨櫅!$ +X@f踆3擇齸+K `暇| $绊幹HH篻{俐9Ap颢潵:骜"H*"H 揢UI25v9犍,|m鰔斍S陂偮&e哠[逓鴩j迃碤䅟|鼐嬝'並:s穴窢(в硾e軬鵶矼f搛淯++Cき珟1`PH+s劾&鳫 袭`#d咧蛣 oYY簘懟籾坬t %o扰靆N墲●L3佋袵G泌冪t<鎮雴J-)菺8.1顠u藟髪3*+,H懡勂?U暦甜"Tv>\鍑拉t(t━P0驛夀⒃m;Z(揌)魻x鸻pNR型狉g薣rwf郚鑓麃\ Q嶀諣^蚖6MT sE澑贳曘峦諑!阸J① +1屶Z [ i銧甾 D衕4y>熘 眭犸囵蕇杸yuB>鼹呡秀鏕X蘔!瑒W{f耓f挋 /#BM2;蒑`eh@趮G云绔 9揾錵B4%I廋 蘻9苪税玥嘷"CA>?娰t壢 -rs盇E$LH崄旷pcH;渽氩pΑ}嘊葽鎡湛 &齛5桶0哫⒀=V~釭蟕@w1l杊蛧囥毵 噸劫!爕絫娔荲>$L舁壤-劳墑f~t[設荫"戉; +燵2%篍U荮!C磚謤SH善y嗄爊a楮1k3糫厯谯滑 T"趕謤r暆嫬i4 ; &态%t`麐怯`G眪$歯理燯uB;敟6e|Ro拱墡:\峼tzLr錌P1I~S騚KJy"癗2@魷閊钐壞鋪熞)u甉^4憧OXJ嶙蚛繸搰欓F6拠 鬩媎壐62y) +慢J2駕訾9}缊辸缘羂榬 核U傿I<_ ㄚ秮K熝物'4-顶螱榧栾斈菇FWa?( ?w )A諓_2o0抠鵽1q ,蒀'B矅矻遙1#u!嗈蕖嚦熴h瞃a如90I訝v嗀a 8穳儴筎<;珔Fi8#l涼洁,s釶瞻 2觽o.3亙J_轫E釶i2羅騿殝弇!硺滿y"疃':曚Z鍯dVN鴠C 蔉2\E赻嗿SW%auSL>\鉍赑艂违j{i魋U刱澔M1mWN4_L淕/G媱 2厐跰⑻)鎐>U脩9梨彄^f琁嬮倶屶鎳扫翛銅虳pe罻噾s7h穷"禼司H 競谹k鋗x撪蝷嬇鼇+#w)`藠tG+均9ㄌC 匆"L嚣8喓篮度晤Ch'悟x?暄$<朽:+壷稥褯%6⒎蕦L鐶-图Q覌鼇)槞*S嶚AQn嗇$鎡16⑻m{N_l桌} x9'繼诮兵礓嘴im^淼3+H犅L2窸腉!奋 , }L畓P$+q~G!垀#瓒~仫螤弦貇釞槪:4觰嬆摛CST蠬.z}群弾鰭mqp鞷 +嶫U` 心軖5$d<*塵@熄y fd{塾|*d?p.葐翀1講俤-溃v 捅谅塘:\鰵{P $嚽u.'rYc牷鱇! 湕fげ帖劭 +`诘-ao鍞?J Gu鰕 >ぢ祹t$ T攑欫bh羁,qq砏愒3w泲K扱L蹤Q攗4H2i(錘J"|& 辰≥纬蹧橙X2 獃薗鞡{AL焚#uMW蓧;$鳐 ?;~鋉"Z靘s綶嗧:$笻呂紋&(堌櫸锑校僽>]&鋗9镢Wu/&'鉾 2!4缲鼓d鴁;薅"%k sr幞S係fSv$Vㄊb=a晀柭勤xMA禑嚦_魓E娼Q暄fn/勊Fy轧K 吴砺崙F轇糱 +S$C*>俋鱰磾v~戤+ Nυ({譨J0Q櫵ǚI峳O踚濽桉谛G姉QY偎 荧僉/彔v疘6啙2抃撑峘X-萌t帑韅敺*"^X艊d+茏#峴嵡&6!訊3瞩Sv莒攘觧q/ L4覚'-泲炼翀)鈡糰NE惴o 菇](茼亮6 倰藡h)mP眨%徿虭I怙鼖核X琈Pg_鋃$f.稀伪U>~深d5.K%. 礱鄲嵤dq%!t齹[t)榶楆 峔匟!窻T苍澍佹檯e腨胞洕?U旋頚懹始汰)6闪囟-R顽~E1b F4单qI昝褡 A7j扺葴y7>vUU腼鋱Q頖{A迷f&7p樐up榓刑Z& /堜謧{P&X通n+H僴切瞩6嫂 Vθ谺輻[$6>橱矸)贠eh曚)$羑X^嶐鉼ǜ湀 I桅%/y頟綫跻D>;秿-&&寴睋m'?納:k 無I>T檥{#e飚姧遛ゴ0詘爌Й xa譈噴處$H%K>R%r岩MV,Dr鐨B谒檔巾鈆錪"e鈖蓠殂涮圎CC8{J洙~+孮?檿t鳧-h崊白XU^秚 +淦=祖LEf蜋墱`!抃|{%T/ 轓~M椭v7詜wK#8仜$俦趥悰 E裭脡3?w7鉐坄-lTと;b鼇尼;y 沷9* *骃郝秜a 力嗺#n敉R.忌!罛姸楛~-嵇 宣嬲@劬塦藮颤C電雑YyR6(?魅Xe眀y恁覤ê栅葚壓凉婨cfB趆禵 恨朦`(釪:"01Z蘠桖 +11食驧狪3壍p批置e嵫AtA喤bp"C=@漍u涘獓*訿碐轱骷v椑)鷍 <瓶7刼觔/諵㈤景熱饴怺(X[寲E翺a'.- 戋鶒"Ym >橛BeS,}K綎偃0圶+#昲F飻痩)Z;U柪芉靏稑巎嚮唒aey-|馺w钝4F⊙ y㈠m?}=楩櫼s聣鐸賭 NO腱峫g垖圳q芃铝gYn +u0QT虆 +n5#d &喠5g榡柩Z证豳祻蟗萮<罛>., 9)嗳f磎'鑺E` IF螊(坮&_沓潆1堚拎盪ZGc|焉4t<前謮芧5栢!UG 7珚o镡蓲]聯1-#97鴊BHK/⿶h鸏Y-WG贡U懰;铫槄嵾;F颠9*!5""5 K檧?>灡)囁0レ97伇Q61A濮斶埍眝u錫剘螐#鍣獘 +儲F+'匃#5X岵+5崄#>竒2D勋娸~汌X埄 +胉6妯窛PRT艩蔋*P{.GP伮T[乆租褏 +d鯸脮"p'滐砑&粫燔凖漦u胘欺P蠲驜繇E莅尨,おIh穝C)1i侚R晄堑/俠Ч聆Z,)]S塭貙/憩挜喻 挌*] f迖bKЧ1讛qJB呝托弜Q溒)裒聎Q)备-H?袝+r彆v彆l卡05齻牦 ;x嘩"&G(煦 5阤_爈i0嬼{c儊 C蘋= +Z澌''鬵捉庿=s觿E<49B衱!祚宑+ 迢 Z圷n{蕰訓 X荅3I镊 f籖c鶂鬽2Zn楀O魸aEd不寝<6茋#橲> H諅4m N$1_餷Ze徕N╦"iWh42稳[們+姾N3萁3:沧 D澙R篠剋a=[満D祶岛$仾t5蔬-4`絽尴#>=%椡劔疈Gv3]=`Vv*孖郼#財 +1郼鄣fJ1}z.氨E鎡*}秿葕霡 u76臢淔綁h+qb*7x[w)鲙1慁{/Ep袔6q笚鎰鱈4鄰瘛,徯DS┞璣&eZ藡4誅”"嫊<慰fzW,:袓M醬=y餽覘X)嫃q穙:黾i爡I敺竻vQ- +T< l殱B楑討诠a頞4k鏪<晫V丌%賅菦 氳鍘Q倽犗/ 捉z5+譥E2@V#瓂6~R亼-腄ua垜5跴,慸GKl幆k3"+K屝2蠾澵z +邘4O鰧篥*纔僥3Y>~嵘)睈 暐F//&鞸@鑗3>紶<fㄚAD鬑8熭)褸Y吨l汔掜rd 郐亮煞髷;<=Y铍17#恦!竱E燜淝\'迁剺雔煝耎B c 搇!2"噾憽k*9"=T糪鯔9D3鏽3[卙s榞鍑xS喕E穜蠇O&硯=儧|w趕氖魔mWP廙ㄜ9#(!纛<1鷉[蝸&!蚡3/偬 苢囵烻葍wC) "9f棉褧苬揊篊1(m蹌e嚺&酄yI▊漺0岪瞷1bJ +慑!2c=鎰釆憕N慑鈰<) 諈D捬VW,漏湉.}o蝱;pH汇s鶱?D{卺{c:髷,1=V繢亾'鷧p3繤諑ㄌ婻鯶S桗!殥闚郞#朣8罞B鬑I熽27-Kc译-詖窧#T熎"懍J檅䲡&x^}繆B<暕奬充匰,s蛡%vz瞒獥q嚚n淚8廥w銞t琅D誈K:燥霼y7"A冐o驍!\蹬熵Z榜萳熽廫&? 5L|堨p傔'徘3X饣i{幏呀硱瓞!権槢虡趗拦![ +皋恞E漯2u嫍)`(,2`澴閔M蟳m^|2蒦\6e<$EBA澜嚜E携?譗"擿,啦F B)(L#\U0桶珺疟|e槮瀹0尡.椗⿴诡'C孚]1y_鷭#*s0幑体0&钞cN6鎢BI5 <昫绵P(閱幔|,-K莙鋓.A潜┕绡桋85置Xㄉ嘠瞮q?踏呮@k q>n侃坃4<猬捃6塁塔K9qqn臦芿W 嫔应鰯瀃蘷"-陡熼} +蒋;ell秵#锜;nPf貒踏綀]籎煤l!+7 鹊=dJzH簾I訬;/镓- 钾24"Z媺D5?鱏=鹳8o裸襃l蘓哲l沆( 1殯-uM酰胺钳檣婉V鎫u|颀y8s齘酃锩9彷虧~g0澜?朻偢縡TB埽3!铛%B"j迣著xYO5啔熎 箸昘y; 涽品'S:qP艈牸Z阨N<澖癩]E 羭0景 沯蠶望o8妐7q6Yx.塗-壬D鰞夷.hV<|烷界傐"緲o募 |&v4_1^隭愷枾"D7i蜧镤鼨纵(鄀狎卣葨Z鋘鲟輬WAc褳T膊鵴2稾巪<兀錌胞づ?&Ph慤M?/x撅蟇烹Z渼镶F"mA慸q:&Zt>訐$錛稊B襢o^馒駓槁-| +>嚄侗犹闌*捓`瑤9t樌e6鮰珥倖+O79_R_~盿I4"$2E鑄堽 灘. i\ゅ钧 0R鴼$;檷A|ぅQ橶&|M\凵瑌鴰釷7+*苪h_幜 /隕"呝骨$顮fYs鼇}R汊c]|舼霟梖9&墡摚=潷D潤d'渙}<兣訠)婕CjO9~>|緡莵熏Y.艘殝ジC%"姼T(蚛,; 蟖嚘"Y%}抍n晫.H脥冓綻逩馚軫榉9P ,TY萈婾E*飪-W怪賤E2渍_木咋R妨 +瑣'4=\觧s g酳矅術顯M泵!l厌":<槹0御-g1饝e崺id閯侹翩hFt篞%鰝 納C'騪VYp鐙?涆,4>?疊輒_,tq踷撥皃坽塦泍;橴j儹廱鈃/$op沾閡wt洯D{8l'iQ呙悒ak妲y唜}+裺*媹C閸亢qp 湑^Jh^諸;h菤只戬旨灌萸吸驍hrm颃Hx辣䌷涤鸶E銅l兣k:{篹g漁3壖}y8ha獅Z2燃U碉A}>犪q楃厶!澾D钸fBb媊eZE;Z歕G3鞂n鰡濣姣 w俙'锴鈮垕溧-/*W*Mz彤潍J篝kH?5繛e^遱≯芅{媅ダ\I2(\={/凇]瓄=?;,i颣r$柟樚(7餆V勒W')@ui W幏x堩舭畫 m譺扯珤]鰧Q惼I颲龄杌藶m栆01禹睙蚡鴟挨-嫾~斔> ,gp&膑2;ヰ~g穠韺)7Vp產=o蜞枳%D 嵩卄#溰鵜 >)0| 揑s绿硗飶䴙盯=弅覘R愧胨tC稶FL?=# 鸿M誗P转娷,I攴rE㥮>姸4$Mi`萠訑侤SdMi!X覕2仴4栆Y嘸ERTf捯 B餌R.捯7h琁J冩@ )5GiX蛠@Xzi炓 >版)u鮼@N薶PX硵鮼=兑>癴+ 伃4兑>癴+ 2懎t!lコ3[楝B0硶偫VD謑 皶^"I榍囦毵$脷閐1:m!)/=薷ioQt鸵 il20粭Vt1l.薅!`郛R,}湦沞6痞O8Kc囋搊袒鰠魆簮v睶擌q媘睘-嗸j>f@]K$廇6嫐啑㭎 磴-{I嫭4c*g韈K 冝X鋂麡泂玭僖v避\谇D吞昼 +2鰼,膹uO7wj?杛咞巰l]5L憼闑,磸Q曽2G芤e傱q阪睠谇塎耲沋 褟"润悃f5dL.,b棖uPC位胫欫雮[Y銻}并b坥cd懮X~槻I 櫳p梆挡 +审腰] +蒓悍犑3f齾@'}d訡f=_7熶|;y,0︿|〢e+烝贃眾挫R蝷C痍譶q  鈲穠i1鏣栮雀琪馊9~崦 m鋔x<[禪6骵> ,嶞<-屲4H长8 +[v`a鋀G襦7嬺侹?;棘没采F较忎>僳矰ヅ筄诵*硨7,憖=蕔谕耹s隺6愓As馽锬>A"櫣%%%袣5F>_﹠~$龉~!鯥`gV邴 稞d芬'繨混 +無2?瓶CO╚蟁廚4暽钣鯥 =汉}*漲荍%;/翳,9/e{酴か柪G9褅*o!0旞gI寶^涶:t< %h{.e螤C'&硗椮}袬O槣#栊q"E貭I\刃亚眩檂饡 潿u鎺搹:dgR嗞颸刃UdN>祙L搙k簹芆Q=,鸅=Eu嫕鼥V珘哹-C'嵄9n%o 穄[釯帋13棟E芩 9:煝j>EJ>妊1咪4'Y{塺t嗣騾~iブ跽]yЭD冾獽A:k 5U嵨痶铻"呶爂b刑 l孔颽庇Вre揍懢D嶎{>郣戭_ 礵>+8鹃w谣砏忨创!枽6脱楱鷠壠虸癙a鲡鄓b瓰岩醈斤欙2tH<漿鏞坞t邀磡充G実躺36蛯+ 驑8z?5釠萓4i3#9&摬(HH2楪缟"pd'$藿)Ns趥J +)h2%UD橠慧黏剏n>t领*琭秳7獄'涢1湐P%p+N萂庂喍|s飌go=U娿>醮[(+\?0鍿6x廇m 礗ア恗萏d▍(2癦H6蝫!#飔/弤ㄜ幾\~笍1.斖dxy/@N錿_袇摑<9漹By,!8涉(屄酿媁@&v|k媤I卥$槃 燋朙;<髚弹,"芗櫭0俦貭>@,Ь刿|D#鈹礮Auo窬7i釧仲靍廚x&煘棵哥%_X5鴤0p^V洙媶j L蔓ad琿 堒笅饉(荸 +曟-R櫯a7斓J虽hgi秭阪 喣羗坕b阢澆>36*4筼R畃缆缑! 7N傉+ NX蚡怪%樌饉 {$阢鱷2鉧gF0镱<桑 '屒 鞞IB"T膎灮7冺fr$蕆 ]4蟰gX揈釿K罌諾&垬\$Hⅵ2D鰽蔞5H櫵U\伣灘( ^v4T呛yU[;阼n鬺贿嬋 8B閤溛J7,ē劲j鎣鼟坮琚淉`4x(&4oK犰`-莩牰腦轰7@}潽薭8賺$-e3;) "$肂I祟吭(騰7k镶J陎挎 +飛鐄衵 噿 毊EM鑛睁攧窩铵儑翂T%]>P喟f荘kBX憑7玿tj炻B,vL悸+pr榾濅缠魦妮Vq栁@go匎^.R' +WX +i +k彝y^?蝸 +凊醔0FJ,謡A逩h貪. l拍园昨nC貑aC2嶁璞e豜齱鹉橶2@戓怞圊,0 挞睨譥iX悻8朤}gD3 貆H;魆蹪,媭 楜悲|鸜"睰嬍L,sO捑醛瑓.Dㄘヌ嘊X岾C4(u$竩粜辧v;aX |[78E粷(=: 挟pz坯;蕊簾?洌箸7,Dh鉫肙y鑕*鵯p缞峫¥硥襩洖.C +楱訷x鮳桩Q洭亃G祥j5q&3躀忁=>:v?13E6L:TNH蘽浅脝槠杦CULl砨 $>M少鯻J.毽釧>3^ /草纱Vf霞 瑁W38傩乱K踨n瑀%屐(犤y窫杊a3n<阐`{勰喡9*躅|]b蔧 +毆釧驑Hz{M被e勲銯政5%*5{⑷M5*)舿 #8枳桑(汣洏.鉬颿%=K缇彷礼c搅镹繿j湛砲嗧谂f陨迩,諄N> +壴葿鴪8i,犴K袺寐 蒶幠俷蛨QM牢J凞$䦆伷U盄くU婪樑o愃1I2eO拜$箟瀝#舓蝭访d促a.鵠塲q韄藏鳖t霢ZB窱[睯N>诮酶"ks\uw1S:曽狔Kz鰹韹,镑NV佶&Y濊痊[佑+庩=c0鯾遣吽鍳 j淡V氇 7l腩>z娔^Vǎng>U釈 +8漱6GZ躄竍齌岵<別瀢~\fz^夂 Ydac卽箦啱37,憫脃唉渷菥 qt邸菭瑆饷f矩稏t敤kZl} +-C,#难ふ褧循蝏厵O緲U耐/m翳eaK 早-f藍]槪m壀T<峑俚Rp{砓D莩澭牚0鬧>Db籊優痖Z 緘A傎慫紖+Gn+_裸胺xP+/T;%妣蛮!猥侊賧聑&嗓身迨kk寍/验箞悓>趮 兒9璞焸jo鯯|C2 +(~uq-+峆g 蚻眦z紙煳0菂镴-罕蚘饱肉5)蝍E誩iˋ刪轍Τ蛯H鈟 +毰禛鑥篍朲窈瀕_鸓敢朎c(S +9儥;魕囯`蝭Gh)颜鼹"IE-;!迩`,,$L釆u. 鰿殎摮鑣戨羐GU\:g>K2N[E _\癑}肬!匜厱f胣啌晬i8奏踠6Q懏御\D;&z馝鍁\伕塚榒挞6埩%4欜⑷6麊诰(0惎璚(罏*.樮$搆.鉞Tn睴欛䦆3yL鍑1KC燼QDJ@O塹婹濑H拞驎办<楂蜃1$)姊櫯,E3s-mC,p +t]敷掊緭]G齨.2?r纥⒗笚qs伈Q洢4J4]WB:咃S!1痛煴+.炣+范a\/b'∩\)栯達詶au!姪> 誈:畓6摌嵥朥餧勞.烇?b过hJMW碟3^咔'^<侽 纟鸂鄩}"馫s齻(給`噍腣硟:wB|'m焅菑∽lN偱N椔H镞菏v鐙闿#G緷5鹠_o謤yk>脱蠍憖~柲傓p觪1椼H顅Mz f悽叵>RPiE訙rXow> 墈穅醼K_烼y毧b:瞬7騖^礐f@0唍5X欚磠5V-辥j9蜘(峯舡{袚=7慤D`4踘酫yEL瘈尮锾 %-銃\蟖Y聳躿軓寜*A虁珎vIC\3"嬼憮Dv< 7E即1榼王zws累3础c09O[煳T值_4R廏8>_Gg茥儩敓頜yT鏟 喟匸l辏9抋#)悸埯PH簈汭!Bb"A憓衣>{0艃嫄顇TGrwl Xk竿磪馭p<箂C蔁友偺巾h|喭唍}0ⅰ砜读?lx\VB,<箞=虁H k7糋p7馋$8Y櫭}YCb悁 酜艏z(凧S洿)膞'⒚ +a孀K銿學gX|}灠d1~烋hW衛隌=棱B爑1W!z/拵挆屬熙噓秚5d[31fl3駿7*c93苦妘/ ls代"9熝媐m(畈0Czc羈洽菍/~Q=檨时 拔3cψ篂 JkR旖.e皒(呁x驪C嫺鮡 .噢C1/`珑2`类獝a嗒[蝐薭<0 +奱.▎!坲=6 S剒5*繿巆]A!FI畳uEY好(K(攪q楶cS5}Q倏苮B 璠a( 釮以紙宿GN dW痜n㈣!壋yHv糗~QhJ+梎b占散郃!d鲼茺@,H'VcMB4Y*b藶揇\/殔.眅B{>[0w粓<!R瀧ew权F谲aC汔攰凎狃x>迎)3恶瞛egl鼇#旊j-圇珑Nc笽y唏苒魻sK4躌;掮焄柴ネ蛙椡喟夋^r貒 鲶S髗>s;üU小瀌塱叟涍eqb轋朻騲6勮-r4K爡糯 ,v崺,?7t嘞n>O耴PE浊`嗦頗塂訠i1Qv)泀 `給悃QJ-0jE翩璌[茗|咆审儑/妺w巬&髛緟黠乡L賢*炤馲t豯K}Ws2%皏旮X鰌H歷qE譍=摭傁焍妫鈹<~:黙恒蟇抨2X8*,铔攂>+v浈E毥憁Yl灒.灹諶&X霨鵕,爎栳/緃,_紘y~?ㄡ^'鸮 R ]b7B'ぴrB*b掶鲏䁖0伭6缔i弿豢溛鹡逕妍耷?>r/譮彼鷺暝冯繛茏b#爑;>┚舨8跹鮲_|7裸鼢)刦9裲蓶|e鎱(e伌褋Yj 刜QM8醟玛y本忼L懀鏓痦Uc睙((x俢'P滻膿dq=僝绺3酠'"1歒鎖敊翙P]C 5゜?x莴&柫漷-F;"`篔-S臬J錏守R%\伣+$隶r +C躀=|C陑饻@ rm@獊ザ軮矦A鞀-.幁jQY!S6酇墲S虹a/jXA*!4$懢爠!覘 +tpH捚╖謻&'(H園2%0W廪@h\諯&i>d館"=-A9頿+篞鏭z 捝喠m眍璍#M_摷百-6'殴壚裾棣袝 7屦獣%|Y野扟wY +槧 7A9h嫿= 磫7Z核橸 +錔&i蠃bk 鬮c:奢>k霕浦}捃0濢33P双CR\徠y籽*! k%mY 詔(缜[焟磋(儆訁4KN呁绑4鞂RDz鄣P 嶹躳緃卅惖$刾艷"|型尹眃笫(Hm咿h'咵腐奚21/WDL 諲'跐製d籌诮Y#厖z魯磟印釧+祆炘S 褬p@萲捵 +0+H3bo林@,惞c矷2i閝橫遪┇`亡3躃懊雊 +f黌撍饑E菋<悬V "8悯 +^5l余欑齷躐崂u糂 Nfx弱0嘒+Y熸愎襹T┙t7嗛圁\谟}{刁酵'7yu%X慞y,寖剎裁磆i蒉紥銬伮Ke┻柋+鞉 2|$傪S音噺"耰 Eu"詍氝3,傝瑙蔢" 7fi[6Svuex丂i)lBB+眒B邞~)Z \撃>DX体M碑拃鳿]东+So>?(囼 +建|瀶fN鷳岒扙戇髯咜8:勠M汬摧Z& ;諅6$z瞉褺氷._/Db訸緃b ┫L1慝鎖矜)瘺蓂嫏 烯3Nqs賟觗芖F,瀔c鈻a< X颁w剋 xA蛠|庠摐幠/5 +48.b0X 貔M}x孀羴ǎ&m* 32IU ]笱a猷秝K.Z∑媏>j1c驰?┕#f=}鯎)b戢歀7D愋<">諐X( 1闑$ /纖 +5D尃6P:I>杈I#曥NL澦=悜∝踀C抻.磵疕M澷H.鬚餋"∷08]盤8@S>1偏臡@菖c統媆猄X9泜砉GCS鐱对na-%9Й啊t*]c擤WE儥咖踴:殽<%9{\ri &徺焋峹)8q壕 1畟$;锣帼$劲涡.婻膳.)驟[ 5*_Kow葃嵈 耪."憕W鄄雔B欰#"表6C/a + rB所婑秨瞹#CB\皹樊齊4.11p1s 99rY,∧C%2gKi贊俋捎"蹫G鵧F碖B袍a酗U湵ofa34唩2輶獧4$O\!馋8俍産诌俇P +(胍J硛逡f腑a .移=鑕r9噍񽽍藦竇卆厺鉅欦(蓽ら譮4C碼{髼>浗#牥舥 瀝鄞垲鴏Z涖便 鄶 覍遊愱 B^紱9".s爆輷`8峻%?萶7"zj蝸蜆奷悗4狐.,r"諶窖d C'愮呷j徨 d? ?i移<3瘢%錶厣罤wi9UUe)L极'?柃鎊E噠懓爞聎l<▽U)伪h y锾厪*h聚1/D-1/v:h 璲E4n+4⻊b輺7|kN艌妣A瓞嫬`亢2阨怕W|{xp餜ギYd/窾/譃&悔O娳謒藼V昿o絝帙b讟4>籌,+l總C磎偂-L窱R+纝Z攨飆眙E荤 |7砏"菠qK` 鉙9鴂嵪t 鏓=X 髓` 胧$uk~?t@耄9縣蔛悐l殽癞弩^A+U_岳O峙雋 4@扉遍7m窥蛚讏M茱蒋 2E陔铬驺v|>燅楃凗啙KLLX芵镢瞮醹禗4倡蘵丌唁羡麮唏H蟐V蹮伙广?藷W唿?_}唿鋀唿<烩w!客服貽飤i.?彐〣泈U兵虩鐭鈍?/|U_W骺熐卪{芩_~笏<蓟橝[诼趄髎 Y7?龠_k赞-墬/岿跸岿g{鷱3亢'-涌/钧鼅}霁燇~7運弐頿兝ウ 欉(胂'稔?|筝?缈魉飤瘾/䦆o_蚖鉶_钣?雩^~黦盔轼}蟪bG饟焴鱋奎暨见/吕b台X}K4N籺玾闸h絷 +)势坻W$惈鱿憧>tw甡轧/o~K圹赧圹O>齏wU瘕=涂xi莭pco奔,<醎, /[/~{泷|x宗畺4-陒韲眄鰳<2林 ;j珫澚8莿.耚,汻彂鵰F㈥柈т觖㑇Fa 溧]哏燉)x栂u!3}Cl聂 +詆w殣o怏@ 佼縑[ cwC眑E狛桟豌x硦鴻@釽&4Y轓埥囅黏汄靽0脁枒k N眽灀H;B+斛嗻4M麝阇(梛虠 f@*畃/虜'3" +閛耟s5V≯h䁖殤班㈩燝qH祂#W;wげ + +y\AP鋀@q鼴O伱'9装C輮俇*Q臉9J鱈稰<2k,6 n) 魾,tOo稜2d揂 膖况妆)zrh謳[垃镗><岝~佫B惫C)6笕#>8╱&傾奬8b~T.1溠 &祕l甠9詑V鲍僂.禜"l筭='*@^>詹IX濍*毯*37eW(W氵彯邈C搜Q 瑴.P贡Ip|冚敔嗁z.搻滍_5&tEk毂蒿Sd|祓t厀T 颪ペoN(靪$歕濲漌麝猇[s7杯剴ml.S"?挚蛾対鲤嫚{!*z嚾m +!苺(壅Wj+hQ5,譵谦镓鄴臟专踍:V ヾ梻76齛<灵h醕`渎+栖旪寸-"`咵月a唬{鏿YR鮰c赪%t:绀7\亇 +zI貇lObO:"珯B簙8bC m4q‐3,XG栜霭閗ls馠4悬倀鑧跳M綝渤_q袮)╙縿嶾%伂T36蟥u#硊qd6酡(秼诹紛d7嘜促vF聱2J徒0燹毮污 │d賖S觹t笖獦8?c搐恵蚖尳f飬>礷gj熆kO锚C倓C9缽斍杮##mIj鄕鄓鉏ゐP糧赸3莆旐/Gv 篔sn8Q誡恴じ妡z鏎磺迏藉饧 王>苩t櫢瘁霖欭泗x'{羢(+銓媝挳 V桩8FXr褐sY{穄k栥填U芝趢wW灚.[蹎褉  樊亽 (汝1"趕.抧儛D阓檜楿Y檻!a'褝屳黗Z)\j=aj:螤Tζ$^骬梤胢僳傱楣雺5韯l $}畡 J挒|A#椭-*慐辿浈喂y?尋烴Y孴t 1湉sF.槆弻\巤Y5&sZE4i򟻸~涺e戞 ?FV這襂ぺ @頝橒櫥i膮対g0WRiH qo暣碳駽R\O} bE-做~筓0i爍fA鵍fQ,儇昼)iBc^ +#螩&0荩G;j^ 釬`}╅悾蹃*廌7$ 捐佉G魣RG騄S,o稟糟oi镶$#!_Hu漗t ;怾8躐X鴶澒唵HvX钤籚5隚趕揲Fda皜岓饏n7P斔懾i +菧廎 {sw +諏O* 忴|飆_落p舥#T: (鏐HC%L{霯o甗 D有!Y#谖C,苉-葼?W悂"襅w:膸xz8餻;-.R謗s+!57傴5掁(鰏<)猆=P8誓腯 +N^燐V^&$>Xy猞y0*~A昿NH"V旳膌GC◎UI#灠Z捥b!鞆嗢+圓x绤H黋譶亹鎨H:癆塚> 〥鈍E瑐 tW憑}樚町b掐瘠;R鮳C灕挩( 磼A>霩b s秾誤f氁沉 裾緜^Z伴褗瓾辠0慨hㄚ)眬Qh緬C湝鱥杗>k饛%{=@ㄝ昺pF懁)+踯逐 _竣m礞>>豖' +D蔌矏゛'x!fb鼻涧C?"$赈鮎鶣、H欶捠_蔩A倊o镏=蓕雌{r73耸冣(匽5虤kH 歹4禧嬊巧V搔譨}姓-jA?膴顡-誰x@LD`蓸:盎p @U殡7!度'% 曒 - 珞dY/=憏$r湪!7@;o+|py侔噍l堎j熿5:*鬣P民'-)+ir?.樓益O P%^冺5b拴産芷佟衚【 崤䙡?勅>#^}鳋>謍,9_迖U<曾(Dn葰7尛幌髦o鬬:R欷收幯{*cP粫罭栬p毼"hG釚禵潫b湐掠髜郣荝r&tdē蘡梭└| 43@Lr釉 曤J)!鍲> +4U-砊l"O甯n齠皒>N擻醳^9暶!5 +技3RR2雵軺骶鲃,M灺穔陜瘨噥:p ~碈贉騁Bz莃?綀繆uS\裾D-%#&鍨"!讖Wg3犁3鰤~-礣u櫍V砉庶钙舰0I 厁磧9|哓柌$K儶8o暴姛A;`そ`[攫X喼d 符c〉癥`炎-z業5&伯`刺g帗缪餾#q掮泏璂[*潯袬鋑儶Qq輚筨S徑O/Bw|幊阯弧53?晞i鼁p7 T芼 3 豝n铂耞櫮6]\罿x毆XHt仅24筠D鷒,BwJ#$玻蹁q8瞓媓倮臵&鬄旜|囉<囲蚐7錔沿轎藐 蠹@3闯h游4是T濽(B倧 炠o篼′膲闏葂L茺=棐干阼^YdH<V囅"餜b騇E`/O61}苚塎諅7Urp䴕E籗鮴F收嵐uG0垯L`膰蜲ī4O惭氤Gd菿M﹄yp:蒞y'B蓪}鼼肂駴謝q.涳nJ 議9婞LL䴙0i膎餞}騅獥奴<0諢?4 捛9遻+'1 沧朜S刃醔镢喯пy$x4雑坘-~ H pl琇危q9+蕧o栦s鲐磎鸪a'!飥[8覆 丑貽 +珉|VP(斬觶屸a是蚐!E趹2|樹潴㘎9鼯)U埢篁;1R愪jl羒笢鼴纩BX羦>_孇晖2烃 u鯚 Dュ弓鱒~na禷w| 呧4渎琵ⅲ婙蕞n润顪峏Z{UM3*浱 0蹘绌椒.r,巳颖E瀂蠝${韪R鏷A;灡泏搴I括诺bLl忞屜`舟!恚暕褋馯疐u範椽 i侽摸]U侊0XZ嬆WT觔58ΕD欻;鲇5 鲮DX^4R兇慮 喱OsDゐ#mWnp5l8\A=〉埲轺榈C昧瞀踯庣 i= 脁顜嵘囘*Q- '鷷llS4;N/|Y菳h皋 {E +ㄔ;嵉%.炏b藟P腄,铇#"u懭荷睱8銵脁揝&n6S`°胧轾;US牙孍 唝)!9">駮{圜縚猰呱锓坡趣皐{姄&&f諪鵚豜]-$皦$靲p)3";Bl3蚓蹡惌%U9/煍j刑!葼抇U敆#L≤殭h=╙崁濽蘫i邯 smqO`瀠KDP)G"=%睽◥r:g魣碜櫤欤蝊騄梕繘抓UW癖梷C陪 0?u!EA颁D秷+賏&/ 暢郤Y0T0FLk/W7O旕琈?L宂t$'R} 鎺よ&T咧驷M,r '苼j墱┺=P腾阡夢又7'?5詽R璽ぐ@薑夑穒f7'e?矁/婥y警譧t 4DM潙z趛YD桰\1_ 駨<从nE2uBㄠ4秧H'F 獍;]vy:M#焆r驘t`wf鼄遢X巑_R亵5甸曵匸z!兲[EG敮7踟酙E+v盻Fz燅耻NtlI辺]c-蚏艳 {'~衴}{锟矶E俛{1S#薵躼F偁2髪G&煳FUy鷼泍MWtB7痊舄萴瞱OTIb肭6蘲兇R钧b櫒屋)濻碮^5>巸]臊hw凃=E徫LD誼5萐D栂鬐C搪芽T A]邹昧 eYF\鸂!蘢/洝鳇}躱懰s旚|轿?!臫.>蜉鳊n/睿[垕乢Cr呣砖w箃魜: +雚PL?豇龒/0壓&地衩墄F 忾Pcy粗o}z`&G.4V笜科 瞗哭鮛裏錫+/w唁赪χ气l`VA鰭熭*q膜gf^燠$逇 {\錖)jKR縅4浮:樓,软 灣+=G0佟GW酫$6q"= + {H*l #麞E|鳿*椀羓愝癶追L'靰3s泐钔笝c+M%u坯y闶掁I2鍶!$驺琡}C嘕-竅[?Q昤貒}衾乫&席崴詝`婈i6lg"-D穕椫鬝7艔靠C榑泣呍昵塗緁Yg园|檶鶶忋N~6螢惀|汐ㄅ鴏&~q鋌蚊G lT稌{|锺:@k)$8?OD釺焫\;晲悌涷䴓Q妒'摅墬гm貚紧`+}寗屝A筅>I|1}甦(S暿@+z悞|])g;}縇A横墭g鑱膴槱J惏盟g.s%勭X硏妟兯x8y%?E9 誦渐w 3觥dXAE洀CK懴跾AG鲔绯暐碵jEl谈K鑣*Ρ駾;? ]歞鲟胛7萭9铵)е wy痆缃階 BB睛[鈗 =涍7">枔$祲* %请`U"L`/{滦犡5 +鄡弡脡蘇2蠳/Y 斕余柲慰7~谵,餝#Q=v];筎?z铴:颃钉$(I))雥=畭▼8疝 12 嶕綱钑莮佄 "ob燓-E瘨= 脗0L乘s穵鍔爉mO夬鸉'玛8((g徿3$FB卞(闹敫3s勀 鸛?膜zⅸ! 頬圯+}X2u嶁h冴ǹ="bG"v\剠6a>7j謮笊遾8:>~靵 ,齦%曳坺i寿|敞駀玑o(K飽M忼竮F冏姪馜s(獗RNTe彎雽a欓憅揺瀨$E頬;R9豴濄驰哕7$I"l暞p膼挒"容淣Bd +V/0硚鯼{儡籇s|K簏撃0P3踆獛偩I┊櫨3Zc'馌>{<槐⒏Y翑毵潧覸毱e }锺綿0鹘坭 濇m3~戽bq-饫3舓V1&䲡 掂F-]莑(豂兑翟(+荿.G: G軱3d:奞=癘犽&偏6m敼悳1/9m瘅G^'=翱f弛SwhE糉N韔2 溻蟕柲B!V 3$趩閛 +'贑椈VS%衢阆;∵311懲y?榯1竷鹄2䴔邛珟勶槛`2頬褿+0暇循鎎y骑-SΦ駌>stream +b#%猟蓆ytY殈ts鰵剛濫娠sf黄熟R槳c鵟鸅j渊/季] U簛v蟦I y7/詥sC屼淓s獎4怛 g b $苺Q&IJ螰DM8饍*砽w\﹚@Bc\bS捁乱俣面簖Co臦hvl{妥l8 娤鯦:蜻晧!+鈁fex騟C刻PX烫Ej;嵟 'U濞龋R&`傴铱聽5w愧6_睴9鈥迡譣Q0hv2弓8o' 笆!Zv&C]刟疡0k妘0企q忏 揿&?Z卋S郮y級$0賰~濏鈤坬胴韅9馮俳逯,乊L=i騀H2z罢-_=!P凟C,GHL轗滊俑S{誃/|淺t#*_缞5hK?+P\S鄌jo98 +7,"黫頇瀏YDh[Fp堾瑷F`PgKt怕h莨萼v鶶演竨咘#~je~G鐚訩x呜烯B1獮\4w00蹇P_≮06咝N罕襪捸瑥,妻*鞴aN厛';恠ChH谊 +鋾&.灢7`!|$k俾"w 骙騄#瞕3劉儕8眿@';繴!劃,鑭窒濩搹沋B4[ 猔苷&XXf<*ci:&淤譞8犑譠-賥s>、媇,n睡醗鷫i絇9&9筃 +齋RN*馆脣鞬#W9N け-咷嗅*R蹌 Dz帓+鸂5N踋攘雟裳仿弻Bs +" Hjzv顚T_"5HJkk2#涀陣I'辏x~1|E銟 +E譪鼟t簰q槇3玄`J蔔,r覯;0N嫱2姺瑮H?e&彗贴灲*0圀2⺁鋀豔2`.㈢緵藧攺D?旵6態 &r@5 9瞤拽yyQ瞗9 蛟p鶘:|>抳$麸A岋昗恊B%幀o共九升[蕊S薩<谞圝D%挭e冭L讙 蜃 H/倞6黎: oXJ艼}荍╅姒 K怪m嵐O-e霓b\\鲓Rx憗X氹葵劭?W狩/魺oG鐆娡1L淿1枆PA[鬙w眬P`埥鸄G迩穗駇薎唰帪iv栿56菊F,Ki侻4姵_I磛o~胢椊5j墽鯝 mH炓崋5]!"暨尙=$硈&?郡瀿 %01澴,皮p圷溺敤蕤b稙;獌鰲脿Xo*犩<1\2+A仵 6柊oNd)C艫K螀壳篦旧2f僨移茵 ξy3{*\(B4﨨$螧y捰"牓\SV請3{VSTㄏA桯滅_傀臛4節"Lg.= 欢蒈]^ e蓢E7閛,[堍I""1猣徒癀憒f懸袈D<G2j寰(G檼a<骋媐輇K肹盻湀,=*7[nh恙yr/L PH璇l攒抶k&U魱櫺敽-Wb 覉犟翟膉笖傝x,寥$酣!%卉/の臲d#敀%荛i饦8ちb/1虤\=U!C间A=K8鴙#]鈣朤>LaA評 媨蛞'?粉k +=N@e鬚0z詂~ ;瞇6驧颙R腠q砉簛!k塥o氋0痥w咄挹c<糀馥^ =坮|菠#R銹癰1w雴'B橩覻涩膼U}U000qX亰S#櫃銕`洵蔡/KdG{跱驻7Q)炙馐C鼺U慅#8= h$5Ψ尝彼=若,O$7b>3|H]孾-.򡂶"蔼WA∕砵 +Cg砩"1豯镆G簀泈g轋綨[馭椱絀$c鉵<u7 +抱#7\⺶d瓆訾了4\ 蘔噆" +4詢#Z}%鍠p@C欸v%輺玐ec"銬﹑顩%亊晟J{炠启^尭X|艋sl)蔞恛撣夶晞 `勘劉睵#)紜eJ識,獱崘1贠櫚 +;~, +淺蟃J桠">J事h[ +xJ,H鋟T4>佱#V?}挭KnD襲P棄醲B蹝_s$4穄捞 烫T_, 鹂L瓣鸪刢*2K毼垿#y鲻2",..xT蚹乏杈0"酅頹熸呝t酠d>hPu禤$3訍>琲D働风|5剚7蒾d肋 mh5]N苤馇6y'3噲(p1摰帠 `t-弱I∏>?IqR`錓@爖m挆) Wī .f%録杅`夛<譌粥鐧, +9 '珇攓鑬j(芶虆J咖H*诺*Z?p[5w赨h―1希糆Cj(8(繓朐s>阣碏靁m- TK|桾乘e(病vxョ/皙繜帒嗊鍛潺Mj阣皱-Ri8碗K <哓;2ヘK 哊AM`>=9鑳虑酱'飰合漜A4崹樹縜)D檇@彟L﨡p'歺X掟稾[j爱斬o太褓.}j鮊'髞Y]帹滠掛伺岯尗聳+?A+羺7銌噈XW蘒,`675dй茰X訽聍巾A墽N筿N劃S=-亓<阰2妔--E棷隩膧]L巎彍煩a"页俔-gO罅Xw曩Z啳$<汰L\ 憗灬%9Ovf; w?猡湂  +6荵v丱鮋4hy別ca氊矚 琇馋t硶L 7"浇ヤ$嬐瞇舩l〈ㄐOM@M桃[鞈0,ti廋T食{'z驲)k=.5著)' 鬇4応#戨齋鶓咵*骦>娜r讙0H桉蠐繇闑f抝桰灅 琗=4h6 :斀uG~棆熗$r帊j^He1遭U滧q0gz鯮u>炌>{9案4#?i|鶗`戺ej7拮奺SNTp]蔰熬3[熿礨瑧0]GR7}櫵砸}8捀+}咵疆/愜_ F褉P シ丬$压I%P傋$UCE稾篐:}m\ D,ю鍠.[M 紅塑勦VR4J槚M醕挃]5艉敺椇$3謱n,殈N#(霜8!廵贴鄴@>茺\橠R@煕*1 A瀎%8QG'%k&緬衙4"0HN7/+漶p治n至惟玳"JvI$狔-渺逋 翚 l!綧疵j猆w_(媴穭`p"堊筑聇O蠐剳渹茴1斩蝚E澏$hU &奇剽当钔蚼袍軓纓鄟踨7梎嵥朦 I&Ka@(!W箲媃3MmrN岱颣韀X0N矅t粋!练K墾仏/狦IA秎d曃沊9]J +o曉3麚6翍*/E絛铋)sF埆> 魱 t淁]b宝裔)槃遱鄴a臜cdy +圠.8簚5O檧殾JSG憑佇懡X3儤║~㈠m娑  37AW箜?匶;頖┈eh畜蘹K鐣C媼骇X攟G揾 +l煊p廃蚛l洫u[蟅NG芞瀉蘦斨盓俩媶iG茭8腣拀{4埐懾~*粊獧~錞憓♀7V剑紀кXq,馬輀+{鈋詰炵唍兖鮏V顮 +愫d勉T鋤齫篣峣I9盧饹耨 +﨤﹊\:汋(,k$ 剃屛E苼A~3vm眎"麱b寅z"兀/O洁鏓殺o晐Zi竍(荢亽#u(鳲f(ケT隙@#劬鯩勺踢U辆騢n!F>惇c1; 鍮A5 3懾补 9l埄挋F灍啙㊣锯記儡 sZ緳 TZ鷶媦 貣u0V枫押 y鍟9V篈濕DV=睈蘬F2]a缤.龘+鯚媂欻骐繚Yh褡%牿GER 瘛啙)榟欫痣!T+妐曁 *簾鸐 $S倨猻4PE@n7褲e+O瞯I鍵礴| !@韘獩>{T饌|烄表n﹝|擋n趐輶栨1=B濘䦆鹵-:錆>O犗ほ".粓宽絙鋪KK鸸醯5稥"韈猿腱>Fj?HZ(ㄝB鬌覍 ,v櫠)\2 鸞蛺Q攪1餒0傭f!賆Z&@&噯镞OubS*@36拣聖{眮p&苙鹯案9 k3熓xd瘕盥嘙疶<,铽Ue俳槉贏":哧@黍径掫(–跴de漏q儁箄%楤7$A褉廆mn0臋槈A礒珹ZW4@/!垥鰙(鮴0_厷mF庮)l@2+董 巙h踊;晆h鰵卩$ F'=v靮e筫&佺!m,虥^I淛Z 9G耼坝2}烱B炥挢嚪銢卼苌WG狐 A媙x=慱窦Uq瘧锅柩乢#e趈褍M, +yV3掔鱽PP壂gS/螩枽巄r."駛騄W~蛟5掻U拗8 >圝禙偯$"醨&P嫈 4S楗%Fj巓Y%槓3衮G喰)砕>齖0褿é堦鳒蟦cW錭X%鮩 H*q榹Qwis飑$A锦濥M +(啭N1`揾讳H貮亼啓H+i墦╊酺tC諷w>!zjXc E\'咟栐0C +f牴濳cb8_fu!萑+i繣K眩o蘸K`/¨蛄Rf揶勹+t> r枙眐m很萵C$砧I抽1渮kG粦7ぢ贚; +6<趕卻廩"麢0譖MQ?峦炲懏 +_罐xD]煬-M叚╘O*l p盔嚈罫NG廲玝N1iP疔喵$w涚;>k>e僘╬u馿驹>洪(璴夋斄2/ 明!S燮 7st軍IhGr頙^8刦!? Yl%9礒逩陪虃眿幧c瓸?c焝 歇-|槖椱Е氪q +T咒儍蓜N<匍=孿勧XEr拧*絞:滪*`#瓫0莑黨?e!|H_髡可Z\枞珤"飻(!#9蚋0 暮[y躼;k 5`绔.忖蹄釆r鵶m坃築籎 se1禦I=瞨$4WYDO _(夃< +@窷栥JThmR芐f柸 楄x灈CZ<驆蠹伍W4鎘轧|m6粫穳柼l2 {萇Hc朑汈HI傝vFC粼^ш嚬E怊%馓` 6 C忁栋M蛃琽登都/h鋑磝i囂s纭訛7釻L+搨=($Fv匦 \LNI曋佂槳影Rz啥^ L.8M靘巍*At@Z++牥芚攧芎P 闥撆NH0荱#T- # #:76;)鷉. &-*z轔ē烣t兞炤淚@%崵_* U_ALy 灑嘰_瞴5籍,'货}G蘠tkUQJ矈W 彷琯D煬襦M齉V隴b|宽2^鋧t}蠅筽!$鱢肑!黧姐左b簒响v轀@塸FS頧o袺{鑾}洷册膵}炜鎡""嶹豚w#磊(鱜|鈇j?軿j#_奉z虒褸 抶[轲戣=*5)f/嘼q茂湼*溞袸? y楋綜w+b觗蚢a譢E;L`城え襒=yo[啻p郡蝁U嬓/f*础后:L77Y嬝= 銟镔珶貹室槿3奟4 +Ic鎮緳=`歍C嶖8妖须*霒>b閈P&嬷K 礭^ 瀌%坟 岯釖{h 烨.碤〾邓#R^鏔E稥%Ha_E瘁R撊)+縉Pp櫑^L==萍應-檁f烇.穓膘b3瓵悉篃g诔漫B粉设詳螿尫?9覩軪餘L&n4ょ胫丌5攡訊uQ鐊濏城~3=-Q牪だD賽2和| +芶媅A栎钓1~(z谲楘鐵%歐宮鳀鷆萶崓敞RdV捤/w\澫c?7澉"4m^?炶葕w猥9僪0絬P@[0*骼~锱t釡岩PLgN垍ソ 螪 镠追*hZ拖献姃)_kCD窱酸Y繹rqPdo(l趐 B粷9(5f橔<鑉%S(A$`篅蜵G忼麶B1葐F<循r0み1V?2*仕oH@W埡1儊tR,zB瑫洣檔W鼂懪DjF|*::鵀奠慛u剳z*~)F~|;睅:钑'2掮鎵嚎PvC2蹬謋I_郓A碗Z}悲KRT▂2赵A扵i2Y8C糛?5内厛漕Pw;)晕?赑&趆并匲 U,%秿)#坯鵾吇熃UT鼆銲弪b~薥Q"铧%VBZ9\BkB{)斦溼i沾;l\蔙O!%"碽cP毙片 ;茆KP蜷來@J|Z觧痛`Gf_)5䲢橿0s蠗R螗-砫V廘AS簛=F卲箌r襽&y-2椱 @=7;撨=NqS褶ū>L伧n峊U;蟟鴻q诗u巢矡-d op实葺朏G=!+E蟺L鏟=s蹪%Mi嬪~g<,Bl毽!q蕣lE]1&8瀰!獖#趛q鎌/9偌9<4 +锦S+犹kt浇?ODU1賮馡椳"g浉渠籴缯蚪&誼擸O瓤 & +葍&7p僢閆6嫅l 軇_2钱=(L,-OXk抔榠皝逸抝?E,姽载&萯i /)U贛NB︺&=;kz喜軩v2'#B鐈;|豇痺B蒠8箛MX腱xP鰜C兌6.-糇5篇*芨I{奠灯輯7N鰕虨6v彆=苻肀`领AlG忶\jU/-Y&Z-楕>軵冻孻o&甖){ u674舯Ui+咄U抧!毙$il欻.嬥垏菋_`烘v訲 孃h走骇x妻;&瓓4@2俛n黙Uw;蘴4b(绀鵇鍿qQ~璵 c頒佻1NV(笤 -欢4莺灨鷲0嶳迨婓稙䦂擻%T嗪烊颽欔pQ&冥皂@藺鏂8j爋u澁:笇5鎽牽'籴麊{裲堉C>铏鰫裵掦"F +Rr#乥?恢fX*&铡枞葼畷/(艘h*菧栄正&pY~}=mFC!軏q┺ 劦myX+;5藸a(hr厗錯垧1鞟*莚8[I-喒襡Z]疧篽!嶉錏*>OL榼<堷(ξ-(^琷"qx轵狤 'H勲,星a:r崠廭鳺蕋屾浏fdaxyW`N攧< +┢‥缤橲羀曄8⿺轟+︿-麨ZM梺9Q+像i攪L5噇苽@罺(`g{j謎Q詜輮揹\?`Qу W<硪.唋苟≮霗Bj {埦3范聿縯N}鲳 籍鹬姵忇%ol鶸蛪U倳J艮y_1戩鞳 欚)!#u婺篊鹑J \k訥l燠懼錰m蒶k蹽稴聒龂岇{弸#掠灾槬楷Q犳態B翫3) 嚶P2^奌飽湼=⒎鞸'n9钘婩0 ╰q敓IO囡襶齃暥'徠~`k糓u䓖z,%峕$鬣iR搝0@諏徱l潫ka鉑uB1咳穬a义窠Ah譻斗F8 闦B叜詮鱆X7晇榎晶吞17Em砋潐,*怿芫8勞%铹C︴止{(,O轉A蕜植浈絥[笓= 疧0綁1/b襐蒬!⒀洌'wDJ偾蜢!/腉,~粉I樱样>册tK 甘汅X{觠皼U7+泑3Ptjv峚揽庿剸wU鏲鱵蝳号WX啷岕褨$-0Qu(掘庆s畎(播2-L星j䦆ヾk駔膙毩u7扈-殴H*熦;=嚂3e)_J鬄箆荔LpG⒂3j撧侭/g#黼v侧 *稏竲霣勺HzB塻軶`葩诒18a滜4|:幰EQ巔C&*i桶- v*C侏汌氚-b噰鎧"A7鬗鐊om┓(. qq迩倒玧噖X#傷雘C?耕ufz)WB猹倝)l柽椾蓄媨A+E6D@j雝姬p円伳G瓀F-軒樎%QS奨9喎=7埝*騷6鄶踟噟礊㎜;nDk|镨囿罢@葝揣a煰妾Qj蠲幫辨姃已t;I氁8O-焥:Z峬p9婢%嵚-'稖1瓊岑|>PA}l 遊 黙9cC蓹'巵堖练筳"県珇"K)+盠胚l襚I裆vO錂捬饞T㭎崗4祕櫷J$ 潿酅+%q}妇;癵椶↙﹢*2犉飚H3%a%嬨~晲m鉛 v鞦%'h棙ω7;5j=$1&Y埵敭 +0~ +F-輗Q缽 嗥%E 啺趇斌涹ix Y釫 ++^葺姴 娖H咲黐i#闣F辏_}夫浬紑D∑~$)1ふ_|9駎T炂繉9,>P駽蹜閱]7T2gjVb儱痧鑷蜜g唷垛烠冱鍛=蓩淙鯯鴐庍0䴙o~葵麩糷龂?黖_鷚鰋鸠?奎眠?镡坿蔁;鲝_/巷開餩.嶞as/䲢lGb7 cV癍!补5劲C竅莁O幛SNA鯝5噧俖 壢@?雳侜F,h?B"(礷 " 苙#瞙4楰k#羈L啦 lol(F+[7翬{ +;$淂  +)]5礔韄哠# +%燸Hx灕E*y葖F/ 嫣炾j5v;_鲨="蔕 !=拁yr痲巀v龊/暗0 x0#朅趞GcS堛袶v襝h ef忁=j +'B兺H2-坲衄8N瞞ml鴶"{S8 j檊娫Yyu=維鲿*&蹼V顿8*M狞炩 E嶘U艡RVVy櫴岲鵀完v矎橵_bAq笣䎬5菬v#V骔4Nvjuh;叁B;寖D掘C関鑵"叫G蝆xS覌焸nz蛕7dT>W\ A^9腒R碗((5蝝賡!懛OF疵餞彮3劰⒚憭腜鼯+Z痯淞Ad菈X_)G5gBz%,\埤wO[L.騝獟H螦.悞m_?鲟 饐f哏璧~QxBg詞Ρ翌1NE蛽K0拽(6饨!擧購卯 鈝&3啁1弩]i'漂湎b>o蹠揾蟦夈)%<> L悌)銠s圚o%"D[蓹(蜶S騭ˇf侏I捔T:;< A"=>I%c5/<=$晛VKAQt_j埍 +7-倡笨崣F[ {xh.┽城関卆L诛驹{7pBmLW輴冖碱W'XgY5終1幐汝飸2牞qf|綑>N6Xx@3Lh誎jJ'趋?庢廭佬i vd狇笼+鳎V~>謥%静肨囮ZZz弹`3袲M$露?,6N畴j挎冐x鮶橾yY⺗踬讲灛序聧z-4袴牀穽Z趜欯e 竅裮Z= *=澥锳|W蒢~j=覣u痶斺)释 膷甔PU邂棆 閄G ">:\猻∽嫗oJ?+齦仸炊>{鋭Z姻 9:Q刄 舝F{镓q駚绵鳀!蘉撼慪滷$D>c鍽l觟zf匃GC琖8旧喉莖l失聲YKq!`L< G骿俾蹮瓕F紷 +阮(埨 +薢4(s飊秜崳 /筛燤认<孧F甥卻慓増増(L'?H1赴娊/u%缲 PF鼸Jq衾1儨=╭F忓. 0栊V动J骆匟F1珒戬楳纴 塘纷jr^鉱晵-q)1訏P忼檾袐X赫収裬io蔌&=孫G3:3耚c.iU!]艪m腡菻婶; l隓%軪l@L冹!邩T浢M舍条憞P+釴J涍畝菽8F抎鬑H={d呦紘捘躲蔥汆讐j瘕ZV9 +R%儢D癇Kac%6爒揆4蹒?朹燂饽ZT+哟JA日铒dlⅠqDh%7廱辞Q堾r蕅f2祺:褝缟D隸y襕殕X#j#+臲恵b鉩>沦懏'柩D0鮑趸飷潌Rnw棉E擠5X篏},%Z2实C專0プ&帎4r夕鳧_~1燽!KD衑#->~箾矚q回Fc攨巴 蒎廕!D1褩QM赊筄垙惒僙3/$至7职R4*; ㎏U腥_棕004u硺耠鮜目)柶t宆N`L#=E%蝉-;>">闿鷏cwa幁犃[赢#湃\)囟錳伧棖U琖雉绨謘:阬怤w@鹍縨脞酦偩溩+T0_kaK!`M@泱怠l烥A)o肷╧槼C误W-L啳Wj9 垃/孕﹦觻Z M}劵 锁搅嫡="挔0蝟 Q詹@=皫,?~6孴曍m璾2A迭Y坔p<矻翭]煚楧 +騦w摸D[2竈61乲 >M%El?遭根`1G淥抽X[膄%etj, 2$莾S摊鱕哪稙iTuy 枰)>矊<挦潊G<<濜牁刜PD篵0[*鮆8i狆覑疒舗Z蒽V碯K樔+A貾掇B仑2GrM饉铼愉}颕_>衜?湎趡欣nP9虱縇C膵=񼭜bP県眏CQ頋|L}d决唹 狡S鄲礎JeG:d珿=W椃W m 级轝| 硰q籷梞擲豟濼3鈧L堜蹠=X陌0X,嶓b囐_蟧 +状T檟j:SS#?忢[凬Y4╥y@$*+w邻VP)蟗<,磟皦S7,D>鹰隽鲯偳 L黾艊郭︹9f_ u2珷h妐DO弴;$痹 +簁玂澯T錥z很雱檡];杩 碉F[堭-G珪暚軿n3蹊l`傿纖jv簍谮帨I$汋>}B騍 V]般L$d瞄 特鐪z(恜Ch楒釫5BHEJY銛户mv猧齄1s娹y霊W0<vDH#訮N惡+Bc6煭%庫倁 兩鵀:- 樫,#易xp颇U櫌唜臡z,v~K鯟廬^馔釟詻翂鱡琀1装猓釂=c7I鄁咹崕u报篁 報6Z拫馑莅 [业  > 8lD聲)齢G铙椒瀴餴d帛磢,洧婛4j镊Nb⺮}灡涆~d"緙皿1嚷J卪D*%痊彽鋥* -吏眷!谗 [: 次璻7{&鷃撲6o6ьB8<4獗疽rpn脥 ;灔獖U脂懊┶p`T矨'鰿U?7 x醧攻l%Z#@d*蒹nFTrO1q頉0妁N鋞 傪*崜'鋖@1桲鱆q)7d顔絡i,傝9肳"# *<瑥姨/伦{隑)Imw樄QVW辜囓鞰缏 [0襗!'诊$1n儻W6偽馾霊{dO傊gG:9$捾= +#鱝踯~pL([I俌懲鴻葴蠁捑た緾疫磛`2螆豍偢堆郎BAq埅糧^し~ 豎#:l.HZ柦@讀2鲲拿d^I6f@ 雬[及o"曽1鎚ti榒疚澏h擮箙XT k澾&川X捫"瑊幝鈶9餷v>~;糠"w;!*l@E淴¬? 氦磠镎巙'膏`虚2~ly +Je&衘n斜 W巻;嚷綏2秦博 +爡B古喐瘖?婈二鎲插 那転敦宝梟|W'△<2綿*师!苄誳縩;S锷jy6捤稟 齨杌酛嵴)w銋K厭則?,崊粂極<jO錵)#6馈m臄脝,鞠?b Sh榝P PKqx渏妫,'#x` 惹渉 覭O漉9j之槑X泃竗㭎牏拮 c橪信稌P]/@擾)两UtH+O4DF钛 N延Qg!  +鹰 @p[嘾J>誣s6瞦鹏;QnZ.p酑畵擈痺朏仒薐G4+H暀 樈嘷隚肬F撼>o瓲鯌篸橍頚Lh yH赈h楻灻?2iEh垐.4廡~!y~A籹/se芯猢跏K廉GGy%耐Z|g1Y~賘2亙V宊瀞m+d[R/庞@焙0D7(8*檨>q[濫巇+jUeQ ]ml{h 懠j&{a&@%纂u!▊tK;o'靠m;8窛4讁遷闘箬s髾德M藢 XrG/Ln,K挼W6m攀筬膗T9鱝僐1丳葈%喯毣祔x7 ?P!W9怽胭* uI稝N}犌崔n嵰媐?懨gAyiy)伴\ +蒙哙^v屯,Gr>绶譵p蟃G 曎F瑜4)⒌Wh猘4耄}稪粡锛鶴誄.n%*H%铪鱊枼妖GO.狲O/U叱^(~ d6B,'Bw蕰XB/ M+閐Z迱/'貴&#拪詺麱遺靪1辗竍鳳_D鐤嗎6齅6D/雎G9lm{ *阜^eb<6鱪苷趙"E]>錨佁*O屢ャ靠鍻暼fE箻磂搆︼騟僦(rIu|欓P%莣mH3典e翜,{蛣 4侄邑硔F墕0禿脖鈔bO 3軾岱j[L +綑蓮WaY莙,i +樠M臨P梭 憠肞隅贐,Xw禝*=$I#醴P<綸 31-竁晥駾p彖伖內⒛BE樫胢Yz<杗粯睄泟Z涯悊D/ +u幈k#8:-RT湸"x鐰2厗臠s<咅鱪8<(󥉵r鶷L`探=貐L搽鋥忂邞嶊嵧P件p蛸b`塗諵v噽"靏忋丮~6T>晙5甔婳0箻炖鸡~觻J0#亏x鄛5u鞭O}豠e.)W`jiG~m'摅?vstQ腴6瞔_M劶 t$}u2+l啦Gya1L~硔K[卭?=~YP吂lYHQ曚鞈籵00壝枲p悇+)泈6鉄鴶+鰾'@)鸿戧蛧Z6鶈瘪啴栫Pc2U1ひJ運%uユA:=悶@隰:SZ鈽u旡I蝴l=d_WtL媂Q伏J/+}x}鲌+売锉2岋啿轔'B乴愼鼧j徽L墱7Kfe\d'_洓噏n 鄎}v麤麕躓魿鉭W +C耟15B輤勍r傗34]嬖e榰蒝^扮9裎|+娜螼Y0謗嗅Q屘焻秘剚a'G8鑾昅醛鎢椩t魣'1厒诀x_畐傰*"瀾c7@,---瑯4阩(等(M'峵(钐Z5 M2:"4% +掽8%鐯欿 3瑨)觾@X纷S鉝-邙'鰿澹CE(?茟戰彽2綘#瑎kuH铢刍瑙<6墹vlwj摷q逰胿i緱榹H紻茍B鏬X檷8*+=!-v旦^僽 濝賰ex蘂w瞽uイ壓萔祌{^您ZA#-[箅 拺匄s墛密Ie鲕娞R蝸澩鱃a5/銶R$R偍俊愕瓈L,Y齰v渔m /N@/ $骓 脄L 旙;4=抶|琟SB侾Bj蛃"婻鼃!倧]qш滓bk陪>琲鄁AM/x3屚*痴17+/耳)$辳g鸙>逗棑謙b嵯怃忤C裠6"V~笼 J姡暌4眈R庫殪K忿最, 2uyx绦凭w鎱8u励C2 <鰆痖矈箝Ⅻ+M銻瀙蚽莕MJM 矔菦4:>&'d彞l'3 +Vx砿罚炂乷Z訣HS脠窿-|Y$躯*9吕x坮爚譙_2iJE赖抐v▽事箇eq z:瞮灨M,缇*>l牧僘耷 VE侩.送#r鄶7:悠uhcV'甧蹩>3]<熽嘮濫/阊吕揁P鶤殨 f篪溮:-(祵:"灀0R=$氏!鎣傡 +(擅C欐a魲\疣gv[滹G裯 aBZど+)艻弫L j狫6?-/+鍓Wi*羼Yh挳` %/E針]1Jp瀔鱜滋9激@纑掗湳宀鋹屜雬=陀蓧=枔錖的巳愄擒 cg缣葊椋n,敇g3臼隑P#%箱 鴅#鲝ハ|捾<$F 伇鈦 懤] Z笇`y髵U=谥C?c'K杹:,,x悎组R$镁 +(蒯鴽`鱌璩PH他q腦W彎xλs4P +g,p鋳M9`倧F0*m萬蚬T范W谒z泱H 兿3|Y1~K$陧 $60舫圡/9d謅7沆'SB`瀞"'姇dl(#霫9v 3/Du楶籨#ng鎦遬昀i32vy痿`+擃轡k诵 +廼鎑蛤@Z~@qW'~獎yr婚p7O鐖隻j耇a銍庹 `JY n妶S黒M棔.2jfaW-K0雓I嗥对P2B滳众踪H=_蹆啙.瞥鞂3辜Uhp"X耆澣煂過q醎蔐娹﨔$顯Z帛唰瓺>箱P镲玱%CK跇]啙2l輛娭陦 8槥r攫卮瀥芈俠 堿'祲3+k泌Zo鑛鯐苽4о$ 93粊)9膇纮"鰴 +q虑髦猠-:fぶm枪蜈b鯐霅7fK瞖,[1犠f:v>韆+L麿Q璗by膌繨陬吘∠贇//2q奡]^鼴矋1Q儳!'矽塶=綱jv0垏H .J哄挚磳cj 唿#熳盔&B蠲+Hd山 馻r=諀v焉輓-d6H睜x皾I!=j鞛"刘6/3}P*u疿舉謓2协)貎P蓟籋}R怘C菝{〔垴LV搟嗈霑w6@殾輶&v)@恀8 +畡Dc4筐燳紬頄P{n5pl煨0涜!,"銺~痝J 挚禈脠1X暪羂l仜邺pu2屽飸鈥#"篗飪n渑矁柛>.z鯤承CM,{8跻C襴蠆县@碜曍褘:輾卨|FZ揆q桾磺藨哱+鄺=.虷Q{Q亦-A,:]#吲8P:)=A缐EQ& b槂_)B(-潌鉖^Tz刽'枦9=5(波J噻@暁4Q)挗R0#KG崦乤欮8*(z癐di'牨﹋+皞粍蒒婧眔奥1崅P* 0]Y襲諻陵.瘉箍4镋f#5V<肂R苴s奝Q{弦FVAw7"鲏l?Vjw岀7蓘oU髁:夿b`ζ笰煂儜焂L癅$7爃氐f4z拘栫-艘u篊豆穐Z槬->鶚.j2E噦●籈;(`姅E<侖L妔t&傠6堩l(レ介3 丧[n{囵>J妿饱藖pU翾虬*P騉{(_G喆混4艍e(&縅耈驔l頂@2S击S顁/佄_~坷拶p5鄂愪螛*~a|lX;a>訥uC擕 {袵喠蒏 撟q}DN穧S/ (K(P餜曀㈧莼'_憜 >貾uM7筀Z荮+躝穉屟=怽K╕p$輩颙WizY9撪燔邧媋獓*(G6搻u;譺7R喀X;碗z:$喧6P癣?G1嵚v柆>!#jN諆'w8荁铱'n橀и餒敢j莺%熧JA饯剕呃~R寠 /郋畚猎=晌 晑1#璐DG熒n搘H6&羲鷄B瞞.憼H8汒萬财 +*L$趤=閙覵%]軜9`寴韻?y<8鳼$韠n=R (z0!=2 挴C殏>獷漏懰kH@朌).*XdN*|薁$蠀M痙>莂 (箐<'叝鰨X%$=1,谰r鐯x"n0F5 謾Ixm!兆@圆 軸\呤纖忏& +!TC磵駙纃齰昒癅>/;5EH拽膯庐壵H薠溈Q>#a鐓不@[豥 机#蔇k)蒗打.50J 5!殉*f&抒蘒稫灜薬悡牕3tx*G:Z鉫2齂铗挑r#]榶喫UY湫 N磤v(偒TGt-幆w蛇e芤 eyhWRh筃SVsak矹闥s虫)吾 Q11aMjLけ4糖];B!9S赟輰5.~&]袾阣y】%紘胍匳 s潲蓃 驠'孪^(/70敬fs:U于祿訯R1欆"+[( 龣艊嚕W1)渘t7+滹_坵鎫〩牙h7x券惶峃右)s93"[牄贗N(3湔祊=唫m}よ嬄5j躒扊-IJdk:贽曆@8 \頲U釃, 9巎冹忡|签遡Ag壷夛D肶趷溓逴B D蚖 +w'.(_薏;3齌恟p8yY(HS顑M+嶧 i茷8侲緵E>L"矠h惃kO匧鰠┨恬zf.u崒袷鼌瞾賘j乨珣掄0漠屉 蹐Gr 鞞f辶懾 +@yM駵猁?F娹EC, 檔8淹W涘遒C5県E粼V挵4(R3^H! Nl肨co鏚殬蕖娠儎/ +d钛晕^麬蓾瑻)!㎏涓j魣|-括L1l訔<綶龆d墰)99i歚痉;獴M珛闐璤h嗈 Um伃#:l.浽-RD$9n俚擴跙b以M囎瀬顣啼Vy 寲雏 岚S烄鲆澕 禼 k敖乢疎m 5焦忈鱊7妠:9(f|胚鱊s跨`4靸$u(仴旹娖问骍 艉J歙eo`A澮!x`楟6竵 腠顄P蚻^衼 dC@艑A惭D,鄫s>;Z?0A眳"耔Gy薊┉d:%i櫚蘄*掜,2ㄘ鞠娃}颁i]k癶*崭\LJ特筧d矃匰瞬罭!I矗薉Z\b"ry?v覵梟m焔腩囗O軨4:墘s鱜蟋跿v%Vm>o,c鑦j鯳шAum袇u酻鞇蛝A=?Hz碳Yu'霈儾寭!w6X/竟栊T嗠,&(9)$'Y閏轈j65oKOM(tmH+,l/翀噾穊*琂9[ や簛 v87`,vK瘐霓痱D-8eこ霊+揯8M9芉蠅 0Ⅴ繥茶l#鄴7(~唱}垓p輮'溶<割脵h蘕魄鼩1新澁'tS[&F靵~珜, :枣'聯M烷n<眽o +岿^X聖獍鞃蜌媇騑黓累币銙鑍 鉉侕,i.蕢jw歿焛|#殏徲韜 ~q蝝 g擧M,运趓茄1缋腘灜淯D1Y滧%[寘焯T":; )芳R8套[帟3v0l#跡Mr龖 $嵎抣榀+鍅.峒(珂{枖鍼RY載邔荖Y鄑5n邤Q蝠KX鉣捱.1,鄅WP鑲vu瑟7襄3衂6z.)y/骤腎>侯憺邀R[<牊焹jo鵳@C +318$LGB),粏郉癜Sg" +蚀DX[R>Lh眻t逰),螤HbGN打柽D 乥甩硕踲4笩瞖襀,E'[GP」^滐 濼*&=:慠o橢苠堺热(笉sy詳瓤>0,觸ye%y偀奷倖覩S覤両ゎxJPH_褾鈠瘯菠 +6s1騎s^U萵 !!J硨 握 雝 焠汗f/B铊U輔 + Godg$硲賏邞N洛櫸H鵹 +cSp缧 +3BaS @4\粟亵蕮[鼯桸緭礚A`繟俵挰AR眅8妬|yN鲿d9MvUu<<琪瞋輚鰛_H谳;!!Y貹""蟱﹌鋖牄扇SfO騹釿3繳3G戡5V9昬a霷=櫊&!E>"簨n[郼PW椢|=些鹧t磗枑_%X聜U牱)藾1t膩荏Q癝K28禵Wp屇I+=睮Tb=$*~戏b黀A<,郯:j8覴$唰對$薃炉e*g +# aw5k`卅]5歘惰PQ馉玫蜯琐洢R[掫谦 +b4N盽艰=XMA镴狭x$":9EBI0アR jV茣 鲓R鍨&8泠鄍揣*\盈ウ簜la+0遳P鮇吅z+ShUO*8jP#IH涸趈 雫}歴L?<^7蹱砖%&+鼑喲MG霨 +A*莢偞,? 柠p犙燂`墷&wS2c垭劙噪 $7{X=蘊蔕槆aK卝@鉕_p篟,+%傸m +AN穂阜:c#俳fp=!珨4Q +?炄T鞗稼儼M!爬 DhE7煫玥<爡絸N;猍 }fE呀`F杊秢H崳擩芟7蠹堧认1Q祫/湺茑敯R席銢S C拆 KЫ顒曼=軮物=レ烯%h=湎!鮐俫葢&Q7%z[VWZbk璽 n9%牥騅瘒?J驱e +襜酬澐W +-乑爚喖脁-uOCπ`攞鱈根a0隻)Er錸G≧?藘>3h錗\WGpKqM煡F鳋鑗糙昁 譄 Lo畭j Y7樥nHw$%1﹂眠E7餘6B3w嗁.D.昅;BX@贛;疑AEIl靰慞猷EZ彸Tw苣欛渁姎b料GQ+犼-E晽薱 +Q濤獴貢!/ )TYN94Hu硔%聪棌仙掦蒯V'仾#/佦:楡+6C 馹蕷篱\P`Y$畨膽;q檗粟d倓n#s矷2*Pr澐n$T|婘z縲槯樎"V崠"aG淒:雓?锝潅-5時鹕9\)馪蒰圏勥@俕d ^侚辰OGO倛睶糣?棩+O5g4?8Zf懐貪RY;毹瑂vV干O\蛴]P濥鶈{貵柃!{VW` 6メsコsT皱/?诳芐2焦攔﹌夘岄筳鸈#m|Ⅱ涊.3碉蒌8-h泇X3h*.拒袞/ s椬k> =^@u*2D随 hA筭KC'Bわ牚R鍌莰5,Z#缞櫬+:巬"悺<逪~鉛鬺渎f!mk鑵闹H碊}>邱匃踠笧tj;-l0Z撚8"DG燕蹵杬柑餦c 9泾Gj|\毖aM<3j繪 +sP颧s;@DnD6阨q嫉聼,e1莺- x ,F燦Jy<Y菶棒盈胬桰X=葤5惹 贻2膦f%讅#答+9‵>'谁瞗湩樗齟竞名% +誣疗ブu=%痭9QJ愿顔X﹔D啢 鮐靠e詃颗耨鵙|h瘫写< §.x榌+7Pb帏黒Y搄忶丙K裙柀點逪V勾汋柯m +-鬳zQ斦唳y6蹈舚蠤pO脼Mlx徂h%y5嵀鰒┽趮燂榏弫:刑袆掍(槧蠠冢 豀%秗笍]鶨嵈) &I陘|灑騸髦J挍T_C) e-5靚涢藪庌2k琱傅饸剫绯啈恭}|鞜羜5睞 锃#M\}I镹$q訃Χ梙pZ 雼o814(l师V嗌酿/癍*OUaK旒嗘闡付 拉I'0N3P睾.侁3BKX]8 +鍾 柪Ph+瑙辻相湒豄%2 JF H8H艹<匇w.還H飭筹恺♂穣蒵1硻颯zI$7觔9#E聄Ez簷ZT槩N顃cS靵,j偉YP墬拂席.B嵉Q幸甀H2QY[(k蝸鱋絧O报霋b$ mCk蒯棯掆Y-瞺膮n诰啌,昘q2盚拑敶侌|717f鉿V2饕蜽╙?谦!栏鱹鋩/sb H#巁C4T$超駱DRwG'卨%哇O钌岐坱濡䙡J<瀙,v椮$鑻/#髥;奛M陧<:7 湼r8(<+6}O?x牚璴G1劥墜蕽6c踎悴Y=q@诨 CU)=犘y6阍πw鞻CO榎渠<8\艞LL]w涌绫劚>7j菲{ +芝]Q缸鷳-險1b@ +剾勃@鉙x鶄缽巒簠9珸Ct)j? P磛^(-05<鍇U7謢嗰沭=b鳅>R'为琂xT M^圽U睟瓌7f檙t鲱R剥G彸.挀拸銆L曵嫟SzS瘥$铈[偝 I{唻u"欝盔CK魌緫e{AhZ賢鈦L另蔰琄蝈\~*R +嘱3!p茍 zG:卻 @突劆呬瞠乻{膢柜魳CH5[鎢t +峍脝 n愑1鵱d┖'絥狔d9+T{,)始憉|t輴t葤 稈坹皃粂!丛$袨@_6蔸┗Wpt%|YT鍪b0/?隄A︹]>{物蔲O; ┮p爺谓嫅6盎D雍凧娽`柩_k凧q%$躽TtDH 槨F!,kL@c>g!0嵯H跏a%涤世02uo庾瞌d豶'IiM 裩Z"儨$鄫.揞~見廊祟-zmBjvC色蝄顬!蒌滉鉣g?橷d罟'C9埥?鍙}箨1mU[窢痻}祝嗭/u硚=3脅7 +&镧鰓s`-3ぃa9豗唩襄3湉66ED沱 惊B▋L崜5|) }t戶2$悋>#j誗徖辩趏担k挣妊v#娂懷'{D=W呪}朸Ly+R7僷OV膡q*剪P钔鞖0*佔誴單b坍#(I畉E靓PEz%AAA"可鷗Αi茮 &狀T刓刃=錝g繙/R锝稣(Z>泪炱@痑"碉8}E竗舾XZS9b兜#!'菾稁/r+d_憌玺k鬪6h蒯蚳P榧2泂Q\mO2w婪:装&.釥$"1恵*箂え鬋DC忎螱J龒$%蘌7 *"B棱yJ6*偧轏摚w\+@;詔kkm楰峎陪啜"5D廯繧弓r瑕粿;~賤cv旑{!异!帊9暍皱堐覥褋 蝬岡臚_z疋1皇5p3n4玿U睘^%,癔輪VW"E`祼&K埞&P*偅>毹翨幾}凧茷闏拋p[1#叽"3年壩/癹M蹐u +RdT4y攋撯缅試 SZt傷┤2汢{$!翈[Q圫lc鋩〗Nk塶錦懹b濔1肀#z0燮扚2樤_*檰║~w1鯘凵李u 辌Wz#B徒Dj竭鞙ds~(w2d>fτn篣棐瘈珘}傅~筕G母B狺 >>u泇P檁蟇菵箍誇k鶧\丅跸)囒 ,D擁┅ SX岣j薂m8蚃<隗y\浠E畜2#K(18j妸 8=錛0yo章Z\磝距)獘5+ 勷@'靠_箢'j胓栭邥71j范r,L柔3-*郎囈蠏曓;4jF躐岥鞌<羱す<%*x悐j.Q<艛闲檴箫;8侩FQP%4詴鐘-诶p24衟]蚉尨 0w/3-z艈"TR璹+侶吅p帓\GV侸#(狿=B銻跜酅Bs(抐07偵B盍F;z懑X?刓{屷氧u骉蝕{Ey矈朖 郪凵&71HO .r榥P{<飇聆怈慨o勽l_r,J秬-喏`?!r悦B;HA '匲磝+M?魐朢戻裠%鋺湈?E訾K揎城箎-p纲 Ustk柫+瓱(埐勃伢$紇蠺獏w桖g张寇莉XSUh屦9憜ě 韤EYfjv忼(蹜颎B<}9剥7慧韢~ +癯{蘶館慡軆Fグ19噃#$ `脈L鋣}xu旹cz y羢斯锥/D肊Ez斢Wd"jln覜#V @?賩菣zG 燷'冼腀4掴 +L4 +鴈釧罦L樬吋aSoHy=E琥R1擞 "毃迻~$3秭0)$=Xz鑡+*刹g(讂!訣bxk鐄ㄈ 憲s獔Z鲝/q*3緢R!"膝滅睳說RtEZ`団 -咢c靌muV捅1 G:&!~8@=4=矫鷈7u襷瑜★T,!爣 褀*ㄓ_D圻A探l8跤kZ縧貶玝啫箻}濐窖蹜:IN=<賆斦鍹囒欱B胩,{ g1魼寰嘻=d1!斀骡蒰囘<2叼缧侞8缀 蟵lfM9K 蜓沱%螅踍\ThG翚r鯂&}厢聶芯嘡Y筢)N瘤7%V谜啱]n1鴾Xf瞸a喴K羘^R!鹑"m$uJ\蓾BD$k骜ve>}庌$0ilR肎贵J武咦 ъ畳僢囂虉蕯aS?麱.瞟F阞~>SD]*篝鈾觡蘳揾X羃{;=骈Qx烯帥纛滞鋈r)$俑算> ?hr2匇?8/詓;娯\賽謻僒!nb闲]楚%悇訉%o蚊 L遄0(O>裰2*y餁 rE5罼懚逦f谨锫烐,K:.">毊闳\餀駳!趴篹=9=餾>"5XZc虩@":M'詉Fx(哩6沔* 蕐r8罢*軒R野/块ai侵U瑲ⅲ茢u瑅J伣+/# A_鬼楙I)f 炯晉蕛C#巜?饩獣9焬`厅M╪?櫓^惭v跘靍^:hE5[e7c`6滧圴q饷3|稛狌茗兀o9觫E查戶嘽凎-罷鏔宋濴櫯皊閣p{9妵y)豬邢q7@+A72翭誓贑a)D9侲医跻錛T}###砡赺著鋋碏$5"#|Mu閒!r b>瀣%Y>紁櫹q驾\7谪鉡MZ琡u3劑6XE能馏Kd腣<枆睬浭$棑Q鎥le罜傗H%0D窆kb犄袜x偳=GR圷莃艈IO4P\_>&e 筪虃F重T崍賏扲%犴f?徝俫S 缮鳁瑻:TL :8▊鮸铩斖迠rM豎\ 琀仿[(哮z%N8斤7弅*P$钿6秨=)F^*3X岾9 ?~{緤nQ鷝c(敽s韩+鹡!ARo+41-qEH#3煈伛o`\ggk l 囿\e嵴倭邺2x +(i8攍n:婮唚 琬记咔豯Fj翾"彿X煙=|3嫉B 鍧 肜}r2筒礋痝蝵H ;[袅穢叻镭銱点絧跣$怜nd/J?8]4eh目m椫堅(XjO妃&3汊泽 7R[d]籾D;B綇℉霵覡9蠄轚 癞A;C!l泋頇;Q%Q倴h鯷萠 讅ゝ蛌_5貫.0踛g酊韒Xg鬈0蹛熤 +罢K騪曄8|▋&P 垼= 飴佚I0磃,唋倣'`赧4測sD1聆5R$殣 炼懈x鼕u)JⅤ艾ZV胋[廏@炝绩襭Q納^o` +锴葅qmO陉昉b蟜G謍ij{W濸 220灔儤⒘簭!u鳉虫0&垠﹛皔曔SZ 2U廹@B僙綴4A窤骼肝馪薤1慅 煆晁8鵌R銮3~9V彁侵Kt:橁Y诛縅癞?恄钟p銩J褰蓞儿| 矐^{,3E憟u鮌甯#)H鼶=)Qu勡汼:Uz橃鳂j@k具寬內蝝;霨7 (摅b1.ソ癇 + +(&蘌@1;碼>@搤5 鶿__汫0徍废踑N潱5P<だ}3 +:黅發:8绣瞇旻j9袡4柙溫卣.0P 嗅灷媢A氚穪壳g-(0僓X>i踌毬罧o&剸TU覴阠 鑆塤耷缲\浆@W椭袏h8U駐叒$⒂2壽会凗$唆Z=D稘麕`&匩 尋)f79F璌P"晹圻輌粶妼A躪攖{ |_溦g摸製<刍分 AXp:q# D 鏛grq憑&_涝+ > 臑= &S: P軠'l霴祊開鍛遊[;一W窇r瑥 g砈隳X 珓祈|62G臚: 餶(w荓)g絒4鰹T劖齍 v睫;6 KbU頵嘨A繇嶻宺 +*rE qkM凃笆,\洡垊(媱抭~,C詗; □侪齝瓺饁=+^D鮦 }tO+;H磪b蚵8瞍B鮱"b1Zd嚅Qf4襫i+凞0鮆┧]l> +琼桌_$<逆 錈燗嘗d鯻p唑_闱唿憧蓳?唿傀~飨魁?窥o葵н葵懑7)匡鵁O颳_窥徔?鳙糬虔醡O^#恨{隊烖兊%仧建懨-ㄖ帾F醤`潦0浖忞$A)w耹Sq浵莮 T︵厉t压腦QYe圾缑妬蔟!\ij8菷a7痴顆Vl;:+96Z圡鏿乽瓺遟_Sv{壃#e筁l鎊秣鮖?"[嬧蟸玦hW4╭Km澾h'晍v紲C唞卄H`TtnppvC%榫z漆UC軋窠5/8 瓌@啰快 p lP虦︼瓃傹w苵H琖, >诮;缘:o噙!"赒g@猴v癠 +髽Uk:愅鑭短Zb罠姯%&璒鰟羿8餜豆4劳飤n蕒>f澫c`.詙~絰2g-糺.竦~-VW4杵镉譾镩4>!朽蝧逜糸悟萢 崴ry&3旤U jp怑靇Z栾亚q怶 _伭2а釵獥` +覃 8擂?T猝颓譞骦Xc飑呒F鄅墻W矘/%秲v +CA #2=3巳X 嗎HI&佺<黏$MIXRo)h!2i:r 鵃每蒞烉jK 赝 &洔 牫 驻デ塍2;vl鏝#Z澆 +鰩F扌+ u潺謌 W墶掫貅唜熈?贇:哘霋{虶邖@ガ藺LLG(wh滯H +L赠|<溘嫬e[g 椕煊/ =鼕=唯恑o釡zEb叢5e鉹螧袧8  +棜'$燯<挙P"蓗X巚岙+渆挎 鵩塭6僕擞';聮}?E* v4藷焮85鍥Vl柄 e廪\σ,)>屚诘C鱬癧倍A絰__1裔N2拇Zy紿茟Spd <4㈩O泩 '肟w橫W秞鍒"( 釞oT+褫 \頂I禑躕=颶几n槟A柚替瑞\步)衕Z|厗RO戕0g=e蝀RVB沤3z;sN竸 度9磀镻&柁.<拒g5菎Dv巬Q竧s媬8@A 绫 j瀔~aqmb估[\榬 +:棑:顓7V4(孋.畮佟蕑HP啭6?灶y.B眍R鞛嬋痕相嗚p饊[>磧{TR 朆+矌/睟瘋$籔<H{ 歽釔縣b楯<怨爂$6Xw麔籚\齍=母?*0麇}礊富黉l蝿 v*愿瀱+塻x╬灟蝥讠K萴瘅瀅'葟唩h踫邹[應烾暍圩髓7S垟{冼弩g>#M焎-氾骃吕r=埕稸諐e拰髣e@D俹仩峍b髗/虗#w+是锆i?ウ菭*k1t) 刷魳濫塇曭攰8蚷霣1GH謢 a瘭籝a睊鶊QC#}~(0叆鉵燩N%9.鷯1mo|5M斣!臷 +"=^濰慝@`讑甤?锟喜曾蒛e26钳= +y渄\1齢 o"{挤2褳l '8>撍鍙8X鉋筇,褬皳,\DC莻竌~4l2E{I矅>瞩%pI1?*y)舗忻!#B叒蠉~?<7欌粻s<斅y= +I詬 鋣霛? w 9|s嚗縣m>Dl戺鏃稹鲈58枀 瀱0=蕾瀎夅祊>;)心懽B總熌尔椔w8灹儓]S5L 珬u6銠W:聃u梟N9磥煰a荓86VLI沾弳_N猴璓reE頣痆裐甙)yE<uFㄏ鎷"L/鄲: 擄滞k刺Bj巼d=*e幚澩n顨L en菶[帡鷠鵳#槇昂89繑@*M蛔!堯掺^TL柬l彣鴏埢tk;$溥睃}诞解╫烢縝1镞3邪{櫩TF_驁檆n緆蠡U墊9彙%屴42洅G4趟]亲 盛犑&愶秒鹦ヰ鉆cn|2In4腉瑅袧P瑚遙匄 t|L芣銩淸+`dV/瓏%葈焨[芩6梋ok; 7F硓0LW83:硷刊lA&E&Nb{饪Z渊俼扂a+"宺磈Q;4v谼0<0銼]龌;K},J嫈(夥 +{ r轆*Y聘N蓏.芬 仅T戎瘷3e)憒8B掫ex澔鯼跦j筿λ赆殒J协擉勌斆陪v`蘱#恵封n~O+﹤6]$]+5OrIW}獠( +飝Fe +y綱 +_顜o蘖G瘼EP薆韵候 簛窗*(鍎嘶稐箋o繦8蠈晩<|葒;攩8<蝮a蔈f势GI 貘q輮遲酸0涧=,瘨MrI,iD歬達鼤cB{猘E?尋!V暓=]截1Ye5腤r蘢o戰)慅(3PE鏣%紩綨尻8A$(唸Z!W孈Jd驺卯C(姳Kh娟舷欆瑑!e吩-O罁c-夨 Y玣G!Iy蜸x[魺痑&3牗~茐| 駒踶集w蠼A8-褸 泀a!錬 +Z(聟艽;~sW喭9鈳銣齫妵瑤誯- cdcr唟1P/导(>⒙碊2碫8互@菼觜駓梓裕遱锱>z↓跲9盌釖芞鑥|9峈鱶4u"!aM鳭胏vP锔Kd= y娙e貊Y*銮.=@2:uv3簖 粫緶*朅2灷圢>(SO"(哐嶽(oJJ 劂坬撯呵=a 1刖YV欣儓e浶O窭4(IL鍯)宾M徚綝L蓮擎g穣及鸭﨏礦壽N$OT k!%+刁兖;$*S'in{榎U,`裾煮欌鍒k,})w@U,旑Q^"e遻&~`8鞻鋘锔獯(HG@瀦漑剽>鍷鬸驰鹩-\婘敄s@劖觑a_/ng臽螒庣99>籊-w+V)泣臁6饻鐠浭檻K*憅J罁:"釘巇"#%掸嬱!g領 5H评琣櫅J<屽 vtP亶窑稯衭譿=幐摱鵜 藁D銺j.趮^慾楶渲璓祹B暊漲王駓 ,F螯hD倁XむM崦ft戕酢\-z鳐lU]刼攄udn篜蟼F3x杫膂@c +K啈呯X烳%6U轚6P 謍 KQhHhH . &PE^ 譇砝ㄝ御 +癙y探yS5犆Aor_ 2'BLЦw椬駥虂1A=姠4冢H"6潜!&= 愺絬j@铢0捚7燍靇遌耤x濞逮9賌縞&綒驅全h)篵)◆(鮇謄"RWnD妮簀 d鞏擠貆H縣孿:坂<嘺磺a疡蛠趭Z0夔dR<旟喭网ηr瞗镙P`Pr掲{E(訉X暄嬔▌Wj=藞/⒅H瓎周+x菲z])寞+镪~.擢4蕦岋 zV踟]櫎鱓M(嘐 j}01(2)3礅楞傋 瘫%佷.陟焹l?荿aq鈺頩pk鲼:Lㄥ>堍 +lH兖茿C商ωR飅'[?孷_<峝(a諵#愽賰阧彾衃 潞騔膓lG麂摔F Z諮F瑭Y偀o匑)礳唙fc7篶聤,<^?姉xA*- $C束"囈%c攼+斋*瞛柖S!(N徾-嗦按E~ +fG崲嗕/#赐|鹩臍-簕ゐT@t奃TH~U=,U@蝔F伢枦 輢CN澳槜噶J橬r洝 +鷾疛9娸躽5例厈纞;t G槎,籍@x侽{ wln-宜跛夑6-i坖Pq胖\ w;臭Q癱%侻&⑤餯掊==萼x5=盏#哲鏠 0es缕pH琜臻圉 9A'★爔\盕礚`F8)邆}m)鰔,TI鞉P頤H +M bwH儊%弚"Q=揠7j:S36!?▉8R)d;{ @a +遐ㄝ8{鹓D%魶eP0GP関#届鲏榋旡m 嘜么妷&_墕Fu瘵J鏕#}c嬻<: 2蓙y肾槳1嬩  +U珓鍨钁p鋭沯t'兄苂?38█硬hZg簅B|8鄜-2铰V俠恆2?趿Y*SS鲪栀-(3'卲;膤嚛賴3舺1G)葘>髎9跖>鉒際立]賽E 擪A丳-鈅aOVrB5NihT4z寓a骱+銗_X樴Q粷+挃祯伸PS%骔S琡倜%k>焱期g刖}癑)~M0姫昙汪 誄廭=2Y&卿淎 >掚2 <},:囕dM睙S宀G ;矊}4k寗L\畺輬鷮g澨Thl摩7#&艚-*爕D辎I缅vSv镭p[y褾|涆_G╊膈萚0+4赴o#c碦(釯岭=1:.尝揁,侂%轃旮/蘨0钟A"-Y鯔y*栛窶H>r洑4仁馗ik颧⺗" 豊苾.:!瀾m鍇傿K)p瀙吳→陱4j倔g鮑输H猃U%s炐 繟濩5宔呕杁e忮〣^H溽C[Ny9糰魊薹Pa{T:w*wx8@=仉摌繿0@^荐\v揌q琌cA3`Z5閻tPfl|#XHB_=i }巻x 邩F晕F%詉鲵垯婒q=X1歆 蜇盩\pR0梺]O&/擱橸J功<沂 .(" [H椑k?!慿S,唞鸦稼6<{厎-貨s$ +pV葄誔9;寳t+敠调>|花70╠Q/T幺欴獒Y89束Y(螒!0K=(iMCU`5f0KM! +: 陦d%蔪臼桶%Ok鑻=痫欹`K伋牬Jk?鬊v(YLy峇澎倰+褖hHX卺{u9z獚,d (嚽(2Ny朹秾今埍(>薄>騽u銷i/4"鳊v狚黈趢浽k飁暛"#L 陬诤`x涩R慰?咇9櫐%狸盚y 唦2"Y:~溗搒嶔K钅爱 谸瘟M#03歄:谹qt{睂B5e悈郕:窑赲;簤dS疤 t&;A|塪1蝘'嘐{;块狑臘s骩a軕o 资^iB揶i& U廟x楝)脂j6軅峎朓v开o =%*R 蒍01嶎>戃灕[2覸萾wPY词瀓0覢雟PE柍}=4铲J"禲b焓 澑hP揃K^SW(28L剈]舙薅舡饅撱焢t@*h藽樗EX G?n$;'鶰傓/<鮌鋥= |索莎q2锡Xm篻Z/d農 詯[鈚髬Z摠\LK佣騒B蕑纓z忳;タ傝+!轧g癖矸喝b霒3,<-neI +閾爾髕|徍;稅.i醇 AD遛詰"摋縒U栋狤奭蜵XQ*駓乗{A墇鴻儛u漐w` 縘,>T噬蠧 Dq)2汤蔍y冺蠭_毀|夭.&ojT邆絼蹯志萣狩a蚨=G,華姓萪V兎k8 矚岸`O8畻萀vhr鐌'榡1琴夅淳跀筠mV钷旲l/瓯5甧筥懰可}7夰VBb睨螠K5楩bcXkV鏛辑鷊#D逓z飥菚盭8s栅nhIN鬊汲恰歀趀縀A死 $/珄E羆秕泭蕤暥/8|`_嚰&樌戂乨.);@%{擟0UТ)犺噤'/%1+廝,|&Z .N1j门貊k颳臭` TY顱R`H 熹虵D嫴v吐&蓴P 脈騛孲。僱;詁ff捚T6cn甠媒N5hd(M褍蒺鴆6黄 "敢+[ 羻尶pH%1僣躯怗╋0C)7! 吔耑 臯k榽5愉孭k(炆L"奚呁ゝ郒%糳?!鏡_继廩J6C淹 +茓叝儹薧>E鸡吿[娜礁瑎{ RXV唩俲鹋f^z般潬724ko 嶙駈i伅煈b瓤侀笡\?R桚b奖陘M⒕[浡#墦沠A兊,垕満'芟別tiY"跖#5Cp箅 熐1薌H +>赢)欿"Z:鵁龔 S构,穚p虪菟垀棒N 建姟z劜馽麈: +k*{鶾7麋踤:枙仫鋄塯喛 惣)Y麤K?{h1孿T鹯慧8崶}J倩骐溹x"sF鋴琛kqt垍 z 否渋@f62DH"邕e v(Ι茉V5n魕錑a'前J叮懡!鳗X1スPE>6鈆藱墦猒腸防儆!哰<罜0t杧S踡鮬 ㄞ悰鍋j 畴>禹4[l兀檋j\薮Kf看壢河 +勐巚G翷D|謧蔎I溓祱r31鈁s>丨堨"i-檛r髙6俭帉"$宅Szㄐ7y簒L隣x{騰莑邢愴qi靥~dB轈7丳供螗:忦E,#$殑P锼蜯L1UM豅8ek(N咟P樻.靜譂跢p"塁n8馪(嵿E沰屃骬:,独監剪摼祭籒搹p謮`膓+坽 t 諘庅Y9礴+y:潰(ry謶 +p楙9馞б $ 楳Y磭 +侯 辔堫^/ +;)jT麍儐傗娀)vI鹈iX磁DA` +巘噐T逅3笙W  伲颤綂偝QW(`袲嚾V銡!T)CeCWe* gmR.煥90彞2郤3纉>K芾鱸_蒗a溚魼餠垿xw" м師`嗀Оg.24补冣EJ卍n45 燘]营卶猈阨m徺,澴(k\絅qPK攘峝 +惄8vx訡Q廞5f&M<3+iU +鼊 燩锊b zJ娜<\Y躢;模K"帥4WwU訄毀轫 G,淒锢錉鰙3罼^1=az:侾f苳>c俚;E咘蹖銹祥〣柮吅qk叿u9e鲫 0訌恧洞 蓒璑+aX镦礪`"% O&(:9 燈柩lm=)T?r郹ti塑^g垍eO虅襼啤 7wr舩@圓{ ⒗,$猋$ ▁' 撁(沶縌鞇E馐G/砓`kK\ sC鲉 o3=労;4:囊撈鄌狲珮锋Z0p yf —c簷倰 ZG +& 鏗BKAf!戹u啥'詎1Y擦6鐑魽x/R貅 翌n2掗SOA.尧鴙b 瑟誼+l耆: `]S瞦攩o—=)鐷铅0*L菻|∮矦/揊5 +緲xJ-$)Y)茢阞HR亂VD篞Ss_駎&b3=0胵b~":azW{鸠栳<]-}鳧]芒*a惤{鰚兢,*<繡lW圩En釆蕟 縮*睻揉*,T言>输P 茳辿吘媣O`XNv劮 @+逍*I:%闹8 *)t孼+R=x楄/L#臌历2赟v=K鏒聅f1播|墇YS咥b.喙柒劁珜CE脜1玏慤k!C㎡+ 愻︵粙 懸8n鳕&h\"Nh恋!瓤^r箑犈響臚U 5 腹竉]$x%鯿2垉葳&I玤潑[脥p%?篷梛5陎&[墱q H鄜o潧周 V:胝摔 :扭@亵8U〈B3慶UrP麻@D獂寁:$V葧矩 +uhl觑馉Cz啯p(A终#qGW&蹾Xu腯铇- 肾喕!枘*i力 }F%鼶}腆71〥iP)Yj$碴2膺思@,捠]豲Q乜b挖70 +F喘僒,鰄vi9m猈^藾,N赾嘊,秤L淗`&t_抐祒!u/喙W忀嬝厜2皅M!p> O菈]鎐*#兦l☆i娊喱G5羘柽銹 巖 炬僽1m涛5d冋v氰画宣7l!'Yn^侻頦:2s{匒T虡%r Ю滦`|177F$O9蒅=j襇┚!2嚮轺萑憥X-詽c*A^鏈!渭%^!W璇g膀净鮭D犛褑#/郀著\忙a麒@ 巏詾nh5_"?替:"橛B. 5C[坲匑艄:p攅Rn􍋈疨撨乄+n馬:>:恌燪豛KT苼{簈+霔С寸I[L邸G$~-偆婗qY+,2嚠1湅輲,5!Cu冭42逞垨暨拍旴 昻d'峍偛M&)鉆蠸偶#H@疠+ 肙 希L傋-y`F惤鱡菈XT .0抋3{甜舛皣噸ヰ +hoテぇ厷瀘J"炖芧虙妎dN胈4遦畋鬘a榻_纘l蓜嚫髄鑎+6澏f徑籆@L縟葡:X-犄C?砳B涽75L-w4.顋$b╡騕F$槚)鑑+5妡悝]QK2?.ふaHRP-閎z璔湚筶*t橞慴津-叏閔氚詄<}垟 */赎揩劾ュ[Na‐硚銼麢5*zyE蛼勁eqD蠠:寷媣慷墧q繾(_甲('軈}k蘻鉄?呋G@x5p/ _皼 7yw[&i呋夬鐧 鳿瑲籥Dz"vわ姷毻I*M}O鱵 1聶j停秵%熐|i黚I妇v褬b-吶鲆軩Y炅lC/蘥h魻蝎P,汉WO蛽#Z<,\)託N{% 5so逆 羬?繛躁 +Q鯟4;>M〾D黜萭L譀/>s夗 萉>蓪[c徇 +稧y聼Q紵巐q"傎諧曐唘狃h{ 胿儘:弲菍L"莀N锩]1Y嚃?!)'泔 +4HO呫嚲NC狅啿*葆忉怅h╬y$晆<1欍P骁+]餬Ж +圛Q赠菠S&躃附琳¥{0 +砪D3^l#爲q/CSF薱.笱歝(P拂鎟O鹦xRT**俦囗 B霹黒真[Y究攦@ $汭W饏=:鳥豂P8詫i劅Ix珳L跬x1_[@冄齨丿烞/bv險鈊陠H嗓?疖祱 崣sj鍽*Z巰C席'鱟樤Ur遏鵼聱裐忞s摃YC颅8Cu但佯╖1緸 +P^LekVR殜{#笱鹚A疝搂ǖn;GQZ憋| 煐7鏉e蘝傋b眀.M昬 +5=鎮壇嵿偭熂 僡n4咗熾赬!}跞=#Q编煅溒 %蘳{n鱗珓监坧込Y≮ ++Tj %樍剗V圷翨耔@Qo3? g蟷X?M/_K閘麘グ烵瀼R鰭写蔭殑睂揗.Y憴X'掉潬8)鱽姢幑W抍笒帥u'椾?汓錠7['_'竒 2`n羆D@覈r!{;豥紩塌T終(u惝\孪葎叽h菞@P#酂│3樛蘱鳽髺荢(蜫騲陝> 0>w$5#M.逾X8K栅V蘽`小叚f 騵) 霠3蛜j 旉UMU曶=唠&忹媁剻氯kO馝阹В"奬"蜀](k鍍mt+盵ゴwS螒猺鲧k\>)鋱"y,見蜹TC9衃埈厴瓶6糄x1P榟?1`飳w,幇隮n礼F叵1 X乘尺闕Jh树.Lc$k@!.{銋靐_Q∽珘1躭禰剛Y)郒*.搂窣╯/`孛tF俛Xu钂評踗G噻鐿≈扏(x#╃ 瘰#V:jdI碨: +祘纮%:Nz歭:.窂5!騵琐S7佺o╁瓫鋘Yvk 誙a剴鼑L梳叔▲輚,;aB-n戆P ? +境頄,刓C6}鱤@\T诘i 姪=PU疻熢5R]2Z鍏2)6b娼台伬丂"磆従4襪f薰\ d争-X1k練+権Gv;踈绅$鋮堉佟TIZ刃;p匬憔2鷹艍*婼揈E@1側}鱊6pU睞io幞贋1愵捏h?T痒"p\鵼 hUg554饉E屯觉潧'缄橈載[Π"62蝻-I2>忐]扫F[ +9﹒尡T撇y览T 楻苵螑B^d徥 !$+恡g衩l299T~榜J蚕麐&+嵶櫺辏珿b7瑜H輗滈1巃4涀喿歉2]3St;胦^u櫜5{鄚へ疅"穄-膤圹妇隥脄W繛7衪塥y?L0n[暈GvD龊To碣B翯3m湮EK}噐丯甡X籔椋^d`钁堹瑕9 嗉"羋1K 剝ㄥ帝,⺈康@鹼铊B仛鈞# +礄箞"/覛鉏Xe礇姶!頟湂 眉蠫C 霳膵腥/唡[(濹 1?\d虃FaU币陋"0輍%!xH*忈蚲Q i3p +`:瀦鵸丩擄n|擹顴睪` "囒r? 躵r@鏀3で^9脕;Sg蕣鴯/p%繧 糮7唞IAFe皻脏圗6e:ぁm胫e墚蔋﹢鴢揨棏 Uqp呎4靃褙啥嵗d*獀5d1~虚i71=萔溘 邸6耭臜*烰贍bj[8髗粷饻欁ie。i鞑3矉J蓃靾街^妆裋8嶁y/淬 焠4 ":呾蒨 玶`駽睾} 眴7a朖5閌膷hGf篃萧+M慼d筻虁馷霅#A~頧A鷎 )h sl睐1莓[`摑 {玼}樱懠vY瓘G7揭慙V*頤钄x輢B缌)鬓p?9响鴭芝Vn  B韆L撑麅齶劒ZT.敿裫~酸LT n<6輷蛶糙慤絯Y 秉鮴-燧yZ +h蹥0贻Q<帧怦6w_皎駐d騖#豯V跸m3E鹬侢EC華悽S'zX 3護締o胭.烀V!蜇x|%鰶嬭w#w窺貅hG2(#靦擌'谲|4<# W餒K怊nd犜俶N2驛^杘 -姵泏 駻w侃呬璂z雞艿<%-h嬽#燎 q[垀縦 厳,-舃究]v@ 蚑4漼 g _ +5:FwZ{=Z蠵枢骑饈钵x5磤%碚<嵦q滂,檽)pC捋緀a9聸癑賕v硒鎾潥hU/r+8*堾Yt!V雿lh7c礊銋~鯏.蠘5摠V蜎柮B經+砼鄬4p! d臙壒茙竳i糎挰P@簤zw0=ta2)Y凪綃鷅:(p鮗Q` +濨稍q+mL嗢6.3铝y睰浣缳滞煸&閬&﹨=4丿tJp鲶@-7Oz"{櫕废n 偖劎婜,r2趼z锺鞤 *\=i2搜M萁z,怗p2退)簽Ct]芔>蜙淈j睻徤%1?r月"陁趉m*P羙奤$j蔭[{Sv僩7殠3RB羫妇║0鞆棍吮莀{9献7J硞*.z⒏$x巳寡 灂蓟錑 瑔u懡蜉嫿*狡<伡<=f鬚d篝0缪B嗜91茌鍟鲿鋧Q1輅槣点>K;魱B;十鯜|纼蓽G,騇鸱8%T旒檿{偨 |t伦I9#?{k1釤1覠伔W逵5V居vDxV襩w&褾鸔デG粯ij) UY:$=鬝狎N坢鸀挦暵霠.YE留Y_伟仞j[Cv楾"呖$9}證t2籀g巃 <<蝟鶹v. m櫵E?跬M/锕9D1笝鳝痝愩玻 \犪㎡9獸b嵒[t!軟"-ihLM/靅=t霉未[!⒃)3X浹##C晨瘟濕 +N;)恜=2攫@`鬋,萏夯濤枠8⑵褋&穒a;陧 家怶瓄tl檍訿^胲佲 +'Y'o盥蛰較h嗮x*\v烗疄=镭=铠H>q箏?敺'n乯z鼦潏XE 捿M{淍岢登讱詩?碸冰K駵8#(`k譟vJ戓0抷鱝v圄x@{b韉癈6榸n["镙 細俸嚏#gΣ 筪挌D/a審瓉81Wf3 嫲y漝H2g灂覐$艮b+-緞迉@J驕2>#{屽∮\鏪牒云鍹" +Z 洹荿 "匀;%k焌)拾<_ 烰嘥3OE筵堩鮤6螑叭送yKi)68懜M`q/}诰蹸M坂E--涵歵秡肳栘籚l}癄Us缔蓣飳苢,X :]溥岳|悄软QQL3b獍j^EヂY鱕{犝#O1雓=苇;1乔v鏕 +鏩1譯熒s圜V憡i kqa#鬶t"]RCq鎒潕& !я4A慷I峝蜤o傩I鉆遊k鑷舍懃剅黕s勍^9w#/S髐J禲历ug &@j6L)i觹:厘淰k 客p鐗j屣<>愭>pU孈取煍舷]瑥J/髦鷦鍐鼙駛卐9 +k`%瘯譄喅GZ卑密C镝nt姩 ;H>-]N B!5枛Qt鸇6鞧!$┟Ep富鞾BE,褝洚4$鞻>颻H彯3S--眺珫鬇9q蓈7w埛 =岧廅.篩[鰑!縚笟,诜付Z4郳秘狱aU"笚晵枇汊@C鑁︺&辆R渡pZ|kEWz=洖4S+sj魛軮弖 cRN +&)爗饔岂葝鬓圼凅沿摃綈┹T)欏>S 繤$呏%Qf露4潄鲣C稛 暂+蛚曨邚瞥舛$鋃!槗襓7捑率q噅媛%0i墪RA沙 臆iOu{\锑`渀c飣^-=牯{滔t#滆斗獏n涛 'H婍h渾8逩!蘨Z(簾$坨 0`瑕!軩<f#冒鷾P殚0x }v6龈鲗;跶0;C癪;姣H 斏剪墰鈩頰鹸l器yPf寱\UZ=^鹊7咔絀m6蠗QJC-慗H@鰍-z&}(>犣q恳遲kazK毃Hb兼{錀鲒y酷$C*熗[鸣 37_C 圓愤尻b┹2嬯!z) 瓄鰮ɡ2枮汥7n5`E磽&H#藑玵 fszf﹫汁饊仕婭6H!煅荩|D7yV銪嘞襇&L椳▼i}棧;檉遇^1癵涠懥|掸6檄晸QP'鞩4L5N 雵U統っ 7樱囕绣憗靻F酒 +葅镝溞鵃櫓亰蕝鑌UZ1嗹浤恲雙FZ 猃 &禋徝1井0顾c i鴙攮 6魍%X担PS 緳璨"藡|C糌饲頎[㎞稾凞瞂(陯苹cU3癃鐝 +垻I籄$姓:礳'浙3悱{E +欄4裑魻Rk,ヨ缶3 L籟F踢n+3疌!9礑FBOb栞c琻%璞窙q1{f簂譀霿qd港夆"臋珻5<1雎绩7$屍=y憜惨Pt')嗯討v/P6迅W眀cG.飣凧踓橧茄=2+z校2デDY仯uw旄y2)被豁嘢9UFx&zP劋莮响边吮DE詘ktc/=I8用鳙T\渆缭m杊J竂XX:≡≤ 玜2俻/﹠妗cJ呙鎲7- 翋䦃紌"4D敯"歁譲]淜岢{ㄧ凗资]>籜>颺紬9 +鮷1祪肝:氥'珌h柺鼫U . +=綆疈$\遐R桡鈙/4' 揿粮G帀炝砐楱蓒" 弲鬽z卧燠#菉sE芸6G,B曑#6脢%塬蝮髒5*.U(莪%繷坾GC瘳鑕副鏎孯聇猱褜W9f%鑕OE囍虛_$an)耞郞M+嚱p+P.R 泚q鑛狴8Y=Qf#Z歂l}啣=30荫^醤膝3I:d 舺cW莧}厷犚珝"q:qL凞聃H鹣 +菼醬墳-r眥C嗏q鯘璷岸ro 諥{捕譟(澅诉c0j琝: +磾銒,聁釆$@枇砶撌伛~2灙刘蹞183n/'" 9徾鮔IG鬭x)鴁屢盎 甇W啅E&烄烯>篯○F!z瀲 +wG辤戫曊瓽p维蓭閻mF萎|8阘 +XP⺪p楖(c}0簅娯駖t袙 9\wU鳑n埓摸5c)A-[倂vM葑{$/貞喍n {詩緻#⑺w~ 簨灑涢 {NP晆娐tHo膑酭-=(跓叴! +莃#Z賝跙p-FP媏+G8瀥繢%Gf +臮硇bx7=軭v靚埢2潾u媒侓^:植.[T歏顛軡嗗 5騊4#b殳.{它< Ly霾K吩Kt 矁拷aで涼粧呻岽W餒桷衘@瓖&M+襰|縃D譈eE(, 譆@X鞈jB嫜 帒渮{#怸滜1ⅥXB? 歡H{c嬎[限娮yㄋ#毃恐煃揯;柈yg\%OY^ 4`L)\0婆Z膘&#z鲲錽 ^~p精f╬'椟M蒍磺c(Cv鱖翴]s3缊輧ɑ_茞杕g +绥4蒱#v.蔠謵4"c议>崭#07銨1義z屧).t噛3o .r^<猘儧#踀縆\ +[砣澡梯 +N4] V諍↙Jr(椉:86鉆d +7塠帷蕜苓$A滬仍s唕賰ef|  +*%詞!>瞙^u=$湿*綎 +Y晍)0{兼閍W蘔v`肗9巎0%矅麠鮏W@a詥郎:装W怈窥Kg I謮5,g燝bGutp(偺 +戒f涪ok婰7=钥湳я薞戎3&|繪c(8甫:_ 6y'r 叏劬n餯J:b.<歚?$荣5%b鴐,烩-b3r軻M圔lj錮>鋠U'謑;;升抌桾p偷+(倴祇薐厕>z膹 儑鎧>0酪琡⑶rW杀桖M郩 h俐E}~b快喅摿鰹箨欴EPw(g┱ ,轝=D泖8"嶌= 櫤z? +0﹩冖%$F0勨:>:犝67Xx珆t1}璕2硐C踡 奃Em来浞蟺l写┼<f; I)PF貄霶M輖 a茾濊\諽^忰袘3-饒賜1 鄼汾炬#6螌剔V>襃饻衾愭u*K〝鳎Cn輽"= +5黳殜5坘租餮旺Q*蚬)w氻4!瓤)юZt. rt6):R1"诒>5%垈GX鰛隺徢鄱k1聰┡邞荤 雸縫鰣葄 袶`珢N茉糟倎挙'槛8矊D|砡痮t澐*3徽餕_蕟O#>{瑋樄諻`i衾$丌⒓剽滤!t饴钴禇Z偭zwp錣!磠莟lm戸奷鱤"r屭6 bs|O%P飾4鼹:p,匨U梮 2 :饫袱pj弟謱l0躟/污P S骤AzQ珇{聸<\f1pc 伯 [貱浯椔\鞃鹃佢[U驕 +亊t薬扔犡b F⒏囌G鱈l鲝.? 痲糲7苢AZU鐕d s 蛊R,l<05/吵呎儱圻U簍-P蝏铏壛_栚$硄籄ma=磐窲*偟幭縴js擧'炻y}v#7O峽o瘤z3b~眧FF^U鰪攮枱掛:涟o8S蛇17F顊])琣洶鄺6冂锉-,'跛H祤7墏$犙怜铨<R碝P侐腟饬顽GC'梊鈈kk,3蘘陔銤印虮'橗#Tf!D宅>#煴Gw每D)艛:9(斶_ A晑w轄B╠觿?_燼丶e崮粸,k椽乲珃豠=H僊r界x谤躅癣 [{$E軞>廜C癇楌,齏.n=7k罕u淄忭翞怼罬"<槔=E罍 謳n诡.=9R–躊蓸秀p蘳嗘)鮵Xd祳篱u肊"筊鬍u置vzA苘W& 1尅庘奢]尐4suE84厐幇垑_T郓!b掆欥鏍P癶z荼u併申@鷘o玝葿惣壯(J3型b漕秩碛M-J!魛vO徧奲巤-渇些3嚤├﹦简析:U范珵I>W旪緵黦{鳊n儍1鬥 B镊t掐>餞寙粃眣 #趴塥+=n詮蓚昢Y羦l+9L{\Záq'5Z賽摵 W$Oa7刁}忚赁驡)7籊χ5)T;秣揯;j俕1哖苋W 僩Y=6e弧洆!嫐%鑋` 箻&/~媬3鹡WAb;H=甀 ~t軰輡嗉w*肖萳馅淮Z婴gz'鍖SF嫘.宨惐衲瓚%瑬h庪#s窟^[攧(栈灊筕"灻}萴槟U嚟鴓p蠿p璌R2荠nB&?旒5圔簠9濩峡X孪G5琦p4摢S殗,璘2?_(鴭tt.)痄T~{木s鬳叠婶y燙,堶Vo倅f厤 靏篅t欫/先锫+嶪M妓:螜椅湔iV% 蝝j,-蛡Z桡蟔劚k錶賈鋷y +⑸紺`v鴔魑祸鏻*`\缱i捿绘鄹┅臨=恊鳐V3*緊E萋疗"@箩崰Jn:暯>+M烃 恱楥a@D妬>醅衯=x纘Z3刷膎{咗炐}囓`**.n胆鴪9鑩墅&刔Ig嵄狂苓xe%鳧懟0\`炊騄槽ю蠄?=x;7&x^p@剴>X癈粓&G*(J养AY渲d詐I槖儎\M@ 鏽濾z)b蛌s4g#鱱峱骹鶤p\宻瓀仲1H`G堰[f迳XX1B眯锶膰j庱K凥U zKD崞*愓宲i褒r猯爤椀勢d櫟 +舟  鄩A)<7_*螆+z糖腓.} W嬝LC+R蒍粖e咸4郆%磛醙V仞┛GT墠`缠彴^Ⅷ晐鐁伉 輠^Y!$~臬挂z)|彮曋z仾(6DHV4?D瑴汩圑餫 %AaHP亂剿羵#闾y#厵 d.g#鄈m9sA 颀0P闌廭J磡M趎癄糙@闸眐y曀輘观;穱7u卷宰DM犡x-[@嚄貮zM#炆|G.C3偓壺餀瞼镝鑄[%H)牟CUA@# y籂L1骮|v蟅¤鯅:b+f婰嶧x标x嗎ZQ喈m乸咁#纥V_ 赐K炤[J虒H]颳6),E|皵缕鲌uW涻b"]詞8 f译葿&X@俕33.$藟穬W&跾T3E钢.t小褎妢f.6椽粩>紜铮诮跑@%榏YdS鼫蟺3p蠛挰WC3琂`痳un}甭,>侈f 峛~B#uQ緪{t藸|褙\鸖I<"k.I7CK夽脌4xF窵!決U]_g>鳰{坰 >婅﨏貴﹗謼HH行@郋-1lj媰鐘P榒焃卯:獥嶎yp7X嗨 +誤雕"h>级廜K鬋歑sX匃1*淦6j榰cg;磨冪g木\聞鸫vtn&猬阤 卨e攉斊M<B翧}zo/钧薶S茗  AYa譮羠橝踚猺碫盐k# 脿瞊]垂~坔A8璏睹/-叀[y gp殧撝侹^|蟽潄I鮼 菵欲噲穭H珪6硊璚m+褯B @-絾張飡跷x繃→"碘Rf叴臂 gJ怛斟-Hd,臵$穌缍`V&S>]|吔慱+褠儨郉褮*岩# B!激踟P拰晫裧{佑耙菬oW:抦搣-#貙u\>zX緻臸h镂垕 ホ匵#%6d頇( ]p罖j泒]}蓆q篘,閡V銳W(铧罄/bd ~潢咖+人K賿E书㤘M烂h<洫 谣﹣廮N課hi畎!鏎 褆卖?齚0婃q畐蒵贒愒B沠昅S>/蓏Qv'爟瓙鄆m橓Q[丌l低停?f崰n諺"xc`殇6 6 詚攈撸歉?心R@ +{^梕﹩ L:t7燅%"'-l瘓3Q6渋齝㑳融鷴桡1䜣楀 *婴4┺8拄擋 +d圲鲲聍~醋H鄁Aq劼,]\>X繖瘝l/砳殛|蕼撌砡珋E"l籙{#D妆#3s7鯖:n邙k}/怬╕仩牱s"糣翫54U P钗p呑5 +1< ]起測mΙ鑰#坞鹆憳} 鈝 +鴥:梻珟uq啬0粇(c乫%L児7g6x侃儣.r揈:躲qYZ擮x豺湠 =O蕓蠛U$劤叾/庶沂fP瀸^m葇g极め痏 Uk悑+3RI齽達xX酌凰微{H| +]耹瘝ld?@zL罻!蝑絽W蝺c"`楢'.貏+磰邧3Qu!oTa采欒M`b倂9aY蓨妇蝨 栨魹K揺# 摧& 饹齅+楇's鸐,猪w葔 B铻L鴁栏6~;欺<矱侐B猫_霭犠/7湪N=硬Hヵe弸浦?#;郳M姭瀶签豈C緾Y鷘m洂苛N昭橣Qow.嘽沖P鸲y惜mu漲;勬愰\!H瘚%Я Hn茐爾滐 U5d7謈[濽漣骘k,"X2韈4M04XхD鹢緜! L*仿Q4鐗;鈐~;C}P庻恫%b潾銵?^M|8Kd.璧鈦俲覬I8喠繟[嬎O鳒5g+1羶)Np ;鲭男掲驯|诱&裮=#I鐛湫愎笧?I仯马s *缆 雁屃)FV5w'滜毦*)P1E/2稾犆?埅dJ}gJシ呸3)穁r-歠F:W*;侄B譯m~忁纅嫨LA ^勅鮬` +中餀"〥!楂 Q<執i%殎o袕X蔋  +)4旜:%a2烪翖@笅z2К<j3]kn逆鞉]譅铹睰;菽D)gG謅頢搚 i刲. 6恿啷簬K蟽|" D 繀M翏=囕狀8!t槁9賸觵岱燃s7;2ηd饞泼謄{!乕抩媃醂籆旰鋒掔补罃QW煂 垌[輤r'妽厵 o檄俙匋l^d"狵喈罏 D<4卽庐3hWH+鯫9b~ 舏3@ +鐯=骦9歱u:4/啅骟< 舾秿钤惒枵Of欢辅&鮾飑鏮?逷Z[@mhm Q疫旆攎t c@X猫0夒晛;J* t"堕伬-鋚VB+▋o爦魲o~飽壢曺8骴耯i銨9惉E6R襓`鞶嗨vm[7vi疢溛旱鋃4K$& E,楔U蜑簙掃3 +z鮵咖Z佐幢H+1s瞪募,搄鎡曅铰;埞yp馮.褖活-)!鯀欱V \Z, i=R20絷み娺杞# a菵喲*嗸麇縳.9x経"$管e:围疼R鰳籲匛9鶳囝ぷe 娢IF諮扳6鉒1"G1 ≠5%uhO虊琬iE萦昬絧L浞Q%偪`墙:F筃懊9嶃L!kbS鮋uJ3<魛琓l睤飱 zW8 檨嫌愖 +^蠁躤鶰8茓麣A胁優烯7 2 +應舅*{e‵n$鷪4 堐耩隂,扝懜$`漻'i檫U%毴鄝襈g亴謴d=荪U/j#r嚯鯌xZ9 X:肺%侬摤:y箇骢呦,蠰z箏熨緿VJ.Q纀刯^剨 .(|櫪譻?g饦*谘嘩~ 绛A.涆m謋 w"嵩芈k霯rI2a喰?泽褌^N?婃幞&&i螙a繌悻2%獝搀礳o畿K廿刟唁;-]韭習Q雍l郃闊%HAN&G縇 ⺪存瞠c鉖_ER循muQ蛴外夕:垿y0薌か镙鍳*閈蒐+笺b絡a頣<靐O貊y1,P#(つ'柂钅6匸}|ik0|痧1C0姲p&0`$G P汲#f叞l8==栫腴銿曒篟_Y攜媥",xH賺w階z蹥5Bh歒籁F?濽︶抏魉)_uZr淖:_欓﨡]:e聁 +鑟赃@@燤6Ps孊錂 ¥逢d62搌+RD <﹊t賃?韘 泮2)'蚔#a闠婁9#ト仆胴魰m姲1.Z騀p蹐鑏扤ㄛ喲nN/7a8W jwbxl _0!"狿鲌D蠺Z翟棫P"`v嚶B*嫉貿銗勠漐鸅D 倚嚈鯇 i _圡怟拃魲馱 5胈崳1qAqR鬘潏瀦U熝'媱P~龀o + ㏒褀拞還綸妧 錉镛4賣pC雟鶉9b{X舊g碻Y聎!5h庳翤n洈疟[=鉯鰄F唸 12D _,渂呍<柫徨% 庞鑛 h]鎲M)璺Z>C豍詉v7拞鑖L鸉仼 嘻tf 鑙g敬zA.t4;朓曚夌缴|]WX4 #2ⅴ 嘯锗.3@ `1+確暏遭纍莹冤 d^3蒎鵩梙飞C菔e)努)y荀Eu旔壭剉ぽ.> %DfN]$饁D& +硒郐ar?4*^瀲YB +>;诋(.萴3簚跦 %RO勁髗鯒29A跱溋犂识闅*規祳旗` +r鹻W箰;:冏礮/X浕o蝇譝C劁渋2x+縱H铧/P糬m珢3[|揲@4訦'4 釐廌4s歍d~峌:熞Z瓭畗懜/凹铋~JmH跢殘`B诼翵诉+_⒆OD:a#詖?唷諨D`c-J&) K-l栒k"/nq鼶(魡qγ/怨:VP巋9討o{綍>b鰕6蛝惞傆$%脻*t\莴潰8仯&趺怩|ツ-k[N髦7拲(綇篬)4曖譪縠k +碿鋰茌 飯責哉句6螸p櫬帓5%g p:b喝ψ扺誀Q丞敐吀瑱餙7 _墂{wH滦>術颭`"b匶Q +)∈昫?@皸n攥击艬犡秦i藹h綦Lz(埑V*I狱B磠 `司~橑墾5炻U8扆雺xoB[揋椊铕DHK!嘋遽I剈凾0#潠[羍滟_G#]培藢鑆訏N?8惞?荲栴颂|Md嬪ヽh}?g6碋w崓S鱰葳[t劲w隨琇扈#榣2V- 莙夃鴄%#嗺hBn弅e晿楫2&2媅硎 采解>Q 坏!Э籽颡C]绪P澧~5C脝|xn堦問瓽;-谿襚+鰊睯痥S*滈=*[閫澓锬慻擬tV鎩%9f 癤}S渍C搳Uw覜>;礜 |NwㄣCE_涂催(儁2g 鎉c肖8以t7GPS蛦鴖!ゅ)I鈡旕戄碏臜晈V 鐲O9攏7瀠[Jp孱t[,)Ymm(鷇稠粋Z`:蹹釩)]w 訐|秘Wd髛3葓$偲耽DuG趣Y逽24笀8頮NE~ⅸ瀾璅0鯐},Q攬'`倈櫷a⿰p孥睮潐?c)樾+W-鱿7 +,NE鐧y鹰婯崉禭朊匍驦5=j(珕⑵hS懥狈鈠"浹唟C祣蘹嫢甹M;睮啢E- +5鬀%脁旹螐4俒U勯榖F韆苴+\)`委複 Ng_HYΔ|蜸髩, ,E槽澞*p拀 +輢绔x6紿Of0Tf&'B4棻朞|:U鵨诠}簕涠発薢y糉J瓤Y*攸岗e讄3_;fj创宝盜a6泼+轟,A 惸u圃6鉵腎p焐爂0b晋@瀤姸o}诒籰踍r=摆n楿夭p鬘[齢轙峎K紞2e磢糺_'[菦u縝K\>鮆棕漛漕3\; >u次謎~衼媈4RF'钕"=Pk !,H嘀駄慃`崏A誨竑.疺?凟滇E)E鬸峆鸗枨Wい+瑯!L橭Dv葤q鮻@稧 xevjvG#Y x84E:#T塇[lV罾k婐3C湲觅凵蛕餠b笈 澏oQ离x&E Nzk[艊蘨3琁h< +葶脋 徒柔F伛鵐w0艑H悓痝遉,\&~52悶S!%譠卹 +嗓ue T| 挡矩qgC貪[p窧*dI蛊f^鸢l紓沐_|#媘qX燂9C糇2{_ / 障TP声藚^P(j**丌R[=+畋臩縱庻№`負v癵贤];楗皪}GQ$愙讛嚣轲*爴s-浌Q+阙|鰏筚瑟&+P5B[+#挒E亝圚Y崓`t掷Z?<張jC貞沢羟@0 雊 +p酂9鱱炷K隁;屵錤u8鼖> 󟺷覸!纠肦骡!ー]y鞁卯媅Fmg堷逋<%莼屣琵#e髄]-瑯蓫8砫騠+`*鉶 7+-焇4o媧#8^*鑷 搶撬V萫shws.0徽5掱L珙^)鵃誡Z?惝L?隬枀}壨k7>倊旭 薣§K潮-+dn憹_0鱑碶榜O?u黣ЭD)4= Q膘@椖*<)g╓ E/o!朊许多荇罾N渕+.:fq覮{1N鄡ΞG{XK极汶xam9瓩<郈浈r12捪D(瑏6h4"鰓2閔.莜),6\るh扰╆ 鱊叛㭎1[劘応?Ds%〩aM +襆&M?鵆zK虲o醩栻脷sk碅昳ep嗘 +廤:'裮誋%c@gVa齖kc儿掂2呿7xtS謖&顶2]b7gve桐z%q>鈓7鉷圎'.v7k雿矒织職# 钑荺鑢嫵芋抾酢ǎ7嘪i#嬪鱆P`+L*u!搵;1"" 舍D縑n 胼僱QjR躙6&.z#M.瀼D'牰kKz0禙遥F餧宙 +X颶O}蕟Ob麜覡ntai獑璚nj%g:锜a 结鷬8ШC8递櫊u蒱D芸湒p肸0.脯"* tT厙Hㄛ1 矵 錝卽綑稑{疫綳鲊q92塒7諢釀9乙N缦X偧櫹,轘恒7浻疭蜘/4[ 潀}礙 矨4 |諚>a t*3CM晴 齃鬡ト隯礮杨vM8PGd-jb +徶璍.:cD榽/d埄H踒柊B"SI_"w钪N螸n/鮕鬌 N<鞎!燵4V5埥亲崣憈燝蟮vR队Ua5婌Wo‥4B 薬羔癀Bu安検)諏,R恥F螖a纎貍悆xc蠖累K趿jeC<脔搈ZP〕y~申_qiつT;3¬Js]6o娾棅觢觱&s籏噞梮Bb%焜bR摀4熩邜⿸惗~> gf{四喪.4蒗\:yB + q诊h'/&W幄@G8湢駀(#3诩!郎pD鷂?E瘜IG″尢 4!g虛3%I墂缤焍蝞q4蔞焽W 鼁 +=躥c0掹姢蛜)憒7郻R*p碓鞔銌詖 m|琽x"'矷")=\Jt麕 p恰А,re潨U痆T腸!砿 +讐B 鴘;M鱩沠呩郉X帘uZi畱@%S6鑽,/> /u碐=嗫_~'%pl佲客繒邏 HF娭S9>謲:幉-&%#簔漻}FI5t>晧2倖 6M峒w 梓啚c泞d鲕6+X5T;妷xV 敞f.衭麗洽q霝.6Q緇Cbp涁戸訢B煂vz 旁&歫L( 潙N閝巟hx寲cd&]XⅩ砖ar轠W0o椐婘S7敠p>甄&筡t 唒}z鏖箔3蟞40鍔~厔岅`MNMx橩E+L娸聮妡z扼慜&{挫<睍q \w*%よ;w駞,唫+pV-(2鄜N5喥誯:0膮Mw籄俊* +飺 +s灥簌ìゴ! 髌 乨 +3鬷鵈i薚 +僱0*'y慝虇颂D "N蔇 漚&嬦鵸唸壚8s嘃1' BL牃,W ,勳L:=_F畿:$雤鱓d:%&稜\;8夶瑰&V>1 kq嚶陫d羸=|窂垳戟~ 珋rp$固Q葹@@※ XOr蟫B象-姰 +貯 懟簱釹I得\A蛒h_5>9 +扯铓遽3蔫U嗛 媃楳瞮疨脘O)庬z 譳脓(碛 蘞<\皻咖8-漲 J L)p+A;(奎;(崽鼸+ 键:袡Y龏* +B1聳蕫3A锑L铯p'<餞 璶刳I粔沆舵@蓇{7偒м鍝主+牝V佛>83J=蟗甇Q4@谥莱俷%jgmG /h豳U祡浦u>x&i鱶胑艘*ga% "}A歜;->4措挥D~_+>E懢gq/y-邜螯{秞( 嚐[Y=謒!喔 _fF疛d:儙祳7 墽kD票鸁躋蟯k鍬nZ鋯1溿b'B緫怐勳>Uzcg曅痓b蹳妞6S贒:蚑宂"5R%E垌旴2岷鬊鐗@[9 "B'燠?螯/蕱Q.戈'.(覜}"鍈=A 愱 傩&瞚ⅩC盏7鳍`0R +V硚rn蹆瞓vA i 綡T.节K]玳乀胕弆濎(.{ +C<5鬮類_GLfg`|b 6*-f0N缇U虢摜粋d銄D膦胛x 3屖+S-熱A蓑/嚯鞈F>ぱ|VcD憢拒砿軕8y绷 薫q朮斯t溮觻C聹*篍(%蚳0) KDy蓌vX崦鎏q二N雝罰 蓈鄛"皟K}郤菄 d呀'繉匲黳醏?L疸裐4璓 {>汞!捭 婭!?刄渷u轸繱$v彆)`S塙*黄訓n偃~鳿L縘烋咏踠臅6婨cH.UE5搂~祉=3烾荎g瘰g$Q瀬滊@6zR,晐3N?嬂g罊 悦懺s啅0屍r\~Gd儛靍告pb:臾惣M媗铹z"橬尬Y 刹艰鍣 ,c$歎┌}D+WeqKtvd缘_(廬$受眺0刑(鏃4ゞ碿 餾冐隌滄&蛢y/y縊鄣焃垞淛v翣爽m1顸浌㖞*遍祂7:閥兙嚵祍_aK~僠*Z>%T 鞸>}/p弝9因偉箼烢gpG 掵K(3 3`鍭w渄甄9%焼{?-G腕褉◤溿Z楷滐痍堞鋠皥S+ 勫耏-搞 忮W>犥<)战檅H顥 XV #x2鑙#蔹皓swqE;越陓罁e+網!諂A春磚GX 渙5穹w隺硏绔;pF銟O鍠c鼅鵊履鸶#*鮎Gk 噲堻9~Q蔷笲娡候鲌>軐忥X壤9鏋赨M濗29梚6閿惀剕7遭 ;(WG莆Y73:豥瘃鏡た|5輮J莳jw ,匞}荓6ytw5,5蓉o n狻涢絿a)欧 +E鞎N |钓Pf頲K a@胖骣郎)$e䏝 fr/{&颿b朵^1圩櫲,*疄<憌3淺攂{ 劀/塮苞c鬫墆r甴O%JyFM躈>k\E轕㤘樃NШ袏@蠓+V 2壅秷)hc殣"408C^孒'CXd俏"嚆!掎諕軡劆阡貂%羖r2J$$O;橣湹[妬VP悇秋 鼥跸3H3忭颞4L躔5猒剖撁Q`:7#.龂22楠 骔斥鱝跳比叜壅dUh:3\YN猨JC$-=鼒x煱坿饸$}*廆灑88肻}HN% 珏藜痷Y^g徊眰tn榞阣;荳菱?_吾q樧$!坋> N +灠xP"攰垚#hdduN$珗D袌菴M脺_R帩<R_%7!w盰:]蒗繺 P4竍`4VZyO鼺燀3b邧8`郠摵6X0r. }L琀吻1#H,嗙? CX侞{,刀┑t&9N騻8醚訿懢滩^晓/Iy穣跀<袘y_;]宠螅韶>渕髶/鱍m19[K鯦|y}卅膬u攷 +Za;當枩%2b俴s%窬0B/翗p 4賒>挫Jy?EXf8]迭覗紺Je茤%揻藬敽跌愩式+v + 靃囼滴曬C木~%( +endstream endobj 16 0 obj <>stream +2y>羧灺耦O謴鋋l削|P16囥 +8絎笜0霜鱌壆渘?|P酻:\錬j?崈5yE礮盺y l麓3約 k懯#掰萬罊j澾I寋;R料t:臼%褬x?獦(慛崥hn資2> 焗IT}!n冂;嗒_筀S矝_H銂榬&崴Ⅳ龟hh鬜妣Q潊x䌷>煤~Z,珐 dFu?另鮏○烹K懘f夌S睐猚N~鍁跤[V豼x!忀廄^^縜q驫蝰L嬀痱{W険瘴覹啻琡%F夤+5welY糯N*'飥(i-聛i{犕壸oA-黆9Y:橐 鶁壅炔~D尷o呐鎇}):"ⅹ颍闵9!j煢F W燐_驞扻飹卓肨灬>吽﹒z荧鬥┩ `8碶▼鮽_灿,#K 陷ZnC~m公鰦鼴诖7T飊矝/9埏z鷺傘R艴麃务饚{S;跞詩l 痼嗼-娸<f褏1$ 9┐2b髉M苕G觷妲勳閯 +蝥'Qu偈铠温呖枘幱蜈@_绬怶6┳$lj m(灶09d檊 弘1嗀匉堷棫礓B印w鑵 刂B0B Kk袈i ^婙PrA欘"P*誏褽O轃&踷& 舮GQ鎺槈牎;硷穂G*褐浤}勀-貲_z=釚+5腰胛棳t8X蝰uˉs睁笪莨屣^灵2锌欹*G*F)穨`<稭9戡財?*喟–; +讂粁趧O[賣S煜9韜Z.Tv#Q`痣aE1 鲷韰$髸诫睨舩飻鷘苫<郬 M轜>B孟p*簸}<>=G曡G洁齛鶍  +参#"5S?#0F嚏濘姗*[ T靧=鰏c/W.幤d虌堉=臁讀=枎hA冏槍_箖筣廐M㊣H莄畸r撯被止1{痎迃e苫80 癮眱踿澽昰蓙l侑遶e紓8勮虋已s⒐-(m zn>2鸬掋Gl騙䲠G@ +軨僠巨dwㄦZ譞V览@E鐧1pv 猢忻Mw鏔瑴隵^"a晟@菀郯0^DtN颓孭q))詫甀d哊;銵u ( 鮷?霎意F鍍喤G*F!歹蹔冈橚鼆鏉誮梅賟@h寘剅>(xj从*桐幫鲌5敮溿|hm匤jA=[Bx6&光+腈姱鳒]瑱Oi +6癮p.)Tr 产Qq菻労nD &B(_隩牲ff褾斘╲叝'<蕘S鯽q鎙 秕b:骩 酃4Y|姕570@图mZ屣>鄳"犩r繚F敏揊4n玣!e翔8YW*蓅$辫(鯹Cbe麑豦Ep}0_Q湖酅餚o呕髥i猎UN煤:u 呇C1J,轌(贡5"  桋i '膧(﹩荡 +M銽 費★(椶訳0琬銉 '}莩U&dw飐泏閸'Z +太饭幹Nc蟇0㈩b璲竺侜謧 +lh%瑮嘄!"幅迿习#⒃5蝱忧脀 +芮6M,倷筷R蠭@糿U瞬貊-肯LHt&z偁蝸@+璆Lǎ鐚籮 鯫_0靪立 +i達茈鋱s膱蠒$M@E!uiB槽坑搻剋鑄.{|竅耓Q:胇V厬4 n鮨蟚岯皓-鶲X闉*萮靖誳ac[,埃@趝嚓tsだ攕籞鸷亾j3b*](Q錹:6a扽-0,R卋撺l,侣矡铉C^~=J鄎51V峇锣*髰0谔x籗敏 *:D岡79詠鈃束尷醖赎W堽譜语.;謥P╡(0fM`雈酻鄣篹 伷1攞9&掺妐njw檱B抲G酗 J甾换疫肑墎EGXC烟+&哤^%8,u臥i龆荑嬙w蘭0b0_U-vM=7钠XbU"R課dh遅";笣1_EK彉"8*%爜[钟耬g餖蜨鲄a05U6輐g璩辱N 扬圂,[ .6`L畃 Q_釱塲>燴.鄗锽膪駛▲ 咮!銂R‐J 泋>@屟-,i4V*b镍靔o3\$傐婸$發蹼 +-ネG荠T 斵ヒ)鴈-▁逖瓠Z}芾~_靠<0喆揽惽o4鱳鏾?齙鍵薿鼜?筮7龥箫轱鰺>逑圻7锟鵢?鷂窨鱫y}- 嚃萍鯨-8諵.t;騹礠oL雘阇t帽綱 鉧,犱,C勭齡j豿\消\爹"羳爜&j6>柁yP£\鲮戡6緟┃B懠""6{捌pz(嚽g膞抅V!丅貃D)/ 犄b唝颩8坓膌Jn8l09煴84嫡W鄁'5庋兇6b%r戲-弦M,1橌琧绱鐍NY\﨧欜]擠5u[u;&鈚軫曕赸惫籦@綁栎c醒賕=ZI V=s $綌冸 +"孩"岷N嫥恺 艬戅隞+7+~沲 鮖拄伷共&Qk#璬# 琜;潍>is7#妕#誠%卒瀦<]+% 嶥锚qm\餿祰抸=奻4袩喷颐<𻭾D 命"a4鋅镓>>5 =罅/少? 憚E356Q皑巌獑k幟鰪胍p耈尿磗Hx蕖<+秈0#0%E`謯籂Ⅸ 圪{IbXギ屧d曩靼!翧i恹G槧6,C 钧2鯟濭鷭蹆 >聑 8足VM7jRdG:釫"謆勡b::3Pg冟;善34轒鋔邮,w%E鵈韡璽龜<蓠E蜊:">鑙^Q$w傺^娠C肁fQs*@亲Vt厍諾跠徫鼊rYZ3e$酁辛Uw鮋q魙!崱)#S弬崮琲O6嵜轔/殀\浵"%*~咣=孿燚[覟P 詿F嗚Mko惓 8及 Q娢穩渉庁zh;瘕0kt踄睞0*H9&胥滁F3瓺h奭`6妰P戔 u瀇2傾G塉h友瀳當蟛答 X4D嵮毯C0Z6j屶O<]嬣EU/嵝)-c)~罏0袲(擰 諰&噡h芪 _]蘽h[e蠒⿸媵-j镬Er嬉刜+蠤 q=幎綆9B櫀<Ш +5 Ya岤鍪>0K"R #虀 +bT?g鷑F<6|Ea`嚃4ビ9*Z瞍鹺笰1@ 祼茔椈\涔O彽茏 vj旳[惎* +3娅jl夤諯^o褕EL{焲z込位岻按兂呭鄸>豟鵐为y~← +%|痡脋蟔95獉J鐖*岢0E?颸<聰!3"紘 +=侗#H芖%ud凶\疯 JX贆%K僰2蝀碓@B>b=酕蠦e铒粖)丱禨]nh蛒鶏髁,通補kM2彴脘尶y +盂翹f%賳趡谱僘P焺飞知羫f曯札wv?䙌M"p) 3;e鳅)r諫荋鉡Z61錽MJ鞁#_)駣末T*鄕厺N<}apZ眱鶱诨 陁-淡邹跖Q0_忺4| +m膼W%u膔1鉫淙B7@r訦x:趤%鯗#琻W裕 O\]w?謁藊$B歶? QA(鸚棟虎w鱵犞厨2茯8%:hGj#噍{;>>偑 vW v誴`ゅ3<鎡=玨>nJB僷'^老[ya缵啒Vq.`W +z!疹=崓i荸b較敡抔禾峗幇"鑴q_9U祐{0<091@~铂V黧 F^钅T9Nz襍'\劑 q. 8垚拸7← 唬 ⺻罨!V莦P誢/'杸睁>炿'8稽堌+X 还並:錖nm篵c小稄膀"q鸢~僠趣憺 36^燼浑柮驆坲!3鄑88⒊塔9仱娭w?奬瀰蹯騪xb壜L`魄觬6%z薥哿喳3挼鍸 蠎-A嚜gz貞q暴:F矜d$氶b駎耧竝脪.Z*鑚^E銽鄠5uC隹靵*蔆弓擛GJ 8Vb8忞㈥;酿賍]折z躲Ch;濯,齑#Xm舸鵿躉剫^E g籰(kU蘻咞遵瘅庪羧z 忠M毐簰啮=_羫圕0鳃蠬蓰>诋T:)[E浑礽)ze碕G qq#恂v婔U 换7毲手幯3梉&' 潔塔冨齒+8 x鰖爢fk>.蚳誅n儿&h搕WD鸼踨Z崛椬H(T嫩ul+RMn顳笝L齛鬈)\埜Jr8鹒贓粍栣h碫E挪 +7D鬝Qh:埇铘]m"J/7濖qF* +朢}ㄩB剾q'7婧阼獳ジ3z蔵勖甿緂87A M訛}蒫=C正┡婑#opZ舗诞i鏥2瓰鬥Qvm/巠厥Ce匕L1 +鼾稬處钅董UL^@罭U4^m搬銞髄痐yN x侂oLa硣峾d堯Kd伺s!R鼁"u^罊7藢烿/1I鞳轢鳰復QO'鄧磊u~輱姢-謱撁♂2z- Y嶤澆E~罓-"'陾蓻u傣脕  焈惶`LE5-J潛[k囡枭陆h躸#愧蚬 龘U慤B}~ @蘣eMh|徹3]E鮚)>帍纙=茖缧篖鍹缳蠄 !鹽榸R邛傪篶}璔8?G吚R谐ヴ8 &S愡2鼛z)眨8 虅.莎读蝥a杴屘橺躝/l脪Zv/6肿鐦徊佨0篪躰bG7 -(廆綆籞a薹Yx偩$K迣Q鱡U蹁峨綁q伩欨S 敱%}$?皇;)2hIr'䅟 LL摂郷h栟M钥G\% 谮钓曒~ 隥8牊I撻眯 池浞嬬稬淼砣脒臤N:w廛0洈 $嘨V“> 憧遜虲嶷鰑`7䦟%耛6*t傈9/瞘瀪翙N倚╧<qz"杼瑘/;瞱撼]贵4鵙Sy葕Y*軳鈪x"^" 倮" 猏|'碑 %煅>uZQ覩囊))鯺(仃有9U-pZ?蠫朙/9<哼%-畗}HMBA予񺢳(凵H廛刑/岭魔Q'I?=u陙灋糠瓎-怫E.袔;廪 怽垹*}OL嬩,7}UX砦伡+Ⅵ?9莔$⑷AZ蜨凢檥玸頢XS齣XH衑 诰卂壐[ 搬徇,Z光裿<6>)F TU楈*醮]ш>&y"/<瞔幛+(`癦﹄孏雕氌2紓u琫'嘣"N+H#\1]伾M:&_0 >z00誩W毓~|>彔撱燏x灅M肣檸v'脪"崑鐰侳茤BC+ z.E淨羅+-8K飺颂>傩-陷i裖\!p_bE獧.嬟ゆ Q溼來焷嶱3 +斅0T?冒俈-`0 +Cx髫蘫W08閳{uoB,xC]悜)陑x芈BtG裄)7@L靓烻徨4淆)#溉k燶8%[珨脤脱lB36艺偣<8炦佈ne淫紵W蘿瞠鏼醋嵍铕3粮鉒歭!圌蓁慳ㄤ邯妘~搢艮S弱谜福c漑^赖k[EJ/LP龙ewAW{境?wl%7M爋ho堐A#耿|`敷梓O賞侏砍魺?7裧絽譑▃>剈/|et3膸t蒉耗Vx7葟厘に6↓J嬝7頣^&F@>@餌gIE 鏞,0,喿齞b焌竷3/h鈂謖遏Yc昺SUD∣懴芤迨_Utz3勬p穩帎:uG籯奨鸸捚5胫^/:徤蛫b垥灦2ao鰗耫璆声蕶b要塣几釖1^v+a鲽hdy邞2P*姊艠Y騙Ho騜=蒢叒[瘅坿{'t#3z鴀森飩^吸 9鑩首孅-"襠vc祜;鼢=巆旹1佀K膂nz恦qw啍鼵攛+∴" 驠勽40f_~kr|毼倗卜?6]樥I畦鳖篟(虋奝<竚襦<3 婴盿YH悤:$幻(柏⿺謼K!彖餄!LMb么#@弯垳0Zu氍yW淐T僚9垐lnS束隩n8v*J媽黑"啠<裹0R\y猍m7<鳍浰晥c^/|*脏U+鈏;す瓀 V蕟劧抵6,G狊!a敄uu牦>胮芕a褧錼檎褑6⑵+=跋>#攉n#$Q姵7藬乂 ct倊I*b獥 tL屉溲煡/簵1k愍 冦妑MyWW7绖<舆x3嘇鯢肃<ヘ-韏 割蝡穉悷溯s筥ow聽]a)-"h!ㄓ.)Ft{Ne猻-紝0浾邛=s}KS笛a颲廡~'绪f謭橛It貁0齺esyr*+哅廗mW$w蓃铏鯪瞦甭挱V歗靗~ㄗ.悇伄(晧#垀rm蝅!鯷種漧1#珿絷祡F靂d 煵N\~?U+;利cJ}儑G% mS遰g.?顤)躢s蛄~n/鸖s) +3w忘澮g嬗解蟢9朾 p%e瓼W 砉觉画Z阻S豣M旭飶崸称\焽裺寄s糺肧rb)Xg0娅鐋乕呙j)镙%B`舶; 6崘Q慦(Q攫zM ~餎诧Q-$躲:餜稅籘3支 D0(Мi锧责嬾版y敄鰱*桂晷&",髺滄咄莨[巃3`J鸫]m;7X!XRD谟亂瀑%"珎驀垥v咔(饖A0^(w!A柗魽xH %姨鵁}籼t<J虩翽Lp騵悚注x6図=鄁瑑zx->TM装揳u紿#蛘d1xj嵔垅圩 # xVUT艶Sk9>@橁弿J-0戅湼苻魁y00z?掫 滪遯阚r弶$owO/J腰S-瞫A舮[HETy垰c谻)鳱wXpL\P窐膍毫.-Xo芉}2靻:\#褆G劣訥^峔疱鑉J影-蓦2靲V拃煴抎.eA隧牋U趠EP%裥稀脉偟=~9u林剠8嬣N}h芀剒C|3n杻a篾w攚碔p褵q+ C=颋s6v扤掇麯S矯(5@Q彡幉7劓幯搇5溉浙XKw\5K滔Y|藺嬜ɑ痻l樁顏抙濧倜榬荒 +ㄉZt蔧庖潰80f亀"+d调5.枦q癓誠y ^*齍e3?`勂0彧寔"(/sh徲<盤鵥靓謒\^SU㘚*曇阄8:脹r夘%1c8鞜F[ *炇,S@6羔+覘牤)岬c嫁桇屲)ぎ嶡y0A2拻齹屜s 誾垎hС_酞4I`黽Lu汙%轚E䓖&郣班笮¨?!q=&d;療15_?p ^d睫禕&瘬鏾鷔0髯C<T蒷ml/魢坫щJ衐瀙0耙,祱F衕f%瓣BlAr蕢t愻驹M7x门0⿲&-Б"JwH5宰C朖\援3菅rx5ym勃祄&=廜薕B!w󾕒d/dN唜/橞R衕〃,皀7肗爋<+i/ +n睭嚪M簻珓?wm0薅菅Zj5浼+=r*n"櫳6榠熃/B#8o嗉g鈔鱴篠譪 魒 諞唗錊燢X芟2*鈨匹>p7.镶{灇D贛鐕譢>l赂*澜80r*Bg敡e鴹侌h(叵 +.鹄9豂#筱.F}gN瀵]x洣UF颠坋藴3 +n綐笍Y7>躝TTx涡3%鲡裁wb伤佺6[+袜+;qo*)J蜡d ka藳鴥緥sX症q{3叮捀襯萗p熱頭+Z嵜中=秏4蒖2 +2晟噒(┳n^1熭摶9晠盉S郕狎o_y嵯釻钘!^跣脢#^伏殯霴#鮠庪M荖鑢牖7凉橬膻 =dx檄G("1n~藁続)4IL& 煮 I"蘏戅-袃8 K &榗铹-<榧g6ョ>Up柅孺薂褍ほ宸鎀證癯齻卞3tKT.*壽j k臣(艟S羦>穎HE} +戊赛(誄趑"E蕴`S|1¥u 顱Cl井圥tj瑯雯犺鋴h`L}+甇9雄w$沥珼\蕕塾X~鮉 ]夬|z 腶臓l読貭∟7Z颐FVX硕唼鼂蚯盔+*l轹yβ/诸) +O)嗉u.m徴@*j匵I挎@慦腡 曕籅龀銶C钒 魷*翸 俰1a9礒穁 +銪lkU>.玑軻鵨凾i▊/畾 x%Nxb +=r,:鈧刾慤?TAFi嘬J疐儇盿/諝'RX曡臾韷=}=慦颚;~pk(f礕糙離暀|;扄Zaн0鷤0謪+海燯 #T9恆睪7"󉃬"仆洚繙瘚R煗>r<㘎%㘎典窐lt)膛6 Yw*0尽寐-畿确U22@ \ CQ惴皚pi!苃锗J!韐緪鲳譐wh荶#詾w 堊1x6鲧6? 蕗W4靪n>嗄&鄦H祻瞡5滾$燖暟/0腂偶逽懁扛蟈A3Z'R傯 N塊塄V胲蝑e茩l觰A8+兛w澦聠燹x蟭h+7I?窱咮S喇j託}G8淝崛'?*I枞裾麢0Z給ヮ冽I邋i(鷸}足vBV銮兦5佢p*i@I樘G,鈩x 政2鍲br诰 遇甒膑珪蕣@3v-旚Qq妴溰剀"!侺+鵍L+O6虀v4趚9C晀嗢險帣R鰧辎vg~伯S>苚%el膷駸|S<,-q2c遈0yN窄疗歂-徃;轝Yd捇R卺盗6O坯诖/?::!肢庸Gj>JK<:蠲轥f樰覲繮逆$-5碐K7辨轓#d賟徥% t拘"#寰季鐞焹鑲F叏=~#~陹so$F訟断碰-m鶹浌S殏8o樔馦箐U 3併l5瞌扩b蟏w䲠:Io + 敮 椔皎G觕堩汶8薋瑡EB曆G臟软*橂孏W殎 +F x]罈 0$伖M$揫6WxGb诏2血d璵r牮x9$褯-I9IaJnc鹯G桌鋏繶 /+儎迈u傡翬礹[v}窯 v魫匝C覠PTi樮C旰_3iS僬(.蒻伋2'諌TPq +亽a64iI;kSL|穟枚r[#=>S䴗>+嵧P欅B 敭(=W崋躅E1劽pu艵頀嚪位 5]燏絽裍錰鳸諻饗鱩y礈纸9U⒇`A攇)>/檝<0韫- +]a'I聍虇I8卺纖萝蕴&;d@4奅賰N; +瑵d嬷+7襖\彸送򍏨O=:ylf鱭フX媟言*Y韺h炼備遺{熷+甄ZJ暑璣䜣m柢偉餬籉#DH蠾钒o喌b岤K嶌J伯氻関:蛁0*]晉*氾7瀛.k@质娒高諸!t湺胆=+佶穈5*#R嵠p赗"a5儩y賠hε葑Oz5趶!鹄`艀zAB癏N:" +摚t2=]j恥{釿4証邸'hd2&]Ζa飺ㄥhaF禣6聑钰梟姹Уjh硃 !鋤#IΔz$蜐3榴翢O寒 霯辤=0z佧+{S怎°^刁㘎瀚D\oE膲韂uF荖.(蜵蒏2P :摮n臆b?鯤<腽0陗w湹顪(扷CyA屎 +i勞)V堢^錖Z燷沘 毃:摁⿶W 柶閼i棬B]瀶溎&=b淐瀅E5硘PY▔#9唡鶳*' +Vh銤wD吪1dwn3%G8毶亀mJ o W议eW*9G擷j2pH7=仱: 皏P毢X铁N(ザ7 麼 2~L綸w据甅偨B俶/u},3翩`D3N匲 楌茑訊e|烢<с|宙児$ 脎; ug6樋簅曅_X"轩慆5i喲7 瓉泷钂挨脆U譇魯鲁鶯贤狝楨5O蔸プy辄嵨)(a/n栟漆阝< 擟睖2{鶤li鴂$t踎泧蔵蔖wr啞 +窈k粛杕[咲⒕犻1鞃渥婄号嶼原[~a菛c[ +衔-癿膢"鑅#.t!=唦岬#鑙q芸湂e聏 S(ynp;辷譖熂 +-○R^c趒濝秎襙g⒆O3i/i{錊⒆锤硆v.萾=>|眥邝矟YQNK烥贶3貆垠b卿8{H嚑$ 森JPAX> 咈&_鳧0:o$暹5 >1A"B|輙GX讐湄;/V5XK,1昛R葕*_呾尛 n潟b乗揗i厅溋1Bw垸*櫅剳胆^=╤呂QW藉疚 ?餓;?q缭鈼:寡1?|;r[卮=#烺.oV姦).¦刵5&'ej沶3l聉奟'諁ZV92".悲9 F(乁W\ty挋釔4 圜i!kx?{笈iw瞼=暰矽昻1O鄖z;]`[衭cs !3:<^.虩漳Rt葏,麗 B7バ0:孜:|/-嶰嬍醋骨?3沅熥ZI踧:w嗼"_>Q飒~ +不柮慎t讂甫燮茤甒?iH4嬦P.|h諣譲晫8:6鮘?萘EOp(;g蟱衠+@E纃" "$2蕦鞞澈侭C 膰F軅*÷[紜堾铼h3經叮E(xΧ驏5$/L觹赈櫵]┿堦铨捽櫫拨1奍工⒐逛=C.籒>g贘碌E&%嵺懫<雠軎 Eu n1~儾偗p&骸=腺DbCF諮e论 I*鏵郆獮O$\郬漊s鵺G4聹.>4A.Ggl);範涝f乙楿陣\衔9D> +鶸(牪7脢 "靨'G漚m玿讲飾棿f釼鸢%_歡z搓耵CU芲鰕鼂苀.燶伭瘆_睺 0腣+鰡cSa膢筈;Azj撑垵椵纺梣禲渾抧焣n`4[G藖]壶 Tれ锺B鸛W "-I|9{l虻z(嶅蘏厡鯑拃龝L8(1>'楮$S! 阈:I許2霈聚o醰瘙8閍IO-翰W@↑~2絓篔魊Yu0情鮜f钃3釧襊#噢鎑w挅蟤UG韞;萲A鉅<蜙Un7=乁筼$7X%翟貺W轰i贄学.N璇p/U谋A驈洠+&!B鐫>馓伂7欋 泪8倵揋(~B幌C皾3 +I憘晼睼峉PR +Fl(靖晈S,T5橊!JYT奣=付S#-驠嶾匨蕲4F渊s詧端< 蠷6+mA醙Z瞝uS[W灧\鯼谱S墜:⒁质s;試!仠a唷历棷r劝俯俉揑3"`蕆抖7诒.噛MH輅%#8Q蒉e= p?_ 跰(钱谖(H乒禴叉姉w\0?埇矜1C$咯謡滼:U孧飔$W7i@侗MHg豝泺啢V=#S绑|灪蠪V<稘0 磴菧箓貜糖c藝2#(抗%@W-霔 蒸@fQ癩M^B尽,,%[鋷 湗.晠5;F爲癧忶褶-e喱霖_&団换貞柵怏-u o!饊┝w 5;1杬N錨 I15 + 厸敽!v 繪&鼅悂瞤@s羒{惠苎倈O`56杀囉俪壖縠&摸萟wV﹄F殳牜X"B2^i茈j@捘栺浝?耣0j猙}S^:8磶嵏掙谘)(鱸I +徳隝濗+-=裹牗s賞罧苉攧)=菵%~p馸k 8糧阃Qe萮 浮`諅唭]CE薟褭找鉛\澺醔j/N>.鯶4Xq邪Xㄐqa蒣xLl媓c鹫V勻Z孡 "u!& >脁 [佛L蚁`筚佈 a詍裀W刞*带[剳w衵餗襰a安uP=@o|谆旤亅M亂鱫 &nvoo-駿i科~p<傈呮彡螷{K.7? +F$敞Py!诀,僥+Q鎆腫)咺 9蠶簵z +l潣攗+崡EO +.}鷅屨6 &罽& ,5鄈べ!迋14' 盻岓@爌Q*嘁gbvQi[釶O戣qn#擛)u治炰赶_e幉雦犀=0 2l鴅 H`墑L 鸱w>OdU螻""?]U]潟駕 Yvv唦傖'6訬鬭B唫@埖磉}钘棦 |1ei5硇摦S`(旯茾eプ銑懸葪g 蹞龝倾 4)僎L掖'脓K8虒﹤]"zr囄絕3鉼擛s7戞{碖'Y+Z!3岢澰Z軏鹛y4D&N捪騆z燹祖鉼趉旆僧異屫W滥+GO% Sz6駙簢聲]慪銱彘<怆y瑲鈏Z;藅JZ蘽,q*X谵@┓(陜B/鞂!茉 覥h6E拶Ru謴8M#7鹀乧C;塘佦?隁|揖倛頹P笌僋Y轴*耨NQ}TkwD颢驥N#叵伣&"鹚R莽o@U7^<>蒛0蓣齅.;皡寛"{ +FA6b鳋[O觽+=澙8ノ{『~崈~2)q(]b沒+y嫉}ss9aR呔w邉暎捪及w8M:屛5癅:墎p侬圆xuDqSpZ循轫`F卽逤嚋萔 +墹仫邚胤㑇繝B苉+奻^9↑卮g^聴嗁oM~豿.v%蛘業鱰焬悛跠厪鎞F癇禵5n皞a(P*O齢z箣A辙圓S峛頒s2s`X鐣+*{釷▇烚 \櫉E膩_Ue曦[g"勗p d銲祀=洄mu.=觠;慅$徳w嘺蒶=u7bプ訟a‵鵨!"黹k末g厧累Q鲪害EN1L桌爡}団T +%xO;)弔 a= l鐅X狈纽K,R喨跥叁V鴭┵/エ嚒笞匯X僻Y懨@8^]@怼罰礢Pb3甀1憁鑸懷KhL5%l>樐質P澙|&q蕖? >_g骈6;!暞[ɡ嶳f作茰眑e>跶2(n"4)樾L韏缳aR K駓瀚P;n誦m囱Fo佉aぃ67<Ptr┌e!贰g蒗D撪b濰na`2磏Jㄠ;ypJ魤a餗嬺謗劁j桌も'~q{=*螷姌#糵徎]趁;楗R5飚B靨'殮茣n)+s礪滎]6矎欰S"9G鯆柕Z鲃#!NyE髍甈Y1訷夎|爘錊/y桖8Μ{倢,腏&cl芅_嫢篈火6缜_凉朂⒏/-0A筗倆vpP/嫂鸙-:誃跊扙#鍫焜牊dV\濽1呅pá鉴ewA |F5<宠Z汎2袯?燸t吽鵫J2諧w8谐蕟*h鶽ん{钉Ζ玤A珗狽9m'k却繨 薯=d纸E湚U9妥溎灲,G惃霢W圧/I 4凘 蛶zoO1碊A"咽(!謊婮X9mぃ郞@睪 +!*荄瘊慱呪r +(-譡H9濌{a嬇碡蔚c鯠M! 狹楿c/x駸脲謈殺7響>G,焢葆嶴#R[瑓U(${J哹殙朧>垶H]譠 膢 +}(糍隑Z闉~0廵卐眔 址. 兼i絽f!<乴x#*'挭`蘢,硌)S#~{鱘宰袤hS囮鼶氞寨r8@Ad5P梛攄祥韭[Dt+a>钽譔NCㄊ鄭3WOs&鱂N1忙惶鏙3■+轮o嫢训?=?堫 +Jv┺ 喜~j剒丐<輦棉#l+4鸢 盬兕鉆瘿諆鷞M葅X3h浬鑽X) +B\4覰搑?絊 堹>縀猯qqz鎱痑⻊Uj 顸慌wM廾Q礂穡葤~企1<均8P 玘聏椊I沴o@S#9|c*璣U隈,穴%曨3o%錥选躌宻魲踨 #貖~韵y0]Q吸mH,6枺慃V _l7頚睓脈 =X鋩w%@L 簈け/䁖Z^鼚騺+癉贷 +嗯酪t!厈鞏G僔\窄鱍M~褎:_1[-瘿顁4蠽񊅕F吕豶麌TPz"L+眝酝恻襖9_焬4埊0殚霁骈隧藣葄g燧x躻坤懓h蟷襥M +l%,7襟籙舵e蝤 9爷繒b/盐S婍葰槆U匸J茵蔡-x讆k袪z綆Qp 鏓flv蜜檃╩0アx峦0殃潡崃继v貳囖ju凮~|湱o飯r7+f.%挩w"憨慼枵 +A腴I#S% +%7猙鐕XB|h+L⿱-爙@5鷖0犉:0%菉甕P&(讍惽r嚧幖}C7<抡皇 墽/霕3"睮.惱銁nC濃鷜 W髨}>)荄宷s輡┨G分v牷例S!沜槻 Wh╬7嶏嫰&裄虈拷5n#kW?] +F*a遘Q蘡t丿C菭M竆螔&铼種汮M=;-钕亝響9m潁廭)龢MXg~.s祭vE<赆6O,圁D2%$?冓E恙睍 +纶瞴,w 閅#鶅撻z}H*g 0C蔯sZ庮酫P9禖淄z缼R4疫1絘A ,;7靐!嵌颹3感轑呶=(M欶煔焇k)茁珥Dq荻r洗皴ㄠl)黈窣牿"檓1迫#&籎[慛腟錛侑k覌榸惍+翫t誁 伟~ o笹g)z靇tO欋2螐 I晿鈔桐@瘽V郲3睛6D 物妈欿庁裴5G90鼓K郭 +?撉劗0牏W:4(@t捺T頑銦)腕 鷾/xu鱩揍&习盎A鱐9|753"睾!b抐瓹zt崉絋:窡Z6~麨JU媈=鶥睈5詳h%28橍烢+甜s坨熸鶆蛈耫砡罛奫esIz轊a縂 +嬕y涮廾纈誄绋!湧\5LI稚^鰣仈匹r庌鮶張+A雭 HS!锓祕6赦V嫓貔77?鏡_聤璆驹~T╅铅^;嫞懖湪掫T;4冫窦悋愛u}s叜o慱+堦l踳畹r橗瑨?f癄溾噤"js6謁侊 礙/順"lTm觹q_ ^艢浣濊1\Z?櫂{-I(橗ru]縭xの'/稸鮔}拝捬5滉9P焱x粫*猘樢0% m B酙Y-8(=擠贏i茊4鯅颼廪 钎聜m0?>:-d煴瘅(CWt姭負>%r忑#,5灭ZJ^K剻錎J_剫亹怩E$<姽zgyO娕-"B賱謆w^JZ鶄4u%瑈.婊牀蝫筡D<氏瞵恁0赾氱z>g(勚#04糃-鋒儼q (*仮?b0&!򣡊3駼齆mAw钮 #BE鸖駠Y'蔔驌|H)eG庲G棦"9侭帋MH誜鼎氉7涟鵯忁聰E!嫐O1坷倉?境5*M如穎F巄%[qu讐瞡+=BzI裄4p琗鲐爂鄌9:DB早饯狚xO竖C玖,*`pS钐鸻z2霔+哔i 7绻諱+唜襝覭]奙/S鎨镊0榩橀甭狲&臞0)6|詜'蜫楖n8G飸^缜!] +斵Yi +S/攠n9粢h:?/n_聉;u閏JZ嘄Y蠢 围&\坮s嗔礫D3蓍-鈅镪摀珉圔 W`!n5pV鞏dE藩l廔昦鮿漮dVu嶭w 隓∩J:湀3覊 色lb煝鵧谐z攨rhV劣朣|p齮魐薘怙4P2#綤讶嫆K4iFH绺梌帆e鯵 菏 9奎j=壂8偒笂:嵪{郅昩圎瘧.I~)zT4髙#pg}蜜柟jY孻lfB洘值f匞媼訋`7tN禳a蜟7A:`S_9uB8m劅挌m-蚘緣P粖l'0&)鉞+俗S%霵觠v拜,: 厇裂.A架澍f膕"+/Jg萲.▓*璿貤8c#}j佪暧鮙木Z衔W'咉卆j餄5罕鯞斁; )\矕桺%0嬇唜 +c螲琮妟苼瓱l^糑uJ3鸭AS弖鮒眼:5蠂 *E篎A |]鲘浃骅Kz鍐∫L.!~芥0无`6尠燢)╳;X礅 B2葑I%伝@羾挍賎妟sF}砰忔9寿嘵< 赙P係u!0Gク"胲3/迡瞕8玍8E7倛匙'G罌HL鮏|q苬槖1胸L@%D櫬灞) %癗j拾蓹P梣猏窒倚0漿Р#擶z甦张nW嶬M苟楙飧Er.臯W9$粣濍鏵瑘後3J\*`臼s遄/$廹?妗|筢瀳泿Bo3偞寏甜钖AD-愥/铑垣cp晋羙'倱k崙闸蟞譅巯朐5I鑄鬟愦.nk求!$$Hev|嵗&[搞I>姱a}D +穙抯錾Q嗯颷1蕓礇餜逗 夐dc 鱽r'<核2p厊>i桁橰9篘{XN,Yc滽緞矍t3妔眭傌―偣甘v%:1吋oF饺o"R觝踎幨垄茏踝:c 賀t拄齭笎J樞d趝腨V茟 +輩oN刪臚D(" h圀昄驍=犄鄖T緞介 Hr糰$/) >m+鮼媔鈑膋6憗紁邷".=X9hQ戊6.鈦麾呖踼舣f<纴 闝-鏟特9U8鄙薚H艌娛3YQ~MS-8逾躁饖畂g╜寪t笚墧鉬4娙b%k绀+x溨畇)簉{E 孛< 䎱I誠4 9,n) 謗璯砧慏v逵褏g柃Q漥9汏裰榋4劏諥擠q紾湋u,馲沙}s"瓳71Ttn/"mUI9|`c轡XL峳竍薚(课兩:vy利恵JQ2 蛞蕨j鲎O讞曍\JTj傂&碰cぜR铻玶C混:]~^ mB 艩0廩V訢计靆,d炿7'欸锷锥x蹕 鵾@举胳繜熴-*吺4秼鎽觽=!z盢`敮tui\溪h@6>?[+Z僅!Gh榾杞勺鎒0Z歕/1乧揨7fX礔 U愡许齞F臎YH慎煙d纐鎍`Y~缊a綃F群KD)掼気e 謉*+?巿 @ 飒庱= 瞲 谣戟篔/潢希鷔L/逜'[#嘋6U'={|黪q瀀? 軮 }|w貞攢艟▉";\凇腘D孛樶閹%钅WC0*寻畸幃X Lr= 枂o7瓍F#4鼢躂龐"络酉p鞙|0L姯+ 痰J.D^ t炨6斍S愰!壜蔖(硇hyu┽gLa@2w吅啅麇鰀璤闽讥EcfC聄孼m( 5eN媴迦;9^=妫梲T决屎 6zr +轻y〆pU(%}Y)垊}*:0莏_狘p拇癇悮ah絰5凱a銼暵褂)旰紾秊05Fh"]碽W<寃%事矸\*鞑■Fa篳諁iQ\ 猁  药(痮ND漒v7俨r鞌殛r嬾/AI缒鱍V~嘴G$猐4t夎搟 T2T{譭潥默L獌?=蛺w82睇%S躳bC趣躛lS!飶_F鼾鷪滦 ")u頍)~箫>嬫馃篑7駉鹢н?鳔鷽焴逴?啐脽?醎踱纂1nkx钹E/_譇葄缕G(>弄2TOji楻Cd;%:ZvlШED葦遦(L=%<阹mN鶑(m忳*验wPr消岥5猳񈿆 )涘+嚡WH节$麫謕(o 諁妁Q荝X),鴣`墡1_盏鄐M['xW纵u!尧%)Πr镤嬍]萵 +2<.,*莿YH豲鵥05趞*蟾硖/(}X寿,鸊梻Q9r 論B3;莥vF摃鬣兀#▼ qt蝘浬4試^唆@*(=$l/ .绱還炅菈垄<沛纷?;燩g瞡挆紗躭噦SME祢3?凊麺5︽(_ko1亽忙酎3篲G[詴賍&sD&拜傖菌}碠z?p@W鹀鶝穾宔蔾 孬炲J=邟鶥9掆.嚭獹%址L.$戗]' a!>>~?#b{8 荄锗$吙恿佄>茮丽I傕]芌:骘2藃*爖q_锉w,rOA僒VB踞瓞hE謁#C擢综咩D欪哿$ㄚ誦瀕3##1鋞螸穼緿i65?踬zhj舱m胩QR +h7镒 茒鶎濤-票}v]鞙To繡曲埰憶頇澍C粩Wtd;?GAV9犑Mr垗~竀 瞣W帞趪Rǚ皮+ +$禪析嘸<1#奤鑰薱wO'T瘄sth[ 蘺{eJ瘯)|#!`%Bq4恑,h鋍:K喔庉du~鍇%O噾!&禵蚊Β偙x阅R泀鯞m玃螳贩(砉g!@遇烯*Z仚沿u<觔 ;|q 禀J熉﹎ 永痭G写4釸1勂瘹扜H睾読2,訒0折kL D昻 ;l1簤貦 +楆M:(t唹*G祏"J"bo]厙)$~.墬'筩韌倆;鎔2a燻<癘9h@yn ;⒕歹鰆隢桰s9廢頦 N桊*S^鷅wWy廄* +郟軩额烅)M璲翴^$涁廻诜筧跻熉n# 0 8N廲喅徝聥-QQP髐妼琸䲣熱剭d%{3`蝪 H]BP褖 坦A汞d9=j梛D*'\鯯0掏P]洲d锌.zy 1贉)窱K伞济P馺c垺袸の9衠Qr蔿麃V鄔s% <誑;錨 ⅶYW芿巩慂^鑖驞`<-nt猯|/u夝R4冈;ZYW縞U夻\q釭叅! 矱X3#;砩pM頫掉﨧D琻@諕鵵t`燜 +l溫飍_h錰訧-e驦邌6MW▔OYr囡甎$3;絟o +T +J)瓟)ワ厰hha兏y螞c舍]{擰x河R粇]坌狃陘摈;DgO秃灝馾乾UG蕍鶚x仱饓 唱乣Jt肸5慃|餮r犐Ta(盰Α顚Y 霮`苍敋姆C鮹西漑簝i祛縼w券xO?轾cW鼛g頤-綦鳏 h暗?l`鑡烣声0頤` 粬濷k}劋v貥k鐢躏邬'迸寻稢.l僙q>塑騮U 3射葫偞;锇#≧驹 獷籽'畒z燲彭冫9 矵滐9z厇l硹闏ZX癛唺fDjZ∕m蘅9鳤罚luZF翧k<埊wt>嗻|儩_Ga裵仫E鶯j橙踤 秕\d9园*~H 芪mK 迗5鰳/虆 DgR2 +柯x|x澻|,棷②禵#{K1IF址饁%5Q"?孪e鸿U];3闗坻B1.U攆苩t孹K鰶7%{饫2佂熇堛鱊鯪坿u楳háN5m饽W鞲耈5+H6f儍骡R狸荏<4葮 +宯腖摎尞`wq7銞0碾/(C阈 5甼jWO磆汰g@鈌拳叽廊5m`榴鹶(嵺此赗9薱X墪镇=蓦銞馱冬7腚VP稉钬{R&H莌焧_k陁{鍛撗UZ岥蓍#朼y綳=-繃"捞+#もupňi渊-n^CJ牔3"聈 A訚94潊怶%邰g聏市%ZFXa長& 赶q)<晿鍰 dCsDt旞>戕)軛c蒠輄 Tv驾Wc攳/F 鷋V*忛劮覟5=dK澫匱Q綺鴋V洬頦}漢錨3 E簮Z>盚▇菈kZ庻a繮 +熀P嵾7]/駨(柷忒X巳朦s諯窍覼鞓6柗揱b 橩藸c^輁S隼享蹐頄V愑柗0E{磲u嵏咚歅吢V$隇(Ne婳硺鱻鏤uG癞驸腞cZ7笸熧)Q9蘸痑闃 澀F3(LUM|[蔜XH鏠eT!:L浛9)JR鹟繬9橺?櫄牥;J樯,盁辩/%堍c/-z,潭2鯹鯦S9縍柽FR鬟縬:鐮*$鋇lt2:G73V%鏭艰鰍v沸"Na譓怙ぷ牸昲"T摯槝叁dy塏 @ "嫛^2挘 p[蟒N幯xrp肟鹼弚嚲U,衵b偋zw E崉!挚嚨蛛廐魼倸)頔蟗徾,阝*JC堅PHリ)员I辘摳岩t\=赋帧震5#B ~籍/鍛协 I+;荖日+譂m)K|N鸳V駚熤{湚 ⒔e? 蟘&FP/u+A蓄Wz2耯涰鍔)9捿貟Xe奒gao鬗J{楛\=,5`24,_HI-歼,耀Gssv疲 軁T 1蹗#V蕀柜頥[獷结Z:抚禎瓱R +/炠#幸 +]Yz帔咓爁f侉:侫>倹6[綟i 莲n清鞤筏漀C(毅1閍(姸"綸撷詇鄧I@c鳐a渧I粜櫖<榝197=涫聚)歯y 臢騘0盅i.0+沞a#7兒+:糟#'梞L庑樥zD{To眮珬赛浊犐Nやmハ:悺l傅丂撄+馟這à,靉吹瞶O鉟<h*Y黉9_  碵砄倧殡顏 V労<QP菑!*榕W!7!A晴C睄B$颞W}<蟲] 鵑F|戹H艂軴#(Y-诋a粻場H;yT玘缹=J檜e"蔏a丝綏碫憷P捁RW瀦q瓽q革袨趰暁賴N耒%吼炌f.崥!/2(虄7禰V*x 晨P 4澬:G"a趽l樟V煀AC厕圿糂说*B:A=a:z+詼竍統X蕱鷘3禐R 澤9塅斻1挞a摡筏@Wd鍂蕹ǐ澮+?剙>x蠇檒b懤8鍦羣莎'鄻亮k+D u_H譃z茡1肩耹闗槏S燢T籚姻z(縳J檺俋K锄壖喳J2鐵3旕^楆t噜{cw旪C稿縘R 蝆?B b駶骡被g鳲cIBC虇g癙╜?5P:z攡 +;@h&8;皠410釨え q_示薧&蚣z爋Cpk塜暓2r寢!庶嗆.汘踯 =鼴嬰迖e踍潹5?哊G鍔+M挚}%8WP!糏蔇运鬛V6@T[u 鎂盂o]|.氾)皀 +<六h|电v7颮鈙確a颭)笋"q聟汖:(#v岕噼+谅崍;^H@,0苯穠K湀臈麼Y} _7徉= =Q~{<'岁在睴I跌睟_:砤f擯u q~`h8抃鸂s" +/砽 Gxq,$嗭皬kf?踢0趛斱厎%襣E謝仳Q朏縭戦G:噁j摅语瞙a琡c(僟礆豂餳BGP<刔C0*粵銔!8% !碳`爀)鈤\夽!'X|0壉J;.蕡qhK蝕h_刌CG(惐魬鲐Q逶R唗驞;_錏2(*欀曶報鹼蛥轓镕'郲嫢鉮枴Q>-隆袔w禯X☆褩z?<銝#!筪蜀t裞撋5喾7R>柌,镧K寐 朏s $ル?j6垔,H鯍擪r(蕃 F3(Yi譅U ǜaùY徱骓打E怢媌=r$o +萾冒g9*~頋隗/(t/EI S?洢珻k隐 +誩力(Oz]】7埨嚾垚櫖)~篢,4HY睛樘袟'隊簤P檍 uw;/沛炉靱"柲汧~mX巳鼢.偾颬 5j鑒"橒哼逥$,╛妁Roa爩#3?ZN腞X=V?呮輣$礞妍佭拶W纅儮鶾貐y:i悫时遢3髎襦鲷遰`*侓佹8J5,窳蓑鎫愖L~巧幧梹嘴裛彪飃A鱝呇麡KxW↙)窕Y琦祒~弫1QT墷釬1"n腣 +3嘖絙5燬兮腀窝零Row辀D濑^霈#_肨E毿#⒋盏nZ眪?兴烕z?鉐4諀?篳0u@礇║魆6粭{婖Lf_硧 1#虠噉 0蔂L牖0凅f<鄬命^&Q*丙34擬彮c +幼儩辸Ut蒫7}齷,缝則鵶h>t 釓"鮍-~=7危,_僲鲜榇洴藄洪徛S$N吕B3<2LE)炟土w{1鏢tkf*%)蓨鶚拕0j穦:嶬}纝馟~驱G岵狔 P$H砘?荖m%_庘煲B::h戈羬彼D$隷4 t絶%鯞轸[Jf!3&d蓏启.簍e籲袅?轪BG>`2?Sv涅r.#蕾=蚴8R7+G蠌'吲hI十a鐂愋{鶍&鈜櫝:5⿸E臭ㄖ帙Z7滈F.ЁP蠊ZLh{粨癏放儺-吮l锅Y豶∠輺i抹T惘汩绂,}脉k倢)8L3沋O瑐w[寳!屿廖1)饣($晪擻.橵425氥顒锕'柈t)Mj-;脪`s止阹衝疭嵢q裩W,)曳7炉 qs0牣傰I[淖eX7搢綘h*輦娛%敟\7w噯AG哮c碜 W[]棁噃N盆/鮫硁n唴^S爓<牸4{ 嫮8'2 k捹恸醸$%钚Z +謧M)#"俗8PSa^*W k:!猏晟qDrb 抯灛\鼣旨邁诼OB摵讋O&k:磠鬫A纙v潽}扒m縥舨i覀f 啓=摗(b?矆 N: 晔Δ陞砧AT(鍊噆UP槡鯣%亪(B}2臑祡漁靇&r髽葧遛udp DvR緘漊铩M訌铽薩鼷佝F,吺@4R刱 5傭'骮3蝭狀k酎菴夙X鮱=lI輶傛+h尸氅匹伢4仁爱SO) 褜s勡3⑻纓抓el佴"fs +0亝稻amH侁_娖d褿髪T傭%\2F麒Af蘂ibb.紥襼{ 窭齅Gt标l%P騊徃E眫Q>倾Aaj;Yヨss)y;処pe為B肠侘'r禣 錚灪"6D刬/^ 哒訴g軵%x瀗 鶻!p攑⑻鬈zW叟譈e 4s 黉蠑労reK F迕癓M^zYvt0瓱`豩ㄆ材P3 6"B鏊x薧递叶62)b豠=嶆駗G鳹64嶜a撫 洭`齳_>瓫n&騒婼刿6潬xi铦蓌冎4鵿i圧 OL駖膺H唲难蘠2z呃6$*悜蘺毂颼廵)& +<-]驍4#鱍X:02D8?嚾{颅4J+OB鋻i蔜⑧⊥Kf&Y1儋+睇^`$肐輷頮m(癊貈-2蕘8鑂D?輭酈赥薪S填從:+Porx恑吤1P厚O9膢s8*怹ヌ:哢槇+ V"聕4s9"屋 %悘dQ冞[_椇謶a_崳:縹~x@騙揵'^B⿴楶穯 彄悫T旲瘍礿侂C擂E蒊!)TQw_'l=沲!boF錱g7虀Fe 覲飷7藀錑浅e墴l +k瞋Q揰9<'誏羬轪鰵 c}錕a嫗礬亮M湣2i D9*揃郴g'摙殭.嚷舊U葏头瞞薣$m )夤=A槽u撵評+{┙裊鞁;`烆# 魯殸詚x緓^+錾j 虒i%惘P56閤g(呤 +魪玷@綵qW(灃瀟鉩繣 頀綍"賁弻苅UZ[乓"腝较鱍~L`玠x##鸞1w0LU+w秒@ +p僠樎说薔$ZI"A坜漰誟乫':缮殃棘廣MnH]畗楐Gk)褾e*瞝织棧孕 粋驿邨酴|OZpP?螵 竘NWT胨↓稄&d虊謣VN%{]8p)R7K>勑=I愊 +蟣鑧謱鮘蝍喪珎x磆L洊E厼 +w9吜V 姬豏r膅,怰g@惶D{C蒕1楳x锲螆怼缫#厕枠撡詺|t,鰫辁_礌嚆鵘au郬 KLgK<麈醮2虸Oc榅>Yf錓'枫絺紜2罖B- 覤F擖鵕(攗Q0仗#!權 鴰P蛯P  l{:隗H=2炴覧N{3 7貜3潞84皤'0誛漡资筵稬n 壝#(抓xx{]I撳俾浰 &sL1碊P@ /E筘;H;袟/藃洷昲爸牟}匂蛁鋑d仄 O)}!2*飴覂C+勎3z璒孯I睧;B銗D*s 耆襯 %銇摾c嘇嘜舮s +oP1w伽3t晽罊V羬恶VHN籍觬)6谄?阯S幣m+<*Y麔%詬籬-H2l hbi乭枽凱?{,1i蛓( 挽V!p:*绋w睆傸moC}V薼5幭:|齮縒LK宦0幆i堮e襙G畫5sl奈hAJ -7揭p 瞙;歩(罅抴藇%"變蕹遖'逩毩檮, +G纎*"h伆璟翣u膕4>%8讻愬;1幌P嚂Er颺憻恿惴L$ 鑚樰侣vf +h绹橰5垍 .婗魨▼睄叮穬dK 茯~鉬(灒AKq傚O兘eF涜r\虠霯乎 27硕,T郻{'閧!滍o?e壁*C=i 羑+!Sq%猨z蛯9廝羢6x a= +&nる剔堯QIq"}苠_窪氺2/肷真癨|' ++i碱l哵螢Q宧嘹[/@R抎獭T髄 ~T鞻礻`V鸓V嚮元簂混厧rm(怼壳I$喼剰玲# 魮&ず-=鯷|J鵕h hzzi{錌蟔鶎 +栌畈鼵E佖j宇.C3磑S纎厮Sy獮乸牒亷嫟f敺凐噴#<;r恎蟻q,1]喻伓瞽蕉;覚ii%z吢徾豯qw緃= +%効蓄LQ浒帍E(U.鯶+辚件騥轏Rn$蝦 曫@&3⑴.$烜it轟F +嫰餸瞆(嬡- 拼q缐賠鯙愭Y%魢晿@lXP +/佥裼Z%Gy y^PY\屺ㄟ`莲豯o俍~粔8h悱鱶蒌mΓ韱1[9jd鄆9)?哀磦XY鰨5槡F潙;珃 璅Y№ 54恖懖U趡{秱驏V慁潰妚觚啤夘H詹<嘇晵鬲v棖B馩赢宣膬l轏㈨)G%覫-D涽獚 v{鳌諵繒炕掁桮袼D"C皖.劀M惡{曑&r伴肴文+苊笑C喹⌒.噉B;x襰7盀M覟>Tu父㑇 Y?,痱溙 +v陥e奚芑ㄊ乪 A麀~.C?鸺夼釰"n錅{岑菜芆5允? |'矰蒨e 3答Mp媠緐'慶 4< +hg⒙愨c.傴窪"0炗9堦+KQ30*姀熳楟N/鶽彊诼" :HZ0C]Qp8逰齫-j叴胕GE畋乤#SK娦銣OZ翹窻楏-梂'c 洴趉tL AK~6P蹱@m匧-f97u?3:N壻UR痟VDu0A詊衦洅 坢(觗忼戻Y/漈j U懭埿 H襗$牺@查阥丳e:鶛g壜侹üeeE鹓hB礦v顱G城 +%RcYm耣蝀毂萎烚.6$喵$D'Xee犬 $ 顶罃 l2蚖)缢"齪敁3!粈)済騗槥骣悠9複]807眞訸ND鑎中滕tZ;l熵襖5閧绻尼2#叛b.n 桮晥7蒪蚝褸4匸@!; 鉼酞.Y@SK4(诔1b1|'糵6爿z詜_塋] 嫏0B2a鯶M矃凧/Q艶P%扌6y菌8T 粬閶Ey杔翲敆襕}痧辥V硊0K昃衑XZ29⿲WXs綨弬)U;F泽flCl愍o鈎JY亇U齯),V!洺鱧焹ы2夆5)礙褵粁i1 葀s誻&;╁^送G潕邆e p酦0 濍瘶鯨+ G┕R$X)騲繳Fn +.A%(燆杬埅J鑰橘d8P洚滈o {耚@鑡垌桒_7Tb渤摳f%?f鷤宋騾'k諂3膽畢⺋渺1j7j貉JJ/晸|dn 玧4热4!厫}敮餩集d[=:v7氍勁/揭in5r谈捦-霎E郸腇宔*  :L2F蹳卓w櫑?/暅}Fu4钃\ 73 +[裴 ~{恌租!t!拴a闃~J谞{ 35j焺 2緻'"殸扗@魪$緕\僮㧏バ !T茷瑴i暠MDl╖\鸽8娇c礐]5N,薡苑ě=蜨╜R硅毨-&)8&1揣孡~ ib1耠9捒 蕈寈y澃A 杉B]凗栋+7h8翏gS旖Y2C"峠嗡7/妱嚢t8u=騌鈞颇L`释(:MZ D#[&.~?7紌"Q洉蚇0^捉7%唲w嗏8 E蕃F覢,鑯#玑0F{""黮(t嫒Rd襸P渕嘇'5U姤奙剞BGb e嫅h沙p晧{a㈣>l紳5%|蚜a苒U皐 |T:3滸儸邪#q.枎棑."W祥骱む)瘈曶'\ }p硰OB"泆抍1棠cw湉驅巓頒O#`f l資煹k綷4$樂ご 殒'&M暐y睒韎J醼'逢.K`Lg8/諄e]O托=嶌urD暻<灖s剌醔YJIJY}Z醀DC8 6cq憨02雸炉鞇焝尖篞襋z!81壮 1 的俈*Z蒳D匄CR岾U譕(=.u@A歿.竕}翯刌rI $鹭:違誜譇﹫g军匽6#5孒耇婇壯圩pgF9]奟£q颻鑒0颺輟;郰嚀璷奋2s甜*誶蒩4靎M /;7 i溻Q-牟永2崆凮旙 6韃>津~g:包操蟲]A婎a傻翠J嚛奏\坐籉綘 jD蛺."B玾硦&鹷癯Ju揈W:[mI" 票瑁-A蠨f;义<<炖軁g+1媻 (摨&H.EF}@j谰豢 ㎏e$u鯝僯/悗捀訴:68垱栄h秄F脣3M讳|7検濕V2L螖桍D6aq怸弮{樣R(馼x7揣祵J艝t=蕘{衽x荔惺(祚f6V餫v7ZB脄娻`n欱嵑A脭l唺儤X姥旾2"韑5@堕!wekr=曚鉥 +/9丶+ 籏沉HM L\慱^澰単49A灯薔2e觃)Yu逤-+P稉q %魮T辧翘)12睏n飫知ハ鹤杣厛牷聖磥橖3$愿yi 侤B;R蠨鰞fBb裬薛8"4? 戤6zF潔喲]J深舀$6阰-\麯N 7炔揊U宜 ,鹫: 秉v#Z燜鬚纊袕鐿暚(d鈥|蕏鋏獒涼訛RX>*_#!7厗2峇] 梫豋{wqA篖?@x后1滞礏冓$[x揀Y 銻K--I 鯞鹟7.} Kq鋪婫硳皏捉喟跙h锒,篱浊R苦塌谉磉鈬绳鐊cRQ2`鶷轚留.衜訃yi-娾oa>?●詼躁褩 餪"&纼现O$C縆7"c 鲚@长麝脳咴㈱ 橛f蛈蠑夤雭侊!絏;屌閽X珺$昵撆NOT 矻Hm深庈S 瀾曰S洐h陔J6-曌s,榋馍锻铡^庤ヘy竟9"Flq"鬡励猢.d匼鄒迁21焧7犰#x!凢_窺$q苮簟艝豝傂髀泶喎p濞2菱镱&,)H汙M5鲿HxnT`B瞯[濶}!斠gz(1呗儈彞莦g慹鴺苡闥*6`鄈:偝' 4c凇?c烉圭洰媘L庐C絶&瘩築P3B| L罦 +倘ば锈^b=m,6y}飻q潵3]犺蚗dK` :8~84殨溚眛>彸yYD\剑豆游馦X眛:}G藐A.佇+ uJ唄≯8槔hいO吡 n插蹾项衉qn鲠鞲 \* />嚢別_瓳v灃 i若嫝敥飑YVk琛惤$#}=院院熙MX9 1酢<4H^8U"匱蚟陦'馄鏃≌糅A梪蚟L腠!>篲#檕apw玣 +=囃陟稃1=6*W xw罹梏Uo}雔l/肜é且噤 B鼣阘2i拉#*a{赱$# !搢貦$9挌5y4㊣卤b綣詒 ?疦"-4箇 儿Q詧谷$A韚葤鉛|報cy隇历 L唷v俯痞{囃挘謔5﹤:埉脺p29:4""樝8c诒_z\椅Z翡9*谁婵穴7泋[评潩埿c>謚鸘O15寀睾;'彘=<貣T鈫K椶龡8 t垁鰟転紾i.淭"?&猧T$}蓂鑄赥冥$蠽uf(t'Q志r繭K[濋塀箂篯8炭rtB}偻褉U樜9鈌;{飔倕楺鱙~y衳K 藺M垔*1x~3鋎メ .鑛馁D跤g脍5岦ド锴蛼%H簕fKa蘹踍槌@烳絶不戼NFI勴忱草;嘖E;餐D跟'Pi3.Z -訍+Q~悎* +鱏PゆMU坴D泡茁'韸耽 矢裏均`塊Ay&傼千蝂闯P泟fy霒\螠I揎f黵慠蘐Я榣K悕H響k慇',贝鬥Iz禛鹪n0蜘酗阞迟p,*加зp=,D$`%.*瑐^凍/(wgf繚鯧綝顥╘∩塌&L%RHXG俾X捒颛([~C苨蜑狦濥蠨S 縺θ醨毺谐骉藭>k妡G剞8莕蛻7 呹dQY:2嗥鞗誛S n{齌楪o0_Il'J剨牁<6 >泀P覞婑逢凹:6鼴音雘②K#[O8d轹C旆R舿(c} F型≈i]脮谻梤靥掚闪:b99"mw_繳w哱鴾涩瓹 俩焁醍 *駱铚e覧7轇.琗俻鲱挢-k 孊$崰鲇堧鵙! +鍂[╙釡^u"7e[朻,um囀uM呈~輈.S劸K`l)難TigK阴奿 +"牥|H論釜z/:3頸趭69飥寧%woA;誕tc橱^1;g#IA.F<1櫃﹤-U`禁羁ㄌ籬錛枢濞濂U(揗kV鸌O1膻g翥 烵%x!悘鸙/x锣愥,莙釟/;,T.寞嗱稵#J蔙 尣潁?郙=NS_弾舒|Spf{鯸X菽乹 us﨔vU Pㄞ踈8をl怵蹖=_8Du铑顒B +m+ +6K<玔O淥"78譤s磷弃鏰 +南堖FNH瞁TyX\iZ建f}?p朴┿隥%3j 侤铖沒`Z33イ夦1b漼礟枂齍@岉 c調抬牫頶筥鎍芲H瘳=,5聅:轚柃碜P鉏虦倢T鱤 2r<焝J$aY5^ V磒奙E竧曺~籡@ 樌\Z蠺绸!厇踅"椙賤}:PH*<惝萁嶳C錋6U%Yb鶻g5!篲x#0噙姆腀爚1滱c入萃]3燥+P镣「v沝焹璞M圄m8樊匙歉啘卄l<兏牜7慭]遼灙槉埱!枂q觛f燊9w淍_サ+;▍堟虧dZ*芳X芝啳*p00髁T诏獗八hH綸g羗)軡鎺`@i*拿|dQ廌k~嗚)!ct k 旤乬凥|戻g4臼1Yf?肘厄IP_迻lw勭蒨笗&凋b>"蔐盏蓚硾筗蕌F9笆扯闇魐繖,V莧池w淅f膷領9BzBt 讽P+PZD骎狃 吜猾=;7qT%|S簜s尧h姪kLq飶~=J妌1 +,逇8`鈦x漲$敞鉲C寮*竞I +権韄仭鋥4オ播; `爝餦矊秙坹g嬒Qe鄗壤Q_ 脛艩霒鰨搅3JP~垼*N0皾d舛o肕H瀮u諒8歄hI烓裉9 +鴽噝\卧圉30嚟9镞eY镟雭>崒 垼=1垚x驯V挼Si'kGw=廑裹-b傟郋pg;曙;>繎澍-龗t樕d?uGr?轘u瑼惩y蒯溢ㄨXiGNcc@r悙滁19戉﹒霈8讲/`蘼*N嵎z铼癡o骟{辳q[鑴òH唺垄謯谰 ㈩->坶爌2鵖痮弎卆鮿;舔聜醬N$'塲巿y"tН睲剷蕝D啷|.u於1ab怱殏S +廨FVr迺妫%`桧绿l;9fC掕鏐*~S枰椿%辺滈.g}稔I卡槧D墭r榚藓熜6僔:迴z=HsTI妁j瞸獅{tsёA=D偮uhc`+薱U^駈<F挟#瑖吁鈷2g敐馜瑸鸇僧鑥@/柁梡涬T蓉烞&诒博郬a軀K(*呵n蓋O 涍?'怕,趮L9;X%貒夎 + +淹B_ 蠛筏 +稟KBX嘟轿X$to」j!`鶻2C僯>Uk面 8q蕇潉& +`^)Qt <搑扒c"⒏觓V4訢枸代頁 ?W钪孾鍥粥@ +}刊]橚^|l爕 w谯C韒>镵h劇9墒-6m~毫x H%("椠抯阵Ib2複麉蔶z寶b1軓[+卶EDHp了9h淐D;擶>鰐鹿T+愯%飓迆夜H`梇钡@I 膕 fk塥,有痪3}プc┕O贱# jM傋蝁F 焛-惻歊\k襢 %u膫t}簲踛Zu2.8-疇ち綛-馿蕴磿岃汖聃sD鑀翜塪>^-PHe役砿c粷e.e-Zh 璈怠煌 骡:U(;廘 Z薄J{~攵 朩L掁韠%-`阴菷`觩电Cǜ拨;!鰼 f醄昦0U繂伄*佡$/US鹴魓瞓P美 >琇V/j颚1"鈋7籗/r啴oN腀m義慩"w猐守7_\|_汩s*刌説5d眄R3+<\B慍} 逪<灮軅a沅盈 p傩<獑,I挱8鷿讏笆4刨Gi矬$W縣@醡u?#D$|ク鉘1z抂h)J{9匱g鵋簗F高鑸濷>q劬}~螸桇┽Ois3 +c曑仏蟍?o彑? +穙a犿漊T 疚刚qt岽`舊鉆5m& zr?3h^栺垞K鏜沋<鞞x碻Cx悀 {x"8:衞9隃j狦揗&&睡滴鲌韭莵 %n 僯兟梩 +%櫺 7*巐埋忍"痕凓(S懑V縻+F~硆j@堨<;D 癓粭cE肘pciUA鹧)帅 咐庎>5" S霂砲鰜AL!N爀f7sU/驓⑴ 脄&菿n*盬磋 笲伿 恖矐HM;3e呅 锸嘜1眂:笡餀襱挣住q# 涙k膟 傆N檫騵 [[萒鲵 +rd+{勭4迄棸7]Y殺I议~面鬉氩7ft潄55a潗'h邷g瘣§城卨厑_韀G祅瞺亗>z +嗑a貋2)`z屔vp楬WN吿1柌瀳DT訢;宪D]f亖0嵨瑅8Q0祼OV)+鬽U坠 贻#kP违矓b{=糣 RK諰lq雊硚y$+抝胔S旉 a+<>8鰋'Q.刮兣i糋湋uD疝>縕(=▁唷孱k餆ㄎ珓A慠O廎炀讃浤+魿x垵0b<$躟S-j涶(-漷瞶0,j鈕纫疸 1yb#v炝$j +藬9麦# +]-=釒9N缹g廓 -<錹螕 X鏋缌@.]殄穲|uY汏-,吶*轑4\燜厍菷鉑]翊婗${鷥_裗H'pM架{|^/瘭h;妝A ,]#琲AF瓘O5嵘W7鼅魅徆/翃霛.%()\角袃逩2J坏2O稵93餺3爒!;*该r资逧蠭 +v&ㄝ棸~劧{饲x鸫::樲B;)碿P5釨薏縂*艎诨奛_脛[+繯]]B:6銥ma/E%(6 Y听嫣 DY剷a负}GW槴N穖v嫤娒t"褕g`wA胛9`}FN0Jf鮯m墸 亐赡I喞惬鵖瑽`趼,F2P阌 +BT司N58A虑J輄锼'} C競预 嵪U@4tk+伋&遡,r╇{貚<忦w犸y5#4xn苯阋2?[悰鷩z仃暕嚟帹報篖i鑻9昖淝よ\矌F$枨h-丟4 +魧旴V]{演阢C瞳n窯m菾恍"O=s犚f幉Dnd5璙(桁{PWz碄頮Ip坤R縻鯜J%Y<旈e斲鑕婂燺ll饪@)O檖腠?~g晴鉶沁峡x腰>?蜔燓?~沁鍻軴鐠唿?~?_蚯痺y絥溥聛䁖灦G)co>牸%D嚎$)lMJe;2尡0鬧6;n~訾>>蒯,悈鳠龜顝栎类3噪*=靮4>%r〗x`c`鑦陙:租 { #俠8滲~硬K噠gD邏X4穟7* fbs譴4J m調jBe袂笢咓鼇R-鏏)琷%, @kkS|D沕6脤Ql(? P()a屫;喑,="84"n oG F妽鱃Bzp%"V[鑃D靜)r瀥<"v侭暥sd澖澏杪壙齵k氮^~叅;瘳 P?螕6;mh=!祕纟Qy匹喝j}5-?J挄0jG肆RS兘緡j3嫏廃+`H*5r>脼鼴湡禧妔 b喩珷燉%偈魡=!F?u0(彙@{f鈮炷乀千歭Z婄顼{{锴A脁 CZ`M`~鸷麮\& 5a #:詈霬s荛迡R3i7Wz涮'<郘鱾胸赿nt?01阢-j妒拹迉6洟篦8mo緫Xo礫锊&JS>緩@A澾x勲Y縁]*覙怳齭鄍 $^鷁衣彑焖侒 v乙7:白竱b瑥.X#g;v褍3磈葸秭驲攖仃 刔 #7b縈徺g彫毤猗LX撀^]I+b ㈣跚4Z碲佺貀淦鞜 <萩!b! 5馠{IgI嚲b脣!弰*葸嗱28LP4C1↖^z嫺躩M苨}邉1 :.玜.撤濤 呈兤rr褞狸- 6趋专澕頉檻1茊潣}M愮婪凐>8釒a懜+刭浇〗u.窶|6獹笹襯d碿铋蘇婾旃3絼寽*丐蛱糢Cj _鏯Xオ#蒁d姰~U4"$%忲@)%: 珮y2] +~3皯;,儸'學04=Q爘楰鱺"埜!WR茨洁qA2厉[\睊栖欼琸{:%l縌跈篥v轛悡9桒5漛匆&c评-".礑楽0敉x鹘玬]Q訔镵^拄%旼0鎢$糫 擧蓛桪餸E "|l. m.5"楘薎+?滈v`8 E玲 +A鵧襉P<-88蜹塙(┡牷'艦祯f\癫Q攚*賗桽赊t酿o46 Z瞲n髜ㄔ3費#m腄^&冊3m3m柛9適A鎋F%a訣 隳po焿糘'r)(+1{馻V碮W耝+锪b3綆4< +e氊盬_0澗LXp蘮(/@_Y虍;呻-玺,>-澪GU嶑&<跪<3廦硈8.輠︽DEPe?銪W6 r :K;舑j曮=,6^ge7庀"鰡硍8鼧蔝!{屼OWPP1襠涔H齣6宻w 3R=鴪p)M防n*Q橌Jt[@=畳 齀墜=Gn&韖窻斫uR陘/B鞠眶[;crm邝岎}0iU圠槹#D@XKl7↙籔楄3#唩#'r&0囖J z+鳾"i蒵m%X瓘6G6,JS咲摈NRzq#8#@唌s迂&迓脷Uw圗1ぉ倗3\+#t y顴絴蟼,懬 荁弟ㄘ般P黟*q{4)褊墹V柲幟;6驝u猢恗3,+偽儏銔7,Iaha 孌傓^姯榎g淿圔::辁(仉闙q嗌49秳FU筈3毓譼oD +完b恏%B 瀏╅肷援铘q礤:┺蛭皃#lO陴萖B搫=9v$XB:p`uCnF.G1苀7旘2Sx縚-a 寴08瑝&珷O彫靼鴔韫ヶ疖縉咵WF嗍;当UC菡癟譑掻穩髰P觀|$欟4粗h炗迗趘霥睢偨, +所鮴貯MJ祛 D撀棕虙-皺枉9褴L+れ%惸7Q )獺nbY蜤|t叭尜0O3垰頣堓-+玜)聜牏繾晨W =L`7 "噲j c∩*磵統旷廓B卖輥N麡&l \t*d衍菖鑜駭辋'l +苭丘N'弡 粏"nVGO嫍儫腫 淆q.4萄9;薆羛j#=斏){廥G&濣鑅亊铆2=禣ば~_盵昃朤:.屩+濮ǜ %牧旰嬋髧疔(挨矡?儊V蕕HG锗b崄|钲p┾3苊K韮U螼7胺f抗6狀V忣\ka岍疙&9溑轟狪趖脜瀕昺*B}~W7邙釘儘&P=Q暕,6.5H/c*OD~閯育麑┬a 踦耯-S 殰K宲聚銦 +渏:焧@篰@ZVr +榹飪\濢cb 2,F鐶惃犯vB觠+喐眢]SF辙,轉錸YnM2賀6悻嬆喥t^懙榈Q賗 怴W<凾ggj{p俛#5楆4稳崂 ↙2T.,b<嵨枖s/:頨rl"亀g瑒ev瓋]邐$掳Q=懃^p&F皠s)8y輱鷡Q瞎F虸顃:z搑嬆Kg悇龙q蛞K;eBD卌鍹 +苭+扚吙pL畐}+浉 寡H麯﹙彙.鄩F_幰- +粼3)蘣樥裎僓朄d躛<7#!晈`紅[ 安1+=$偞圌q軘綞紡 廫胑鑷伬翗Xm绳- 傻 -乊hqR%歡砧t菬S輠M鸿聼唹 b膀萕澲塽愣#Y毵緦p鑹>竜" +礀沅頬_z: 0(%囁ㄇ)4sh闶"牃熑櫶UQ瑾鸎%汢そ糭 +蒢^偟`┲玛B*璋3鏡%塨捻秙癙姗[wk况*"雯炸?=i 箣'輑K脽暳3泾!`沎h緖鬵X (ъU 铔>瞆'A﹌籆Sh鷂|徣磜E|傀pt鞜鷱孿rs_貼憻喙>臃|6齜觟/龟队eポ艥tz5}嚷峐Oom3鈣Y覷DF冱m$獙榠咩蝌V`"g5欺撬瓌v酣0夂^*+d葛&:X;肛i_靮木i]a U%璠?Ti!s賣汹賈哔7﹒勤敀~蟙漁A骝)葖|jwz篛鍛1祉飂篮X童r[p炻_-飽绑FP掻 庙4"庨4n覸蛛膻W巕彼堎唢侱'0+dl橌``驤陽紋慥qpnO嵽歓4>"&w9I"軾/購瑚浀N 盉z(燫2qm慰p螂+妄c*Y牝尘﹂2阾擈徙禟/p闌{鵙HP屝t鑔V&図绅纊(曤@涻阸:?讑hどU 鹼腥詰W滱毶鮱囔E[xG吇i渍征冷櫆ZI#詡^/潍^湻+欑-娏鶜3床z2<@oW谹婤薋C祎K '4恶C2撜瞕瞒0鄊@罅o$'A乯眫b`痪 +氊琨磷S家8炩偽g温50欷搶爺y]m憂(B)鐱胬H贌=x.k擏d煓>x鰀N(<'嬂岫<0穊茰&睑_帢g.拺 ブ鱻?砍9&svu_綞褯g陆疏U磶,.J笜衺De~勓晫s擞び2V!Y>ci娾1&嶤楇t姁灅!>{"Q 礶l畄霱Jza鏼SKC呖_MWV'呷'2騩93e魰g虎>\b8埯量tdEg洡楘䴔灊膑镕Muo=;`繿(漯鐁^uw蓄靔妶櫕]氀5V穳犌F ,駢ODK劃[#淵斻q! +iS⑿V鳨{趵k䦷瓧邱$Uf叿_"qv粂嵐蹱{竁狳TA璩9"W姎撩穰#鱏布莱話鎼牯拚?*W穯D穱蚅 '2烥t#{^'觩@遀C糿噣顳1p惜H诃O嫇5甲屋5轩T破 F6褯$〓麒ff{讶 +璊&;w"鴠樎1k\狓塰僭9U岫=仱輮0堰毟炤[哃3w瞅6里J 巰1浿鵇纻鲜a澿s1飫q雨麗j茄莓丛x睻 矺p椮>聊南侀ā檹赙鏬炃咟gy眿撸!甌r净螿'&%/j鑨0kH捫裮@庮黴外 +〝湭 +4濂埬觊覷駼憗x匠g璫澪xU(艮F謡樣R2 {蔜<垁r焾濱.p#0*q兑廊q*q 嶜隩甍.廆;濥5vt阖僞霍wF n,饽/z伹脰lp溘1Z爢 飫7r}黀非GN腖q湂<6碗|R扺跈笜^;?'j>熤猝靻|`9墵O膃W佫%柛u 鏪V耥Za8鄄煚獞QN5OT"藡>怴Ц袤咍 +&悹歒;猯VCX+m)u譹V宙3?@L詏疥栥x狚)鎗tt げP;X&蝯尚擱1$嘛劭镏啼?猆駛RO饌炪~扼JY讱騖恂p鍧瑏VQiO錱`8駜即毐钔M椐陎/鸚#EY;訣8贠姩灴+`勝\kG淦8犍鵆X臻鱬%( 4鶫i^u5摃# rjk[y惑霂唄QLyYv=庁#z勣衋 溟//$lG5^ ;;Oz,v5-滪=>愡%物n +`臨冧re刊3袤縍呿纵G,懣隒壌 袈Lo8 擻炛尩ò雊繼!%t熐A鮊#co%炤мS䦟餓h鸌xQdaT撴U摼/y頚廾HDF:鵢脘J,蒾足{耒rg(B>騫 蠾" B遹--E49^機阓爄皨藻7鸒8J枇T昳坁]u@齮誫! 跀Mya(贼嵮*C畵"素"庄砞ad,蛴b=妓jL堈85彀fX +9KWJr搘& "0篳捧,r畁旉┎v爗 簧3W- q\"= +1g"w."鬭XO鏺塁V"噌欺飨Kd陟l萃Kb he:炳q嚻 葚痲聵p3G9d桇 *彩/鬒轌喩G臒焏猏玓:閮}蚹簯鳗岉]z贍i嚧稄T馃货鼵皫bwΖ$=z#T 5g剷f-$啀葵岠Z_犗跻?剟吥!5,j甌值23[O棔崔曮趙煎庽w庍`獽Hhc蔃朷9Y@棗室莍D餮鏛&=H襲蛮樇vE0k:SV=耍;L蹜般軛桃Cf稄怌g |萤嘌;@柞蹪D躝PC9[醙盭譿龌zt泵2&輈^橈<止/p呣Z# -38堁鈏X绖~-褘3╧6s刃靽痚結e)La`赊2H寽a+犥*B_贒 寘NNl@屺x/h夽#楨覈0謱M~U砫剕燳⑹飘Z嫻D{唍瘰!hnAER襁B%鏏-噴H霉 4岬sD瘈憏曆T縟?m讓rJ嗷X尋E (; F韔匄燋$Ε/ /洒?6$ ]2s垶紗脽j!P艳 貵 脜YHK蔟] v]&棻3"咥觶咀 x畲决+錨"垃'j襲钚萱v枧篹_cy f鴧H寈翉岧夠孍O(桼{橈S颅鳛w0QH蜑R_殩sF翩*稂4"肩n咸L頱咭Q濟?K=7膹_AD;lOT<I8C揤jT"&8*鉥䦆'21B欳] +Q岐_饗鸎80ycb}  8芿f0烫y +ysI銽量焿V.a]D6ar!9gDT;6C$?鑼Ⅸ垣_班 鞏剘誐圤B咴褅辙搚W芹! +)烚岗餾 i 崝]逗otF$z8T冊G;=;Y舀阳鎉"峫伟Wn 7加墐谅~嚭%$8<L肩71|誁朸俅1*~m">閐鬈]0Va{癓b鼝摵1X瓃罱骍u";jA< G󝗳屻)]顗斳J獫Z_瀾沃# ^D8A蜥 m o% +8e躾馗蘫/&弨,l铿t3|D璼hw嫚*I俾d/o懴^掲P榭8t稜]揟q 闻lm園)釕傲鼘蓌V9KT蘌_;8簳魳]幄 +齣H粌 93"棳E鶆W8i榍@Z06u 震館A!Y 亻 4v篙h 瞈_檍Y"は30L鎜嵮3)/︹蕩I5B0?#*嘹XGt衒鐵郇 + 6W荬gX晡 $E1O蔧繡團 戄p*顅曞付咕|丧 俱! 覘醝E}羉蹠i坴侁R?袔ラB臠 姶餯齊毴#`j佒6骁P`鋧瓳鷜_媜鞎Pt}憽(%n燃虩 }熥?@ 唰[艉]菶剧#MP]澚嵄蕦CC褒薬咲陧黻C3茐>~僫庳&Y烂閨h9欺O*+&v4榃.痘gク-\崄] 凰U俄nh滓嬜瓱 +P3=5培3 P艶 >77嬄夸@G*睂|栊#蝳窧苌t6;D脽鋗L:s"块:膢6蕽耘G偷~] [~8瘝@沺睍"耰"鷮子z绦堾勫]R5鲉處轸拋笨嬚褸暣e}L诠矙垍j 溎翮sB +W觖>#相{s#-;q醩鍣鮄O穿緀抄qn'*y挜稉%円躩2嫇n臂抧9佱0<爥ugv_)阆"WKX\䴖澪儭=蚮饤仝C4mN蘻'g騷煳寥z,-答蝖屆;粂4&v+巜<7碘fU)54e醒`QGゐ 滬籹c6袲1鑝鷬祟kfn樆C卭|Yd袎&rP鎭巊儙嘗洔瑾)$LI飇譳3嘘gK殆X)敉P証孪祔婮淿u%漇桙D侬B*:<劋-%s絍葞D韏;蹡挛僾団u勺$璪ccR葵>秮籱K~谼!y*,p崬{, R蘍悗A0{煽x~=9僨獜H#U历.O攀Pz +9阆O彳m<S8衒1樯淀|0'q妷k磅&:;G黈邜?進丮窂騴瑣4ベ厶[Y"*/勸t圠9&娗3]`Hn 鶫7m5\R)腓麜u5蘓筯D$f便魰堛<鸕俴盻CI +崖覚x]\v:Dcq,E鲸k 3 爠#?tF嬭<#Q$[戉晊i/辦eZP麯) M蚥阙蓫@%*9摪瞢瓍!//^w鈦砆瞇殧颹[镧z cIIv@p? l 禼瓨SZ_襻!5耰 :鏾g聥^3;J9B拮橽y-8耧H?驀'鈜鹡4;t鉛⿶3馕&飶2 穔O毬钄d潜:N冃輗覻l2婈5+c7N ,斸{i姌 0輑尹@w虉忿桇鄖仹f憋dHQlч +5牜#傴泝琥L宦歧@Qge`貲\L 説dTP_蟀:*"釚邻催r阾@摙4栦枬I0*榳0Y(S`俵鍕X竖鈲繩鹬仐8zj= +rnO诃x;B4繟=hT X斷黤桄鬠B幌墚哉?92黠溊C铳;牑?r4="譔#i=}陔i呸7驠 E-佣O虌虊琬j;蔥w㏕HE0弃6黊<櫞!\i膖P鉆Sv3V寳;辿迦轛*vZ倵淇la譔Ьm炇h鍤&_DR莙So-H#噌斩:%8嘁慻BbG8n#賂袮dVX懲i收y妺怇ZoJOXv z.犀-坮譹臰Q0寍o2昗Q0| -A抰棾保 ;F蹘#~昕緾磮x[墨F釘2O{3"騚:r簫#J醒%C芄 ;蝵涝荜fR璱+_C zI<檰S9笲∪з掩},':環ほ#忾擷樅0*t鍩玘,M*la膕W5拥r熪肵%塛駧捌51 c怢様U\旕l铔@吙6僜臜t疙X"31⒔J)鷗i樧躊/烯攘(戻湋W鏺骟;唛(zかr⿴阉覶OGh輊h┡壣蔨Y;?yd簫n謯"捐ow`鋀)耵蚂=%&5W覃l鈁媹*/鮡磆戹t雥艺幁@现+蠕p;\aネ劦 +旮HC)籷k嵆#<<-曉靓嚪#'b贷隩S厚$3a`M塒耏 笈k3d幁UpI$阰夿<0橳UHK柗舟ATC杞境孖 皑龁煕 t3v牒逬=彛惼犼(!.v昹脥e)e苕泫2 踙[L+痬ㄎh4_ +僒鰠埴眷'k/?([& q$*uК蜇娧=悮?牐cm堉Z猸溬Uv{魺愖@鼭齛瀆鴈_hc! +2懖赛p`Wy蔝R肓佑Pe$9彮燜咑l碉=亱隵7p8:潄k並侩 肛 d4臣r0 a7誋鬛+KWf 4>沉+O╅睁鏥讑v抔'dQ滣ed苳 +t凗o袳0仼L)拢箙Q嘧 矉傠8匙`iや涬扌哿;5XAwd閷[裷^涴H遜<*灊鏛簀g麂缎丷宜P癑嶥XI幸2w7F嶠uu#翨豜于`S""錞i澀喤通鴈騐蹆5勸蔫靁堷w`触a流&;荴逦j*爔}Y02顮鐴s`俲p5gQ赤,#鐢*r&T通:mH辰9噲w8曥闐>蕡Sn[褂虫D燪.洠昡) 吝燙w8e<$糸Z30+/\虎雿=I1昇0"緽N矲v锐⊿惸Z俠_y潮叝I(p4释质Eq鍕琊侒僠牧E溿玃秌絥歁j袓10龕漉^瘯98V衬2r{弉S钇饡傚#銢{KBuQ瀐旼▌\惻<继瞘屇惢陽#w_]m>*鎈G$咪姭辑 ч煋T焍[蒯┛悰ぐ擸xy.淛V驓琙#wm鍃:;%&S洜"3 黏n 馛蹼T瘛Do3..齪w且jr+纛+0u譮肞8顧3冠-跎z嫯囙{炌)n't暭g#9"6e=┇EQ騤鱸逅O恢:[馠_!~Z揢m4J9肥6Z+瘎@贊闵︴黒踛麙嗒:儩+)V漝寸Pjn}祮赃燱褣+雂F?3壔4tJ?狪搨鰓w$ e麑5.櫙6w.,5B8碏eJ祟絘碗3Wv僪钟疞蕒頂W楦睪,G痤仒;8顳D +з{袦 +9=@Z.+Q?:8禙╤M/I"H袙㈱H釴鵥糷悘:J+<潴苈+瓷呉;瑹q⒉~)筎;虶 蚐纉(w苀覛貊[抴棟wo+F砤oq8UΓ┯章醲m勱F朆\言KLS磗5篅俩6搗古棑櫎Q鲨蘱D3 胺殲V鴤齹B鈿=敃」v>}XN甿鼝謹剑嬬V -伡@9 +u畤灁\$z=]TqS*OwS,毉齉千%3rF塳鞕菩 6}源4湸Ck4qx`I亊扴F┑mF怨Gc镠{%_v晢拵#" +鈧廚錙al垊裩N腍D;&D姬扡尘(Z"@z簐颠NEb&!bDy e栛F~+9j劸Nwo($V孿-唖飰F跸!蟕v鏀磵鷃 ^.跤︵嵩橐%倛襢 奡 p%0( +达讫貝|▕R n桞;闸"q蠭铑q 赺(瑋癃<闶8 yD+羡(v混tL癣飉舶蒒拔淉]屑j,2.u靔n椏G#JX2$U撿;R览齍/ 脼7饘F勔盉=疲  +夻N ,傺?x|鋑a儃"唹棔偨彌韟絏魊筺 愛z垌=螽<糱瓡 @?S +冦8[局嶱庋佟Yu嵃甅|-躾剒M蠔 ?泧55>A珴1 櫃篳磩蒝o臠肎勓%馯<{T跚N皱#拆_鵝ばD*A撢 怗]#簞"爗賜U=|軁嗘|軴O賴f蓩蚿貒兒穏嚸纈N鑐$!槺.^垌幥 求述穃Wa1M怐(> qY?噈咯,+W咪媺^a N樍/8劅83靀懵cd鸋瑪︾%/v枏9 + =/鍕z假飋+r骹栝O錣8舷嬃鍒嬉%D虳+R.'? 氅[y幼欆eV詚嫰蚼岫浌聠`X;q97=YZ碭垐嘘瓊t"煭c湉z)弶u t懇'BdW虔韡( (o紐褂x1)づ;喬-9誚'&玥 vr{:箾0"_2*(s彉@陼礌^ yG濞EO嫫 wD=cg鏉]U骈-j鹃篁昺ifBbu?#牠B鳟J掆脅馷L霬6z>兛m<5洼晆嘪;VB廲d*=*[鑇4D皚Q榑jR頪_產#}~x浲 +6l@ *>ㄊ|乮颊揨翿D嵵溦勣]緇6 +何0Baはs.)2,弉戀鋛●缛塽6並0 p6S>f +_U蹦a昴黠R珄E鬚詋;瓾4篏鏮J殧 迭翗訉Qy}1{齔t-{纛荭: 钱B撊63"皠傋&鬯(E繀2}忽魤蓟巘9;荌踬QH靵z} 9g嬖捫_?哹1V0v=攗$嵍錤T潀8,L〧TMX!mF9裳旘∈A煄鼖oQtR9鷵1a堆醮FIp:QO蕉渢g9u>+b絤-oG咑7f儕4jI+Z6泻苧A+?/滷(\裇Ou13#<敯ZP =骐jqqC釁盄攬澓犃F疃拵 dfE粖琜'炆乮$荀媦(桩醞Td閂vn啋惺q╅鳔 终F撄鏰歴~J遼澥/艌t袪ん宁W/踧坦rd {彝谑筘匶瞊&e<嗍+8剛齠v庈怺 R"豴UowiCiJx癬R冹T詨2`韆犬_緡勨鍺隠/= +礹婰3騠Z.Ы㈦Nke庋黪颂( 鄚癵,?貏j彷=孽改z1(歹岕'籲批C 奯榎C愷旣儊U"- 嗫桌Z H-gFT=fm浲艗V 婶@漦+鍔功K蠆樖]代\翵|蹘癰欂>漘悋 燖枚猱!_wd巁缿2&YO迄i齆 彉%J[Jd%:獻侤 0烚>暞蘄纾屵9腖谺4吏8瀬笾#>鄫Oj鍰刢鄉岌躨眪Y獲舺k⑹p,蔯M懧蝑邈.懽觬d=0n夝>/` d胃1y臢e$忙傃倹J;格劳W諦貐1AP<2鄯0.z瘀涱垩噕磅 +渰 澷q曜灦鏂椥}b㖞G{U乧+ +滯呖I夊朌聸` G車6emS锣$簒嵱&罘 .辌;蓱x蘰wr4v 卍繩訄 o爜A掐喥醳E(庘Y4Lg褯5脮 +睐縏Z歘翩Vm[礍 鉋'鯟革%84勼≧?fj胙8_U畧I +;澣襳w罞睇旲T{喴*60BF艎狔瞲"巜>窇鎴X0寱2熾o `f砍艪%搳hykmeQC=f;;Gq/}鑞4a踏N握>娇星Pt踃逵VR颂紏*z蕡弑#kM搮頻l*p拀P炼枸wk溊2qX掟埅J];0a薿_鸔&鱭涢Y40鸈寛uY寷a蕣缹9C咎:{"D*蛂盘B躈穓吓堝l{Y陿e繘5EU掉 *q饞Y譾*72z_6郆UZt%奓$楱9諙D箰>巆O暅翶-馠敱=`.∫0坾象=獩0rF2赍悲匃皛w!仌m ?萹)僤闘癥?訑崢b懐m靓滰Ak艟{| 晳溛Z侓@w候鲾#P嶺@)F膒.8g +疆w"yF]Qf槁漵_H??痬嬃~G℉黄p2铀閬N怌D掴9;儉鷰 ;O*崇郸"插挢5g5+U!8p4>?h#蹶.呙P鼭*嶕|S鶊q'i-3!x<嗧.濧錴I8Qw膬F牮囝>猩 5T諮燘岕竹38庻矦攎9g瑲铩sz鞿-橵迲$J儙P笂3灥欢 鹑磢:5]U籫)_0 蘢5荕Q9;9龍3<>d評窕覥~*^+d<蒒a蘬3萛匦鞤苁xIF t虽涉撶焐 俔睎櫱)侪欵.鵉菠k8+ 鰁b]}F霳d>炡Xg,襥4,Z-瑎犉啱葧"絠 a*噜7:6獏+豟燿s K 3趱Ⅵ楎*ョ䁖W ra嫙錍儲稇`p~胛m:羞碭J枖:獉X$~菵`"f{6匕f_i眘9.zV塛絾#MSz幫U嵾9紞&禒[ 淤σ糢p碴e2鴛よJ7c 坔%q]P^zMjC鸴响0jyG詪y,aGM3賛欍d煤 a殨tW嗑D潤;7鸏讝o縦嬞珥^卹鷰脆亗铛鱦0墠V}@薊8sB檦,54"-=髉,^稺Hw儲妄/:康瞖 .Z +婙fAB譽拔英(隽 G囷P6N'U<1宮堘/赡0蜀4楿琯f翩 w16斲RhfG豵曭灞寢c學 騵G[]+ 拡"效I顮d黜WE`U麈!n鑢@`鍬怜澪霒躒艹﹂H;魧鱂vaFVPYv@銂殏炲 +9椪:8h >呔kq顳F邀礭嗝3犥C 嫴4鲟Qz脲Qg2":熑 蝀鮹9D娢候鱤?xzQ8| +<:滊蜛廊_hxRg>贔UZ醹"沯8(菔猆揵?a骤2,7Gab*0/eJ龤姠^8昙驗柯G厐1< {l繥yloww6>嵱鹇颮}躨墲炉医鲑e阁楨挈|欜禼7灚;`,2扪*壚|嶳NO脂9顣*)#Z葳{%茾LVWK瞲o雞$樾?hy耩7諎dP+揪橌7襖萕绛崐钉<4躚鞏ń狃yZ*te啫nV樽勬祣Z岥鳸U 臉鼾4薽hB喡劝潻]j髨c=?6)耸孺 }*a;2>/绵舊8j葰e,薏躜領史S5篹 DVD}釅嗇л魎楣b>KT刂!*軔Mf搹$]U迳-8>讽蜭G[1r*@ 踭摏?D対=勍v?)Ki6丸鹵:8裟Θ7@豊柾*頽F9 +膡榛槫O鹢$嬭2A2渎m猶A佑℉猔 C稕因廄YP侩KkX姎妴5'N9錌C晽r嶤f索坾[蕊aZ恦48X 1丁蝐>#饮u畕U+ +; 钇 +蒂/"-l 燽33Qzg9樜g,崍M等 A牰徝t蕤@賤<歆Rth満Z@|D\%卯跞楌廞Z程m万Z滒6枔禃 7by茔溜镢艔谮鼵stiF7 x娿YS胅鑆-` ?}=&Σsl輠凉r熪蒺~LKZi渭捞(燤?寞^3乆髜a坨暠餗莲鋵撐D9V c恟u= +凌嗰棃<2驛携呴t衰陵n賁I;+zY$MQ野d鎱薨?Dε4猏D稷勢G(Kwab滌軝蘸塦姼%捏~勆涶衙躎3铜濘澕,喔折反蠄}哞4曠猌:2蜥Jo梷^2蔉t鉳纜弎3訒薽jGU +iP引<M ví嗍]H縂/|團 騫6屘g┵=9Z殉)2+ 猽扣o澷;煸韜-蕉覅雦z==x毨H抋e呑}躪繚札憋p訫>Z鬶燽4I闷*f%GW貇z胾桔=SV荼蹇'阹1齛 綘<Q誅楧游礝 X0}W褪-9>73臢╡@t1頼NM[閦j^ 鴎(Dz姵`|- 讍^ 俘1黹 隲p嶏aJV榪/O障誈[u鉓嶜 枥葥饻#酞淜犃(x=棒揌捳毩⿶Q#lz埁 昸K骄TI猬郇彵絅J蚯R柛蛒aFA┄ o#辅 3捹D6 诡韕C棡陓僤蕮觔1酕毫+#S沖ヤW閇Z1f酉H罳剠49諀權皶琜勗) Gg<嚚 k挌车"J勹齐磊磲刔yr暾萸(,Vs<|36B8凎鴊_$箙ㄡ\阐w楯诫烝溃社锍ZR爌-捩 D"' 轧,戎ㄋ晘 s鋱 C觢諨7wVO>#4 逄4?^/釞R鋤鴜伏厔 铬7国D>7c?I/m螭m&󑯹熜`Aj焤沆3 繳L蓽氆h椿秬磺欲枰师<2逡た逳a鲄5(:/媸C进oD◤yzN.氵?厡k鹐:期氯E+綆B-t襍氃9 J岘扫毃贌(:?DiE9蹔愢|"z{4!^瞝"Y 澍ok)捠}l*謶?過徼s宵;酊K"Fh}芜捋 U w!院[_A玍Sp:萉nTkJ~ |ql籸鬥檪@w蜧B铜B蘕?稞欐{2'萅鱶傝櫾=)纀F傅楦鴞?&窯L&棍 +陲@眳H2麰?!#f媖R殸[~荎H枲 +4顐杷礿懪z"掦6~{!+6瀰"埖茂?嘵#鋉 +-_9;?蟾%9G]嗠貑枑瑧<0vi][謵宷畊:=l餐n.泌輬X幻+u孤T晛弗C禷篍f魞DC 2?Wu夃{n縆茷Dl}舦(*7>抻TK1(ZPVS-i甃暀8 lk[礏鄈N\( 癐陳 衱瓪c黤&ゞ怍雿#"発;銏尥跌厸C=J 揗硅桾E;鸧_舆徝佬E湉'诡_Z褄埈4wS蜸a侟惕筦1F}-&(>'伣D锠嶒CN5: _轺癛7A&:%觨y抣Huj舽/#7夈c3鴞 Re= +tb秋O 鏶jTy苜^[莫NiY_ 1XJ窨n糸颗濫;苉w嚋O吋&_輵蛨!藬{毭Z>5囜鵔x2暑韍&5Y8I菾0Ⅵ^!W.*]4皹7娝觞篳7泆a2坙Rmn栃 A0G`G,枥喰T砤怃犒鶠畗=> `*T瑦U +&>#){~E%鵁5+韎静嵮YL2魼?窪=0-. h"|嗼滾dK  +藧)蘶v&xV6豮]蒔噇兪/W 諦vC迆hD憙Wp0r龓鑼戟K7)vo*06e鐇镟攙湣斕GOG醳|>阂愕8l4h斃"偀妶v'韫N~Ib菹廉@偎鲔 瓽鞎Tq瓨"#42 z >噞嗀垹瞃+鄣T秏瘐~≧=Q簐_- +M痂阁\Hd2ゃ藠84垬望肋?厐蚺酾=檶 玓臓w +-e;宪鑬擂R阯(佯焌裍D咳慺Wa驀鑊殭\T鬗n斃№#膭 |鵼n晜0m槦_k4d胡 ?嘘D醛嗶拟06.辭瓶7J o +$痔'坺敳6鶰%諌F變* 8 K熀'A匧臈Q粌5傝翳$ぁ弞ⅹ0C虊d2,跢[\鱶玁騎#><}`槖瀒豺湌份- 买衋銒頀(昘諺=f硧ytnJ1賸狊bJAccF4:疅粯埓,蹙8苤[彤儙窼(X;潱搂z蹰1历鑼w娲# 趙塨{\姇图6O%z 瞾2.卼錢{,柛?=鸱愋1姱?U陠憳fJ孛lg/簚虜薶[∴[U 飯堶楑|Sⅸ剒齪牰燰賥/狓 2駊r+畺/裛?鞜-\晚縟.C{览Bj喬T+cu~% h镌01衎=W敂隨46榾i +F)P轕8縉-繛皃嵟篦ps鵾f泀k掙盹 +翌b頗豢g繹]H+bQ#|e]3MY`UG}nk资踘.5Y#_逽}鉧3l=>淥D9V8樂佽&韵坿q筙榥-錹:6E帛躄零C第m975叮詞zg#7|p_-3x8陋+琝;l璚鸤.矛i螤^b[桎]'魿 磔^鷆L糸骑恁?5:謖N昲.[陙氩k踌*繮墉=Z[Ⅹ%Cy厞嚷 ⻊O楮ぎ呿顔s熟/騗}k偐u~n蓟 =l-bq璛[襼啪饖鲍儎S鬠~貙7泻=繇鰌>梞雫1%.!kn=𗋎Ah?'0X+貓殏pt9Px江s|丒族_郥1迓鞐鷮zQ薾鵓s/P额9 獊櫃l<漕@5淸,幗u癘5Ug敂k竈0咕E(ーB R鱸兌y!o鎞Zk小& 凄恢+麫@轔I乩/:妆撮QBTu挜Pf=/\R伔⒆.zz y毬羽婦i肼[v菣7縻苤阝烛篓+R韲<~>麅.脒罂漂筮w强z殷??傀餺房䥽钸?骺鷩服b燆缋屣?顭葵燓?鵒忒蟒簮韮 0E鰅攤Sp悾FhYie綄as嚒 +湴 +炶k賁书`苫 *楨Dw霪:n绫牊%諪穩 +y蚙歐МU烬&饞nm骨gXQY^lz戬O;DPW+盙l綪呌厕UY噹齏ABqD1歓-倳r g[{!驇壥暪藴O筈P6='75蕯岊繣示k#趍D+O蠋卩扤!鋟{膕?'豶鸽(縑畐".k蟄潧_|湔瓺@VX曾#侭螑硈f 胱\I ^ /嗍y(恥QK?謇 +<34竣+窩 偩莁吷 捖P"@ .+XieW4愯_E嵷暂然多rO瀆亚^郭Z呟柌糽;甠d}US縐1蠿漅~4;.2w绪⑹:丙狙┊蝧4桯X +/D$0愪K燛B枰X闔g}澙U6EihJ牵鏙""b-隄;X.來rjY懨岀鳺LGZ新bz,褊`怴f髆胛X?霪沀,.V)8蜵靼壟鲝t瀀{UU&T嘬+?G`S苚 j䙡=蕭"G奾 ]嬛髗G恱vw蒗<鋭Q歧9w压绪?粨lHHQ牋侞瑓*啋 52Xo詋犽8]犥姘 X睗潻0\䴙E加霞烐2/^B`g繦琚$庑?怖"蟃偖鄯蹿`f=,霃覼U獅2!藆T苴鸿鸗].-鈝3鹂:锾xPd 絉 笑?#宁惺桦n作w"|6纓頮'jjキ鼠jZ篙鋱闖|徣⿶#囊c紾?HJ喉xc1偱3馇蛆# +'3V7Pl睞鐶1~8蠬{隃黛绊; 绲W膿濰硕n 劦鰹詾ZI樊#52г&%7b骹苾)6咍鏜S(u;咐#u=G^#悞纾奇烋=8慟3#a +塙7授n戥I剕g鏀0 垳趫0楟h棡傳 +{d8>*h羠瀊葊&j1操:v拍xE芪kn弟朦屓抸芚麱u黷爞~8吏fK3鈊肌$2G:K+姒叢逑O蔇C栓庑`%Db"∩懛 戊濌\KC顫T$Uzv鰰襬亜z酈骱展筷S跴z0︺懙{ P*3'輨_祃M2 魦y2T@\7鈹7潰狌^稳Fx馻/谉2蕠墶`齆嘬 w@轡萢袌鴁殡uJ摙kr>仵 +G飌 &0poh師分yDtZ谾H`D4)y6-*~裀vB揅眾:蟻yV呦Z螺_瘺旃@ErSS诤(C7A韑;鐗忼>b狪 簜稾飑W-U}鐘榛aw5)U)6\:Y娇踺粲4J} Q熑咚ha8%鱼飙疹z -Q a诏澿婪2QD+,c#姈W%鵣靬80定h暞縪 +WXe@eDF >M:饲u蕉8乛瀟 炍I褷掛wU爫魫"盶邥7鯳Q*'柇僋齷 脡8殅嬝E)br舰漗猆(+漐漷膹IA墓揿 漲*諗M搤径l勯鐹 ax')鑚,f r準MNwV +J錬e靱|黏|h循蔜(1>. "E蝂樒 o '瀫酯 8酕鸐p;M嬿塒5Ei嚻:uNm諜w伡Ww私鶹"椇钔诂`而誯i鱾(助繇笑侽q;錥)鸍酥j鯻3佇鈓磲鯂螹郐C*z障n芫6叴M磽瘯地"洝3釰N 骚+*8遾 剡(^胳贓飮-S栗t濟鏬鎎\H嘢愨p嘐mIox堓湒圯YL擃 _9Mr垸>1y 9刀 DKj聧戉v9莛渼[1醤V鏥M嗈讁lA睹伌a駷l匒s銖T菆俚;\)o3⑹|:鑌捏;鸷嗊蓰+旪\灕埞/ss怐≠★-"T虥竿鐼砎頼8翩qa鲌舡缸%抛.64憴,褼嗢a譊畚4熲;綠鞎珕臷W/翎鉆t[徙7w妆w +endstream endobj 17 0 obj <>stream +堹睬崌绅CLBF岆梍夣餶mHm籀CzрZ9孢- 廫城&<霴 P@C硲芜飃黎=0曑妝罯O媻Y肉誴s-:%79 sP(轍{笧!坜"h~!,tLB3觯澐证踯ЬZ_ t鱲翱8貤 '蘓GA躶4麒蔙禢9顏Wh$hЗL僗煆Cz#!F基簥唁8$鬈Je怽岳Ze>⑶%;燋麎p礳vklz谧RZ廋顢帇@庳%8臁k3釶U&qXq坘擮1越輧杕渋5o!矫悪,w囱山25焏, +慾瞅/鏔_E奆杬Пj +龚k涔鰦滷!ぽ銲C7E覊M攍zT靶溺斞鵟穮#*線22怵酓餗WWXfW)觷pw#蘿曦郑H翃(B<説YW埜韦nEl刢雷铬~.jo絢涒蠂⒇\-3 羹P鼀"}!闎R海A铨|梪圓H鲐龆楞叒vC崒橕j{髽i泄{哸SXO梣糶泭剎iK陃殼*R簼刢笈o賯3*v猽GW懺齨爺鉫1淈k詣 嬼[0螛坦5匋轍/W"(覊柰D犮壎50&5贲 .綧䅟6盀+f洴"-. +慭[Q+夻*@碀 =y1Ik缚攻|F.箅区悃圵;,綦扽痠lr,l過?楥%Pe匑嬋┶%r% p弘j2MT佩灹6轹枻凄⑸|o仸!摡典ZW勎 +喫掝汇gm[蜘娈 bq>E鳃5hO繥 俜鶦臑2?E元N酑价尶9@璷x"劶4尉c湇O尞uG熾埅" 捻0 ┓張]~啁,\萮~8*甡Po"a鉿攳^跚鵖#鑃b喯┚ cc`ed茾{颇^ K*跟>u镁 頇M*亃?V瓊葝8#a>x雥`洈+ "ǎ蝛 ],Q1.砚! 釶搀VD蚘氙&6c4 Z"褖楝|g噢餀,53「笎z絬治w忪h@(誩6耹暵踯)氮}z 朥+番/Ф飸侥蠛瑹7<诶*隅煡2O濥蕨v鄂3bRA瘅M7漁菣>X墼窅怶炧#测鷎鐚u晔z4 竂m穓伀|F燠謪1}薣;袧1奮5总躗婎?D?鴧訓鏣呗T指殶_像C=>"=h臠晽衏-dV蔳柠拨眻嗱濝銇0iC禳%豉蟅a驅濒o忯{貙晻驁Tsyu悛=犯4侢.魋憋讠< \滰?D騬(谰釰)[)蹪:WgGv^$TiZ6呋E@M & 哅d 伄q;籞礵蓃;づ} 踦妻=h%Lz挳踪﹏鰼粋脄茍7 h氰}K>b麲珎颼揞廅2/ P%7滗tbN鞨Ro ;t;#9ノ歜 ]8騅IQ7臒8谟嗛鵖磨癇r弤}搴 C箠v门g&奔Fl鍀㈥0蠗檦2攼ゑ晸1貿p`ボ儘澷(*柤杻;TE}%/訴谯影(<涓骉Ν[J'邗渠9!D啸Y_*w$琝嗌^i鬭礑忏z116璫o><質躉姭帪>县G刳1臨O哧\O箘殖╥O佱愍G麅痝w餱廘2?ci!r曯1啟衛a嵄5政弃騣彤I妞涾龂糹#筣i乾莔X犫 D}/P映-歵M!/rm靖拁颰@$藨颎9z嗇S!П^Nc#忡{X碯.U渗5謥.賸+<>踲8Ψ;s苅rL晍|5+兩疏驒VFT鬦$佌[ Y:斜 +蘞t 軰+嶃姃~".^NIq魭]屈鹮)璾Kブ箬"砇<畯餌x?鴹4焜VrV氟鮝8?A蜙害L祑 i t&莜#湧K伬=+偬~>U铴繤冗踎Cj蔲u鯠'㈨坽*P.1谱櫾a@佼 =5.橛鵶篓o踫(D '忪v騤頧c轠弒焜eo季膑8Q鮍娄牀礮弝p燬¦牒 腤氏 砑b藇<皢.g隹^%MY妪,僐脿:vu獧韈'S >{T譚 2X褚{x笺!I蚈%縈渂?,孵矞:K瘅碀癭碒0蛵&鷾汶6&VTU介攅c縉腨屶票痻&^i&j 0倱撫飰)撾v搜工䜣箊强崟鏀+c螪t9閔N ?(N讲!7焈í秞Kp逨粖S嬦[&厮.b8=RR'W钰O=唲w夳鰊k村榚qw煡郒I┘U儺雄唃仸,kBQ鴦D7}鐧)"运{搾SaC|3佂G05 ,訒x毐霝d踆颷廈n輴氧挚 聤柰S瞒 2 莴9澱憟*-s葴ㄡ "0晔i罴'-`L'P麸Gn emn嫗苦i/攢+[s撸7X!o_`韈W0[坝:LW迤5 I灱落 K}dp\L淄yqZ6雩z熝艋齵{àj颋剼埜Db^5牄喑%B苋簞-E 4簫轟焭 +3鮐愵8UW'0/巚.Jq(馝U7灞*隹O奡q聿2&つ叆4h%@K騅哓<象iz酖觪g(&兀S0$:O,4|樨K|n靜衞策蕷#?瀼揿/熽3Q pOS轮-譲F C诚倍斏8咡皕み"鰪6敁谎>)?浏縙!~ +F帠冣3?D牤}匞坂3屬┇歴@钩(/沇衃尸`*潂旚詈}弹?荠kv<輘.g<:{"A劙#9SeG挥:qI絜@蕔絪銂g7竖禡KW]/f軩\冬.馆攲旔 燺X4 粇谨2矍薿%蘜 -鵓J>X鷚抮ju 57n;伵f╱亯j鷸衹Z!牭i鱖员q 汒{OB跲聝麍趝 2傜綻(U銓衅卹1n/ 熅E9垦V鐕(AWU溦Mi珚蠦E帩澍礆e浛lH)殞)d俳tuP熽?D\ 烑儵 c蚧<3(+^郿`9@:S觋+薯鐲B4+泯﹞HS+J敤aT3确W拆+螕ㄅUi'DW"@漂埁s寋K邂啃;;'庉jo 2O)e 7P嫾H禛坚祟鞥_毢;x ((&臀鼻葘賟磊87l-bQ瓪央x A橯韊9Q瘁#庀O {礟)?h郚=*)*櫕.n#怐n主#鏨") 蕓莹d蒌喞]镩BEy銂淖yxU茴麃薪关蟈 {催 k庵;k?餧o广;a )亏鵫弧@K g馟峕"{吂\Y雯蘷顏g*N2闺稴e籧K怪囂@ 瑡Yy9d阉綋?@頟a槢袢珚P饾鳔倻欖瘁咣昸 南s 杆8扄 斸a4卲吨燝埳(跩#湮恥嗰ZH嘧"馄B+变Zp俋cM t-揶+Vd-锒9翀繼)/礕坱 nj\E阃#P閦咳千Ma"5/ヽ D煤走vW畗F3$@+!抃飭驅Wj1晔n仆=澤灶簌aW~<]P萁刖圐韘E(哿殟偐2 绒6SQ湲?呻m阁断."5l鞹%&~劃3B枻ト鳜莦sMP鵙嗐泦o> j钋>矒鮈U険~氹禡x6蕦Q(9哅T姗+B9燌f5辮谭祤兯芁 ++;fR4-B 釥誊氪蛦?W橻稥u菚灱⒍l]喴AB>碆·e@(珤鋊 傁攨娇焵-aM5aRU瘴乸%!/暖堉t菢#_F怔lp 唞/兼O醘轝:zB骳H峷`E凲).k6柢[鮗搁q'棶A 衹3渷鳱柋=(-1??#粄;fq:缐槕?勷擯z"R桊*砈|郬襱瀑j┈j^傇!餩 蕅l裥鸅鑕鈌齬鲃䝼憿8K@蔲棤訆鷉~犌楩覡`墪73熵焜岹钎Xf{j龓k;b嘨U@蟃覵Gh傰蒈仁畬咿谍鰩Z幦Y罿T)怴h騯4Z勹嘔緻峢J(昡6|8(.鞅^0デ鯺衙1+`牘‥#B棵w剷7郸 r=RkCe焸j*NN羍b陵Y5c/梥xB倠棘跤i颍7zZ锭辝 迠薅犒_#rm~[2KcH}j濕C鼞ky嵩#a( 涄FL1"硢;礈鞦_鏵姼魞 9 c陰谼堭z1蕌8臉[B饍-9VD"闣},|j 礏栗厏]Qw;覻飵+汇苽荪僞=徯笨*3侼I$X@^丬+轳鶥O赺犈阮扬彝嵡x%\呾沢童?:89W-镯5忽袵>P@寧.坴]橺 uA歡驐婚鼠\"瘖雵)丂0繃熙@01燑B桔=U,v 骮|訒.啳咍}%<21"F煑 剿盏==1魢膋E6LM98瓺刼?yC}|n k"窕aZ欶穧X i#$n眒茬!矡i呷欬%w8泛鋭N壵^鍻郹钔淁摄D (沗1鴌丒阓潴fh勍2s &P./U苋-汛唦拔受纨"斻 *#2/8茶儬&嬱MU?$禤V=WrFL畠K1刮Q萧侭l:厏k1NJ詅,絡-扸绷歏Y'鱩 唺;黖锑綬脽U珸嵃撰X=l|懕櫵L璗b'Zi鐜Fs癗佃K皺O毵琔,u柞\>-莢6ˊ_w速6皵wO闋軥6%Z樼9 愎U磑:G"毨孽 怒2狕蹤-鲺r蜆f寜賌爀琉氏到讥袖D禴ろ礕J\錶"/w8`鮢0+‖TJ憒拐 CG +p(Rc窇佭驮f讂5#鴘wU铛9玴簮赞9惮t勪奞碒$*!!G2乹昭>ya;}焄笭灡y5 sQP=MXh 讠徤#肂糂迫艅般庚盆C厣咊3黽觧\倕 +`f轳櫲rG軿⿰錹v崒J嘊P蛾t4蚸}C@韕渦暼驭e$忣薩|EW9i^綠 砵嘫8}|聀H∏e'SAq7 Y*:晍堤mJUx沺)碈@濛畉+S{jxvaQ綫z罬R詅腠荼㈱鮠+)おHlj麿{濝陖+x/F0 褋绔3h挄bm椾艿u△⺋;rO%r氣嗭裚;氋暚sT8髗E`电8>-?麐 L例锖虐]闈勁繰4%訡8 仁u{捎A岓J.墆錊蚖L?8x痋VX熍泽遶eqk`:b/坪=>眂酶剞M叡瀕鏾枿XHsz鼙舮2e葥獋M逭82磱点寴0-gg VH擶鰉=辡5I濊襏-譡I鐍綍}毠&q f3?\f&-]%丞奂廮P在秷S韴3^彚ev枭$u]8鲻LK儜/K偵椪t霦!_$m7Qsー訨OZ 蝈9鐰[*cG0毨"鏣3 h遤х齾. +.U/p#xNT豸G1槮.?縚D0 R]1n閼u:b@a蘑鯪 +僋<豪⒎-販镽硭睍GLB欓p辉鸛w揦<淇:;x嬱雡朘鲄蘂t吘,鮚(-A獷遑巤蘛菃洧閯gz砑傂庼糇粁聲窜籼"5~3觴@砃隡`:nD袶剁[3]7疻K!蘒7觺脖穰}±p_25乒贳蟒 +he75愞秱題 C齠GRXRP撦

烯*褂屷鵊w宥蘍n艀a[KZ︳葦瀒k櫤;彃餐 泍B鮻盆3逑嗻当嬏k嶉9窙TωB<'2洙喘wS蕘嗛 +兀嗁6誘i['崟n唋振肻;貯#z0徖愈u蟰葖箚BNyJ8死堯&g釽e庈:嵦x镔径R酯邔Q废2夷[榷]哤 +≌s憖犀剉0Pi爄Vi匚唏A^錗_>契8悔 f媝 !弋楎u恦f瞍%雴 G蔠 垗耜^?纂F瞝l9+婃q[簍-骷uqW栬牫}JM2運郀甑q玲J旨<覡^棧叝瘥腤褆烲6鍈 艜5&K[;撙8ajU鄩鵽h禌x7_騅≮+H:s=\碢荽V呯緽森涩 健*乎Y2浫絼瓬岏辤 +o0 am徳P8*9,h靚矺原!0▇滼h +k,仐"K|8r*圵厐 W7湊娑釧蜆3輄正ZS零鸇Fy骨轟([X6捻堙葅L楃T浚lC簥盉1"投 S浏% + 爉狿/j+蠻喥 j?Vd c]k┐uq顱岔L屗9S踾U槖摏Op╮7僘晡鵩cDf7d鎽% +g?Aa<"柃Us|PQh+咹Y_'5樐Diq騚詴YkB?^$t鴽駮 级 %望埏偹-├L嘹L+=0G訵笫Xk佢N 锂z@Nc儖,@輚溿軈28 6.束慍無R些毳弮碲哑薋=,2嵵豭猆7翞n(摓帑鬡鬮鷛Vf霓5鸳譸搻泽鮊_晽噣.$蠽忧蚶蝠Z螾嗊"6鎥I駄*爌卝徐?P闣/罥掊6]LY迎lh荎 瘧U\S ?绍,{鬤t21樉饳[否_瀎,"腀:P滰权,m N6慩嚪s圔鮜輍柘]4製 F阜1鯿麪4Tq6b>xS駷J 吐kGh嗡J褈;珟f 襵9飕s没鑠l弽葦3箹MLi]蒷"F绌鱀尫i#醌\9)!A*&~8lt P齩 ,k.h唘U $瀺x$ G0朳扣蚮qh[mj4蛐歴呱(aJ鍼夒夾喛9謁X)12堧Z噘刦E o!"hMD猜DuA沗}?訩xpD/0s斯圙 坁%蛢釦彐邮屷饴筈F^-#v覀BE 营鑀绂:<挲drqX卡D軀J诎 kt彴i96à&=khO甕q=爛J嬍笇癜w刖谐Xl=(n *H *-p骔濳5m寈繅H歫A1呰謕袞篍擱0蚋z繱數"!报k竌9馺-V[F佇鮏Z.s +_S増[圽R(萾*^RTS姻"塙767i +m玊崲!嬨篊鏵飺o晉矻JKTt d煏:幹嵽韈" 3=麪-=鼭谅苁书魎玦違趝'Mi夣M 蓉8耚黩盀<鲬b喲歾毢矘lEN"? IDGc|#U{ek橹=jhe瀓u妸b32/洙黩;k髖8咰PWg菼&鱆圉≒侤楳.鉼ō0溗VLi=扸詭哮M赈esⅵA]霨迅+姵閦E2U94P咕40甮%'#{]C'彟氦鈮HN萅 叼帺4d栝|P薱fT蘬1G丌R 4鈧 + '!╡4噅vR.矂齋L|窄鍛iI啝`崗c振U*暟W> +,妏f麟v曅髉1K昗18 +驦%進 #根"H鈈#0} +bB3((鰧/d鼊 韋-}騛+躍e +汧餽辻肉94-4謲怪c菐_lVRN +X@60QS1F炉嚻+k8餻;8 洚|CcC雽讠B(,,T燰!昇y d=G巰讠VE蓑 y瘙仨aP茸L飙)Z9S5繕g紷>⿸1󥽵鞝i〝C/#屇兯A瘜gW飮f講U㎜v9(𗍧@N戒,┍蝹L%鑔鐎譔P擮ny腀蔥萷 轥嵹蘝瘄塉%孌忼牟场t孉9 M:,╃]瀈磆F d蓟~维頙踆rS吱裏*QVX>^U鉬2'#7鶗帯┈<癿鮌A頀銚V筞涬侵(T昺輸}鶜z&GD傂磣b? 0Ew獀W蓐碫夃&萡] +h芍>C辬*S ,X豽3Wf +{9烇計!G7葆靀僋>C%J;碍j1$#闋揧,聐農稕慼榹慍侸撑塦"貆梘`7祶7佶&曬殂P釴(g0Cu5<翎}5#S,|玛琄峜e>C门+h<伯'遖侽鶀A +鋛o僐 坄 c舯 &B季w2S鑽捁z3盥01猝P谺!c +n!绱F4(┈挡貨rp凱pX麁櫳エ轪f狲Yi55;q鲽u(洮饨xj舡9縉v(W6"nM-=%zX愃l+z缴$ Vj峯qプ餗p.f醍7%S{D篽誥;8]"B1寣垲`衾扪QK貣収 Z0gJ~洼dtX汿M駥秦㎡#猈e茪R膨k窠~y9x妯"猖@U4檏wS⒅-"'3,;x:崿軄 +繸@ 俑3絾蘘7鴡l雼5_gM潏,x掁ゴ"醴n.鳬11峁!穮 瑗Q4j軯h=6飼鏺-熆0袙n剙銽Cl漐荲e樎"竬5$鬬>.袔矔氝5狯J4j6閳 bL-BnY82訶Sq/鉣絬qgzs #2m2虯鱬?-萳菺 翀S邹c愄湻B>$-衴+ 饠厱X?r$穑1憭N9詊ceW@J摉塰x撲av耙4_狷趿涪搧粇qrX郓=腾U﨟 -秪u蛶卯貾A蹊狒攁A妔l?^隴YS浠鄆d1掍r莕 匑7-輺RQEc 粥庌#[謭Q鎂`鲪1竩T4R s80@驘*>K熓彩б詧Z俦迆朅過Q1碽棦唰Q^=囲u鮆T攰泱q瞰儾瓔&鱶O颁:dTh鋨*|.J痖k fN泽§⑤m=s辳驢惙~袝W睾殃87&aY"獤-+4▼譏=姏s沘皬#觥2E噒萂 > 沽PJv吹茠軕/p}X&┒導*裳樽鄧2w"巤n䲣掼sD2(j#荋診3劎Ⅻ咾u韡 + bずD瑡*x\f爳; d&S +塕蝕.y^Q踆k$荹簀窸亗葪X#I S甸 +炔]4|NA夔 嶞cH\枚 渎 %鑡徆5紫眹ㄔ7苎?5晱 诼)简涔L丁蚃/鞖a絲VfG䝼< 扒謀溓轨,$"|k酧?纃贖踔樜1u逼9|h;'e9a1砄蜛s夰塃奓濬(墽齒9Y@ 銬?硞黿\D咝翨r)jXP喋 L/D/揟R趀{6鮑b>/r褜O彲%峕ul髠猍殠`fN鰺0,栞絤n66PL__(_淄厑6"牱铕="膶我5唸"誟Q鉎+4H-攍斪[胱厺讱擒弢$"? 聭8鷓WK-f詌飱U泙4(J辁钉槬沮P7腅2誐fg颚y樿繻嬻>籤轜D)岾Jn閷钚媂 +4庢S夊鐵%囨69 |Z操U禗兑渶_唯0'K笇N脠琠璡5jm0?韆h坓&:E湿撗燾!N%HX6Hc離瘲蔾竸 4GCoT光l珿dn 林襕!^"`鞈8Jn[峖1)9铿A_蛺盻泧黪b9$叽恡K[3g9i"Z7性 裇鶮胾迷/豫d瓮>X彙|臒N晘*艐;涰HjA焦f櫄[R |n痻8莔9o9`jj嬐仫F釭蛕n"1x邘鄁缲婯VC愀讷90汶X軕%袰鳓吤 +6zt漤魿"B?1絭U #櫍l譙<谏暫鼐姧僥鏤,慒;哕星x菄f蹮@焃P匡)ㄝ6愯亽曟柟'2Ne斂Z'矕甩簳罦础Ny}科ǐ檮劵耍臏)覝田V皶鞡0儮-鍼`h暅样1zEP悙=7n鹀E~h碩买>#1.?FF蹣襀A欑立h'鑾*|@翛9Z83睪婀)'Z@8O箮礤伆凞珡}*鎔氟糰c噳 瓓` ]択7-x 襔03 诡鴟w-胫3_$珧; a瓢0鄺桕処捝Y"喠w鰯鱝p7zTx倩~69錛4 +=気承鴧,冑Y倡q﨩嶰#4昖5峼姄$m#鷰8/摴[胳阒罝&<{ <滆┏)l*u蟛頄6eW風[zd陠-d聾F刧贪R拜 囙-/扚0兴$'偀i2稌妸9m[殾]佴諓翬q7?仔斸嫧/,us-嬎8T薣 马'珀坍u彼{阶H輦3a魽]I纤皹.篅闲奚盇逷zr~FH>"薹 \l胻巹"賂UJA玘kU3"B蛐隑"鈶 䴓背'Hシ箠:`$F EX 枃^謂& -记粕JwKc4(9ba劷测&鷦a溏躟鵋@4#E疰 閮翋qTX樜磲Pia詡)朖笓礉絸|蘏q昐 旖所噦u榝懑vで9現腋"苶^1錡佡F朷y +M 9銓醅W齆ρ.2Kf劋噰思鐖鸘蚟G焖W 卽1葷]姦俿m;獹$bxr昪Vf,9!e,3釄フ箎?  瞑8暯!锚瑝 ,v 冋舛Mia洅笪.+Lx勄w馱艓! 伖J酃迊l 0kg登懧 M鶾o﹩3> @%T妈v)2疏@}婶篶偒4B嬿g鲍槝坺孏"\ |%魔0("2W駆g3鼬6n@俞稽%櫏,  +熈F8+候串護9-%︷d F蟆2诙瞗冁z4砼D礙i慺u"馂*圖\*娎綁繤鎞凱#笰+n嘏杴℉l夕:r実A﹫1y邩#,犺6rM焅C#晹+ T﹁u!r奖vraL&卥2$L#pГ慘缸F蟖3@籺 湿5m戬瑣0*8男颧仜(趘斒浑S 踟谣h啜"沜}繎p!>$B睫C阽讗湹瓨-贫+絻沚Y嶫zTk囬铒訮~s豁乛扲髅鬮WB鞭! 莰T% +-趏楄'橂,#>卷7bkU酘唒繎跚( +,97颅c 嵃51)]x謯婪厛祐{Gg樤g輵 睚動zx*震&9Ho/#魗浱3~兪<v傐z)嘬酁u{:k$6礰L岭遥醧I 郎鳃緉莮)z0燠SZ睑罇凟捑昈倡歮氇/G夢鸯9慢0藏糑澦f雲6綀鴘峈賖5箠z缼;!}n1`鈘.铁柱0s9熜 +@E曧_``B&!*稴LQ 77z0繟違]Iz銇cZa邪#坾D锠 ~*塇奟.9q僅?=蒗 k骮喕扮d熩%p萨駏k )E癰艰|5YㄔUyDx炃悆V5N("c舜t#婵Y愢Lo鈙 攬 倗猩&襌.}~0乞1IX陰jF褲蔪蔖愶@'ueP>-袰P]uQ;萅,C婊鉞o毖曗@RnN +噐懌 3Pn杁-膩峄單捱9成郃$窴=C+YEM#$ 8┄M':菃b涆僪眝N+嘪濢|t偀v楖>n賥[铅刋` =?@j~冯筘-pKu[屭~ %%刟儷濩掷鲕Si闵悀硑熉腊 丗v壻鈎 + 斄BJH7U黹<2嵔∏哯顭秀♂/鞠0Bd/dエ81蜍Z援"腼煛L煛$崕泂槯B乵錜&j/t|+隫6踧酹x`zP拥?胔%*倩粊磍5戓C涟 U旍譫z67+U敃谈D╙樝6p,閝翹8檃A轆墷却A文闓鯇un,:(h耢b}馨/鹎滍辂k躋譨]嶣+姠1Qx庰V陡ゆ9 +願u〖洗 菶湅n)莅s敔 籟Vg鎹盌Q閏樌-p窅掂j*E 腶秴@7c轀鋯牭 :Jh[僥3s 躡蛻e颛堒聸 工1a,I厖 =eT 3吢0蒳@靛xιwPフ孺溋熎'4T銡@楜p厈鑹鎲軐N歉揉欱繦 ざ鼺kl庫x䲠- +j杫骄;@虤怾擭7н壮+⌒垅裀庲`.)d'c閟c晅蘷/礉 /呱5)粒丬揑6=y庺"#F襝y口仿饥溺 脊jb澨鬑b喟T + +$繡%辩鎋)^" +屓B-浭严╚殲虦摺>}1pH雴<饂専摍_o潑3=E<Z矆[ M>頷蛡VHb=,zq H9G\瞀G聕P17;-k彳7N%蠑;<枢蹍洺挨塽!_8}洿;lDQ!J"P挆陥珌q愅\"'d.2嚱侂晶s ++钖mW ;#萻諻 玩i肏"%⒋桞0袥 +园⒇B80禾&圴磖lI +鐂膥岸%允4陭v"kx;猢"*\5{c&顈瘡Z8'拉#鋓僸逼.Gll5阴婉 篟E3tzU袝慘樟D』咫P垧璼um鑿!殙s 棺-D犦 厔苯胡97x0Pe嫁┘匮*O6适O姐H.n翞蚱r}垈訳腼帉c媓瘤c3(>JHE49>茦|k5璃馥& +洪癃p颐駸灁lP=幵嚜葩枌 画圂P腭&.糰邍+l櫩 b>蔇瘸C^蟀秚k 鄨|G8 韑濸:缶鷎淮牭翧I鍋V$姧栓礔8鮟鍉:緼瞑盌;*#h賡木f-駻$%$?铷l>$e煭=脶蒪櫏n霬5M秴撉e aS($輲鯷-mk^+ 躝Ev佮])B-_lS枝&ζV偊S拊tR篪6癲墋0 +%谹揶T阕,苪鬹1d}没Cxo搙饮19? 0"Px鬹+榦l╣l`土@n8觐侦&荘筬}鳿I0\}=jAn袙 碟 )宇o聳弐枹kP柚:蕓T迋5 +珸;8@媚n翋懕嚨'Le滍}&琝仍堍M/\/`1爫夽om喵5婅窬F興調PI乥泤S#゜氜*得U#=拖HA3 H/ 粮h-=鐺k獼鄨腴亯﹩$㈢紖6岚夸q)蝙5錠譐≤攧uv琁 K-*鹴噐a鰺{4邚k|唊愂俺n2~焞橔LUE鱁72砶贲+s``F璺8慸判~森=o豩掉b玣瑸5d7A礰J?鸢跉儑}樅R勅[t<歑H桵繂x毑准d隢闞燢蒾輕h]ù锏;ǎJj錏 鸕 歽 +=R倳驛剓'LP靷Ic筣9襰; 练8毉駄羕#}f蝭捉畭S-p>th壉lmY浶鈺`y寸瓏恔毗u徸`若枎=6岾wX粚媳諡Nr篦 %O5v悂MA猋B婩陸脘DB箚%q;[uf篡;蜸米:AN譱,Uk儶.-64U虵緁^e{t髯糰;2茅禔頽@魫郕璋\籧袾q;啧簛wW煱"D$嫁狅*吡kr鯑覱踤M忬->包=翲6墁鹆}|屴F鑗夸[矻箚廅涻暧墠餡!3J?廮啈OA刌邇LGmx7诩齛V徦  q)t鎻uW阕m萏╗脎筕榹市GI複6瓍k;lU#+#z焯 !荜簚憊锆呧楣}镪!k *!9h熂"鄖!kvn極e樉甋踳淿勠ie4楠禜Yw栜遾~n覤h鞼襮o={蕿j潨拍笆CE4 愁醯麐 :5 囩阒m乀MasW幀膰0n窞%n覹% `'格鐖O镑3鯥PQP"傫GX郛厡5鶚Z隘噟-0跪鳼縤h|B压aヽ囃涯u谲WFL汐篠:妊x ? az`|腜椧7m益c櫠8HrV6 H4歫H蔚鐎爰)氅拴麢Z`篇褳s岍溶仺W 籚暱%0 莔踒T"靝v>6!闁;鈋_佰C5瞙I懌u"酐;閡1%MQGⅳATl薇憋帲A(愔寑獵Z ^饠S鋀)鬺鰬@大:03V2 峙*)躰譆瘲觃M!鴬疋穢耋x豋鳲凪繽 +銌 ^翦佩⒓ +Z`瀐セ&0啀鞍QR賈相;6T<t7q匨`OF >F霮E晽05逑|苎I〩a礊?4kk;kC腇#雿砀=嵄皹'厮0b%5嬛庈:Ue煻鎅圜喗"癹$"粓=Ba羧Y嚉 -藯F冥臘甜樆苷宫彡む)8儢臭=Fa壝鼿鋫9湠岲}念衭Z>糖 ;丼 冃э穢*倆2辢@羣㈤s臄X3/擖Ni? S輥B<+:佰R V襓ALrg赹s%栎K$加t瑔ij獦Q錨;廩c#罂Q`9!扊].昕k崍q 1n苌啌瑱fo笽饐#\a'瀪敠V巸G@.nE +姱3I{涬苝=P蹜j$+狻}E運酱p忮袕;QGDL孲I姠嗮瘮(乜,Sl笧锭2u %+ 妲J媉-FI鰑w=y}䎬坽 R瀤菇u;逶琝qD$”颶( 柞樱靖扱瓻.駲SR:氱" 侼6L癎(牳B.蕩萒戫8侵抬哕!H稵妹鹈nz蘫QTh孟~鸯牨^D紴?啯猰遬=Q雈% >5z粼mk +萳蛃╆/E忙\/= 玼B=输k灌攤&箌!3簫hF1M,!-6C皭N胿--恖i#藛桢@跗墸屼繺1 3)9to場柩c@Б|誑龤A|-\槥照薩餫T华焀m Ky}氐乴碋3F褙绪唞m獑桹縲橇潞梸≠R[iG貒}5]眮叺v G鴬(鸆諏1舆0k1猩哜埭'^ hE幭爖獮 y趜燉蘳?%埰'傲s姼S\p紸/粱 E*#e峊4a例&Q-樍к谖哵K龁I %睰易!綩]Gf蕏Ob儾錵兤煜~.]D`$蚎澢x处Grd奖诣9 +x扅溭灢j晑]<妚)b;犡+靵祣鎻)g.蹺 ゴw煼0霣k8+ +俑w菳褯6~Ztm +$餻=戃趗XZ謾暓迬}#熙"b╮訾9猉2 敀I@鈠 t殚蔤 HF9繟荮(蕧UW"绤濲+uM#P昄j+騔蔒3%犾乻>牛H榰8d骰$;x 蚚Z衰臅増滫P錙簘0﨩 +謊E暊`^3D孕詢41=c<捳S0 :e橑45Y#匛樁D越NwdY] H戧"&(乺戎Z[9F +圯鱶尠 ~廩 hp灯筮罦0m恋+FT洗YVV@\[BF黴L书褛B迖央8&隓Xg荭{頓㳠蠾Y褶*蓞r战嬋fq燡K0eP&QV剦薐R鈢丆L闌◆Ak@歝台p}`>蚹c|灻j N#p3勦┛藟DaEJ砝\(麪87#b1b運ō屓5;)櫸怄;嚕6b蝛@yA箘欥M~=讈婺Zz(d儙3鴜I+铼<)痥z@g(<蓟/揻艼,媊詉W勄儭x@D坆:諂7Ⅱ S荀瑄跽$棠.鈱T〡F.纓鞒J]抺樥`)鐅46!蓖菓瑦匐A䦛e7 z8粏贾蕩N鴲dZ:梘啩坿>銪;卖\&h3= =缿_D0札0蹳牕0謈d鄓烍坰>噇鮅鵥錬t裯S仇c纎.皵= g 烐爢y D箄u|*!秩 +﹂G2 翤輴潟擰捎r春 e阽U8*溿鳲Q謼Q廠闆! +>熁d8-FJ咊 0u鈤喏 %劚$罁紑K1)駋_ZfFf+og#B價涧C舼K稤 pn=闚5汗粛P 豎.4檱b +3X"l~圲&"⺷焙37QM膶.蠌u&y惗/>鮁閤JZIM痏1l=5[,酦P嶅昏妼1阸a7箑 +c>o晐濉鞶穩v婏+ц~袻曌攨胼蝼承滤G1=!Ddx吆V嘼t浞鹲腸┬縣/鰞B 7寖Th棓湻腒吳G` 仱顢D0v1x(璤(甀闋蛜Fx悲1 +嘼燞餻=P拼饝QFⅡ9'5. &掙9L跷VC綋k4奒滙摑[L6骤瓤|<,觴趫 MJ(z觹+ 灓8x狓2nP昶f柑.$Y]鐖祼\63% 跟q1啔洼00 9r>y)d,陊pi\FQz廟8;C祦撟鸂l c[佚写灶9$痂4 ]oN 裢j pHKq鞀 Y 腫栕(:鞵鶉(G初25僄"刷孃 +(に0X +=lbY鳋H宕倆柤E| +#泇躊1吓;:,["~ 鞃鮇榦喽~实:瘼Xk%()襫/| 媢鄞磦礘+`憪v9橶∪Ю6燀. :帶gL' #Z 鉋2#lN粧+%Cb c稏K. $E! ~.新铨4譇藰*(h胶QrH~麴A亜I{=C 8荷 厹)艕zF% B/厏W3尙扬C湪佷q儶(8賻_s聭c鹁塖翝 灥1玵黳FB$噄屽盫^yG wt鑃傓/z3澗闚pDv怙 瞫欷\+R A?嘏' : +謩我7蜸w萚O堗:<傓懊z5裋uU仴5^囯 釔H槽芎蚥蝾P$贴k含j逾4楞j%"R鬑鍌爍@霠40鐰羡@ ; !癰C倒~M懙凼坫6`3k7) ;栞躁Q}.-Ir猼+-娡4$A!詊長F0"9譤GP礴%赓F榯逦C.娕iDN匎 3$= d衾拥>u苾]裪)R2GUs兯u靇5(鼄L&"裵h@aOA畬n-瘋瘧疗T衵&韀忱g畨暘ZS盇V]溑娎,h颉amX#姒馻$aQ鎤庱b"N﹠=,z铼.3c1=.蓧鈿雹_嵌#婔R鸀wL桀扌腸偠b>$须焨將栒:諞23ⅸ+"粈溊帗塄緧:(,妤㎡槡Fmナ>尙 +Hm~_N禐恣碐骥Z拕^?G熿:F讵c启ac$芼`)岑5Wb腾徳遘+;)=擹閗it\暞焄;1輣0, 2 cnヌs偡k~-<靶迸P!葽& /[hQ戉釖+5觩z﹠薙鰄7a-t-雤t奞懆抳毬FkGH㈩琘+窢{.Sv寡7e[瘲q遟B螻5 ?儅℅埨窭嗹Z覒錖9仺杷|牋#謕J)莲9|*酻S訅!a-呠转熔魧窿鄪%这8鈟蒚枵)穯3呱3Dt捆㤘垏V;氇S遽阞墎筍T瘷騏gIJ9K,螼涝 {枯[乥,\5a2P[s +帽F{| !#D灐 +:-7姤鞪汹3:[0r峐 i謫c瓈=N纂 ;笈訝Z%m_E搾u刑狖3;B訛掍珮佽az*$脵鈎搔>鷎尋y{c攼恬執QU茮5涜院"谮J鯌遮if縁2H択C.vw5wz拙@;Z軒檏PJ芒|,VV譎r謳倞従@嶖Q徊n(V岚勈:K荾!HX历%Y%禒 MU +#3>昦As墖i@ 5卢 !謏a p鸑 俲\V154樳W憪`愶j尽[#*= 5eWq敖<Z矠杘JD摟'犝-f腃糯忁瘊醌i狖唜:H叾簟HI觟i}?疈&$鸴莻*蘶珋E[観CZ/-嚋謮堼炧颰STh鸘@RM=肱 箥宂C(顐 +絖ul鄃h質*撜镙8I濶?y璢鑾类阿ga*#羣<$铞?洖煼傖8筠钖3磂苄[,紳砖>棶扶ぜS帓飃/简頾彿j驝輜蒗u癫3陵<黪诗謗Dz>T铸霊J2嫥5Xz%C饱{9檄^5e.鈿纶B礘eR愢琾F^ + Q佨pd笇z彵%屫l<}2Fh< 裕ю7謝"赗z\8S訶皺琮匊>,Nwx*4膋< 9)鸧D钃]K4韀m敉c!湻銰萬{Tg-猤h☉{e)5譿 +EeA彏。&-猁>8笅揕懖绢$C楢锆t嬛"败DxN跤'!r痂tD咤P +稳r詓 曹箈瑄遂饌L怔?U蚁蘽JR%)K=棢連*村怲崣皛&鱅hP$]}豟u鋲勚Kt4悢-T≤;鎂⑨︾M;棢y厏 +#8-娴#N嗉WI5嘨◤嬻/ 3A淝Xw(j(公 妙. τ D>~V萬B19饭Cu+"睟k轲毩g害齜'9w徼IJ +醰璢z霴誤宱嚙呑駖摢呻裛kP尦l璽睝qS恅C笐@鋹78?r旾靻鞃謃 <x龁AD钁<泱烨%腮锨$侒嗣?壙髸0揾8Cz $拔"蒾gE鱪幚睉)P暮潃衪桒$軌0格\忩鑖}f莯裡铜d8nu,!醂BS贇◆甚 g6狀頿t /i#駀0夭裱 (鳴鎝  鯆臫y旲毖( +植+灿礐杹1t%巙雪葡歓$L湲玃CSOz!;楞挃X齁4pI謘 ;r隋嘆襠粔蔚9ЁFY "T玈亪xO潦: +峦-(h鐜t赤弸稪q籨b;轕臵C煥7耨X镞甊僪蛄奙官衇傄;O m牞耒`筨皹-襛憐k>p'蟮k睚:寔洶4愚训G6蹽爌 dН~}wZ+琽茇$оiQ 1mNS&孭xt"О∷}轂些D藞闔9瑖-é拓+ 脠!_AD5PTvS阉K酜J_"铙鶗鬡zkk  +2[羲"Bh`(,mxh逫幆^E车w 銞|劃50-喠o ,忻繡hIf墸pLJA凞Xf鐳~?櫾Mx┠3莣愥鑛_0YO +擛簾z`祝欕竚殥*,啟g郑B翑痩9v`,蟕MQ觘柅庼,=鱾Y `atPC篫e攵uY3抳ㄍ呎鷧v#)#セсW5姃>垈k"敛覱棄猯O醿鯀 ;IcC揃娍蛢%V0;嶁&觛 魧,U1_kGx$霠]り毚銴TnPy猫z絘) ++ow5cSC&c+聁藉=J#9{0S处q9eq域v@糁橣┧W%菍C厌蜣U鯖9,K ZkF宒陰9<.阻 -z|倲蚷(寚/5 殦烊檅*肳朅8dc蓔yc +-0瞩d鵙洟栶Ya8糠啅抁钹獡ρ6a袶b鈨0Uu棈 浔\倛珷9糵顸D+氇G 澓F"<`%鯬7[7) +30疓 .*0笝T_傝?濡>3JJ&5C漤4~7C锑+b%e郹y 慼8楫N媅la\60,61X裋L3XbP鲟.z贖T1荱怯|!MsT@FQTBゑ氩iCw憥B輹皮檱!-NΡ凟 榑宅u屚媝鷷6 -E簴籑H*闋P徖ZL倥穼N +命!w曭8CKK=..㈩郳i:_3o-〨p杽讖蔄鐳廋vj僳.沢淚箰8紵稽嫒 +h$1峛iZ亨cq內局辥:=(硭m|R龖mu Dd庽b猋C5i乴lE跞郎鮮朿l>c鋌炼'B!2袞佲冹>R簳25N瞿rM54%:O茢:饿~W亓&N喲恋-Y|<羔e3娃н<澣3~ +C葩G笉膎 +x怄奺2Z#t軜扴K啱{=jg疼%.帓6奝u厂Obⅰj #骩 煓^9_,a{碇驑僘 韟屜絥ЕCf洗有`鞉鬷j濺蟱~" crZ昤鋁 商豻剸僲S:邋尡D-杨郑蝐:徫Ap将φe3L栟M3J8r+媻訊鏤儭狢誹J牕T9%)\髦' a傺w&噲bn酎秷!慒w顀ㄢ$ +棤拧6?朙) +爸R糋詳莴2#惻crs攘1*嶐l墼矐圚Bf反5 fqh 傱8@萕渺悦C"MZ5ⅸU⑥W牡晇謸楣1"炍变`糔9 4惏9D坻 .德 捶繦璗肼2 旆 鳣箓kE%-9R欳lr\J魐`V0 曹Y矹 V保3怹X枧瀚O-陮赖潰陬C窄瑝祍婥瓬&K;繽fy:,噲P>&vsp礌栛]kI仐,Be(p %拭M嬺犣芒:2鄚睺Me0$0癀xp 葼佣霝睹&IRS年-_薊uy9孱)\5B鋬+浙P偫%#uky淳%[骴顶滰嘮c4諱騋畡M豴a|鏔n.斷湇N8 !奥>另D殟舓腙P"(闁⑹~脡3cL薙Ac鈦+i杪篵D触IP?/著槩 B謕櫜2榫 俛Q抍)XE\s;薟|GJ8搫窃?}]藒!0寒璕童佱軅絢zku僪噩骷+劃毒ro~Q|郒$<鹂薢S跜] 簼:娰/~逧',糦8gE梨5"<码﹡>WzA鄮 )-狵B.9縷爟 猏8G1p$巚郶褄(Cj-i藪挋*0H%>| U叇b .釳L 9p:厥ㄊc币庇罻鈙龠 .r<鄄殼蟐gf磠?赌竊 W=╤w珠3Z^ +6{妩8'K**Y[cZ优菐ㄘ&閷m蛍_臉v>/蘹晹褳唹Cbl 罭営bGr鹽:C鎨3fsp傋舐?@i皕P璥叅餢%(戝Z"(蘿 皥\內暦踌畒缮銌觶?瑖孭TEV奩陿[-骨o 㖞w覛鎅泛,齺uv,趞0_ -fLM猀潐鮰艈'dW瓈; SI啀 +锶kuǒ,@V斎! +!["Sd]6芜踞 +X柶閦ě*骃吖肮皏.@畎R掳胻v雘X幻:撗:箨岻k,K战靀:H繄Kb'&mK瓀!垄=孈焎騎鐢曙但萖曘C挷5M繂褢礖>﹫Z溛Q疏N襫嘈\t'&N{*洊6"ョe词 /pMt$9+s /坺摒侪雐O褟L(椒筟W>正鞧QN??犼#幃3O驘譔2~小勸e!鴵瑼噗+蔭雕廞襶擅盪锭[沺)磊校*&X恩襉c旵if++B驘 +颒拉钙疠7s:5>?穬諣 s ?褰欟K-DAr萌C冇*実嵆3@!]G.容呍`葀-#阉狋| %Y5%5: ,疜懛8鷵Ba誧叓Z篭酖z吞h9[<" +匱t嫥k瘐2_#>d牭 !+Cl靷e)vd]豌%Mt}稍cY!偾噷狌4SU墝)$>簽&W +h持牕/*nζqzNiJCS皵P鹼H%)0HC3⑵袒3醢CE玖)彊*3f勧N螧2h獟牬~媋榋鯼恪娍犿倓煥肭夥W檉" +鬜tr(w i.豌\b:璦4V骼@-糇 So +徺赿>鱀Dg&W韶Y |莙粊1" с7pa衮)煸5-峿懵/"槨鴮~99庇OV1ňf]迭桡7 晕%塝 w氧*6鞜@) l銬焔钧Z +Y %m勊隬*沿璆棷#&$w*蘓鵮k誁穲@Y現办 卵PT凕\螺t+d-≮|竖 +;>憱龡.-玉V$=哶蔎cT~=亳赑钷`fZ>满+癚@六Z5薭=l獉Ь豍7R$|绡椺cX?鳉纍e&}FF WQ>Xw乒r7dY祂DD7査1cRz褺N豪iG幭顭房|.熉N:b紜8乞&颙_Te?u桋笵W倵殶 焈;k缩嬋 i舶@2槭~rJW嗘寮p 啳EaG.似g薛9$Ⅲ2Ⅵ娖2X沓!*9攨7чG鞄c拃z孌3蒢5g诊鉻"眑cP4鲉O椎謨M轢r樜/毒N夁5柇*3&j榚o糀潈#C庁暏袜e\L/w莫歇飻Q柕哊 )]質"湻蒫戥:(霵*p93狄 X蚡x`_!|`eR9*q=剶嗓 熓葉*1遒Z响咍{m浡#@V愵蕰 &朼P祹t+媂乀66鬞媆=┢殥váy〧贔薍g9'驟nU崰 +僄]咜^4>Uu_澹H佋B?!Y倰C)d+,ブ麏's*銶驲Z楁LM鬙 艡 +?鮺|繗pXM@|Oh厘,璡)奚 z0U% aM"v膵垄7晙7i篣Ia訣D9(A哞 0繤*xR栙z!銛1 +)f桭b岜鱽B :葙83k卷攣q磣\*鋑 l悳画D亁意#1 # +k蒍=叡獟黴朏咓!<磒6}帒8 Xz踋Fm羳桪殏k珵呂硢_E蜠8(4貸(AHDc淚馳]+?bG宾Z鲄iA怷僨P*i承○tY弑dM费 +嵉hf!; 秫.!闡旵&族攴其V/妼K8嗉J浚]v紱b殍3臨6p +H+wPw}~b>6P娠7- +yB 籿挤 g﹥'qI裃I痙d鬌乕r陮瓩鯅/駴玙6yS蔄扈Y1X脫昃渥V豣:嬘}%闭aQ闸Pd褢(滿x鼌鮀6St趖淌UQ"D値R%#⑴V06B飴A貰悚-揮la}*>A膽o"w瞻.k3Lw$妉Eセ夎襦カ鰦䦅-瑡挐Hx﨟/GX訹琢8瓣l賥Gq膧飖G艡隢戰9b%噗9熵!喬}o坰C%逗A9Jw勝檢鰨q>靟k{u[>饎弄F=P/^xo a喑枭岎糞JYF媑泆tl4B0RK蹌n刅C铂QT緪kPB~@ i烨& 賸数. 峺馘lJ 焷K駏}淂0$+岣偞♂獤悹辶蹊T缧j堰晋粳羡垭1 嗓PЖW綆:45v戼S'|f题q漥;虩弲X,闸-.Q囪- 9穪锫 +h0矆740o璆J鐕艜*卄獝2 蒰N(8攗肝lR傮mmJ>$.珊p潏hi躹x;:餵IAZB晅毦褚崻qDw +盚 o?;K﹝I幀蹙0@b M#7澷秇蒗O % +蛔欅叶}9焌F舅 +2d骝)堵莝e?B篜e|t-X-4F(O屮殫齄4z蝵&攜≡參7蘼f峜冄碑@b嫾 d'9G(穑7Z韶櫾$@幮圷讒;,g璒鏍+D灟!壍 &餜gw]gP5玴;K飦-瘜[}衢%R痝 k=皧 4uou6{謫r泫*1湀%飵_k泙@R菙Ke堄S鏉 褆_C鼤>釛 嬩 +慴-昒/佢\飑惨R褛衱n`猻U*N紟<Ι俙v+赨P嘆G3:r蝮0bS@/Z/(Q,2HA蕔n糨>P燲仯@)=Q騐.挡 +╥脇>汆9荻S扶c藴W鋾d價坠橆3Γ 餥N櫎Ay 蹉 髠. q漽5x豴芷磩肰$n!<!絼艙B喱峗DM榰?盚4J钡鈶>;fL%mH斍鵸兦p酤t6%A`gPAZyw盃,G遼"w,`4狵珣N5檄矡x琧#凵n燾徵B0占Vb柝KVCz gg 騌新唜r責囥裚%^ 猤1Z<%鉪祺他鈸 q痠觨詴A稈瀌孏鐸 +隿PR椕辖US佉耇犐1=z[oe +夝7南腗牸.{I~7踔鹲柕]弤-化Md<兒导雍鎉4O埄5?o鈒习狓疴芓FD~!\荚釿;痱ы滠乨AD鱙u  +9k=?Y %誰凜M暰3弨2O獠 '/秵圭踷膢螯ォ6,&鰄TBnA融:ajちL&5Ug凾| {錮#抛婇;炨議#嗶慁i艥曄ゼ髖責T犮{o僙y 誨忍L屍恨8)涶渑甑\o踲駃+匼脯=O X韤&阅*>"茒鴦袙&陻IX#I 2e∨A;Й┢9噃Y冁34A壧痐C玓胐霧躳払&E!蟵娛皶&BU冽蘃;T阿>0肠3Q"敒躑Um 鑠B.`屡4G*V斋耎x2%菇{Cf鷡B钷鹻l奵匔壵&铁鷵揂|景8笩3M藩罘懂$ z5iп蝁俾 +0蹡H + 3燂G锕"r吤 %|g[t d%q7頳@Ub絪*棼! 朾"1H~ I妼S乃侟9瑑嬋蝽+~s)ox甭A綦;幄k4撀hF~N旋値槭Z+))bㄌ覨G:z琜74r獺塭2G冦#塃sa93k騵舲l譝 fM揌JQ';Y^噂9羟 v- 咦藧¢l-殱J~/镏鷁%9櫆'寬觏.Q舀tE睘叼:鱺;bDD懫 34楠宮粛寜邦,Q ^>娹掦2`!獌x峕(趿< 裲閩pe走Q沲bb"q=t攂塿hD橧{靚^颟(添2夢%j∫}%凰s廿綁%i负与"91 +V飇殹 '箛5:翽-pGe丸猷幬餢投D x9C/晥鳋fUA-fv糵2\C秷 @#0鐀勊ˋw 眠 +b忤亣曢瑞卌皟泝~刂,諢%秕栁矡駏旴 JYZ幍W則/澒捦8i徳WP獃軎髲赺hc,<锸璨〥伿kS:)f煤u阡尣M`w昧褈s穓滉 畽邽饌4 ! a:嚛)B緾:@* .巐嶆I処t>廓7蹲0w膢HIh毡枱颦部*:屰sU鬲Rj霫'hN韽u"i镊瓝㏑>×厹7/3QSD蹔q-坕黔)軅 +z猧tlo閕絎qA4} 堢5蜡圴倈峞b:z磖Np%7E耭4k欗 +k149`w瓕圭p滝滸#髷鈀谛慏傷譬痨 溡9+些擋}S帬:B神S!"毗泿 %q辮 F鹞怑蜚E蜞RHx已:玷+D70,6h殤7=@ 0B觟}FmbHN裪*.;OVj6拤昧}4D娤7:簂請B耈/!"笟忸h-泝X黃DI懹qr0鋝1褁a&(3:t郟l0U7氿姠 嶹"團魣x肝b斐睼*b>悫昤瘳(L[功Ti/>5髛G靕縮抚秣#䲠韲d0@=l急臆gZ鉒麞冇 -閧87鍃R邰3胎?訢? u悌hG 5A篹罺un嗃r羏鎲獉wHQ跍氎[|kae褵藳箙60J剳7 SO{ +莰"9 縌⿰櫞嚹5N9^堘V髛=}翻榍L!= 后惔)v擺 + BP瞡c6勱}e邂昊8痸喜飞#O畀竺N挪拕 晧hH乷E!PD殛岚p蘷痷w剕槗o蟬迷$Gd,Rv詀 #閯札!%0:儙飆垭あ咞[QT4聏柉H轋A沴鏲膥蝝偵挋O;縉^4沬ebE8摂欝粬靽z睮馷2 z7@罚琸釭脨g鵖纁葱z]攂烑兒崲>x 哉 e篧猠_x 򴟶?L孑0啋,Vy}Cy膲5U馆+旼09扸圖.&!丏鯃SDQ9%q:RW-Ng*@忩bRc!鏐 潁r桒 +鼽l涀 莥喪J竴儫7尨{#JO叾'%qWE梋鳕*kz;vW\盪孋K庁諺縶>`9k<)r锽_"o942]st罒儾G躌豷d掘Z钬蜝號g?Q!Ц% 彞\:0忔eh藥LV9To阍駻\E.G廿鄭4_('A埈o腩?O闏矩O"4罈)騫 +H4\^D\\?傈1 禕W郰趷Y蹈?仹醳xZE態紐+K~a7^%)A鑌F\y戶痁/nYF幄4S{臷#(bI8Rx枸俁隯/侞馶蕱陬R|衴n霞uI@H鬈G`& +o綔G萙嘆#8萉qR>頣<廅*y^叧_頒} 3 瀿蜙DKyc*璝蛾xAFl^枑=G熠膶;BNOa蠦劼4ォ:NkCГ脱+w光譻+ Y勫姑V舥Fg杒纽a喦原zR騋<靎兰话溏(QQ<Wz[+z隱I眿C+:犽鋾娞紊2I$<4飆燡訶レ17佷)╤+'苗hG撂4┢N熉痄1噯小"_ cI[hux般瞼:婀擓跣4吨w踆叻C锉晠pj殺抚X缇5颟!=9j,屛蚴尒愆R +Q彨5Z崕$恘r仸9蓂歛 I椵H8瓢PR1$叕uY鎂抁誾ΕM鱐殛銌 談将G#疕:诮A植0o躘3锧| 鯆4灢EQFSr譹aaH趕&擈茜庞騰U:o!愞訢 q舥愷齉赶蠌, +鲳榛<0阭燄価眈箭/撖犸鐰盂_鬟僳/椏均齱__涍}笳遼>潆揽愤}骺麖//鲭唼餩鉟s'漫龡宸遰堖~髧/弌:濄懑~W?玱~沷钧猃謏馇抉_均銦痏坜椷"鬢孢~刊鷹?熵鷆秉遅镖鑻箝閈~簛R琏骺炡?M籿锞\奉鬟龖;純盔鏌~齶sv卓,_w_镲鸄銉/埙啐j=?瑖/r7唿彽觲[晓埏6c圻_鹣骶~}鬏W邁篚[??撖l=慰!'馹{汓聆刊謌㑇唼铐幏^ 3蒎謭田/K⑩R'>脟欜暰x鯒^_顡隷烝Bˇ琓肸槣b諥 嵝趐'隵3覄瀌媊V抃o=lM9糘** 26{J( 娘a!+1摭穰CxP脑!砅弽蟢0 F)o镝,#v嫺髹玉追)v,?猼魬窘?87窰*硃-^?镧嬰6f6uBd,)膰斍饷c瓄掴牫{鏐>縉<>r墅$讓s粕凼:鈗N﹉q渚wN欟礤9遅L 渟 +tg疅都煜 九E鳊ic钢+m镝 &轧寂螪h=;讎篾爱&峚镇]呺沲击囈汊脋磬脧x>蓣纷]渞摄庄{黡芭>駖绖{ 狖侼-孁|鍌嬩蜃 B;*帑a)斔>鍖1茜k籢汒巆▄];VWo/O眢wg萏W}扇毦>/ロ嫌9锍L]+堗坜=|鞗琪&\j8閺+rd7藱馏rY鍢%@簊n舏杪cK)薍 IJ"藎>Le鈮竂Wx曾,鉭]~. 鷋"hv櫉K 詶鷝鷂Z~8T3,鍣DZ瞹0噟zt輗|莇Q+Q#v*Y>=搙]>櫢,I瓒\鬎蝣n駯1S氘)|[X;剩TaA<; 4/棸腆tbS^X)js(`+閨q銔>_絨[苋,Tˊ礉魉竣35婗栾廠屸簒)鲀$cΘⅴ3睫麹I尦\h0&¦,辋TI薘枖q蔛$蕝"E羪\ス?魄W`;繝x|矻硄箊紭<蜬$##*栁Ia暕番u綮琚YO2J醲ч._笼蘽县LS&r舂 &<闘珘懬!鎁鋿8bQ&2秕倞-胓饥詏F=L贘跚Q1H劲2Rh詞G继A鰇 C軻鴐/-(z'uh梹nZ噴$絮課S~'堧E=y/<犺M4|B顪耰a愆w涭駵56w#e噳q01(,ㄙ憓螪嶎滁惣?掗y谖4栻$鈸扙柯>曋緒撵廿篦Nkら鋏 +Y竌+邍SA軪馩伔7坳託J儢n4黏IL#a&F4Q(X!侱馍腸YIQ肜S硬Hピ+瓡w-"%限#{撃8#橯7=B 跮[歍]J剖DCB鶢卝^冤9 c"<\0豎9蹦5帓(椦/|淀R#xj烺]昳鑵襏CUj瀙憎6-拳vbIe閳[塇w蔤w顀君猱Q^{z;柦扤珶"訩辇瓼或T襐+$-'YaW哂魘拚垥xw┑>O慱樫鸰-@iDL#䲡$ +朋|F>痚 妟磦A蕉%=`禈駮¤R:$RJ*墴帶丗朳舅8N{馊粲褼;|25辘 +閽鸢j聵呀助赃_藨萩[鮻灟涷5K磳!昔僘VX8|%E虹罕D畐1 +#蔷抸nqw鎓z i菠0傊虨r列蹔f皛菰YXW悃琾d(蛇鷺O铰耆嬒瘐)/m&$E-&F{sy怆2衝2F0鷿g=飸D!蚤* +鎰D彺蕥欐莵&妔A欽GGD藲H 薨`攻,憨煖u 姄 鋻捠 ,焅 *n擠  膢鞮驟逬quz~l#鯯騉馳)屩_>J2Rn$応擴&/PX,i{r隥V'.X瑍槺2w哛蝚>r琍$錹<湯iD趮繌軽沃袓2剷&缣栭亰)e熡矰=OW劐t闓"g1奵 兽浫{芌%鍂}l,Qd滀J?梊耎蔺8Z鹐殠鑸撊磴54狻╖>V姏<弭漆W臄-sk& D忓+-ナ烡(]tQD b$噢#熽桭靌/癡t殒 ǘ=嶚徖棡yE魕*`x侨鈳\鞻娯薈鬌嘳﹌%壒浙嬻%h眝&引效<@汑Z吰糡b`璅輰巄mp簊jz諸&J甈A粴5靴;冭F1蔢lυpY);Yz P"縺裔鉒,苅>凳T蠁鶼錜'+!逷<啷@碂q$'牔#qTT lP祽#4坔, 圝谶1瞺)0鐒:嬰濆-詠黐悲殁汢qI&i眛孓1皛']鍛C 鞿!zp&礰$戭隨D_8雺M罝 1BΡ对鈛诠s(濰"剮>! 鬚B~"!N)pwO蟉Xwd礅%膧痢D╳L!_<-u輬.輗k8'寛"菽c"exd搯bHK"3匯倌@ 珋'E嗕狷+R牊)Y檠04=L荡8ALDS岬D 亯s淭啸 r\?蟪 +@1=;q# +贿拃 D嶹'jpU輜X軽aKA爪妑 +<栄;鏍錂(鏴#恡1U/kU* +9濓踊蜁2U习A)喊坑t$矯y'H鴕 Q^!"*峅#鳉P沑N盜;泩J吀寣}<噊鮕№彆K齆/(袡辱W螬3馮ほK3~8Q溢96+(瓮庸1t#N>7W,y[5'筺翨傢蔵f,慐灍飈睤" 0 j觘9団"攨: +0WA浪D%,<撔麜 DSj^(N-进WNK 5/澁q|歴⿵寍*,B鬚"z肄蝤Q6%垶瞮J爛蚌Q9騶森wN!噺t胒D#7掝FL楎巿P787f⒑ +Du? ?渪Lw2c崍"$h2揈8~窃4槛鑺BiT9S冕wL鳏Q垀<>洢Ln旪蔏3Y'):籨^忁('#2殁%阴0皞5聊wLgsW磌 +萮 臓*[ 瘸)咋bdV)'趑^GD!輨檆D%L 轵2=qYk鷫洧@t朡&翼>愯綥eく$惂婭e`抈.-fom9'Os.妝鸖苃鞆燢MD幂&檪^,PGぼ钍8q覴q 嬝咝棕-v櫲bAXc蕡雹=鱇v炿$ m劀隝k崞"2:谗⒏n@苬堣愹揳扙lU22砮邯gC +!:&∪鵸.蒅d垳x8蘹凘4槆W1%(/挋惛x薲=釮嶀G舔偉塇鮧:冤mi燪俖坛HB秔帚粃j炵{^╚'触$f.螦yui6bTx=穊$赆 c"]姟*N& A+暃dj}悸嘍瓺鐳TKH窢$Fq&滄<醧姢p?痫s {I#;c@=K麯齬(觛 缔敨顔鼥0俽扌饣鯙鈏>堣弪;咬偮灖帥*騛憍﹙LZ暲万D稥V蘻蚹曟薃t絅酓"唋g!瞂劶X&9垏}%"雈_F曱辔H)驁蘏魳qM閜)W_绽J:媷0嶴酲J5訏蘋D棄軰X ~旸猴HmF萶w1+B-tx刜vwD2M皤$Qx羉咴.IO4枏奬#%YErh骥Ek9ニ xj$(]錌)b歳t4sHC懭n腟S閖45MS罝10女P瀦V}D鮘濽 簱<夡B\鮮gU(T"篁䝼5 ,シX]_m82Q藋6┃眒骟I嗒a3?銖垾丏珻ns=B琷hh~[獠忙2*吖衛騔ZE忋泇FJ桗鈜*2逝@: +) 9嘾 KE督銶W2葭8紣皓躊:綵 裮剤濾n甽幁f鈏= <摞Hi"鷮a凥_喨=塧惢R惸X J醩讒殡貝/.\V4ツ|榄椖0媾I=h +!,"篬MO貪櫲7O-R蜟j撹11uc?僮' )敄⿻XM┙K)=|D杨_N馏x訦"__W+幗寭嵟"F另:^V悋T>疄峕&牵!楬逃#矊$猌G/ニVy豖類検7(櫶:4傠叕渂&хYL鸛ZO1{ 琶瘦s崠苆!ㄖ堌 曬K腖8迕 ,Lb6嘯:螱\(塣葐氾K洋wlT宀" T,#e櫽讦[R3^炟- 恠e橊 |-j9侤AZ舲◆噬fR浺k纁毌Lz}ì笑嘋m*E钁1蒪甡≦s$M髡C0Q尸Ou,YH#?峃栭態Q炂@魀%/pQo贄N-q +oY敟簂髑a<>仟坹S吴1/W<\晊S^6;c Rs #隶yO鎫 b}d]N菲I7%眗褤叙95坨#+ED乚a%:I蚚~:pp-c= #傫z戮>"eR脴2]M堂z2潄MsP抣猘掸 d酖i!!&z凘6"c(G霥蠏`揩rQ横軹洉Z徃桵 +h;摂鎿qZ藙弹J暊亙纆8肉Z?桖*入:菻bC9W躽盉虲1敡珴ZJ坦 eE0碞$*1NS#VsS}七&n⑾厱U'酅揚F赉D 熌P=宏(f!9UDT轙a蝎5=7狵!JX璜 N1!4酫亠J専呛b]瑷隴c胡,d.茺D\uR&演剋蜺蕿夯$|蕾 B藐eb7蘂坾6$拧S疭~ 蚝狹&株IRAJ匉釀!V L殘!(x戢)x5备5eK鞀;д腄2!#酮埉饩tgc斻$蔊`_収滆(PU岪D ]Yn1炍漄5P傝(Ku飵]樌jD!裡'V&娗<1账味熰跟(- 4嗍-SOe.$苢 +機L.3雕E絙U兦5q"+箜剨粘=杁聓珿坉n彺񭟜OWMg:{RL!睓霈敢壇+珜 V!}n聉宲B逅j觘暔堄{粕寯H4殠8_5啓h迫iXv蘴&ew閺p,/盅嘽G7.'韰2/Ktqh*=頹=W椼*pLqe笶*%*)2ヵ胍艕*3懙申9 +_戣歖憡菊_|憕〢2'"{s]殁+旃麱*蜠蕮!1% +nq樎[璩*t渏矆殴.O!Q╄渍]%b\!壐'{藅 Tq勍昭錌8悑򳶗L焓扂s臋婱E5U繦d婥*闙梒蛟B]鶒迩(d儊^什琐~Rv>抰?翀▂湂疯男宺m\唫[CDOx聥竐zsaO&5]潂胗p2oN艒萂>猞薒臟E$嫠&6I3痾z81録糥c滼挙I槴垝紬-p򼲴娱叢U崿d5囪.懗%跷*p 湋A悻_ k:猛s檱#R]iL膼索Dz湇黼gc]+5幂a{~槼怑洒:昻l庘霘汙7:#脞8嶔雝曘+>"B滽K藸 窪$ '4∏( 9I*寠"/抓&⒊7-quP=蚄袤j梄τ 2WWe1猑𳓮F戰璆>檛痮5=浼'0D |熕筽仦耘@n姒B-"-s商䦃懩0飠耣1裧@芫4W繧 棿í u攼s1哟=欇暖m5=妞w[VV嫝[哛>Q祘/,阴寰/劵\>K!碄W1綟>u庡招殠* 抑ぃ に<鷴腮$看' t7阵熟J><嗢 +R墇}濏G 襥'6;),O⊙稈蚩嬼湐墷k内q鐘跾Yb:F愍鯢櫖摀甌K 抔蔲TD$l->.騄u L健侊=柑辻橷,r頚琉瀣Gj|"褨3鼲麉苈's汁玳eOe*剅瞙z﹙慞鼈C/夬醼3謟螹*6t%5o6謍佁D]h"炋楙DT&煺T6恅'mt%\ ы碢邵濌7@DOjDqZp㈡ pdM答玛覂 +Me Wt堽話籭迵伣笆;,纅$蒞蘫;蓱颸\ '>墴鷕"%悰暸2检壽Lf趒CW)P杚趸H酪碈1妞/Z5潫'鑑琺蓍‥$b骑楺hTо&#梣S犫噾@~皉⒓L熺肆渼~"*s肂 规(昤S穆u殈9+:擁凈姀"阇XI輦$蝹甼鮀鳼佑攣p厊,H,敡.8驢*>鈳+|y歌Qm鼗蚕 F号@#]t梮駻+ "篤嬜= +u竟S撹厩N_戞莞軼#硉i割2声xaぃ鱖][9I溟嚨壝+ +儼ɑy璒赳]斝犖懐抙聰揙#<!+2 c澞奻9)T,$洕莼k}蟷%"輼F<瑐訧Z0有矷1:?9弶2c笥"鰑h攓0Ub醷I,I*d*禆( 鍶6彖*$鄑涇u)甹<汗[=梯 |NNHqP樿@WB窲笛蟇5w韌)冤!擹M緧<梛y 乖髪'栢d](牀x:羳R坡-p蜄镼牫Be%驲奌vh陝寇櫂P65#p]J鈙廘a"I悤`薰(-蘉暆怛蜙澂<跜v&殜檲7韗牫橊|y塩m廕s奜-]|茻F饀AFB铄-虞LgQ>稏4┣)T1终=* %埡淕(C-赂34E眤XyE晘か?g!)喝d櫵 烮7壷D-z^爦欵姸J璁煣茀╰胷ピ噮zA磣Q﨣憐闡 t醼'峘IL篝T晹撨-姾S%遟麉dc暰@<6c蛸DOz:硴磚蔍>餄琼W(W+lR,擣Lz樿鎢=_额cOW縶2 pN言\漵SVG蔣f覉!Z体?溚揔報遱慘(釋Sn瓳煏]<" N峒LC'J9濈XFB鳙妮`(狵 EB鏨惈bZZ窯舛a滽弩隭x—9(A鱚Nh旇_O:$3XU@0tDE-囁gオ襒Ac㤘MMh9鄠棦塀鶞\蕫I%If4pセ4襗+,襔=u壹`矡0G<&差"n%D仓OQ  +鎃髿q.檁)d皥 +抰Z^遜F渧)沷灝M烍_(嫍tW嫺皱>dZ昴<婹X湰zU  :q獫7X夡A#很3矯櫀C +獟](覿鐸W^壠<沛⒕皟?俴>}y廅 + |2&}g.,騎M0G>\ 枞Q毞垰-樱堳[h +駌-}侭鏘z槕L {藝U孍蒆鶢煴 昷U$w賅F/澲bT1〥L挻喁埖|姅鱄=蜷I`v軷@椌E篈k鐽?ta〈&DA徘儬媆4蓴鷶G塞毹B徣-2'ym萆瑺_愃室cfU棑QBj鴡>偋s梺膭班瞖畲F=29憒f躾)闦4谆錄 +X~ ;]=?_蟷S\疍Y褚軮#F卑Z"ET闒#眙">b\G8潪偷ar鼴'Os7剐Hモ則g>]. 菅tU憄Hwhq$焽T滵舊扭瞎階榟87b +EN昉婘樗T丂^"壆鎌 嘥iu啽nXA2孀$*褉聧x<莪抡f!呂42襶g3NT▏*晸DH箓;櫞_蕖O*0孳u-z|鋗償w赉)滉F鐜 s"錐>牕挻d蕐y誌昀壳2*T艸嚆猄5謋Bㄓ>樎﹏ME哈鶢飏:;uOU^喃耳姩3蹅b唃鐽!袇膾祈?灹﹋;t&惺巸4YИúPI鋚椮{E宼鉁爞瀜.>`1-U亚畳fu姼G彁鶯渍s駨>醹%矲1隟l別s巚!憲3谪" 4皘/]传VWdu笐娥8颮鶇5A洳I褕`䎱$ㄜHzXEQ,u飰鎝Zl 楚i剨qo鰤瞕譆戵B澏#邙H_魸岮餁榥蹺m彼悏j尞僐{3]#楠糭, u檉抮妎槻窋 ?頳=瘕妐~鑩潃╲I狢舢** q抪0遷餉&敭v(穀全碃p#檒Ou窃験悔?闖)0零敂貜笓y燢k釪UQ.枌蠡夘s8葕7.剦頿Ⅹ很nXび孺O志綺U z瓡譠$铕挭9JT=嗱0'篘6 誹*檁埓r L |翈*w擴4:逅嫎珉宁L唦t僰UH%>豴鎩査j焝獶VH^"谮q7w栛~4囉B桥T臌cì" 9獥93甗H.礟}\D塏^/qsq]柋t譿DD\.髁奬→鐴茗^樂鶅a杜F濟鴫錷NU~雮/铍EW艦甞柌)"醄9=G,.Я厑灟+屴熩i9臌c隮 -楹B亲咡~恟厧熯艆杀 体剘1j萭賑!q诅錼S_a $⑥5. 幙n/婋8B-5la渱󷣡P]N饚閘柡di辍r彶.iQ瞠k唘q#ヌp(績$藅wM抮 ?枰M伖snぺTT瑻1萦=國^萀輸(垇汰e?*c撬; +r頕鐑棎%0衺T径:幼c ó村5 +磋ナ浵> 鱴鲵6歪磤 矊+唴拊 My囉寃X衑J闘错黢8y譖*溏"CV肥|v +U騠m< +(鳌JE飉r3z 聫猟繷17X撨Y訯KZ?流裮珌/緞j皂轼枾-:呞晰碦Ed媭s鼧\)!i>d`鴲H掏K診镃掲鍹"救/傔逮鷫Q9f2魩w僚.鷓烑蹚S}傪)遘(j螓湗Q,3麍(>踣6se丰鱂%+搨嬶蛝塲_扌觜镁价颀a5駜9閦聑伧眷鼸#I⒎跭伀L~sa蚳證p0r~J姢|畾Va紎 +飤o祱丒>zc稞as恹3x徫撏囃块Ox>悓遾馟玒"J渓朙I&"3R>T彝T? : F瞕漪邞l\儑2y]光U7&C(锽M闐偃t)鼵j骑 Q巄邬eR珯褷嬘噓-痾涂鮐綢|m顤p-黧-偆 IRP檍;S櫡! li迳矕<I. 'm>A i肪e唸B7拫!焫錁RU臕>裈懻"濶Yr夸"颏5鉥慘!烬/$!脞F嫵鸾/}懡襳嬀\|!,饵B +dh篐X/~#瞘娺x菧毳:鰊l鏨Ex孏璈8詣鋡筣鼦トzせ╋"^q矠,!馇熅遅 蜾?a-c薕y鳊_~''肢燑苗~wx闘稭茂助誮氛渢3=澓髑瞄Mw|bt搝k濒.&骳覬怯浥驊届嵨臀?静z噈#j4棟詈;<;'损戀_棯悝気琫铬栖4闵"垶彈7q羽蘮bv凗(钞筹芆媎竺奯ov聠e$=%/⒄W闩9j榐o副鸛劙謽Uk#肻tl?葄肬>禄:知掾頎iFV7<丙雭sd髦$o监呝菰踾>6-脹-芋Fk辢螁紊h|秧6歗6k9尾W鞱hv⒘啜Z涱曻V+h雕g=畿隄X剑rmVk,A4淘4誉喔;l礐薧7Z~6i橯蹐-抠鐃2纠诙趒ゾ-躐S畬猆|堖祿牴'︶査捷絅ユ詻媐踥4儙u虚靋碯3_v-#(Wz嵠,棟v;不Gk与Gq橘贄Qv抠澰_.Yy9祈V幻3硔Pk?\.敷佶i@荟滿%孨<] 菞絕簶钻#鼆9g婫蒙.翜≥M峣菐g6Z>瀸I訆:v鲦轲 訋孨4=H?z駰v磂芵抐踡稐嵵⒀Z鈡;鰚wp2訓橳氤re宨pxox卸扤o=檕泯瘡N滱仃,G矺7}:;娟:g貞/享^Zk.&媷洺煋冿何ロ\;i92f劻閊yPo涵秶(暠;脰Z`凡vg縠鯝泼Y豟 羴x 控h筦訨u豯-l;芶l4绲诖Y_稓. 宒蓗2帪旿^痁検冚=泩5鞰opiZ莔笮迬F7遮 3痘2劧 鵳>_>4琱蒇5罍*撋鮴t吤B喎W觐鍜m洱n鳕?:蒦﹪iFX:碟荚h啣盛摒-痬瓃鉱,1劲孍( #v~疒骬啩I/?灱~鏖节xvsx翳諼!jG`鴍cZ㎝Ai裻y5櫇坂p;{O3鳘諾攋巑+?ycw3琐k5刞6總刬[尉=8-喩搜滠h/g吵d齤躷G氘s寱N.楟[?-iE`藚鱰<:绛v陂;膐喈R禇8ggewO 賚粹zs诒⑥p扛!Y縺6蚳盾z审腰朱[|聭偕 ^繸尻R潤Y癆曣仂ろNRm.*-瘔mw斐欦3XW謞<Pk稿阣go96耭 虆榡甸蟜cY瓕圣A瓬7顃r>儯J4茌洉{蹑掖祝升?紴蜑N&Mp銫劾湗鲴x 屵XN㏒ 3摹郴k覮 +0鞦胢5凉琔9F鄢#5沘穥:rN{教畃*觬諆6煻!;!嗇+$胩d08 晈碭>軠0o?絎wf'~黡<縩A頨F' +Ec昂0i'绸裒䦶}鐮裿;v姟嗐+闷JN!@,+漀/骖M蹖#kp`嶭滊嬗h虃嗔骒"铬③輚帨馘妮釵乇Wi鷅阇栯N>1屧][!62L^oA|狲溪鮁鼹鏧陙sa鞅2┹]u徼葯烏G琵e黬?牯譤籼 gg3鞑?;幾_往廥撡 u Ml=vg2:宿囏乭卍冹*W青乿;闤S碸;kmL氪7竨茂qdZ&0栌腰~>/U&ナ +傽璧MZ剃嗉7 Hm獗驙 絝碜j婻yT甃k98徂n5踑xZkzf铂!B泾 读Z產僈#dZn30vq@Bv燜峢w稺璍+gg莏6摿稷yk6a瘂鑬匪排^箛蒞j 瘀醏黨<-n!躹骱暿瞜w宪鄢m+]锟M瘝頰当缐h#藥{#煅h隼癶00甗izV餇?簹-/=l濉 徫~65擝x6瀉6虨盱U=邸s逓-o&嫬$z鷒蹶浛建m 侪<徲霄捐弾+0r+0;g;Y紭虩彟忦樫I嘄誸qSk匬瞩f垥OoG禹`r喯^键腭僮貊骂,籴7鸊遟G咄辑=鴹?o頹[nL[澞3貒泷%鄭@)3(梟o岰剳裼 EoX賜扫逐9A嫀砗\澴Q珴M&WI駈瞖Rof冄Id颸F癲R蔱炫犞榋, v衕酋篬疌 猆 +Le糤r*9$X " R钷踚僓*揨m賚 遭^畯[fM督'诓9r*疶rJ筋欗瑔螌vP*b;籡-<遪$-噈粞琧cY2觀 F梄磏蘦CvYf梜蝞刨-忦u?Tj}郣`撒稌謥3yE蓷簌3埐銩>徖`亡`6蝗襑籴W酽7 G繣B摒r<}|だ `绍降]Js鱝觎螓?z篝G&В舦4呗d/&鲟LA噑1pN麚鶅b4箒疁物過tyk迠潔'楕]grO7嘷LWm+暌K7纴^*=x;^躾徙痫涉狙!雴+ vHT郺Hf;逻2尪廤cJ怟珄Tj摧C黅珢鐞'汭櫆*C餓跦汧4(Wv铯?閠毻篬*>癶彻\9g凗Q糠q嗙蚔諅Vm蚋Z沀餢2莆v謽C豁韚歁痋烄頑c:6,@娒勞觎冇l麁/k 6-宾{紺`f 鼏11@Wxr2"鬪铐 繬薈)├?督唞毼穩j鬣1 5;q:f脌U蜜"X櫿[鲊嗝燫@鎿璦e[t觚灵飃j<芸国鲽N7 忷窝x~鱓烳朩尻t2=MN侎傪{箃_闾渭琏z胝鎢5坊嚝冿N瘇鐙G?9夼`||r7~^7勒鸙o銌厦焖h+gr)&g鞱躧M落 瀱社?雤{ek冫6}D钌t睗蘮娶靌X蒯斑3/|~~篌2z6f涀啙T 帕佹わ鱋"(嶳匍wW~/X;h7=螝5渘!yjs旄a$d结50短}niP獙牰07黦l枙+3ㄚR[謐稏傲弊@猚"_扈拱戎`廧茢[玂+5厝A紸h/璙u枘冗h獗78力胇''W MψPP庑店凑 +隋褶^r孈]yIb/岺*Va嶢O蔪瓣/2 x 牣c奈啶\G汆平輓iB擝頄璵亥採椐5 X惢轷z悷澽~償r4q7G_.傷v2鲱魮灀泚濆懐 |臎亲0峓fVims8謚庣真年3'螳徜t807r?格剝sf 婪穝賒欈嚬嶇'溞4|gr=s_ : 禦H聉D咱o轟`f5?岛= 5埶腁佚蛗 J^7 垦^陵嚹孬-皟昧辩輔钯擂_輣 唰侻鱜貯郞宿&O單}樲柟)嘄-腩盍@3kuZ!应7輗v +k~lvV蘸&轺O-3陧逦n 緅酚V z*厒n发岆启轓! 夌v鐯梻挺泷鮴r冚f&渙ftB[^┰么 +襡麫6a冞01l▇Rv 踦"爒组匙晓糩題z瘏:F:Z鏈&S丯燂晫{煐藍腪冲9#0灯>@鮴t1漒崸缲V樝i5\WC遇z齞4>劶蜮撆M浇N痁VR甇弊`0/x頖蠁阌jss砂c枨嗎躳r _9畴涣c龊m}"剔~?w<饡袽k~k6q?乻鷽^r凁俾粌旄Z 撉bZa]Gg~詛b;徐>,获鬮锤捷旫kf程-hb亪Z庭eF8徹qmH鎧s%穈 G2响铛xCj禆邪{刐F/剼*cH6hUh缼6萬 H篥餯峀Q!褱V=g汨Thj|鉻woX-抱拔vvj︶u憩泳,A亽悪鰗'御#萪衣>20草`跙L乁铐憎J&o莿j 咗"i覯0柇曫~X鱲趷`鴸帩繮纶B Y>+钓ソV>7抽卛.Z踽bv 戂h 飖*乩\酊)6 鷿苪mL畏駓踪4殦牲年悾礗#;気x衩1莻阕玃7@璿靺迌伸,\=霂幀t洿N耙t鮱儿瓢颐穘騴0絾賃o袙~*X絾Ns栕刀[┩K貐苞隗烜意朴S +∵ +苠$鏻Z往吮Vi 术I熤&]yr鰶摏?v'F'蚵噁zhd膵瓌趭黦QY┮嚌N癢赅涣`<驃P┹堕翃l4}@kh玶yZ*c恐0嘘岻崀-V#鬊|富浊脙@,帠檎[3l馕瀂 阨`Ya>閆a^7 :X k沠茂 9'盏S5勦偽j6,侤鮁<篨o/W暁Tーb4郤箓蹿 膘r2J躇礻艨搒l穄驚連V0x;8xy竬ΚW;=k殉槦俒枑TV'><琎瓠恱.竛6=畷a2o5亸婜僀r=u吵玱儩絥'Ab7 匮塵gCg謿.鰺进阰吴,"诙楊畴[濣`v變嵫2~掖聑蹆骊/f囘z佾瓤齩䲟噢)3<皲据?9xT3?癔淤 蘢堒n'悔$;籾 +0Dh9架蜓嚦所潇咧趽澼祁產)$ 膔q + 悄闒嗛 鮠譎] n镓a=]鴲郛tt镱林儏籿:B羣v猪;;m亻#B$C缙&4M穃 y2勌伒 墦5煘馦诡 <煍Ty舀秃V:焇戳BV4l`諥怴kPj^6偯孟靆 +賲V4赮]:spT&cX 乗)t/B徴妯R箔瞜w&_瑼工Q騮醊朘唀L{霾輨e;ebw髑搒埢緎 +楾2瓗K%/66: D:Tp0!vH摳1踺GG鏾{5劶A?pO娓E髼_齂=淀膓幓錁蛰7磦谜臃?<腑峱vF闻| 9?> m逕棝擃`?N煔軺啺曱湏藡檫䶮鬀逓筋@5`裯飆簒>=鸪/诮c榗$-魗堶 飤= +;溨亡糴. {;覯N/?攮蝏w份1]?蹷襜忲J8;S@单w 20輛{nF茋{嫑麸- 謟O膜<黫1D軂貊?瀅}澆慧猅lp斔^y賸= !霠O!m嵥%{o8缢舥遈梛#hL壬=Jy豙 {肷鑔辜:Q噍43垵潩VN899 闱齛&臽:驷愳D╫脹N殖d憖埬9`0B黗儼粄,氋怦覱*{凄VL萊僧嗾鴞Bv 赂m胛v,(h芅'6a瑫1p仔禅8茫$~1Z鋍譸rV﹃7阗L攘柝皰逰熩}铽嘘e搅术畕蝍u6#萞5 ;. 蔽縨 aX產餿炯:*>z; 灅齼Zs罧苮}T畯睨琎珄荻襺濒\諝f坲`m薺 c铑叼g篝烣賸(賔珖9@8#le咆+雕焁娚涠?艰`o鷢蕀铆謬t歚:嘸 x]搩U*a憅涵r佼浊民裨介;'鋧j蚸諂ヒ臚`髹1薺 扣=[笩欥歀:禼 `_珦锂;8/`M惁nc餃=垐驙輼6j訋嘅}0C筋B&m枨q>=RoR\蘱N裉`鯺飉6缧弡{d鞡NR驭 3n~陯筫侷 矊6l浣襽LM淎裌耍舌dg喈. 亾*T縈"Cㄣ驹>傌勷$ 1菙老P丹k冕q 埮鬐#珬4趡珦6崟a麤啁鹢`皌{+≦0D4擿6󷉘^1sTo脮鉲啠 ??3{0醽誱X衯bX衲藒/ X嬳劝3牡吱 p刿|?Y<4:鮒]3|W w秧濤*9擦kcH谵枥霦潂jZ叭2抡M:寙闆v豩?}X癤MZ槩姖P_$L鸐吖4;k轮C熤kX祁頽诔掾'[fj顨CC 圣!貕M x`u羬i綍Z鲴襧蠅=劤{灶d扔ZM':O﹌碶牨2琖N贔謓G&9邭|稘/ "礒碘芑W鋼2@T0Oog峔︰2~C 5渰2玊0韰镙b兝諠栠nR 傔俲硨胔奇.︸圊鷾t卸0惀麅)D +T痢0{qodu賯}譺隋~2qH唟敔3=LN氚I堑炋虠O$9-B懋`FZ┪亾M湢苮w R熴姏柈醬 (吀Z濓3p縼FJ漉瓮r鵽6B灑罥锹,豺Hu誾2絠6k6鑖=s钝逘o_郬1殪6璿菰l剸孤焒+肁*碵笵焉{髭焲,懻 厌B様![1趱4W6Vo0之{8玢藇藯斜Zv纔F+偼1捿]籎杅猥V澪O盝聖1翧沀(<6叚恓磭I枂蠨劐j晜c5嘟六t鶂扥粀h6璑揹奋<馁衤荘suJ, [t(zabY闋<]帵@鮲蹨c楙銔鞵╤?籷f-r跕L1l:凚犿:澚Y硶=8莽?U▲jSp2T貥r仩O2}$K濼)惙4徼尧@辍=i17胓_ 6`誢桒茴D={?Z薹:A 鶀桦澆筗t鸊箦C?z=欇赎猖p礧铑 +In1 郀wj隯兔5Z~狄噄 Y漭讷 宠杖I玌认e祹 ╖<鞓m组&Sg鮐鄧M瑻筘剚M, L蜼秒=堉m謐觷鲌丙R(坖聹堵琉 +j[嘞腵e綶啓9埻|vj &?攪a礳襆狃40繌";程門纞祧狑社賯aa,阚氪GP膙6. 穣4瞜.樹v4餥K7ń O乻蔱00(瘿嵶堾<0g<L6;eZ9餓8~u蟣蟵6枑0鏹2郛6-崇]g|銨~鐠 槤牟渍谝0髹FR胏wf7 焅荥骅+Xn(}p斞_粷竜#g佖!,燴{<9泴O<,`餒各Cp> IL8焆罏耣69銱w鱆焖惭Xe1:啕磚镉f乖o6|(>詝k侉MlD桳ㄗ杒 +鋅疦碍B;{{平Ok郣倒m$冕憖d揂o )^v谳礅5 %堶Vw颽館枫踗衘E峍Vo/w藘桀l踢玩7阗u矼 r2颵焴Z仾m5嫱鷗o鞃O僆坲0剋41:Q$懾0H靚F鵔賫1丶-蝈;/桮8闃?06U3, 總吐邅*楊6J/-r?踐~6Z(弨Q=䞍j>姄!箖("敘镭2&醫 +禃 +< 迲i頁郴机麓2H*/#<1 靈x蛥}诹嗏 纗噑羣qcv{3.H 佊]穁>kIRo%呢莢  噰6W睫i譠7( +慎D瑈ǖ謙睊Y礻泏恖5噢D銳 牕Je 箞.关斠RDo坊砪W犓 t凜 X锋酸 C卆謧t轭4vw罍=仳%e眷鰝O?-蓰碦/ab 袠Ov?凌繽0辀R律謇9T糠讎峀鎻犾0跢 j=霕+`H?藞[嵸=樌]倛啖嘣RJwp╟t釴鱌D)x7湝L軟砚狟( 玂H不mS|-2臇貊拹糏8恰嚦偕lq6歕t簺捺℅灗訋砘<倎荛$卅r}Z甇席o9鉉X鐵/掌;鬷鬙(摮块P趩稴頄Fm搻抜 健I;輧狲加藇 匚迨2j陉n;樄V1飔浊g;93谮]!忄P +J岯'"沼箆┭Y肞偭褔揢#楸l兑徉rL編孏n憀C燧n笵贋殪b几 O鎮祠絕哸#7`狪嵓爧Ri闯cA < U亅Z順懹?l6淛b->]觢QB﹎дr饔O繠狄 龀豞dP斓{Jo颡9熘)巓瘩"8Vi祵{丆 QS%?鄵O犄>i椰H匛fg撷斓 閬%:>豶弾蟃睼珴崷讆騦?榹譤颞缋?N疓砶7zd熍_荩6%柪!|屚ヘ珘S6-H#;帵坝彴棕哐 +雤替 鱺98g] +歰&荧媼7_O鐥0渖咵, k?乩lt3捌頛梂兩"伥擓=uf敒鏛滟觇唆噱"|評N÷栴C笆9O3鐡排辽椢飕e砒慆鴉44qg霎0瀅嘂 堻銾e|itWE:<咢q嗓 瓇啛顸|钶麾肃閜|亠熦 Tg僜&%..玔罇6vz"0娊聙;蕧o3沉 lX蒨t;?<鰝 銚侈`澊憩碬s言輛z+冢1蓄緧a█跡鸢7:7槯=H"蘮:瀇誊-"╓0p彻0谒 37兞嬛貌C鄫喇u 姚媉鈅棆-D}滇R侻脟嚨8钱療x蓈^?崬P﨩; 销螘?v魄[{p徐D刭M0>>嚁 4n礸 锾袋0M橇`熚濸廛L輌tm衭竳6Z^/'狺髩{5u!缌遽艞嘩咛黐鹄=粂艋沈>淾嗳谎銀p锤/芍;貄v君~0>nCM.)*9x|>樲芠ㄚn?瞶劐蛄柜脵4蘦技LNcgv5q归g~鯵磟熚7严^諐扮間A鷭E黏鏻:ボx趘璎W浵.旧_6/紘*鮒郘/q2眲-偪S*畎抆褘沈f8=,谓pzd亍3;'鉭?腂韔緢W/蒴Qw|爿寚顸z?聼魜 ?~r踵w偕洷繊织鈨"J醻&Z=w9擋錡殃﹫焖d麅辢3_\Z]h 煥8.顲洂B墴7媺_笠W箴僭{躝=_栺鉰伺%7~鷍布?Yn龄xx09] ;h揣郶7简盂魫%>x 呢u63锒i工!纁怹民i*b鲰奘鑰る7泲镏鏮疦纠 焿d秤y鴃><<鹒 l<腑&3跪耮8←Go畏=葫藳~瞌/磅矾⺶O嘩_获僤零W縶蝙.V$渮垩 +Ⅺ阗檠裬圥爸探畔xN暄O'7?勝铀碹溧qX2x:zsx踺5籬[i<磭Y> 0內zpx宴狍u}耥骒哇唼G/|躭了e袈崬}}煟嗾r1蜖譓骖Ev:X絃7_>睆辁身齩啌蠖l寎8歭冹篚鵲巷q>9:]9虺撰擄圻~縷.m骊胪7蚜笸遄限蛷o^跚涋h錖凈赠冞]?)=|跬箜嫙鷭誉淙彿生涉p髐z鲚b"y脊Iz79猻]Iz:鞘9uuWu9ч9'F +HHB"僆6仄6N'#刎`0揶図较果荏滅~%?O 4軺k}z Q,vZt,S?榠N5vR-6侦 +%Z倸 ェd}怞 蹉儋Rw~kV楄羣fY,夻?訩V痴m孨L\T騨D耰潛r′T*瘮[睨1恜孹 +-\陣鈸櫼z緙0淺畉y4凣脵iY镳j]訸zb淨>:E薝謃礜$=#\d剛谦牗鎣,屩鷩 眭lm<簺认-n渷訾卋憾襙:=籾~a佤QU +r!灊哩4伶Q:谦厣bk;UZ闘霢阚]2隶E昉/]Zi瓖)抵7vG7臔艐匟cWK_KN;;衤(罕愛 +&渄忾乙+缰廭棍#纤仏爩鼎锨r+懨"痸p︿2-ITvT状x/|X駠鸮<炍M?W凂1搮j]栏屜.瘽G瑜倨碃"c偈V緑ㄖ?瀘琽緍魱1r9挊闚_<=秔仓?豞>7絬[o熵儚?棶B裋ΣVl瑃掸髌V蜽芋GWvobm7χ违獩R竉?6硙=纵S碕$愉9/ρbE嶊9==澀[沯碮-扑砨牔-侽鸆蚡宼;撶 +裄:PV嚨?ф 鮾胖N \ 唊糝R#輝~.殭蒝柂淼趺棪桹Z2B.YZ瑅痘忧+眄\u#^X邋畦桀剀)稯%擠」摡 3Ёn9w鶓zo菂F犳杖$斀煐C3柳z箂掋媈瘑慖侷2鉐蒐獞N(严譜y,G9)M嶅k笋齑/T匕;*氀$-#c櫓LuIK帲LQ wJ瓡da萤蚣_3齴'UZ衎軧c橼噺猡Bw曦潢呞鸟tu%挌d贐iu阈澤軘d5_/幬[趉M煖X$-p屸&3 涰蘜hN湈遄bヵ!*z光t6媵坴J 磂冘臄伄RσX帵屏 仦瀁T阌壱b(9fu V; #倐\R跹hf.]]-g泧厉磏(僮獾ty2Q g&碭]}[+nD"膛マ坦饱s√Tズ痧{鑃_曇欄漒辉9S觏.滊/掴崬>u琮O|VK5MVkZt2]Y砦-篫閙廜靯糸/薖彐zΣ%钒y鵊禢>N,巚拽f廋y餽Q选‵愎牌膲匔wm烔pu糌蚴嫂賰攼V铆`/r薒.季磠養0詠#|+暲~貉 IFs觜a恖T裫0 -$ $h侈诩~蟂缴C摤崫.磜S質wO +螴8A 攲{裛(規gЕVN蟧葳>N儂〕嵠嬲>蒱灿=澡-8稾f6枬Q妽j褞- x.*挒焅根膮蘔朞熲腖$袸楃痴缔虊罹z逩C庈踵G{s抢鶊8鹚┞崾铏觇蓘轣Y佥;qk$ZFa⒄禧S懺5=1階t5>`bZ +4捁閶w<緙椣 %覚趘⒓&=斎駼屮褊锖鳗@傲饄èhq9Y揿洼B椬忊!梂駒%I#衎k0M冁Q=祱a馧麪_+8}4#箼Rc睫]F'穀9c禨?/*[牲2皹║ 暪悃頫;獎洭崯僽Q霹掳C5籾Zㄅ宜鬱$瞩k礔;赏 &駎“x辁摬VH&NU{ ^) +J06 W鸮L鍟將誙7淫NS;3sGA鵗Zk{濋轿匝摁罠gY觠>鹉7冲韀l.?J)6e(l 0驺8粅辋g>鸼.? +>璔o宪:簆D A侖:)/X=慑驳虳~5v赧>桓sA6髸9临,66t-璴糾i/涫貔Ti +g>撏帲臞<3孨s"櫴F8転9,藹鋻L@R朘膨\倒Hq B0敺_k傏J滏#夞X|,n眑草凵56D矫收窌t隳-睼wz缽b燳U矫糪Kg芆灲嚔B琓IU7)瘦#s噉焅>南]紀bf踤襭 4M骾勗紩(WX>姅瞸/f霙邪艬MDg勾猉l動-叒爒q狟s i崰挭宓x=k s`嬆`3灆;挏)ф窒Dr礃<疶鑙褓dy濅覢菣黮┑Ql;鄞库!B7蕌虄蓧Ds瑛秋+塲輯耯栲蛵]?yx臂h欼5c%乙拀T長冑じt45Y眄*娅 J癏瞐籏0[h籆 f+訹滴N”S=L蟺v#蹭/錔珌J鍬磽| +!C曟r祷酓8M颿D試)眻婾繞銅吙"5蒞'梟峠矃檉o+敇剦 鷭G忁峎-NVOM+[嶑育欝侌習2.声cG$揮疧K鏶'鍺U[[裉|<矰铲h醋=尃赋皛=q:汻麺燛q敢T~0S 披罤;4眡栣6+鬓d Puy撴/U"壻重掬黋P扉Tgr#\^雁P,鑦淣甄 #>戕骒xn吾O-箌'`w[徜ι天埏-C胇cm汯迳蒭毸 +lzu鵯$?鍰%/※0T枞j C "~剿Z$4韦K;A9!A裐<賃BM!匦扴ヶnE#屯嵆 $翲=雽:6炱(锆鶊実:; 勎鹄SK;亲vn_诤律〣督s鬜4t07諦焉X<{暑鬝t蕛v娽怡期怪豠癢囷鞳煄莧薑7非幉R炰R0 9nDSMe砥M枻脪ZE韽Mx 芼涟C 0b迡)6UD3肌"6齐S!o6y噯J労欌r《鵐D<\畂辞嶢#`Td@M)L藻1弳=FL陠i褖bm;肚py梉FQ]兴酗 f侬鱥:鐀*扑e屛`tN押殿嵘咉cs穌双f+醫眈)漈#紻v艫杛~礹!釃>隃X缐A&i:鉸姡瓍揼铖狉纮蚽舚$爛L覛^o衎6耱奎pfzsd溺驤Z>aF徧&3+伸1倗Bm蠶  B 鷰KprV 棖彠脬N斆Y=+*鐕Iz\R$躑&pB0鍺弻`:N苰┤儇:棲**)fP&倯氫悉令烵T:/M藖鯊豩_0w碧b(謬N誮杭6:s凧4ヨ%&;3;{j袆t戵w擿O擪0>v +5橻鈹びI圧⒇\iO漎9記佾v謨醶$R=q忖WMV +%淭洇c櫆牵篴 唊0 P踈犃-^恙奫龟!擩X储f".+尼zA椧L殾4欜更#Cn涃孁d妷+:85PN窡KJ)(%洆K&馀鵣b屼`<^縚-曤隸G谈貺PL7殬(擶C扊-0唶庸YJs馺竃l韦.杨鄝}告F侸╓镲u6G$s 漺58嚀r{x拵轳戍FO廚襹>軏(!I V(﨔,1橦牋0%咷愥!徝妠 侀vk,&碢拹=~鬮2\1 yI<琱-毸眑$(6沬廩M%(*Msi珴py爂u=fX銻1柈徶3s汫枏铛柖鋁仏搝错鱓u組R1嫕t{8侾E)兴Z*巢濳趃/;硄>stream +崊]翢徜 %  \5*盩'灋N卵1硥豾擓'I诺`輎X輛 +舃i)潤ц烊iF韵JC畞a讗蒅迸dv#煣蓪&(jI斺筡c~as}c髟顾<翎G瀦3/|醄啕污o葵齄韮讆鼖玾=]噑贡尷泻檉翟o磄鹀乘k'n>w顲君亣/躶锉[/澖r俱螄菌庾鍟曂#霙' +晀P(縑堖(;撚 双荖澑x堑焴媛溇r黪>黩7狂犄舻o铮蟶aq髽鐿"樷t8*嚧R,^=柼髌fO-m6&晴棫Ww秜O=聱/鼷w_.\絢t|5瀐8澕&簼 +庩馲稵'輏%y.陂/讃筚蕏⑿椭7彏縳{z豉梌蝴崆麽?畣 6唃R_愪 鎝B E藟L璓n舟佑wO]~#O=撨~踎w屋v}z頟< i稧u% 殙仛篡y E泯Jk%烅某豌gng>筘'?q鬏'趵;罟镅弢砘某限q鹘俏]a糯伺; E閵Z GF%Ot亅,吱7f7灉槡酴O汗豖s{u;W.,啮揲沷箈{鞎o贱鮫黧_y耖g?箨w倔鷒麾薩䎱_?耀瘆鬝_/g蚯靏=鰀klU40 \宧蒵┑技侵鑫瀚W?鰤{駤蟶閟O}⺳辖翕O_鵲~?髹镩O}孳呟彻Q懲觴:矃%!QS;蹏~G{枭=/}鉡??{沲奎/龔飤?ク}s卼v娿 +低r9=终碌fczaa闳呀{锟缪'?蛏g?滤/魨_wo傀諿縸鳚乎'盔腕_~5S槹郉噧+$倢)﨎6觀8t蟽荏葍蟶橘熃7搡7椏鯈愤{鐫?见7_{飤䥇缥灴-檔4鑝詅媒^慻%履呢恃莽罡缶}臬_殓傀征~W亏?Oz缃w迆缤房酖诮錦iA 4c耋 c蟿CZ盶M议N=q蠂s_|_葵?~慊唼誟魁_颻|袼?鋈折镏:藮苓oN-l軀豇昜宪}黔O瀵~+w/6 矞巻*笲7潻%艡壟蹂諆隟w]:/瘄W_鱚}麧唼鵲o浸沖亏揎?鲛靠鳝|筠囷歘 莐じ,桢|mfj衲揲c磺v俭阱梌z7裰豢氙雥唿鮗盔?倔位o]h7掘覌棷\4L肣-燰Ⅰq拡矓VS祙u{m轳蓣峎菌诀躓?{/?矜劭xx阃熆鹇g瀧狍圇为z 曥/陸z8R閺蜭O;蝴'?攫瀵>黧_?~7鄧啉帻?忥紧鮓靿Fk央 q砓(鱶<棯敠 滚镰澢?蜇g眶/|鍏熃駤隽跲啉賉锛䁖肟飤鼹/_釗}粢mW挬:/D.J睡f礰.*-铜=p_鳅峡o诀作遹镙唿瞽魁/9?穨讆彑|驂go[>x灄竺脴!,赍V擠{赕Sэ嗑缈/ 躇?蠣韣鵖槰?鏖 nY[傺C峛i5(礨+2c爿叆供赊孚怎k'z枰但'螣=Z,$~"h瘲B技蛡,樏>!"菉眀卉m范7V6楃g骇N{鳗铬端穃箆邃3)=韂p;瘚嶥.澽8槈'氋洹臻[癸瀷?~唿石n込銤曩/>u鏂鉩S鉇-$XW焾 捜镚:}鷕1V*';眭亳37烗鋰诀+o烬鎨鱺鹗譥W魔?~希鱙8驳裭C%篷犤+廥雷燰+醨 +b憙Ks邁+/<谉榕裼_/~焓笴G7f;鮂0謓C)2*p悇|$洬芋桹~蜓?G錱遼'雩w?今媜|/]墉U( >?亣mV4鍛a顣#j.Ζ&G鏵鲻庌z邓顼过鈰_|遹+/|龉g?龉O>蛘鐬y洚跱頻e抏掤<屒胏↗3酺P痈弽i夗曂;o裤賕>耨'>|鐣蹫~庋鸬拙囷>麎=莘溵軿Y5洪t徽壑籀蓜欸H 筣济!n:-,y蹍梌~?蜾c>黛S?>魈3w]敬靖\.VXJA匍掛V蕁駔\$狻 擲誏"裩5ЕgV(N酊@[2.7鉻>瘓粷8`稁穭煕'2灐膱炑 鹾}>芇M藴渧zs豬载Z匦0竄 ^峼yI摙超覈$晭 僭鴋餍戄呭,骽怠f+げ昧[m赐N B<3寧a迁a5v4冶H2数駃='B醤璙亭儸労p(犻i揕b縏愗&F霗b1朙愿X焈枵播Tx碮婫,0孎 焀禋q藞蟣r ;M脼&Y裈\娉?.c匐梠;竃IFr-洘n7fZ錦<飐銉#脙N:x680彔]^稬a"`"镈,+皛熕'2J\.QmL7嶰犟&羘F稹箩RD 藋氈昼單 匔hj並贞k矺缙&ve18](甘0&U$H厇g铇弯M0Q 9,(,.嚂p*攬霊t4驖踽<弃鶆*e5禒ku:E颐MA.锟 +2<於Yq瘚%(钎 贡澼+Np偠L0l栥筻+q<靣0堊竁60`卌h=bB廌誣G荌*bI 7c螑  寴'閠 lpDr籬粷漏-fD^3n7醧$.O挭 ゼ茫蠮麔蛚.泻E畳攆w6鍁  阷v;帲*xdQ萊T宎S怊KQ^,CN廠θ(:IgU}'R&劂鍲L迲!椕毂嵏l#N煁 + ˊ嘋鱩禤躗n瞅(⒒潅艅趰滼寂&8=A汣#-楉靗O膨V搷莇駝F洛F 8L>2 {鬏4<<淦悹認-矧(p> T~簌岈黬)暀Q摘钕>陪d<j蕫|Bdp短I.蒯朶醒7耾e盈徟3聄ctO 崥屠q|>振y#F*觜伛z0N$窮嗆逛( 竊6m6dLMG#cv 5<嗬<@毤誃簼捛@(竑:5 ;嘙訄s匿騹o%b宷銁 bh朞覮阽4L粟齘$漪7 剜K-f +Gt朖瞝石悵-U撓#輤彶贖叒篪紭鴴F#D勽0b噣cQ5P#樿吧韗)瞈W黆侺讣:N瀣v4侰l膥c鐐蚥驑M叛 礇想惔叟}7>淣夙譂N#s 痜祤TP蒉懁g"M艼 礲U酛G=$旆 {10飊?鑬\毶劺a6cN硡6`褉啩.叇C猇砰8远m2址{1o爳_bòi萂!-8\汣iQi%8*鷽nO脗`R释C戜,%0"i矺妹^EH骱Go鹄~;FDI23iU.P鯵lf嶨L#$N募h'S惨Nf杫綽6憱络U5唶\O1VúB]V,W0"(讲 Fh1:<獾X#/妬璾 妽眀巉矹);搒zC鸞≠澁{|8A褕鴾浏y2饖(懙6蝒璑彅杤y1tK +OS鉷袄扶︽贰醇kx湤$欋 5≮Y: 輓vp s狍)悚汻>咶搲眬V卥1(厣!H呫蛐廕×ra啢0儲ad腄管好9湭顏:0嘊鮗 嚌魖榯#"2@)*嗻".w`蠕地/桇;商$胓lv寥7skNw=I艩;哅8虽)"&罄~t9v嶌錫四鄚<.蒮珈7⒏軂#亼 ML4鐌X螠2$''\.~ X浙忪vMc1钝崶栫V*謜n佸Sj=1c儠Z J扨"巺6c (l坌犤40樔邃U典Ct║朘[@~貈bxc胭~鵁埱饅7龔a8'c╢a嘒!纖`沟~fj逶79挮H鷇$窉*bc瑦m.?w窂 +[湰帕患歚购_洷8廗筧(d奐襎胉@">, +H倯*臛p6塒1J j $棔礮$谷Kn唻{1c# RG桑D袃8n`岳燾`衑1P~4I踒)牙銆w纼& 郝 +A,塺.38]尷G哷x 揨牪箏嗗C棉溺 "M觵)`dl镱褘塗(你@Sq|谛鍞TE摗羇靼蒰N穲憅9P鳍A歁N/潝傉}vAC醌礖t詀F喖L缙釁勉 玧3js|Z驨4<俌韺%bx竞P_损0 +(狧MMah麻呼豰,|嗬嬚倎V仸p篣V畟DI$湖P痞 R龋TLQ+k湼魫 !.5=4嵡阌捴!h"2;$JFH╠ 倽檅m==~櫀$煄f&R邋Lu5哓实 6FE汜赾弤?wZ毅巽觝幬餬蚽ち#<'夆i&燃瑾z轻唶]埍"蓉濁鰅(儍3俋孺!錪E4N(蔤嘢>2狃T訊M竳毻i.M&@(憓^$BPW6+膈i8鶆侷1B(贺b!@經G0妼覮爷5{6)>Dm彗p衫8敗6〉複麧僞(桽%<蟇A燄bJ$揊(舉@芎屶胑yレ皊<総>QJh n铇"c8畠植踄朓2L Bp2痹x泊 柰`b (B#辞璦X抍k遰:3!z8Z甼h38鄟用駆@%R3`1蘞[屳d溩06匶桮悭r(M+ 砐=f吵F屜x +磂w媽斍貏 沣掁 '涊萱厣X~杄塂O弚 :Q酢 +圉囅琕Vx扇神y儰1zQQ嚏薑崮h&3秝鶱Z2JπZ徳菑d雓梢 +慑H&趉-剪昽诲@曠髠X%3鵐++J説R$dlFSR舂Xf筜O谈羙"J0X"赫!X纴鈇^*俧#檶_飻藄梠{xb糘^婳ㄑIN眸 =2 誓闁I6s#EG788v鄓蓧XOsP踗3M鈇誣⒐,'U[K}橆p*b3篘驐Y賢}爽\懺677j Pt"焸R0廛}-V+X瓳盕 -攛搼*腥a(+掿%]珟嵁ⅷ `% 扨`&dp信s嶮7ZM犟d'滌抾F 鮤綡3貮癐袸#墒H蛵{}i憢蒪)暅^p$oBH"夅I扤8]釳7崵WI幩塺7j/碭,"L0崁W遥撳鲅@斧'鷟&-9 Ё腀 訣坎xO幬}媾 &陪?豑驭臚9m咵裠"\n剒(轔夤Y傊5S楫媿ガ弊 襅眄耖江W!闍鴃皀洇 +%8+/ "紿v陬枃MX(2]=贅 gfI6锪bN/`Q>摕 +力(. + _珚^鱃陸t恢Y宒υ+銒缢姐孴玟V囋kv#閈腂傼D"怦匧㤘41k8.* cF@堏(-6>9{z镬门倗棗&@弒|2SY(tv娸#c萓 +%)]Pr級QY|!Zm幢=軇狠@鼳芈#挰-S>"迕TE-qRp宐蛹敆祕捍爢殸a[罋Y,从X酅{<槽7峘 竎舑9罶!`鵣JL揬慲騬燱jI逯6ap秀C4[膱/C*GIJHH扱嬞x歩$龈淋&訸``o篿豯BF唥!/@8 '灑丟鞻鄅羓92廳R淴L骁郭癖L彾h>澀nDR0q蚔鱄,]^岛% %8 級_ 閿QN#P议t~ +##p<燊隡-謴责á荈7/啐q!J驠阆珉牍趜(1镋TIJjZ琡鞩 廆丒搒s浄5'弡P輋2祠;g2家H6鎂瘎=襂J7Y讉懼絷蜅額庠;忧X9泭柗^PB鮝 厫眡v*憻鍞V2沸涁T9囉.ni)偸奟潡玁刐(蚖沰pV`繟jU訶)ou.徱<)细PI4:SG茤O6品姯岺z殨 g^:{駈凱Aj憴B鹸秖X騱妯覾Z吆磑?樦爒挼旺扉周筆n蓧烈S蟶ys垯W 魉澼4GO羜僾亶PT|葎嶺(╔毇pR" IE較8哕⿳锿n弑x著 喭8囗tw倆莏D0@瓑颖詼親@痳,x1玈A隕nP哘抬y=~弫迢y美7棂 '廂a*mP渘 %u8崮x【凴!V;槭f85哞誧揊畢E斠尲d7U愃@@暺忉+7粃3%$涻+Md宒飈i]{痼汶w堹8BFajh2曃蝃寽7蘥jv釷UF"7塍N羶檺 =6*-Z5we皢Sa&鉲 +2瑴薝澓'3n 罿ohT6璿蒵缂^%mw秬$D9Z萊|A亚斎h8記9v铤G:SG  匊捼"xā! + E髠愞愤fu餜N辆9^洡 ×得椢\{d迦m砕| +爚迖総'29悮>_D:^_敘s伸x[#穻薴"鄹<爥$鵭(彤3汄竷奟鱵戳鲠!霧*^D戄n牯譆吐6鼞IQ3Ci塟 7枿嚂荍8b0I鑀B@($">$鞢6[.'s}#Uo/虊旴}持?毄蝘j鲕冫f鱘薒彤]瀀糥j頞;#iM摍`u}@>  +④亃噤 榜顩P@k恖桮/#)>C骙-堀賱狼k頃骧狷\mnv樵靥1%P章璲{恢賚峯┍Q'5bBXke瞫#男0乞EE曊6%N ;"AD=F%Fs鵳b3}>KO)Jn{缭>騣郙C誅>x3W焞M焵业桓H場\^跗藛+隒B`L>蓍鋂>5r塹嘖e舲,3穟鲷鞳E Kf蝗餣 +73,啞IA╮| 卫)"峝x L惖 孨lw耵煝&)T覟<I婾PCc5,儓拽 +骬弔`唣䴖Lc8+占hx`埗4pU樛*仨草!儑B惏匰 + 疀$\B4虎Fg/VX>嶜Tu溛勒佹ù8粛w9$-0霳J鼺,! 6霧\&耹c酟h>'(#礪s5lrlfob閠セW)6倰!⒐輣E)鉮衋g@JT頯贡76{裧?4鐼怓6 鲕柫逹╛V榷簁跗2I1煍蚈蝟躾梏}GO遱鶠OT:;侾:恸蓣}剹3^4枧c4X嗶bktoj<偊xC饎U爲t積 ^蘨俭HM恐扐軶 +|&[橆瘻&娱/钻豌┨茕燹趄iF疼|@瓦誉pwh坱5VM#檪氓ppV;婉鵋b*灊鞮>~=媅 6O溂鞠閂V,9暿'覌,0迖e%)2 B xmp魋 檁v鵼Ph狥c-粌第(-h傉輠鶮玞 6髤忀'犩類楛耉陡3h茔9A嚰7^&咐54蓧u鳩貔$吧V 鉋 ~6絩f镆#N"&狨糬c鯕5昉/槝覴撈眕>7C砢絜p炈 +b戠⿸.`:8p殞磗釬d權r鴔4!嚌怡珽鱼鸯T钡寧G籞觺扱IZ泫'd黬=s儸up4#h纅牪L 崍?廏c 8k餌徐. 5bf歒異HM鶅U?犵l葱玂l嵨/r箼曊3跪$AGB裗潍蚿r:U\S碔'铛%┤駃W6饐鎲xPDE錛Du=8l?`q互犞 Gg蝈砉犃麶~m蠹|滬奇奐嚶輇}eh2 ST簇榿!76球箑轆犜=<IF劀缨笉U牂f潇q餦倶┓):錼奦3m頼祼钝)<捠C=NFo1b憰K娃6'd6謍疶凧;}椬/= +巤6翳瀴gD柄■篣煙溫0b釲ㄓ礴攋几\j韥A╠2m影~働#9h泤v筎88>藠9妷/KW愎旻T舶獑踤DR鍅kGV>4lw来趰楀慺3>2倷F緱釤ix8欯納隿覬d宒釧%򚤵;{RR蔔穈w騘鉯"亹VA裴 黵Z觍XP,铖%6苐3;bhw 5帿忦 ~枊W垠硾 _\莨皚礻狞蒚u"モ淦枏<m5ld 襐*+輤迼暡#僷r豗噧弛Y媰娥&鉋l騌奇犂D[瓌賹殟礸,b,迯釺哤暳peJ筢蘕4;漦l戛Ak丅n抖V7o鱧u羗劅0TE#nX襀&7^嶧最T螵!-玫J}~v髄:摡蜧rs屢D蓜(/焃X簞躼墕蒙D溿KA艱!澩庒x级袃.3l暏持嵯,XH鑡爼O'H眖^闪黇k捏辖螨窆p虷j舱?\寁秅玧F蹒Y捤娳膲" 疿駼i賛靾 =81! C碄犙閚.灠豬P5^闩|殸枔古taE 1\雝V嬪9棏蚁a(R驦猈葝zLC唵吝耆i稢O) 陁( 泠 錌$賅:'鋂休i嵌-N"#坤N;珞H$紃$赻#/h蟛諴@嗿3申橛W畾惋鋳哿`;戣Gb]淛椄L>3m50杓裎/屛.1硆MT昝8X`v梼俜卟選gq< ヂ^Lu壶l7欿莚砢kG硧∧,沛 -謕蹧蒗C譕]x禳祻o粐酳,欋鮽 寴窳A梚仉t⒁$暟99 P壦AM6:K荖_锵r胈 批a@]E釚燭.塦鰔撶匤苟Uo僓o- +藼獥2雝6舕Wn监O酿椽昧@扛軠┫瘻\:W/>v?Td笜氇∑玛﹙妵>扬O.-OЩ餥酄]畝q/ォぷ眵$影o3GL>酘/灉%鷤榎[?遠o"T T姖馭褴l.,W@Ⅰ駂t\囿@嶸5<熨w撆ae瘉冎醓你鰗絶蠯V銐 O`Q涐U=餴tBO|H<鈼驠嗃嘣遴1$垼3n髨蟦臜L迟匮 鋭扰6$ +q唹嚕韀<簎璨隧前8蠗覵P8"2T餏3嗐Q鉽(S鄻鸡廩蛣菺B"(湜鯵\冩@鶚7a 醦 ;肅n(幤錠(胢02J髖h絣yI誶跥/,運.w;+7鱢鱞咾3}%惪2G0V釄 Κ`[2曏誐&臩L"U溳p'鮴#暺$/UB暴r隓g觫枠`笵懎-I瓉惗X峾c靠頲c菭 ' +玹1*w#d鑤*7G襛袚塗黟 弢錂萦讙骞@ +厱蚄 绁`羾麅癤炞碯:L8_扟倿壁寃o蟩〧z +菩?p繞-噸柲鑀L脫yqy7瀕抣(旍M瑴]=r=}⒇僲嘢&芅灮#詉,N沷鑉G烱暪淘犏鯷囿> 喦籎砰宓赤吔 IC;G)*婛訞P= +0螔 6蔲3V螛M|嬠%z菀饜葭錣6 +n*-W沎=>蛋吞VT,棜]>CQ)籡4-屚聐:/(:=eB輟\"侀8/5 yA矻t>簋}7X—仯e>Z<鉦)眚 u- +J{⊙攉6纡+_鮃刍3J﨡"7N屆叓8力\懃" 7鸓}h6b槽mㄍJ偑5+ ^L樺髞h悔^顚oK揥n浑謐h:蒭汩b疽8窗y}b铎桎駙迬G_q'2銭捓S娳鋿蹿y0e郟Fl覉"0 ,plF婰Y;磗;&﹜-諱梀珴萆 ;粀熅鲴Jo恢\ˋ鸲岚卼认,鑒p状姮dGA%秸灲槶mjv;9亘5Vl瘖6N&lw<暃窚(黨D4EZ/碮H聃稢仍摀k WJb脊o犀^Y萁槐{o缣凉僩z輞禩Xog高 竗櫷\~2丂2汚匛U致jd∪宮OC 錛z縼择h/鳪>I*砖FRF紭2 绶頻軣X粋R}蕽;獾 +"匩cD俠2,7溿抱#d$6橮悕Bl)[>s厲鉧Dw3s颸涄K5(姪 噖追e 7r755s~q閽銻4䴔蟸?S#><vw贾卣琿(n叽b邪弰@柫5隓碘%{赔糈谫櫏sL40-茅妟甌_?|盥澐h$lu漙sQ腂塜8j"齯鞹v>潫嚔馍(E%,筹懆 +凈 EC圔1觩z^n9W畚追乲$簭啉柢旼翋╕U73=皖迬壊Tju0lah堨??dO湀燞L综銢黝?fg笉俟臃焬9 )籣xu⒖ sn!鯧d  轂*V6c馰obk豸3譤>s恁眢^'UY>U4{.N腝琌裕#l`鴋@S处攺=528 嚫P綐 厐2&潮s3? t菠 骐1(猗c +筛扽*斗f6o6/騀椬薾z苣4;痹紱殟g粎愔餳 j邢CAat瑇鈊 F(j#?躺FQq8g莚+W蝓鮸u>禨n3`蓂纝Az p斛螃8q<愣fE'U<宼 ZH駦 -*E^  僦骀櫸**衮螯孑漵/m=;筽;筹$籷否轌邁鹌臥и赸X絎(J{赫 G斸$ b萄"厦#R0lcd6灉紐缪絿o雨 p哩 +1A璗涬踔~﹗cu赦鄇攖 * 缸h跷Izm南  挄 宼n泉`P詒径?X;usf袦矓竰脶房胒g󚒉L(菚 +A^4殞律p腏g&o迆񟌡<孮L蔐L +濋>觞蟧萸萾:w铕/&2鶗遍胗K蠑 8猏刽燶]腼a泦Q8魓n避VフX殰|N恞V*騄%洘沑窹i锲]@涃lO袹C借M衁Ykf7VGGiI-[糡j渂寴哘M訆呉d苂\}第軲f%異<水熃燍诼蔈`4剿0筽H侭磑燤{L腟O 湆  &刘G甐@:迫Xylw箴奄沷/^郑躕_吖{跷浻砱{}v鼴<=総揥\炽 跑紃泷遭懆UMw_{ +翐賛a郿莑 3B凉4F8瑯沐倹瀸ez;>髿楇骊蟓i荮Rサj鸤o鯢洞舤馳誰轭L柁'7q< 踝倞l6戦棦亊kO7*H*帙xk恻溻m撴 長l=偠c儋脔隚7o!^樧*Nk,,*F%5N)P|綩沴偮滲n聁闌7嗿U覃蚘aB計鲓栯烰纐犡珤V挼B本8穨9UZBp{{}贫 a7俏5虹 藵鲼熛嗬廨荐B车6豲2郫—漝nブ=[l0磜镂媁髰 2ヵ檎[W瀥鬈瓀架*5qLG_坜捐I賏D3'菽2慼Djw6笳滇俆轱7噱6綖 輠踽+焨輛諩筶&rュ礢庄Tw鷪崴晼鋤斑<:#6}# `W偺兤馽($繬Faづ@Pe4衭`砠jl:_V詜硔=uR迄没/峻^7a%粐>y餮G沢_^X襟蜚V峟!3粄9' r!Hj峠絟艋)q悔垅鵧(牧.(臠u轁]:眧せ斟停惫僉}-][73俕%糷33賸&%apwf7Q轋竢睶*胕57=K癷N+盳漙K淴ω<鹏韒(,傂#i 韌w烅蝅猼v鹰e0鮚qp巧鬮侃鵖蟙wL6*辣⒏2┸抐嵄lF70lф骥!yx勵栭穱?r菍reN覭O?>$挷Z摯Δ符v鯀G?筌c319{1~>S\dh{怡鶪竑k$芰AC\帿0t毮8j?x{dd= P鏲礀胪能GS霋9媌%p㏕[l岋'w隿夓V曊絒;趽瑮L炞秊蒉)E+鞣瞤朓窑犝 流鼷墍市r鄢+W线|k}餀钐抟O~舫{峡畒-+9Ul%+鲆州嫹迾吒V飈>x=枕哷薎郄 8u竦┑7鬵飣辂 *Oz)檾xz盳[簘琦嶟儔 碣3沈茗祢咉W^箭猝遗鵭s礞齱韮綃莊徿+X$* 笐a亖?J +bE7 梕2y#?"}QW棈(1镮Qs摮gT硵H誯蹰LaNw綛Q9奓珲焆$媒`PV%8 軸擥湍$禒陁犑唥x鈗`違`%YM;^;?穜E3eE瑶檸';頿ǹ笔b様n穉 (6噻t>X/5诅V/'鳒4NN擉0 胋李閆崷鈇O饮蟂Z憪r騲裟毙夈A#唄赺A#I鼬誉牊駦'K0L`斾A R鈾橠nI嗵Ln[l鰒 +峬穗JR8莟q姉mVPU3+*筪n)[^/剡鄇(rE O呜恺3a伬軵7;4F ,偞E5飁+崓轾倡珄護?7坎哞n礁搀芄+痬镞+ 籨;鮆y鲨页f 鴧閴厠+7莊s誆'貿靊6輞纩k诪y苖藳R蘮,絰挈玔鏮螚g谱葵娇庚餟+尬U[;孄7銉o燍/?駰矿蒓}鋏g教浳7g梠蔌羰#F(墊7(皠S.0徍7訚龟&_挙渇4礓竍讈語郴驸+紲4頊逯8ヒ?;>w軳,#h'澈訐餹獟x5引箍︵ci&]馼姫@L/]oL淰潠L嘠乨-W"Q枹 NL餜NPr猋婺L(舔rz踉誦eh?A.肣 b%Q|>+4熢躛竞+狹哅 lL帔諶帐羳8歒2厅蕴顣{/遾橥鳋k熅銉鏃凤?x徼昝橘硹n>祌sf跷牿輽#`ZI趮9_pv韍`駪 棐鬎訙8d叅$?沪Y)傎0螎淼N_|<祐[揋鏾峻纣6韦D絀%J◤M^8sZ磐鄯_lt諪|%z@喲射燙.hzu⒎桨v5綺n z =N*(V轥鍇8聛鸼/刣河榅鉴煦痶g(J裻洽鼵"tI7,C当 YIJ&Rc掁瑤澯) 衞Y敧 潊B*I苖O箞鈔縈0`榟 w泅 7 醴;1釪A靱4 洑佣揝FYMYoC.'(砌)屧91O夕嬰0eIN&抲.C羠阱謂緑:(e傀掼f x /L A'Y*Uo#J) 构獃m^烷v $+鐔B龒@ _JeWR 完ⅷ嵗猘7!;洌"Q揳 氒DWR(fC溝囉 TA 剡IB鈿&豬'烳5E1fㄉzmjlr>6曃u4籨$赦T57讲棷.NNn^}鲴唐0挌杇(E$4Bл药潾呞<邢ρI摩mgLV2>畩觐頨湴産晴蕧澱酉n熁?縴軲N燃髀儣~鰶抠>窫 匱y#>;郭瘀媉9竁i藤v骓O~黛$sи撻施鲣吤腼んs 否襅熅;線霫8bye腩錱藿=73_-件頦+崟pX偄挙暙璼/躾声X]基蓔q﨑;O早c$P懲拖-_杽掏膑? b栤7 >輰/緑t鞒彐>5煿娼迠%;>rp喢2喥8>酗礘溇z肫C@ 菐鶐=韠G嶦脨k:l.靪7-晆纚9鱜,児K揈嗪i`X妭镩樻tR呭vow +9巃j6;砟{秊t銏忛o彜lEL#,%h @ 牢d +#!堊恜跎w畲绡膔k 僁M+E狺?'N焹B2莊淫y毸倛埱评%AQ岞垷n盻6!栾'夜Y w1菒盚X& 怬2佴Y3@(劊Z蓬涕嵱7鎂-H4漍',烍%鸵.(,∮$x 34o臥)8" + +梎I浡M`葾slf0i謊OV 汾n蘔 #9_io芐-YMI抔h灜y姅殳輳P摂31 樱!fAz蜮c傊 昘j6檁4奶檯退ブA樑t迺ln捓糄j*枤0渾5#\9p并斆 w鐸s +-{聥)j峞1p騽?%盅敇cN?pqm鹼鎳"O妍腧$& z +sJ嗖i匵8Lr +q$事 +揮惶蠪#诒& D劼2烿&RA&姕8>G%瀼3鱉帹0% +Q獨N鏰|咜3燑6ah貿?60n +4盥愯E楳x─鍔蛎A$拴錔Q Z_騜潂W枇狁~鬱6R噎e怩h.*増$*穴 !?!乺'C玖壬c莾猒鎽6,0dD儀$ 鶉黀 馊J)酺21C謯宥(#美C圍S 噶零Oj8瑁63塰愬3襮+)檧兠<笷b962p茱劼8OyXTG翯G1 羴悖2<8i&LS涡虮'慔D9t2F#A@瀄s薙劼鸥賜巼丄2馀|蛃 +E#Q<ui,4c壥仭乸$辱傜*濪薛涝3饱9/ 1(丂U^9f&閐助|髁硍浲獒狃餚ph邢 鋺*k紑BQ[2)Q#褷')W,g腆,犀u婾餱ⅵ!竽c郕TA祎YSDKwX襎,M谸鲽"!溆臞}LUc橳漚 醦槆備嗌鸨c}gYx縗 盒(詏皆櫃炑D 銅! +P帩鉿棨蘠q\3獨狴X繭D 2玶攣Fy惒9&叛短H +Ef]蚎uLI鈗 `n=8X缞$qp惼#" x聞豀 @类協蕷+;摴k{汇tuws:a!>5罏嗌銇 p貯68%$徰X7,嫌鴳bY\恏荰矐03x莬 99H?9v,t&0B抆唨"B倠剙'i/0姕<狍 $0!,犄髕葧醃姖n貗訁Z派ュN:Z0拷謑虵迚郛&薀<64:@C傲p.G▁ +漍璬:ch糴G',練摋谄朔7^~n齄展鏽. 夅±餪陵j渀瘠!. +贘76^2芡墽&/遈}趙>{糅狂媉}7睮嚃枹<v憟%RF5ZEc險炋fKd刾脰 4婇n芳<黩k疷A\览 繵將6)*4w )蝇e3岴胔巻`憰殔体脙盢2蒂t:"$㈣铂  x) +垁_-% ,>;s袤[僵Z紮敹{夌/蛸縹铖s;w/o眺)$ b悷C庥,.X賑 j窢5蛃s龀;貽輽沩/縱陱奎蕂窡>侈隩r:' 揚坒('-" S澴腇L+氺T蒟K6S踫;椫/L呖遏骟麩揲N睌vmM犙p/(@麊P'蹁1呷`0闓`X)wJ)O 啫r:櫺荬$⑻夈>皭bK怕61Z"g&早*扶*鲝緌瘐鳟|征t~絒鴽w黭暇廖b'牒>}A7藼>:G隶b袈渧鮐鰌#}礊颈W峻诃骱<滫浛x髾o钐轁D轅茫~/2K坉憫P菍罘瑁I櫾/鷻钲w<汓舧no?髬o^穾蟐聃籵逈看]膳" +uD=kI$稵W'寵 2W;Ib〆璿锦畇u霍蓿?[窥踝>z橤w作6芔鳩G帕拎塩Q邎荅RB4Ю;阸乶F湯檵mco襵欺忲_净w.锞語翚涥挝,o軺鬧4鐟枀W灚>粭?^綪/罟/<椠顕/開鶡|襦踱_~铅!$携IH"8g僺Yf旎熪|雜?髄鹝煖棌悖阁峡y閛x躞熭响韦硯汅@畬沯J⒇砀餔伖光統c猊s匞3蟒窨媤踺穹o镞罪?:,箜璤箇n98$ l,G*h(D鵷"`饷砓蝌brzoB?毞^钾/啕鹫_z髤菂#,``#*=暲东錆E妪蹗锞漺鰚鷷饟氵怊?詮縳7遛奎畛_雪﹖8HZt4O$搨稑呄w蓻s诗{眔烤粲缦~}徉~袈{簖浛暹底甅棟~"$鋸`a祾&/$吩w.>w=麧譯~麔s搌粺眶鏮佧头怇駁顕鍻?\7绥懂oルi7@0EG饡甭z踋㎎讞/=忐 Э熳/'/陒宵間w痖䎱强畹銖o~锩冺q疣P8nv:脀蘰[竅錡+遾w焃W/腼搦宸瘆镙鎘抉狓镣粤XE8違痄覥╫4泄6{}蓔t>蕹S?窡>窍脽贷鐭汑祯欹iy,F$$琠N斦吗孿稲_$σ鬨关>wэn?挛/緎?}䁖鲨椷狐藦6楟鵚淆W均晌/z/j 3梐iG銜F讪9臉嚌)髦w尫.αh熭w.k?}?[脒笹分8屍"lL<戞#]梳G阋薵 +選m觖熧琬7燓駬葵衩嫥f 曟0侤]N歳覒<梒r<熷w凡/湈S雡稞崆飢癀鍙t诀致O縯頺on?[:3梠d )!Eb餬,蘢賤">g骗s撝誽3转?薤縮稃;6筐 鯧wkm釳憥刬懮:zE"厒ユT囿y狺譥邀;鴭Wo飓鏊蚾?示笩+  +K-d级蝁嵶 ⅴF鐫鄭i顡囬7/框h?钔饳霁W彑7眈蕒舷.嵟,Eg) 躈%08.!掚 C驸衺儂v=R车{橄哧涀~鮫径&藓怨8浵儨妶O*P2'!8鋺1遠X麚欇蹦暸 gJo^{虥7f蝪魋m鯛c/*$+悬樃&-ES.J97:忿糡k鯈3魦驄嘷y8鶗W翻 辏汪ZQ答Ee!imw $"$ $T影"w禡=穘己燌鑯?z褡鰗?~跆霹釪蜺y5U(媴聇_濽贇臠$厱妚8浖紨~n辐椏榉颪蒉.M晅瀱?喡|耴W怂qЛ0篎 8恍胶;覭釭闗_z碛cW杝6 ;=Q CX齬匭 廊濘bKjQd^ 惫鍤}8摶禯看T軟LO鏲S樒なsG圥8欻悎馛?菮嫝怯蓫N頿诮酬~鳿稃=躐K??7志笫馇贤紈祐yV鼬0"vK.塝!` 猟勤q'艅簐魌K0i躕熬髕韄胱鬏s痌浐篩Xl9+R也樾攭F9櫻[閞Zb +Y彻侺Uu~2m踱阬偣0炕=v~*郾槻*&I#9 +f倊vd8 ︱1!X抈$オE烯x^捅2撯蘒,隶 9睘m墝\ +<,m3 4L*擻ts嬨+髰^輸杛陯ボVY򘩝覭鋶⒉怮缫FE RX:廌 ч嗔f$緉墆濴0+y歹值馩邭}高>-&F)S蓌F飯!=U尦勌``@T]PF4蜄bF6锷)q氦0磮"瓣妹H4獔R奲溠丏伓 袹粰|AP專k濽N3e挆H奾N + +1>bd凘蠿<祼.舴惿i栆i3D張4M楝9^櫃n蛍J綐j40纳?@E蚔D爆%喰F}儈嚯u帘e蠎同┱S艬;\萵w瑂3椋咜j-9懸 玪檖0z蜾H(?><倿8~摛2╀l9繍O磀妚x琤2y 藟皓V蝈+郫>samz盧L盛HB0瑑 寴燳漥麪R巯&d赬淴竢t揊x0_&籸2松J贚摔彃HH[z"@E靈P禘.咇弱竜? +R0廎U!`> !*`#!庪疿4擕嘫艬! 剞牊&`澚MS+)R eJjfJ?靿n*Z寂Dh(T聍+崌丌埬踉2t飑!7 X$跶bL\%WP鷊q报I&M;渘s夃06/邮譿o0荶軸v瑢bI贇^V󳖤qL訢w= 僡煙澶氼Lh8庄瑫鵷穡J2*緪鼵C4G褋搧(K牣罈(*h* + \ +葤Q??璺:聀O铀朷釉|太颀-齾6道8(J%Y-vS藩撲偳翾= +P腀qE漃HD暒-E蓤bBQ姳貥阒 -O<@:榅!120謊筫%VP*5戋"'N0P<#k伳Q溢#1蘟徯8刱瑬O^襛D苝泒R+F狭k嘇 $2V(吢V8,Ga蛁籢|7L`xQ)z=姼翋_纟b/ 3$櫵7t+) 浒2)B x4/厣檟a必颒;鄹D憊5捧珬毽諐%鍿賃74PO '眕X~jxh憯f及*V狑鋛 +妦粲×A'摢1%Vu偺褉28訽朾)y攍d$孕膛|CPQ慇LwHY + G恣?1b苂 . 聃眨帜6J莌1囉IA伤Z俅Z瓑"叄庭孹 cR詪bqQk讱{囎呷諙F╜鹉瑩Ag#Q-0茆":1輽(+A*5(I眣贞干 I玝D蘶:光 鎀瑽9Ao*卽'5;^蘶.r5珤枺jwX箓襓溕N焚輄藓丵! 4楋o穑$?耤殄vg[1睶c:J*冉`袔庺鷥T4*IR^T$U鴓悧麂D儴謸呭Tq濃k_峛16>G药hT愎L8 +F苅样憼60H憯喐憫~!Yu9硑+`D抌r淧姨唯_孌K酺[廊溧>4埆jr$捪|慲 娰濑禠砆2 獊 ;"跾Vr褜- GFX喭 R0b?<@瀫 cx"璐弭,{< +埤蓿!苤 +, 崃Q: 跸ea諬󺪧蜋惌q情苌#5K=ùW LG8BzVl軍O+嗛 犊賔翴寘y$ 冩珪鳄J颮毒K +RE掸Tgg0鉶剌XjVs絼 M亿^z蹖-sr 0陙 寵PD幛@E毌le妅^r6憸挢矫kJ*e泏+锋凤M5v猚g姀-m_ J碩w6Y塥v藵笊*Jz瑯摯:+T& 鹕mA璏Nl=帐侻7禈療M(A饴D焐^8)晢鸧槙~韄%↙馤х$1趩 L"#%a賵M寘藐Xw装卩~G,燚+Q|]詛孹- 篤V&犫H#隿nr1瀁NG龗(7$邓K-餣a #籒|巇昌杆%谚z+AH繴韖d崀%*其屫,4Ug扱Za貢1/掂 X*ZYn弮;娐nvTs $b泪姩抁廹杊局2B伀 +哅纋'廀 Bp\R酆輈叢咔 X聢菌3睒⒌9⿻/m迨悠+蘹=N jPP氡訲ソペ岪DF塩d谒x嬐2懲^~b6#g濜X杭\W跊壾琷樟`妟ヒ持o+U|缎1<<刟d聤-郸^|絇 ++7;瘪PDu/u8!1p/vb6vu黟碚絿歗9絵ベ]奒3隢|曹塄wO7&$蔏倻/K韂淣sj壸8[墪宗Fl:W郐,Pk家葦+阕歴昨N-{N{}鐧Xn览&S拐/総涊#76>州n忥hf3UXnL濷暥婖针;G撆^13Uw'hy寧%u36仙5U/wg鱀羂脻IA&x[満4基,坤镸y雇胨g炏u4粦oaV彼擷釘N捍(V芘IPIYo坺3毤1E溤R,=囙齨V光糺U9)澶z甸成騌-od +zt掦N蘲譔!瓃嫼3澂2c $UC蜐4絀Af撯 +皲 @5+(&=穦嶷s飊_x4眤杰9k篯朚>}箢兿#&B能膁k戗9uT<[<"黻禇珂微∕1夑馁┱唤厸雕K澒滑鰤4泲捆潣禨驠b営@$嬰牲隼 吔xf戞蕛萌>0D罤30褐陪'B@緍b呹.O2臔T豆鹼"5 *倇 9T牳炷l恫b欑 ;欌姏猇瘦蓟后lo%孩雖乏#m舗f帅毥芧/蔶5WZ袁︶鮎曧xeCv莍睌+砇(錠讧3艜耖3囅蝝\w奟殱>記夔&?w鲡=朜=;粂吩9椋體?銆}昬 0,nk<艜娱┇<2=勷R#>o算鏞_~}n銕涃倏?箁櫿Jn~I祂臈捙菔亍5%9s踔''!W&*h./甒垭泧 鏗酒)-@萢詢蓸顅&柈鰅搗摴檒}=QX,祐检実P2暕n捏K葬擱⒋杒溕55g4磺媴嬜>' 瓾& B箄:瀅布1燻.5粁a~錌<萦6@熑楃魑>泛qUo鰂缍8%銔1 _尴'"$)臨k+_[ 躕u9>I捤0juf蝟]冤苙潽lqJo丕;>q嗐 (0飂爕1柉F"卫EtARb!Z溫6%'|賖P卄qh&/ 柪郘F1;^jr_y +BZ+nr¥諃<媾R"";恷1@9S頊楉1淢!卌油霎Y. 坣r怒g稙o蘚:B8砩捚閲糝U鬎:;),騄 m签諀y*灈6b=0%澪N歯$/<閇aEISq:vr岭尤瑳1] +GW_<任,z檯i.藚厖ss漘h 圪h褠攲u鱿菟WN "魭8隈腄6[绝蕒哩1姭欛暬蹢>誝核K沼Н}鎯o溃1J彇亜灗.-瀥蘘1m`媌$ 饢蔫4N睔x翹蛔櫳闄碎rrx驝Z鳰㈱狥C5洑邾臖g月錢z憼麔搑厖Xb虫%乿璶{筓Qk)6!憹巧'2敩檟駎,緼qy湆:ks< 琍|)S/%4Fh壴%|>q`9q辕2澼,U R-W樝鋿屺 +蔃廕i⒁v撍(枓對燯@軄牳,愯琓1勈B▼Q灗B厳 赦挆灧c冲纟邑璙C瓣f︴x/誴:l 躙yC3评煴bA峳c耻9舷玁椪*秦L<粣.r]T珤RKΗ才9;1K s鈓屩y轘舄nwsU`-3"$`礚,?[蹪\貉櫧Dǹ?邽q!肈Y鹼颤F+庱闁i圄絟銌{喅堫O鲩|齯D +賊\;V舢9楀f槕瞱媲Yu宛魒G?E!鸥A2湵鎸藐瑞x6X岀蟱鲞会,-譀觨{崇狰3>!储|脣n`QS騇蜌B 7痑Nkh嚮6 L 誗t W嘎箸繒碞>,6_Af争hz烦y %4発 .幱.恜畾]禹橬=铘8羇y涙糵薝 胻0\M嚼pr椂O鈊1瀅簙_稪崽逾?zZv/a'禈/-6o1泀藥…殂8>乃4;6Z却g皍拹緗衩偕死'質89_q鲮(4栂M嘺限 軡诙I討瓉语饰,咫苝4{Qv畏kJ矨v臿俳Y袡|Y嵖稷檉~4鰝)R2璞 鷭!暏x4{6辻3溂喖*諬P{p瑬軼6豰}騫猝谗4螏U愵喩|o趿俜気Sj鬣?運|竨I)`B乮5b鵗RG喇N嫠鷽勿踇r馇鹐楜硌Mg蹀髇伥 /谒怂:w糹摬恥矡厘UyVJ57\4R!0洼Q1φ6幻辤栵襖'Yf7絎%顸\Vc&/W喗鑽 阯14Q屪晦8⌒珽悳_|?[}樻`s穰摑琅T怞薩%濂頨䝼琮蟪疻击糙嗎R>bf \鳅 賭Q3萟@3 ]v茠郑yR鑗8師Jry鲷Н~'{o1P幏D擱攎涰Ng儤跑rv落? 鵑疰俜娱夌Va#i/陲彑囇緀N[do:{簑h蘱1Ey鹾n喽贻(J舠r袤绾趀{Q&=泻砦↑但橿潷QxdB}% H7恗5駛郊 鹐止旚輦g賺9!v窍a瘇%湗P:x麾盹_~跚羊螇W{澾RM煹8遯蒙8;*:梣y隵熹E氩\仡_M骶_~棓鏽疮Y3E:覮覴C锬買|a 愙慊.虠.7g^C蠸Z躎}鸟U抁b茴>~7]oT{k<:X aq昱iy馪夁橬蝵熲w奒Lwk鵂掼~0}绉+1螊s?荀}疺#E籿7o糷 Y攷︴m3A屡姃]邁-oD%粟浅鯒今蟋竝 臘禋趌橯赣hh3螢^蚩芫睨pC撀7><鴭l6傓Ir酑妚葐y1磑洡 ,g涼 Q杪屇)溿犝t喼[u漥簬%遅挣~湠V;/>挻(W^6輽YQz<溂/遟絪N孰 K+輨_瀀>偕7箥騷隧媯)駟adq簞%熝耥ok4&E$6[羣瘐/z篝8剎H驧斕U阃揆骺遾黧?贱K睶様V濄<1)b/LOlg齧wpI `u |l殏|MwmHt+啬%|#D~搭霪>]遰J涙s觀佘誶絯W驝5,-喘聁撱磢=M篳/\:ne[塱膸讖蠼8邔f蟖笱M曰L:`f袤扑; #kⅣhul桓}亂O捹晰嫶较薡>?件?决N?.<晤鰩椱~t钾|w}?絶鶉咙"鐑掎唔,顳9%e轼D3FYq浠;堆c秤988莧 咐傅]习祕>&.N犸 {茞 +佺妥鹢t #笯糆鍏爢'诲稬祥^蟯挥:窄0畜羳Y絘b)+ 鹪鸔幢輹a杕TmH3坓狣 r'弟夒忷毛捺)嗶'忙鵩帅橳P孩 +装QjW'`U懴5m(~窑渿CX@韋疟,wh眡RS(蔅惛 0>賧篥每x拷x7e栧c蹧$怢*萅"n週V佋R捈\f斫铠謯廩R縄~篩N*Zf9蹮'砰 Xf䝼梶氂翛I ANJ!ぃh:x齝X濋頫R{&魭j擴礧跸 98戙1k併辣軈(e;霂^&飩渎r昙At腊d穂菨c奍綊臧,75悤A庂饼E鳔Q~M燜鲼/0筲筬u(iC圹 颎p3矁喵'oV沇a/h]h塿鹸>煌5E蹛jPn1除%R璶6[vYlv骶愪旍i 錋9晋骥<伥枵?Е炽x雟铴埭d叒K觧Q gO砙k贉刂( 7跏5<檁?麡wN9┆5=轂嬯P'濁EM教;髼坫勠踛疆薺叽Р趇6mdV湛槷尬v縭儱aNl爔垃眍盶:;y賎&i煉麍臏抩/泼K娨汕諿OMs$留)9垉'7反侚^0欖茼桔;y鯩wr 7璉翮o訚觖嘶>键菸流P, dC弍U湡鱿蛭浾麌圯 ^ +駛0厃祀臍蚑暇愤齥p +Mj5唦86酻憬Tw椨7霌煖`V}彻OE碘a{6脊悻栯;洀柣愪v\模壒矫檩泡du╧}?XB隂<魞眍恌m$炱7wd鵾 剩Y遶黻1餻?!傱钶=}.┉cCI瞵顅V!}粌缍;}礽:K$l慂)閱f訏敭j我鲇犰?遠D訓$Ea8乥Q訲;鹁扶 R堠>彀赒. 吗鱷脫 濩\辧0x:灴+j_朢C豌h$#MMn企/備P虫岛托柀鍠(je樸4;适3U雰范d邲,栂l慧h氞8唎;蒠o迳鱵y p伟豢wn癯膝F耍竆硍免蛾揆,礋斈嬎k坳鏞鴉3漊倏憰6瞂3:3J騯^炻亞馪'1M阬8}麞3H蚪勿 &;FR覫:闉胐St"*6炔8AP苏2圛壁葡(!X0嘦,J铸另忄儖wes@嗍魒tgJ 鍍(粈*袓) R +睄垍篳GTrQnзy嚿锇\fY隨\;K}R^亮!艸JC罐纊谻;獞!L崲瞄弬D孑p"6哵翈A烂棻B伽A,弎v窟l m3\ Hm沁ゅ 扭紭+Z c柋D羾-侸簦="圼@姠 8`燢uk炰珞蒿0e键o︺sUIy.q瞫]%佴]潶ug.妰M{2<gA欂盥 萂}H.兊戜ABn龤謐菀9睗]E汻 袑1RTGx嫙溫羴砇拐0稕:鸣;U曑衦鋐T渆+/=V 蛧紨i愂 湻/7结菡盹[杞! }な*扰Yu幭傌iAH8>n=軚僳挖WY6菂嘿犹>虴捴冋吜尦唱w +Zo=5}d阢$嘫劲HI尤&懔卌u0銘輿Y焜賂埀翅閦u托d#,R_2c笟M'IIwx嬞l6 ``Mk,婍ZM俎,/ s\铝<挌n%B毖p\g禯q|? _V柦繺4頷x騉仫焟m┷劬nMdム熿BoCzQ蛂饘昳 畴$[崖矅)XyIF朶mU疍9腍覬"坮i樈4?物g/;蟼t装1N6冬﹏钬>漪!翪橦Vg贿V砹郜so鹸鉖:=夈梟嫾 <噱91i5YH8墦摷傅輢郲^]e鍗 w}o劀捳灛,6禹eY]楉+穴棗梍毫 蛎M烼獵?ZH +\F{赙1嗣5(Y5 +d栉1躧濊片(/憌PY,芒[3UM*0炫p龊;|jZ齩g/聀柂>1痶[,穸9b 頔8圹@ (bN禍璵筕3=wX"法涹2;-#藲慈N}C*崋詊鐯爬逋-怿喻鯺!OA棸x崷浅饱w騮#|﨑z播HRㄘj氋 珙&X晦(蕟殏*冎U清 鸊ホlFL尀茚腞T{琝(粊燕"蟏V綃0!拤%礰觢兗喅wU 覻匚馨4m渍z逾匓吧 EK晌Bf唑 {;w9+e88審eI韏z!盬眍9)Oc弎╉﨧>傽"麩腔yu瞵E妏0Md$瓋T2 煗AN:h%i 示鞮gN,#蹤恴d|1溈;厦浃h 海拎斿CE锏{穣)螀^餜^ Q脷膪8窭r藈惇7蔺遍宩 漟b?>*垏擘s;謟貫QR:8u搎!夶馉,萣t,夜]瑍犏鯷>劐 w*筫u;凅宸(!嫺-{鲘嗛[c/笯 1<FUg狴弎寒譊C)U笵:c亍!霂(徱 `把%眱轪T1ρ!鲾蔝俳蚠S斚2 妱q>B0婤笶1<t該'"E惨 俔皼闾沸櫋惝Dn_稺xh鰝 唻蓃3.R魜泐9 﨎;皈Q|0櫩m鳛I陿,邠銺嫀.儨!', 壑菄&7饳m nE渽A殩谡踤4O埝 潀竀!]g0瀄^w'/Tk傜2鸓G;蔡峨敜d孷@敀浱,g4鍊賸 痃w諟H,琘#\$/&;苪﹀1洧-7KI僥({摋E裝:雵悁&2愯吳8歫耹熸撓?ge駐`[4欣飕?}嚑瀣劭 {@1>DE驄?,訚wP墏躥 qpk4]ε歽饡俜麶 +詽遧2"4'抍漊艭Mm +嶽,0祙犽; 坧!婲%p鵹M鎼揀;~Q嶎锟鷊?<溂谮襾fx4饙!苀撡速陯Kn繅Ah窐づ%}怶7蠓%;*}Q哫]敐绠緼"YHG/\蝓估7乇H9旱 +馑0緺贉躷羐C咇!0Xa; 2Y@隣瀥1帍 櫀唩|/壀fn8M趪?fj ]镓F榛]憫蟦g砦$稥1窠欕 y羗69⊿^0)筝鱻NH恘62螑<]飬葾5|憉4`Z倻氼D1FD鐢溣8 容駈orW鰊繺H:H)/8剋剓兩僳秧5黉啥$虮锵X芝)僯8/G硹e玮s9淾!攋a楐)傖/穙w劏[湝}徿A怗瀛愇>仢鐓^伢鏰磫奀淍臝rリcAmm駦鈎R>艅掫慗仾玦}弱$93虆B&7c驼j"&2黬指?{uo昼?7_A[襱 h憒5諳郤讻珏賢Uvv鵦Q炓L滤=縸还7'鲭o3Y锧瘟赘.@A鮌]t銌缓 綤歵L戔q}豠$鯩1鶣N鵤轂#T谿L氈襀恠E韨 +Rb銜樘X!7脟媸磜扄1昫X&焗穪l毜3Y緵炀E?+儕8#/爁~x|\橣W%o13緺鹟80F4冉甹7;矚膂鲤fv哥荊幙薑 蚗Tq汲鵭紐oz+Y拝)窄甪捇赻'#咄v繐礮健R敨j=Y-X螄r愒" G唹Y味稥猠痄 " 欋峃0嬕ガn0閺_缯超:恇昦挫.8!"-/倀6镇M漞=予n?酅鷡皌%'v敍譴YP踰m沪B桕F叽 ,g╅龂潹^阽鶎a&0G>嫝S處衾t@C賤锚5BY澒(了{啽韞3E雮R-_硢n打翸V_衦Yy莇_z絙h棗麣179EB惹冨 軈6%Y/h$傑-w螷螠鹄蛑bO ─饾i=~e%鐓@R"!壢髋!B~V蕍绝蜷< +0"G震迊n鬈h9Z}U 锝鬇灯Y2 1 >坅U漽羪樮f韀E'郷o*5M^u鱚t腒]Yw'7伷-蟐 鎜e} +イ 硔胓I釃 Ⅴ聩廜鐳+N蝀)"匾=pz摙{W _驳轕h茊 Gp:尋hb/穰M砻蜕会猊犷嬺癊皍;y(b艣肱䥽沛I &"DT+喔覐柌Z 负F秥院 +佴Oj4y䏝磝蒍E絠6) -J餔^O柇秛!駪鞝W灛l椳錓1 't}Rvo杏Z輨m 詈脳){態6Z:E阾9谶趻X6 on^U 鱴*蓭IU_ャ艊w雰烢鎒 E~Ы&1閸Fw涖彯8Z~犡崔t蓞 X觶9酡炒}漊棊6a序瀜F鐞j浑踟⑤噿: 蝂5И$搔陹b鳡8= _D> (G7位Ш0黣1xv|鸚砧%鵗甧戔赽x競昿/:t齯)2賑渇|理轚橆?|>Q磓n`8攣沩蛌?L朹"8d胊 Rm^V /.^餅|縶颍 15濐鮤﨔纷2睖薃/z竖H2f二骊暹勴K'rBQvlod洄g欰F怴H甪 >幀-杏e勆1$愴,mk嚔聑胉貶+騍.悩/\[鰭2犛值F:! パ<-^D縘矸'[繽V;磹K*,陿,6隼存AtЁ8z4濝!\6kVS餔寱爩@ [4沕*B尕}颉>埃O燓僰]塞蔗Wyu +襬 +呝绹"D偑v惠友鑚4}伇mR).`K絜2B,8割宊恼欋-5鬢<萨饬b魌糛A5(R燿褂納檜絒荹hz:A斏,勸> 靭S宇sR 菶>]趑丝 騍Do絘襠odY}灛c殼囇A 罀驜m蹧rL嬋:*L鈷3捆轭Z*Je}峰喦^譧9約:Z轤进嬁ㄆ/Du +mh0躿X壼瘼揘6.Nk 羡"豒$閊¬(鰩Mg欐8榫ち%/漙蛂9面4 +鏀禈7洩U鞲h烢萫膔0t$u怃0Ib;Iv馇嚉=刵结(d5骞様麃щ]峟/豺 鈾醿$軱g/鈎鞒蟞8?(厦炱r梟o4媾闺-!妁J鋫胏?躋-W+◣&僊%9懩R 蘖Ag|?^剿#藲閯J陧窝z暲茾TA殚顠跰:d艗蹡9憰L20礶o4}OG 爪勾AY1P钪阏Rs鏉瘾?鯑_A 瓳=仁,繕顋搽囅_*Pb~閯嚇nh9@ +N涟!蛦K輾T}蝈kN葢;化Щ穨:鸯!@;k?㈱iY=嗴i瞩 ⅶ嚷rBV冲9嘴 鱿繅0\搊歋%A瞘yP)/館r樁瘓 z韲8涾酘1z 鉥婎 L鶦 W5噱\P尸{z~崤r弑{P#A笧j6I(柉`s躳尔[渧p牷+F纮C)Y5闰 鞆瀹亰^x9﨧挐A玧縀Aeg┄佰]Q孚6~p萹僦禗旬e(&倣掯蒨馝5{7榼i9毦江a鋋 {噬]ig含廓9屮翺诬 3崐|踏)A峅Z瓲賞z唡!]^Hku 稐灴"(@冥酃!蟾 Z(x箣,滞,库吿06"翚PLVk4 J砼買纸Tǖ勺驾晌幻脒枺; r婽扽S +d<褒3/簐侰脝廊謄Gyy}|L竷▎ kA 嗅颁埍J据{5埶#戃鎵RC輽騬癣-N堂裟 v57USG45痂歕!零騖s绲#=蚫娳羒旨燧联) 滀'Y)鬎渕俬&)i鐿黍惉K浿殈媺53e虐舲Y鹥羲縴踥R靨扲裂べiY潧0=B麜1-铕躺x砡喋籬蝰圌麠?雒_.y蝵&蓑组珷萠錋:O冴惊俉Ur鎢/綡9:瘙宸痎燓瘃龂凡=費sy鳑疧&=?邼;睴國疯漉昌珞8眧痄樗_齥鞼I琬鮹^濣㑳怶_ 獥q'hw哺漺藜~鼸t走交縚C忺W#Q憫榽罪庮厘|gНqA轶鳄鬟紐%?<-銀9M 绯X瀨霁X菌欬溂W?抇9~蜃縸夌~枔X迼>嬪Wx阏蒰 +贓懭*n诉<稽鴫vQo伏邽穦鳲.匋螨uE擅=睦恺庄鸆CD桂錱繆姣z蝓蓃*_!L炇撩>魧]\硋;)錱r'鑖I庱鯖?7䥽Wr嗠M棡抢Kf+梇'M谆繏UR侲怰丸殒@'5fz钾W艄,m$Iひ齚譺鎲=鋻糑TJI韾毿bb歖菦瀑趮I15g柗a叴E榄柺.)斿图x邏Lo:SAm覾% 7槇r鍃0:J婯娃ゾ瞵dm 肍捼W桐nM|H喳鯑 +龚v8!@K譡d殴璾g +墾禘5禹-諐擞大=z悭;+鍖&買5~憊瘬鯡鸦s3b#E 惴([CIIu#櫧m鉢捾9斸3V,dR爊}+Z_T眦m抅堦堟&矸榾?躸 7,HQ@枖h鈪远&澪/")5nQ^鉥9.鉿< +蜆k謳琈em 艒"<)垥(V1Q!晴惨g笖殳-糚瞈黍塭蚛gA +馿冯:崷輏#┆5汛+ +q!m驻&e裭闰)胒<悿.嶧迅騂5啘5脛溉F免鵅Q菕<掖檌/lg6?/:,Re90;褒 h梳T凸(6ヨP讎Q (鋛姬[#N俆雎t枤V吜劉m<渵xd臔t-湦<筞1')o婠 #臘es适叅tn燒~8{&* P踹'錽E焣b蓲搽1薌 2\匎扟破+Nl穐垦tp賦┐dx-i}7財阗朊嬶$#绀撒梣u輿縊幌Tgs倘迮ow?餤E薄庢趦WT/U b E%i0h6&刨ㄞ漓槣愃xc(c厘/u9+(I飸ⅳc乃餏唻ㄍ朓昱抝 灞t谋1 $ +韓yYg鹾^痠瓥So5搱螉蔋3枹<崤钯龊E葒X*S@郋嗝N +r盪棢l N婋: +葿幹嗢暇-4陫颧:拄,祂u !y砮Q磧Xb丶 i&e9R4Ksv 靶z牙 4 A(沅"彤撲0g眚歆洆雘>B9䴕詫唛螠l寧$釯銘澗 o酔+走Q酛玺簦(.琒枹羰蝅诰U詭e?T{Zax顾J]艠a蘧摧亸|揞_Z蝶5寥涱2J忲隹幰(09 瞫遮狲JR糄忭a穞絽PR;=Ee,%蛕嬞E j'J湘霟VG?N织=W彤dm'{娊足鶙U镩b菘媌酖洡}n{6 ta,J 鄄蜄/数嘮>&ㄙrD塴b&棸榁i")s?箶寏摱0蜰p@1qen誏 /,SO~睱詊趰貉l`*枆=w4'埁z輍酝?梪74殟D畸汗痪旰 嫧p,S 槀┄L /oe娇UM]Iy3E韹bP藒▃沶m-姴>戝 B 柾Uuf[3M隭f塒kz峍I=.x稊惆岛B癗l/P8G7A诀隍IJ&p(h H澲 0矈92舖邫o鲞胫醕I﹖R卐%(I"藭-倄蛬呩宔ccy瓘犋鶼v0氝囐^R靬楫j-槠黅簟聥 趈耶 T柦++CL(0凾_H縀4[j嗂癏&尛ⅥT絞赾藳6) 昗^z$辇8嬻C訜R'e/滥w鏎訸CG罐τ嵸q龒e蟙 !卣h9/A@ *纙,fV夠L3鲡R4=祪&詻n介伃p/1Y ::褦壉喠冏漕C#谎(*@$<贃H匽R鋜F盜嬄旸 -us娧!拻fF.錇j,1徖4M塍麬`3(BJ燪∝拗ZM炊禿杕鍮奘C喩5u&{Q辅54\|"蹽3堩♂E俟芏kj砳欢kb(r诊^坜疇[L垖Tsd2%R3b4鐖b"k較q擿*嚔攣求w钾芢5Hy摂|胵怽灴梬螤vj- 5亩p.N魢w跖/俈餔恉{qv^V7萘3轂恀嗳\&JC泌羔溮^&JmS飝釟鈘5玩I芹辰嶀怛缟蛽氹az~款宊&M~繉{鉸とcy8K葲曗僜試zr82 !锜 w峨B嬙B8挾鼺+牂傘;草蓈剽襩前徿嘣 巘k鵓 S愣Z)d4(茡,3(%M4 r1Z- DL萤窄f+N"蠢 ぁ>賐×歁棦"朚 h敝疵傊v7殎`貞巡屓權嗬P^絥针6M'"摺袐/餣疆亩禪^象6AK搰劂繥兢`X:⒁3%M&衊鞉馞柵皇em7啀尥&o殧] +虭屎葧 ,鳡婗 XZF裪湔檍`愅娧觚EШ 飄6q湵i 夑戌毠t迹梧UVA嵌!K倄O*莴跚閧Q+ wf;乩2魵bL:鋮a图p tsa籯p祜韣杰栤 ++dud賡荾饨柣什友饳畑檾Vt`R\U儃'躃蜚啐]{t亐gXg+(v *0 鴶詂v%B%駺V鞸d篗值慹畎\屸廓\Zo8-l礬腦抽`f%笴1丨V揦6i4茼m0ε #,DrA[R懄(饪>聦L嵻沾!43 龁c恸Z]M鑩郣&杲i謏聣衠命3R!~z騻 =b 嚺剨RI礬h6A钊Z_7嘫砮怰I笴媛瞢z朝@讃庂]痎Nv^Hjc;罭掜7n磈<讻垲 /讼d2姱懗~r埛匦5P銑: ^蚔_-?,幘稈呩L穛yN 韲.8?;蠇顫瀹qI;'箤&8;哇Og睡游5枉Dh-カ悗r竡5q擱k赟葉Q$晰CT滪閍gt-(&闪.T<I3腝oX黑K矯榑f椅鯊tc蜶阮洹谈@j55s?!宔眿q禺酽 诼滇O唩64殼0R綁)覺.荺C:症/MsA1鹧羶##<蘐L轇30k鹑礝 塁淗P僙6^螥淗%"R溯蹉 ;拰 M燿,!y)b︾Г"O@骤/桯}E麣R啅 9R溾@Z`Mc$野{泺; ~殬偀2草于圂柵~揹1)O媆蕻翣濔\ +橪:K孟"\丠寚1焾R疎'蠳]烞櫵bn瀼抖9D#鈯+OU h+l榢苳才4Hm` ^,憚.E榶幊敫k8殭椟2峹譸82  虽W"辮a貭~B滿婽Hmy恗衝:>鸻弧}⻊谩$◎爾 鋌氞魻V瀨辢伺N菻(LL咆p諑金軙沩`Za焟o%淉c奐㈤m瘨蚵 4欈姄 R唱K搀83漎嬽a?2B,╩88覿W7Q~e糝瀑1 sM阇[嫾s邿$菕A +"耽矧7颈9鷪Kq枱呴!|駋磭+徕'f + +r劵4韞Z輝蓧Bj茡妟pv幏懊=奜稕炑1cJ,V86E谋,菺8R萀>褌y墭佼iDx蹈 [#号赵tl`U0$W 駥a^R+ +"謐64藔9=05m譒殜0g[[($aH统% 汩谠 巰蓜)祫I昐>兎L!T瀕训簣纼釙DP泹H,ekK<o?+8锻7d濪軅 +88 椕 倞nIjr-怞柺狲)(怫疋&)i靉i舕5嶮yR"盒!YzR;笳3鬲 xO"塩蜏t/ {顊穗貭u财%繥Z#剸/莩嫽_琾яhEF褓盍/介Q8*OX9胎A艷嚌崴U㧐=xR饳T:G2:罹a鐕搟桤z輥f罒鳺蟔&撯鬜g祔憝mX仩勱謕郭jy艚/w魩廨璵f{[悤姅諉Q翨毴j!埳=)鈰頀抯眸 蒇5x=8芫 &Ae?W蹀-ak媷O<怤鄞 ++茘桍'&0n 塋囓 +糹V歹,仐抝 瀚rx !$1偔悞 + 2窅 7奦粣E侊Iq巿覕蘵c-躭@t7傊(徬縪眝钞葇熠&撷@.U> 鉫.葌)下Y困笂趗罎n 摎 訓S縳<&B,{HS璓@(9IL峌峸5汝揓餝J&亡铑b緕N俎鏆Mr5L`/鍴3:)诟QWj5娢祐W氟uc'穓 +j=S牖4妚e┤5铭澀-嶧菈N.懅yy瑳?胉玡<谻擑D蟹恱n喵暸!I 窭a穔嶏,彑脂m汔0#-\,d疆蠨J85~绻仵!偯嬓湖VMF%崮n' 纄奟*姍e庅鍏!騃臥>f'b *9野'傑帓:Ut橑瀗e8僬琣濝Dr>) 啟mp盿18>疶娹6( +搌遻賶(63N 赒塄瑤u{彈GQ|%'W隻緋窌┨D-#n8鼣p濋i压(跊N" +瞧T6匷澢 +纵油卝纎始穐揹5D爁賓g颌A>r矏P:-7 +M;3疋祅M申鏢-劫T1榼灛榰(&內W誽邎J焁B 俞@豐4Y籗崫 n05徆砵垎3Cy拹玳>倎`怖酖h東.fY3糵 2沪峒,K*=讏t詧N扥mT 弇巿!  de d <塄徳僄 bQr11逊秌L范逑>冾"怕8i侜As瑭2l<散G搑,)V9釥X脑v遣謋鴶*V $蜔uG镆- 嫪魼0 $Hs9藯`m淭 +觸`=欥"-o卖L院梆嘘 +匆湟崯&7^v!-騾 %参PR溚Bjn嗟 +襽2ざ-H魦纭*適"媥p襧鯜 +I疍幀Ct5K扱SQ駲耏辣娛,L>U斱 kHM翳邻弔k)J}Y阛炅4卆T贩'%袚淴蒁wL( '8郂V{蚒21)$<K1G荚憄v(O圭偋 +\,@46MJ汄B囩 唩贒繞0棃[Q唨s +[MR诚Q 喘m$YJm鬀胣0膋XO秂爃抽7浉0M0A坖塊y東 +0DG.P, 嬭fs{偼5 ч,衼ma`i0fP翅鈲娨HR喼"8搃$1赂C飾韈A扇禄匮 緉w_9F#薕虈虡n];螏泐id裩趩2hg埗琅~|4邬*m ~h6瘼c較憒d赂俭+Qb$ワ'QqmZPI锪%Iu䜩'夯垧轌FfDz飣eUey镗{C訊肫{丂8! 鋺C dFy 凢3葘4s哕w譣oG蚙眤邓萩鳋9麥2B!&炬 牿<訌T>剚翧飦皅y".舁N70殙銧'A汤HPVe;<6喕,e#>2じ"伶萼m5朔╃睉擉倩丂籷p鱽@提@'!<虂?/麌罜O5`宨>╛b苗譆;7y=z8嘷>須k溊ncv钿緘记;j籒纃 芭o_镗僸F +曹$I写喞旪>ぃs寕 "郰B佽堄v(罈松 bFio鶄咲0s 浪加&葭丗帓繢0薔Ыbz(rR.>q朆按/Kr` <勡Q.袦.,複郟N6x枴4榚淚#斀UD個鏺_髻婨爉@8x順BA婻Q瘊蘓~]遳窆8坉0飘>U旗眆寸7颏`8K义敖憵B袦7`励贤灍?  d杖8q E0膴H蚿H筚F巨?q(ざ瞸TN8C髹犤0烨ж8~绵_ {椷+偳蒅`鵣 醨)惓熽t郹屠擜煺鳤輰L裈涕鼣渘h9獏L2匜9* 翡BT 5p栍鏠衊h朋H0鍁qy鲑亶C$纎 Q^绑0> +@+N亢聛1皺DZ鄾@[7鹭u8V麅vK@翧唔鯜皤恴6狎a暟0Q x過l佔俌喚豁9"F艪峄% H7at搀v〧衈v鹄$8P$亼y9cc酅$衩醉m膬嬖.力鲝!S犺膲耍@:=j,04 vz$@偑皘#瀆曁.)乺白a 滸h@0 #  +- : +炽d糬5*z疶呷霾>DT蜡亅EC幯T`荿╂沘 ,#4酿 桏u坾 怰0D0T ~ + 荼义鹓妹糎徃G4岓緆|駧嶁^ +膩蓰$弸% 远@..敵凵麓钛:52豾 怈$3{拰%8HG`g鸲`N+ @+靅醷隽14"A顽媥|},#w焕薌 鴔< 5啹z巻饺<炬P#x蒈7t ,!孋`ou4E|>蓡D/(倸v}T丽}c鄖}鯶甹瘈 +實褠樾~訞0G >U)蓫Hl 熃(l裱#鉄崻郞:金q趫N啶d妆勞焕0e2XB趭憝蟽t仐 -{嵺wn16ー~A邵乨儐 K`.楪P;0`"%-NC) /纆A亴B酄 烵咅1$q 塧>($S.v0巃y4滒鼗衳鑖o瘷鍟a$蚗稰Y孺莴"茾 {籏2L疏?口;z旋p橻8p饋謚Q犲 憗耟,棈捵#2c痷D 痨e嚱b{:6jW{B8灸槪綍L仰#尅'牿C盞M\*8:J镞塾Z攺蟐 #烌z(罋| +钙氤 J$C痽剱kt嗻韲 9餩丁馽!患人1F鞺薾{鷪@楓60*^蹌F|($5@嵱^'摅骶鱴鞻 啲癩絝耾0墣 +a9b?″鬀4WUc②敧韅给蒛i*G鷼9m$h苚杸#渽傻鱚儛鯄`蠰瘁塀| 5/aU * EQn釺憼 +ńi瀎笿┐旿/rB尲晋Gf n'襚踋~4>DN l憀_j|o蠗攉t蛦堡r8.(=#>婸*7P鱂 豂歰R\鰛絟 圈0B欐K汹1'1措W) + @豨楓i@啐a M1< + h铃y$"N{壁伕K犃^衆^粈t湶R誸z杅*╒梉弊蒈^ d-蟕0啞IM@\A{荟和;鲋R孀'畎m/p.茼w*"a圜樌鐫. 娹丏鼊澳,萞痬帰,浂k涊L4 傜CX苉蠪Fl膬啾丳l h②S鯙槁t儍鰖靝捣b}:#晾W拝Y澎#挴`r-殬NW遏,蓶鞰逘S|@頃'U6+j 孒睟Y5o楃Q\E墡3蟊浃╳P*&蒻d暶牲)瞓)櫅/l@Gp V顠|#s'粳[DjtJ虫q@8] P,罗綿颐 #ォ捴'2庣4 蚤睏,扐籶Q]m壚/兒许m$/о#vm78d8t|(Nf-g 懫闇1纊丠\P;溰aq{幖步奪紪 +▼Z(檰v"D TD1B墬恴袑0瀯/z鰖艀_ +罠&,儐涟'畁P>暷@接#6 +Eee礷$zJ!殄bkU庺禚# 8UA,興u耽k 凥zC榊廬坡;6A/1>?/*卄X%蚮AB儚梦=籶巺殉@B1虨牚Д猟魌k朗N霬 Z9U歄U杫1 蕝Zg洉猘袊\ R^巘璉%F步^2=]lL臇説*殰43W'P-奊滩鵂賖骿⑴0R漙s8摜 ++w湄磈NG獬⑥鐓R瓆X5кrZlZ3犸'D瓏Q働A碲x貣耵tΥl耵尐U>嶁8曱屭^i 啮捩/gG1%]唹嬈g肇+5YA檂螈 毲螦羰zE嵳c)/Frヒ糝祼 6e@j慙辦焾,吝h蹦l捍(.苨s鹄pA7!2E饄Ao z;UX2s0Y俈w0b$塈E 2撑莆腾崣 o45F&`觌S顷胏┦储V;递9R瞵CrJ儢*Jど瘗Lf +∨藆x力扟g7W[淄~贡Mv}!-屒%咸*玦.句谴h!M繦S7瞆┾Rg嫣讨崏襃0淮yw浸劆MJ 92Hf脬'#9堈1' j鋻j裆Xz>8灚o<絲s檇孇h3胸)歮h鍸⒏Yl曯^&? 񗞃岀知濄K;9s嫑"删i+嬮阹$9H莋衔n載ぇp&嵮q奙iT钡]眄芌S;7'vq1彸説D絫uEO/ +5]te%岆?C眎35]-鰪缁G驖#fz7<霄e/蘫 fJK鯄灭AA乆m{C +BZ滩RW"滺|2[*揬栨3奮 *臲庣骟屯|c侈=4>< 嶹溰紖馻<3WT:G5@Z嗍隳J41(.h諤2:娰凡3嫁栏<У凥[1陕2宲}p敆恞塏祰谦;ヶNc闠恫级{ '' +硗狷钮C7緌z幛a礵瓪)-抣*W枌~w鷟8__虨吥鲊4Z婈裆B};s=s⑥哔=ukg隊m湵O 蛙Bep$S莅页躐2F珍劕跜1|_熧緄f篁紊[磆_支 7に8]&贇d (菜朤@*P*&趂f2Y|貙$()烓7b檌岲埤㏒ 駊,阑眪五>Ie暅.5U谇诿3曨吾惴灱䙌贾Hf'蜗琞淾=n\^8t虽糸嚍x鳰荢齜s恢?跍86緋vz髥婺盥噬蚐宾喕筵楏瓋jb貦9絰蚰Y輑&=)ZFI揝歓|*.[厖Rgб?h蜕礚cI壎u玂K匟KM膾児速&纹9螻q +(嵜鍰$>L鋀獫5hK%絥$'2曞Tq痹\o峯坎皅袙椝国Zkpxb酟s黳沟洨nIZwj暝趄0f衸B②;Rln+玈K鏦|跹武憚7抯鯲fA/2;嵙yQ↖29毾3z,葾<;$ ,f$祾蔕W櫼┮l +匕=yR嶖R9h-遗鵥k萏|MO 挲蚛u^P +J膉g娒勿H揪j'踣0糐T螫缍nl蠟)6擓9^n儬穠忀+#脯晍gmj酊冼蛮侪+娧從扁tS ㈤チ覎劫嬮蕍壕摬E興苟Po/褹i嬔q&鱝";o+Zlv7R扮rt*檯l}-灈鰡d痏鮁1Y諸\hmUK絚帑㈡D<743鞡c.[]Lg蛅8滨抬綬雘唓肔鰢7疞.^瀆/7[珡<簟?%P)凒Ss踂O灇Z<\>熀x犷>)3遱zyAi洨笲skb殪票蹥搰gf弢饳蠔嵽N惫!穤痍=t䦃Dvmjbg~ 剣ふt 俲*S^胛瀃=v狭 飋M澽诪綳?暞o.U&为塭諝≠|<1K0攬艙銠尹艜C7蝡燸窻穥鸲{>滤筎n袧:瀾c}h[焊.-(崸岳杚* 滼V鎂=w#鏇7w.圝1+ブ鲣夤撟輠 Y_=q螩淺> 3`/绔菦S椎ξG屯Sg陷擫5榟-菃懺B22穣粫]Bp藞鱽O!0~+朷P]\y徭粸9~}媭"鐱眪8圬脂I.Ir筇;罟閔K埁Tm#88箌=-Ch劆!TGPU諞$へ6LS﹚沂瘧df0~4bV+閘y鞭蓍Ll氟玈s龀ji鞌泧r `1舕U浰g.芙v霧尣JB{;Y^n蠝偷w屧4舔钩愤p慏冕醗iㄇ礉殂0h '爵襴苂*Zey裬気胶t鹗岢魑l^暤畹gn箕H6ュ鎣竞^閘麋6&徤仰┯WW60b.__)uw|"稰Z;zW駌,93籶 0_至值(^C云髸具h-L\BOM'妟+憴隢熢=Z鹊g)#倞hQR0躠嫇坶翭墍濴'"f;<4眡*Y^LR卝u硎漁if5_潩^叫<吞JzM幵 .O +%鑵ⅳ!镋蒽5謝4-TA8拖Y\> 失龠瀂>;X8;?9筽;0亡C>l沭蹙P劆3琍伆蒝e񠎥澗z褰 迨H跟 H嶛臋衽洣V瘋衈鐘峌弣e膔﹠0[Y鞳熂汜O寡J*湾`X抙ti tS猳絜}$潟|}昬匜4>套 7蚳+鄑.挻輽◤硘纱z畒4'&R吷耖#隚/\^另cq 櫒k 斯鶱c蛐剃怒Sw苺澳|サ+扱:y唿諱逦N┍^镯瀯p0鯕jl奷夵,凙gxt皃7{H7 :b&[欜l背贅<^朿滼夢紑5b指犁00孷s鈖タMj齼:+鍜)^ZC涴5崬>u泒篻 丘璼xPE屖L*戭遮獲妃室瞽愆kc┱蓹嬽摄娬/搡鏳N鍄水爪畯鐤=檅摜2x▅m;{jb窈鯘踁7o.7w3U-?uKg伴+浟4#鑫﹜刪j +蒀嚡+昮饓J3S\尌鎬耿少bs7焆<摣.B2|@R雨灯r茒Y寛T;b嶨S巢严朩捹檛f:欒 Bn|騂够玐Ak-+Y曃荜鯕 郍%趉O渉MkM鞱棿v8s},詅镜 I褬8眧鞄箥9妕骝.鲔4/pRgL?稲处 旳憆rI妿g*kノAHX籔盽艣 琐yj%垆D4-弿 0+fK3誩癊J瑮).U+6j笏;%顺淩驿姢7# 5:if杛F*+K觜nS"M剮飬4Bj賚锶檣w庛矦捅鬇O鐾c*冑0洭XH彗Z摟+璘=Vc剟?$=? <港四瑍{pぺ=覝+,銡隱养4翑A3Rg馔轋kb7堧抰 +#b琑`牻^ijF;堣曟诬鶰欌j┖貨<衔聊"祿'oIeZ灎` +虲輽嬅YZLF*逇薓牁Y,._he+欌:#TR┥墿8';穽蟐Lょ鮄/沓bz毌,圝f奻採0枩霱沒荒K5煑(冫啕T4 +!Q/Hj]R浬霷苁%P靺黗n疺C▊2A坡醜0h`h庆低 欜rO瓎癶夲C+4Et篼羕k憠1j锥卍P灑粥膾,6.%+覣BEi語t=殙籡$E&#謩'r8s +U歂坮栧蘈nB忳鋁滋妥檳~*;竰in#艻剖'︽l1%E潉,衴 鴅w~领欗#w篣则找鴳揥 +鮵牄絬h/Ssx黾?a<侴鼅3曨鎏q癢磺.\蘢&7织>)F堂纚赂﹌- M佱猀EI息L戜K`!x1V7:GR9噛蒝^廱,W躈tl,`|郇斗S 块N%澼耖訍$惎m +嬾)|*劼槯赓I^)褆~O鼦驮l31}+“F杋u!!遹 Z蘲r\ Gi6-i +抃Y7'晴Vo榐揪载.p{閌H8觟.g$'偿EM-G寶优繽B獘J暍4撱"T!磻熯KQxT檇鯬4鎞硳恾開~父p绣0T5擆咵+箶+n鍶膂e.*錿0癮Z恮bV訨F炊緌π "%X裈GO茨蘃:垊詃b掳z纄8m翗 '-娚Hj嵎-箋鑢沟で[孯$$蓸j籫T1L颜bR/hBD\>蘛焊O!ShlO-隫!曬菱懗7藨摖箽璞IEH謀y]詓 賈os|钿怄u搵g[儩XL段澔观淾枲尝趹禐暅2a楧2FR&亩眚Z_2&虻C逯1偼z渘摍 A蜙A梤|併 +揋B譞冂FqLc鶎韤Su G$ギG{瞊舕y6S[塭) A#^桁=t)窙f"$o*;[ml艙媒#04I% +%嗄L,勋鮲椻髞愨埨e嗰熿 螻虩颩澣昗i02袨@ #氓pv髥铕瑫氥%,溿洮 鮄7潩随ePPLBC^ + 4i鶀俔L鑑U箃驿凸D󠸨TB7麥X +胐2醰sH厝珂Y独療!惓枙-wn截.t门鍍'6N灊\?ぅ珳柍R銘H瞬6眈3aDCQsQ玜jY錦u枉/顬5&h9瑟賦顿淺秊揂L_*NX墕菋s< (筆Y⿳72s8棓礣>ad欶ζ觊0a攛4W.-s'y薧缬伆4骛麅v0诪8")姈艎$k宒蔉FOTx=ke殦s蹏y嘿嵠'魑)龋A毖P0 +畅,H$rI%|,3鶈d"N蚒籟擉x8莌 I/KUUk蒍櫌蛒獞-东峖g|aa彖 W覱<踉房僟傀芖魁澦奋拱|錌1Ba 堛訝f釁~緿馮f仂ofJ僉﹚婧>O>徿褶摲唧嗾活{啾|趸瘸限u稞/*(匬H +x柕tHN㎎-Dt痕.=?;?w底辮彐垲x﨣_騩稂逑锛沷>跆'1醦0恡聒L备铛H7厗%Y3lAc(3l溿擓|魅憇棷躴嬉折飡桉=}怍鯎螫趦儾R磌YYs袨賈;t7摒'覌/颠减囘窥沖浸鶑伪kk蓓0j♂h\箽善筱`!熃x眭7_藉袂首狂祇3_z釞g?鶏飢鐣唼顓椌鳊锞鼜舘键翉}铘u穎尻p1蘠盤_^\羹屹鸽g>﹐踥箭鲼_W_~?寤稔麠桙覃??諢薏抅L歊抐甎飋ll聅桊懌份觥< 燐?g>/暉娣傀涌峥狂燍'/選G<*沫蒖u肕QL=纝漯臂锔筢=翡S/~齕?+?{鯐奎/龔w釽縴崊壹(VF 柇魟檋骱 'N灲谨=鲈>g楗熅_顛W^o靳頮啭_C二岿縌z蝤7輖痠v∥S慳ov{u髭揼n介簕锖樯G稞肿盔鰗堣7撄童~蹉/~閾奋rycc頧>嶽HX彖FL-*諑<|鳚w?{~洹O~鼨燑羟?徔蝓梌~;稔醑?醌峡饏/~鶍7輟魇譬铠R駀:Q(冻仝忪谖浦褲鮷甛鷹瘄選窕啕o+縸龝唿穨鹜筭e骮"覸磦琭4賘T趮髃缥^<}牯ヽG锞/~岬讆聱[葵+瘄雥唿蹼盔?均鎇-H朩眶 Wo匠賋燞"台袻ef:%癴氯+垭O硷伅逅/鄘蟷 ?錱稂遢駤w嘩_笙蚬?s%锚耙"5+買$浢┡呝庞'O}皓>龣O|蟸袼淆鼦?龔}缦鏁腼倔沁耥况'槽_C(7焽 %塇b綴_菑:蚰早?踬/=砏裎咿}顼?{邹y鬟鞳x錡?颺+?|陜廬瑰謀#缮`垈袏%3VN烹胨>疣W况禑津箫杌o霙稂鯘7邁7縶齩 肩G?O/_SO=y钜-Go惔娒Aj(  屜_{徕{| __傎O鰞?皈? 翌?厜s煾衿敕7廥駈S逸鷛嬘3梭s风锛_过秙7\:Y玣櫏9eqT騳(焽 鳫摀Z簴畭7鶶泯没[n,N\8穟y穰[甞腠窞縷輕n迠礹%A{W肁 .2洛舯嫽籊嫏l瘮;兜p鹰躻O荠輔~閃7蹯鐬绢3芋313mDK XWL羜U瓝G/\紉递澁;s凂潵欕戊>鱹镥ko啕罻决襣军厪|饷=隼'眦z3眡=(*F5| 狨摇sz5<壕7}妁g_^|衢__?~⺳乎虮摶K僋穁m挙圜,'txZ鏸)藅j江厱?踟綗蛞朝仅[焇?裉CWn>課V溓M%|^4v壊藖Q4蔵#?75扯紉鲮蓻n割霁7躻峭/|顧飤绁/=╃烗效?棢w躵皯#圖'蝙墾Q0!mfo见幓烗鳪>觉杇瀨烨?|锞酤{/}洹蹮y艮/:垂:贊(汽搰MtnC囫pH +xI<S#遰銞^/}釞?泖?黛?>忂s跏乌FVX澙礰H鮷YEB 巔4!F1涰鰗 嫑hK>鎯AC妸倘纷呩a""XXbp嵉塯暏U4,L燼 CH灂9N礏蛰^2噻麥傖 恈p8壣h#PI樟偁Gd澚p檃 蒁禂煓8v庠昶z:潌y酊R9惣>午ge9婾x"IU鋶;0t2椢T獚崽巢衲D惠*b侸剏p甯敊g>P;氮 +ySIu姷Z:棆#撼:.阵墿^;摢.&胐1责) s;.G虚@&+幫hR語簍缯浳=靥璅籘Y.錖 S#.莌秀"F鳩Gn貐5柎t洉,d%Y坄!L狨孻墿閞6諠濋丸219拎策菐龚1閵R沾 +荵("`a溶x"迍舼怀酱~yz鰯$馺萊醇1(`E瞆 NE窙规q%墄0 0.PZBO溷賹,な 寬H!"e 礵U遂)獣枭Zc5^#祗RhH犻(#  2 %Q獉―(啜絍62鈪gv9 QY:iD毑\ &韹辞G xA0<%皎藣侺0,伆5恻~朾訙RT"M+喢4J!p塧 Y停逕怞脈!泻!I k溝菃貌荂催OQY慘,涙<嶨"jJ捦1县H j,Zg笒a蚉t揲$A#a彦D]c窆B>W 盦(1殣i"ㄠ据帠乕釥靟~掍裆A$ ɡq4m朘#囄溆'憵L%赿;Q##备觼罨漆 搙屉遴仈!:磭嚾弿cXZ1犍猗a船H吜t$#vz|媑L;xN)×KMUkT"VC愌{椷j慯臍 +諐钤Y#>鍁荌朁C札.鸉 招;瞄3濥q娢蛊洛伹寗`6}>G谌R蒳繃uHHS騴榩PE翾淗乲啹3b#铇#鑠湲犓B婪襥轣笧﹂t& ZhF +_0'碷A駒夓唢窳梲,匸刜荡Tom弾!ccA榯喯⿷qYk胟QD8^淠溍8漚E5漑&H嬨覚L#f旴a>膈`F胔BR:咈a &聣厓`せ*瘡q{:婮JE栮n鸼4 @H 嬄2Eh涙Sg85GZ4 艝絶臻 鼃>z縸r羚q"n'怏僼眯み刍#月a+达犻,倸^H#孎頉魷層#耎欛~:?粼錊軇亠毕獡`廾<:DBτ壝鉽摚#A穱 萒罅愇qq胠Q\b坨b旗鷙擠M:&渃a枎矪5婜哼-獱铅擧/孌I2&パ;柼-d枻s>筷p牶\槣8仯$漛槣 瓓P鰕rqE%.啟(憼樇鐘捲t;弸芇R1BBC%蜆莫}%J扴R犟蝣-燫M壎T{p8[歟叴爺9·莦Zl@箦 黜漮卍嗹硒廯$$娕d┈FZ˙0I7(3生犏)I;a *N@ㄇ猎疸袰g鏦ChkT唀K S .嬛耡at4s乤:挺E礶ョucH‐v:j稜/6E皥b2A 枅5獘 梾t:p棑 叚@  31 ㈦繦 + 燥~ETL簘Ed攁 *峜蒔8:鍰=>%s懾 W溿ア/埙泤蚡8 +驗a訍'%栁羁=魢‰⒇嘼鲚軇困=HH貔E^!J(悲4羇d獬'浗寣A9度P喪襎62郤廓HH酐6韇0朖7柗瞟u 錻戮0 E姻+嬛U&K5奓鴠v l哓h9啀庁L +J哘莗 bU >>z' Q塣4򱎺.玲捚溌炖(2蛐蝩鬀<斲/2bS垫掑蛗c;殲潋To闾鍆16 +瀫B腘腬t$わ +峞s#I$FIH芵$%鋚6褪侉搇K9櫶璉j牄3(i覢觇値!蘇Q6F崒FFC^崆q9E*3 -  <G"GsMAn蔎]褮型x n7 ! 弯蘦筻蝩倶s.帯M8馯捝滦來=u蜴l~`嚠 G2h*Q狝唫*)&>;湗荎 +蒬磆%b湊[X?Z鲰 +N腎21谏訲/黄P7X>s`賩Px$a紻|\ +睷 哢噵酊鵃H!,|u档;硋!茢搌V崲1棝u8(穻 唺c帊(:櫸-&s櫠廮"傓*祻屜潟蚔`蘗>秣s飖3{ 圜1P}>`恞,唵鮻Ot禀Np!$汉vIW孄鰕PTW{'塴0t夬}紁鋩请!A獲R脝牭@憍 30&M +卙f枒+浿嶆鲋蹒<1q湶T舋駲LfA5'F]4G'g')j砝"$2沿`8]揓礜灩施F*躇艶钡U*鲝搜q扢e砬p8$(aDC0獕寓ごmb_灀#FhD' kG+傡a$4<W敃j┎"薊薼拟(n妑M3⑥聵l1T愚!'斖莇A(2妅1t馐P踏'侼襹灄K@翋 贻"Y&民箞賙蜏霹济m邟 夅h3緻H芶m ㎝燠E!求殠Cc淫橽}U秡膘 /WH:島"幂. $叾,鮾A渝H躂$爘@KC科F懷欸Qエ5櫷/偱p僲監搲h8j +笕!臄訤<=M獺賵戹x弿豉剔x隍^瓙B6D腷諝Hd鎧隅訒%A萬硴Vf俧  屝非汲哲擳麨 1鲨i'睸赔糍媤sZ壸嬚{x3s⒃傥7碧皓绳陭_殡 +"2扵憰V:籚渑啴缝$陪鯝`"/(}輾O譠倥0鳰\徟Z(ny(晲h6/F珹1|鯑GfW聋T烫瑧岮臍祾K燣俛妠疯X嘸燥悲嚧lzRQ踤7荘 #R缒挩6説分尬W0 +I彌]┮R凲傊T峲衞^/e歖鴃<5浳藽▽刈筩-^/X暡 謝笔 +鰠6淺"=^mB"{.' 鬑嬙-5=礒3,乀華9滧鑘H嫝悈o舾q幈2笰"7罤E#>蒊5/Ec=査7Y俜鎓P,緒岬/慘kJ=煕^嘥嶘乔p單慣庒 +麁i@+翋r5蜵W9Q,+Z 剾堶罈弾z<` +&極$+Y┕气蒱b率[碟Zb(+>▼as睨粸歓>  +&壢j=腴F香c>$據鈚摇B=*珯蚘篞lNl叟苆>k悳,TW汇噂:y'/\娕:鼋﹔Z匓豍q39,-毭I茡 潻筝俪夆#T2D*攀抌4i!蠆yA噎饃$買欺兊dqH抸Х9硋Cc 痸D 7燦巓遰 +濉嗣AT3櫿b録*籨8睜G c\ D}瑱灆[簒鲆#殿!淛ll湞?9.J筨s:8R81絩阙送銧B謷2%Ao抣蒶_|}渳<躀劽@`>聣9!襅誻b5屛cぁuQ幈BAR+氋)訵峹4 ` X3弴 俬a$鈚竎蓦苽喋8皘,9実盕-:Y餄葪方>yt琉'訦:/5軚)唭P2L抒秝3{耟铗<_帣}0白\鉷;qs帯e,x渪炪4曭{仯e瘝8<喯婮-WY螙Wf辷鐕琓煋 +ブn2纂O湗.4都a臻$6o鈻,U.o嚀 B篜ㄌ揕+I厛3用Lu誋L閦mz赅調?DTy璪'﨡コSn锬硈(n*PR香k蠍T,昜^>xKo BX>/K1 jx覥菻z7W輂藓5灇皰僜u乣-)3栰/l]{遛'/\yd皃Z蠮鵗阈鮴轻aq&)蚲+K⑥蠒W'g暄r )櫳y-)jG襔AD颅諻Z絤hp愯尧mA瓁僇'鎺!B5撦咙夐嶓輽C叠n舶 h濷~鞊/^葫^6@毶抨鴻R鞲檖{槪Ao}缧晑碏ec恔,]/_帡變D"?/<|慑f勒闷嘣3靓污菎鷈!刹1'狎睖3 A?KS1哅匭哺;覟9籺点鼢g务Bt0q$f 荐U|蠨鯾:磑怉瘖x1oA-軤轌@83Q$BSi愘瓺聽鏲仼鬉p哢偙楞$3瘴:疗)4&+輭揤z尉酌捀儜W瀶-咮XN) 3轉 5){e`鵵ssr橼狷e佅 鄣:茦牼拝鵛z殦迤V{飧暈"垥la1灇J濒$<)惞閼1淅F孿a1S\M7扭瑠%侉1C@@皖隈撤^羔仴璳Y9纂,輟鏲佗}硍┚s鹡33;w) 韦`j8&_(瓁靮轍叹'恤U侸证}?}#穩a馌PFp g瞛琸篚祱疹魲彑壍)6亼%銲(h錼s遑咞r錳{y彽'峧睘庄z"婈呾曾"幥Y┨%V执灉手'O_倔凒摚#撗腜5456JE I 費-6詂S 嚴k3 >~搴饊N啈Z疋V)n怐 莟絻!骅縞屲/ ⑷锓O 嗃爁vg(腇$9va0剸b)籇-/G8V咐&趥"BC奏琉Ff}>]蓵圅瓃.及4珴冺嵘bk4J/=案v6刱殁稣俚涬姐脜婼俗ゝ祥#.X] SaH)丢hQ珟?&5粚P ,+V&/i鲩HV*rR蒐LpBV2眈娃恬翁眗{yi翕i=2鲟`鎼憺 +)鐎0也肊9HA鏀f寖^r0犘t +悲$9睊任.4芆 蠛^>|渎> 郙C0暼犞9|籼阶蓥T劗?$&s阊詃5鰚弪 +c俠V0( R碉%!CP:殁颉3愤跞.揆t铞+糡偂)`1捜蓃K擹`pFFM变=#╩擧寣q 榘W纜^亠 <'靕瓷D揪蕭馚~姢,窏.汧jI峂Λ洂G蓝娊N铡"4?@ミ'鷠R(爞m乤鷈啸陒姳X護_W唹ph '鸊f4蓈环嵉!7絰vv齜sb7抙盉抈n喢]oPD,噻A獞閨鵫vz閒叹鼨阖L躁4扮X喨0'A +r?陛閚0t屇訰ene鳓c8y窬}98"缩屋y惔"J腜*擊轔r]鹘?"亯濢鏈s隃s鱰黥錅0I R(J(姃%+XhIkY雊謟経[飉韔{.T5厷罹鳒秣9琨e乪券wV灹疖!x`1) $2g^,骥<扷sB坊*PwL 搾X(VХb9+諠瞿匼ae~鵫q*'#Q4蕪^滎M帉衠孺%犐4W壠5 }豝8窹膔"硱..麋蝄根x-N璠帜臟飲A歯uS賲\a5揰缗庍+D3嗟牊蚻y18葦W丅胮#欔F(聛I皚铖羝濇/;╳> +扸舂B錮眤0? +G#E{#葥鎛R竨禸阁傑 +( +r鍽,鸪璳Gw邐;2b"埧{M'4w`eV燔:铃I+棖XXoU8/%*┎駱蠵hx864螳漇OJ朓瘿N 3F嫪認鎔撆卝鳏暅^豄N趬:申4g鞋-9A*鐵踰g kK9n# <棧h磕 Sx"愳qH k<j鎱J&窢[M)B7潚摃A{钿则匤}璗Z谮綱Sl翸 +鮙褬鸩嫻陰f厦pABA暄t"亹嫛滹-L鬘/_濳 磙>面19`O妠噦4脁儞V6i\層邃*&麄T澍TХ諟<~1j]VN8-啃0F荌.俎R焊&k漙H +草鲫 縇僼AkΛ浀頸侦 6(zcP馽a@笁粳朄"剝l捡婀埏t棷j欿[Z~m皲蝌%E )笛1拥8U9 N4 +隣鹝v匀繤(p7⒃0B嘿[漑轠;qy胩濏僛煕[綌kn鉒?眥SqX晵h枎莡琅繺胵 乵 Ka R 髄NT*,烶婋鍛L朻矀V7靎车v嵋 瞊曚"p,_P鬦"9щ]-1旃璟e9渥翈C蹝茑 +/擧碌:@]餡牐%O鏦'ο物<邇茱v76w靖婅`旤睽愄qI+Q襇覜沈Z{耜嫔鐡┝制?/菽 T ふ╛c U4漣U# +凷4翯(BhPyh5!*卲&:<囡=1;帻$D 8:0\呞猈業K='$賋爯''拂炞韛/另?針<'牳挨_欆o幤3牗J 唊W簝u薻5讷藍 庭Bs5QZ岽 溛8fmw篁谄]霫峢導ù .'奛蒖綳!I xm[瑛&CO?Zy.A芭餴Q+侚m禫_頞fW羙l&r筝3抵諸y駥a 浆閡E璳ICAex萶4:個袏匇q 妿廰羜偫l屿'鳁/#,P5堖樝枌z洞灟lif 韣籞_夳U娫_萍TJ常灭F饂(b審討)嶃矕佱?2瞆Id5-He^桀鞫鰞A\C'撈" ++4闋垰Hv8鄳G4#萫疹@ +侂卨箨甄(U-珬蒐'R$"\ +迓,H嶝摓Q歓^{ai雭GGI`城\忧偳&B8b慸.滖聢排闱每7V颧J死瘽,檈/e騭vQ氮浇钐馆/遺鐧镲虊9^檨 纔氥rx8>6娔QY毶D:9爳xT爌'4扇v绡>淾= 9转3u5ax]IkF +舉趦@:脮E㏎o漧鱻U槄╚hb,n耑 =i' R5錊灸!罥碬.m澕Qmn炦?[w珳恟R搯踄劬軟>崜偸簽葚笎螼俉彌D$2Y裔26妿麉螯b忇乔P 寄 潩Ke%9怀鸏Х1甡6梦戾ti桶:薻楆5S`@掗賒rV藔Caft~`4腶垙蒀谩裃 唗褋^ ++&"E$镁W卆餴鑴Ru4+p=4櫺詹_胢p強f懜科G#!&靝;>:N9! i墂e)蛁i/倩'O邒C:A8=WZ +柲d幈濼~&H2?*W犆印% 转咉杂8煊P>c~',<あq 鹞 @&i岋禦漝2H絙}冒K麌窎6洓兣+冨qr磃枱焯牙 ;嶩摊 f蓝璢w破(.2\&W];帱籗w罴z镅{Nz@衖娚搕VTnj∞截_綾g鎥!觠(6稬- !烤碑86=v<:噀濱]Aqgd8<>墑駊HT%P硳Nx糥6摻fo?{瞆鳋嫹糺и碢L7R櫿F玺谵霉曤SLN鬘澒%涢媊Y繱氀椩n禕2郟泼矢 ,/礵'鎬Y;}鹛湓巄旐詃径蒽煕_籾p睽辭 鯷腌<鏳,罚M査_ T1繡M潏肑0鋑屫娷3)`餛 龤<[壤@d"H诏 膻驉X46'g> +娧^^:={ +腇1Kq('Q嵟蘃X塆 O4墶'0Lz#摤\c*H搅赞燔(e桶瓴Rb伽f鷷(耀昮<咮D0儓"16搩c$4桩f隐y乹3;\|dg(畟`⿳岾蚪時 CA唀2藏愬 Qn赔 +歓殰;t絭8D俻 +傿2珕挘i ;湘乔*籆C繫l腂 +檧鷵夀僄oG,I滑敆摏薞昨骞张搊禁. 鶹$犈Dv+傳岅莀佼?瑞P`d86(f啬ds铊食歖儊*怟糧pR櫼tgf2盉 〥n跁禆炷4'u)5讬3*磀0E鄚 +m鄍q*3枎#@tA槴Y=V(夿~w鸝碍Y5/;[.>w铁Q"?嘲t _3蓦u燣Tjnj`󮡰╆}尠U鞙悢&"(<荳屈錶jd1嫬2石'溪&槜祠証购黍罐`gj瞍\T8 Y*厒P冟m鉸 姍PX,郻t4寙C琤v{嫍嫮]庙!&8閽t芃L錔藥7-K +endstream endobj 19 0 obj <>stream +Q0诵N4翭鼌6喆牽Be灉\\┤E疰n悍皔m筻尬笼煗,哎&C綕q縢Ifd卤'J仟G$jG 佽$j#L` c鑲胛C觨 u墔钃,畳TIx-0h#(K 陕焯蕝矫粄f懂釋3KE侺a昦蟝>煘务赜銘 菍h&嬺淖姯匠譞5翘DaIw';锋N:'8*斯KG鞫鳟e卆7J^rnn崧贲昫zNRk碲鸳?驫g暝覱A2跫腡玸`8S钶rR葶#衳悊~:Yo$秤贞止叺0耶5e砊k瘽9z莘Y慆r惫M%sp*G殳k鐘所2勅#胐埙拰努慟vt寙`ex,18a[辴泊^j頃踸527撄椟登褬l8虳~谖Ln6$獼?笋暠1^?鋰哷K檉ofj齄78 敜fu$Y3笳韻冪璂gq樵漡邷樮嬈4{$禚咓q彚>8.0 則$陾B=訚6vS轭籼壨Sw无x屐崡.眡yu廖┷{UZ碟吟~鹚W唿<仜篟Q@0嶯;V荘p<~a/{*8|驆$歏途5嫢%U痳RI&D-貆#1嵥扸號f'{猆+6'/.澑荡wof雟〕痽僼r褘鹓焑"'VK蜐\uK6i +傑@6*=倨乊礼eJ箝騆竰鑫壝籊7_\=q籴N%丳婈( 力 舟接冑嬮+."w +悓@K筩:碎芎撂啠<舩(0,熞琕8Wi, 簧瞡ス旆;┸|竞Zō鑆#昲=wsu#蘢f敦XI妲t藣HL﹣#使蜜暿喁`P偁$俤4嚌|a鲋潡O審 棾3箝蔉嶜焲狨,焫@轩夋淫;1V(oL芜淿{吨筪y誔D籿錫焦屣a0繫8魌i缔?琂烦6;饻⒂糝礔奔4籸┭;He6嬇i通嶚輠馌ヘ,{忞礿鐒═g '鏠0宩ザ╤叐舠囎_mr旹I++d櫎愣蟏~嵬Oue20V9喔R<168啀嶘鞧GX蹪裨S#肏`湈乪 +A,So:&鑄}騚麒窆[風璣郑拶揶縲[髬go}q鸕>?祐(u薓姽u頇7鎂/蔉覰蘐谯呹烘蝍d鲼F哸抪 聤;iY傭x$獣D~6U樲?s朝%K僐{;阐d侦潫^|跢# I3bQ坊fbV眆啼挔N恉蜃8奍Q|1喓U餕巡箞呲 iZ 睯?9x>諠0粃ピ趀艎3{跪4藕┾忖鐾嬒急w崤te兖$k偡瞯6坋6 Cz曇岀祦n岡U颀,0!豊Η^餙%$P霱浓〧ペ^]诰毇璦せ穨稣>砗妑'&蟱*'1鰺蠍棱莺疋Dwk詏2胱P宅~洞湯N靤l蟒輻 +淀圩瀩稂韜摜M盜馒翯_蒇)匡0b爻壧:薝FG1Vzrsk<@C悗bQ瓂閥;9-I观鱛}赳$=5e殿J吊瓝7o>`"'&悫<:p浟袝穴u黊佷\f厣馫`xMZ孌u幧]FO驰滴n霘^滉矢pt铳走風8倭褝O躿罟WV6锞蚱讝凤柚Dグxp鰕/ Ed&騃#~7"-6'D1 (nJZ敌塥 樊犀_4王輯揔噮鯲镜mg$撑*e賗vvR娶囝霢 溻LA0Z夵"喷Fm姱 r濁 幺踃\〨蒢 郬鳛[n皌パ?茸至'S潩没^a:U淸>鵯RKL猇8謲#溤"Q.WZ3淚/榁E漢Td蟰诩P>v,>獐)倲-追 {偺H堶巸8坭y疰葭轝莨/虣V倄S%1苤樳 榗豑当V.в僷變 妚1G1.C欟甏e缜 犿矾8z8硓!]\⒇2 燑臎焅Z>帺/,惴囸熇9GV奖d樀 +JSYUo)苿b鳇Uu幅忏谉} Q鞕橾假櫤Pó0t揝 鶪剦>M%FGqKB僣4椤坿8 覵锦>> .E軩r!曡 53翻▂繷 E*抵jg隊7{袨苌gM谎lol灳骄7粨+/&sI&鐄澲`f札,B佺,韤序+2鴁嘤0 覢:夀馄 忿>`狒隍迯~饟/糿$籒v=)o擺{k'頬君骝螎v麽雺A u键b祑9竧蜩蛽梍涆z蔟茻/}&糚T{#O描Lン众澔/鞙yx8硄┓x6[_歓>\\縯嶷Kw^鷇竞軠睾踵^樗&/&rs糪崤毈u繤9敃鋯iw8∪+d婻旁p莬Q譜 YD袚f详v-搆汾髤蕭橥眀僡J 坞鱙H 圢惿hTV毀4嗂&砂I朘)zE7跕晬8$捓尽兰+獮鲯児3K 獻1傷g:烄#!c暶q9禹媻憪6!5k跭洍{厂教<涉罰 疜.3侶籫-朓茿|疑邿覀c陴qd鑈l鑨麳`咞+h48⺶8鎮蕂8?Y傖"!Z3m丩I25I jkubz恳賡E)鐦壀薑簄e瓟-焕隕 畺6凋鋵-闊孠檲Ep砪00錚+脲da狙贆_>饭y濈7蝨'.敬k澒_o痁n王趰+腺)鎔V.o燧歕<*5W絣_s|x攖濅渇R^=q釙r}uaj啭;廭u医Rc;?硓嬷 o~龅?Э蝽薟_|燑(Y\L|本桓~3熩蘄5Y蘋蠞I凈X\!0廸ra皃=憹rjMQJ5醘4 膜&g蝆╢m蜂$Z傊槝:7祎油琧x懁嫤7璟]噍t-pkm'跁F$矇J6晫棜S=拜蒤~!S$GU])熏k:];=]@CWL赣轸T(H牵庩0 40:=)a|嶽倲沐bХ{螋3G麟5QM{╂恸Q8(W俾$/錊陑0毊7R窹櫙w諹LJ%渞I钟廷隩嬪橠f/Y6瞏n閨wr;洭Nw=z及~虏藄 最縭镥穅x3^綇縬x蝥迌/^件h~褴昜m躗丶还woa"04汱y瓧^pq脞覝怱蘊?1s腒YEJ怩鱨L0螡江SO]~cn霂$g/^铬鶾tH.'擷c潇コW遤M猡}缥K濥V("-#*姧h<:鋻a6gV懂w詛蹝Y萌T4腠餵9 嗑81%蕐歴」岄ufV/?髌 g5璲'&/镕]24;邰TT攍&7蜕骹r庢u餥棔&牫XLч礇歃笥抁派勥&o  & cDc1∵堸!肻Gm秒官9+50 侦Dc啯f G69熚/娅圪 +0uE蚮瞞铆C颁x絲鱰箄惭=酩(/ 解彶#裱81鄥 +t杇r韷-婓d%鐎H炟4=Q/檔$珢埮鼚@淴7r喔嫛哄v88d`逆,圈Df爃U減1!$Y 鮳捫Hn+s矞掺l579恢灉藯鷨[2漧u]氝8]n晤^顛厺k`$ L1.)8替祿+璭牊m珶I突蓼10>┧9抮9♂隄S享凹{3憹Q配_f镳6#Ur鯘r镘祛;/}a饉3浜厀>豕僺wc +虧钗'{硹巒緵//e潡_ F$`O鈭)术鳟>鍑' +隧质腼齛3+(F劫=s恻嫹}nv:0V7n}]蚧 廰)乓蛞鶸E*芎+鬵抃d摩橽焠鰪^粁3鯄3b?/緷述莾翳8䦛荱O b{娘礘灪~麢G@ {:荁菐!q(a{j-疁镺[獨鱆8橠塋8.LE毝]AQ叱)秒*虢閮鯎8)傂嬇y/=眵<4A芜筛殰A!.苮F岴餒勂伶潯Agb恏 嶷砱N\x负贩|-U +G9 狛?'N_b蝈eV(倢H&%A F;乕羲鳌&")_ZrW揔潅*|操僳0荸N頊zfi闳:櫶剹陸# +IM梭l偰42Y紕'封Hy捫1詧E%E瑞此6颁 >3I,熰袱3塮躭F?祊⊙跰绾獮S敜e$]#)Y>\V胎翫` 夡瀿镮蓸圖礣n1[^禍钐沦曒E僬|閗乓,E$3构Tn乞:奮42p謇墒J墹cO歋3婶挦穢.i萟6Lo珱fs98虝筜朘訕傅y竲驓4 +┦錺HG+眶桧徔.2~諃衺介= 0zBbu鵗奖嘥6亪e姊!,4\醗俀堗匱eb週酞$+杫譃熩?笝蔕ゝ-fy +窀膾"︹Q婒$钚DB`s幱 艗 欀&'KK+GfZ 姭鸻Zb韇q*馄Gq8崱&濷s|F"贃,F萵瞉mmK39?滾蟕樠憩针嬹榑A乁OF啎d .)F-5e浀餗1鬻+d'馻3 讼P毶賜遳 砼b惲,浤1#蔬慔Z鱼6燗F袆狛殪0彴 蘃8E'摀暿掋鶲杄瀢A隻~J曗1*8a +1\*鉰Z]}爛 鶋蒵提梄筦f訽h窲崗Fl甩 鹕'"<穥嫣-毚翧<ρ餓pS,"豇H溊dh#"  &p2哷裛槃1#菵Q锐\芲QPst@x餼锹c莄瀝4)tK>U: 3"胤(L聤膜(詣K鳄%鞴'.|駦?x礓唼傀闂辻~镬鰐縌2檮),NC1朿<憊8 +Lu賽;)髎5k}28戂[毟{e狳ko絧甞=}猒!眡<a僣8о u鳻00E U凑~-桾E嫞毠d=熗槈瑫n鑨$,&匾壐K呞|vF岚q鹴懔呸噊~睚k焮u髢圐邁琏??阺飣黳礯L$}p渿B橫cs勹Z勾d\?Y<谏_芪?s乎郆塾o|苓+皤O蟪g镯g吤A槪T瀿iS盭逨蝨賸斥愠_Z硟w顅>x鰃吆鮋傀粝緌t窨溴馹?龐{膻驎紽)錛萔迵廷猜Z[?3c-哎*傧Rk]gs愜x作j?摭輔奎闓<搛闈)]"!PDA倎$い>"儌荚瞁{珠Y霛;<>笫捷?x饕従鬓/_oU湧沽庖墈篩!嘐"謚埑S冢笸鏝ГW.諂鰸G?+焳~ 簖楟爵従x/縳/縱婄駅2↙#剟F襹t〩捱M}g~糍 焴誒蘿媷葵饲鶗?黳_~躜遾灚>w皭/zz) 2m9呩3襉钪F颦gf^>_y|○\啉o鲛/緘?顫龥魁弿赀x缒峡鼽{弙蚨 爛d亶h 徟(@鵓肖"69綳く鏞蠘棟.w䥽o\y肱/伮<@`暊:;!鰵糨U韮;漮縶鎇餅梠忁魁'每鷽蟶鮏O五罄A膊g$e姴碿獷袈镜そz:跬鬃~[啐芄吊/^縹邁{7吖?抉趰鐡 !0L鸟 u%眉rB鱮瓿7嬤z}嶙_?涂樗䥇涌兛䴘~胞聃37O溘涟8寐淦de粭豩*7滋/= Ь聱庾轝廭w烗撓|颯貅?魁鰨鉶啁螄噞S 裸 +拜狲鶄胤=#tu妝x聐鰟篑K鞒'峻质徔v?K岿髼~髅攫梍縸竄]K=域N⑨*絎#甃1熆涀君搛7?辊?贱o縴麋呒駶鞫踂锟|鞼_紧鯂障呤NUF嶧嚐脙4滽A鐊5咈妄鋸铧骭浸魁邁徇厽~彖'>s硏e^滾Q咅藟&GYI4h7鷻<粩.O3熃啭擏N|C?漫暇u鵺?~犸~蝤t蹒睨蓣/眵畗齇]N総Xie 4蜪B乬=C:yQ揑廛磛K{i遺鹯屍_贊_|腧O縵o窘O|{K X鍿矑┘=|璂^淩^9[k涍}S?赭?|裘N}餻蹁b13AQ榙猋[蛕J2!p%].奊s賩'/濲}飺敕顕飤皴鯊隹篥蕪縯o<8W;籘+))G餬<靗蒗29暊蜰9鏶濍宋4褂奎铸飤鲕7咿 雘\昃vw+痴于9褨Y8问\3 +-U饯3U峔.KN柨鲫>8鵚吆镛_鉴峡x'x_<鴹熂痫?鍡_邶驺釱g2K塁c骅旴瞘 +幟抦嬯耆}f^Q/?^䦶呔/縴敕隹忏燒褡o~鯈嶗_X\汱9毶3笣F BFΨ;辴 +[JCg:蘳坶7^:缀繐茼/縬闱_郭嵶6盔踂鷹鏢薳扩楲 %3> q(+1$漷蓾巗f秔0櫣禯|駆憝k擄<仇3 琥纟瀪胤+nJ5殫(h~EHI\趷螃敤3U[麱;?;歳藓寅鷎貂楟驄G_~4絎鳒+蔹VUv囙獢淡MzR0-礼 b*滊1蟧[癁蓔魻<W鮳|逭硹棲3.0€O拟瘚,陓酸f惨F8Z蘜]?P齼椫鹜S镘浕砏洬"婤憄8団b&賙肿觀O鉒儮;I胲枢聇柤8?|倔プ95ym絫{凡? +z粥伭(/W8F8鑜矙衆.沯艝農J76踂知篌逶\.1珛E0嫳憟繰余0剢; ;曄铘KG髩粵煙gN~邋屣x辂;沎啁W瀇xz腙a`趀N鱇 歱bAL蚆跻^帇 \銽W4k=斥|雿7燏o_基眵慰vc铤ne惦o)Y菣`h廵lT戊骐y叓t**4刨3澲3堀浇 s啪谜u9+)-0( 髞1fd(@BS"FXN撰I瘧L<Жr9)〣脩 碻Z愛女蘺罆郂桑r>祝+b浡愦屁誅iujc3荻暤揀蘘镈]静X8;澼;Um/瀛.@@孉(ゑlC 墣Q` 娯v洳屛f笉瞲u辻鸳n/>:;;╢9NB[+$s 濋澰4OD7%]鉪K亿舃-e昡╈奍暤罷4帟qRV}|CMVr 鐓" 隯矒O蕶*A)乵%漐`毉尧B 繮 18)(茀俆 @ax*漑W-dj瀏L,9I!摲 筝鍉m:セ:+歜埋- 5< GO眧C栯哯(s|$ _oJ灚&=.贔;g璽扜+沤緎~!qソ偈武孉譬;6E唶报秨< G佭B.籜/瘮3]昦=慼豛Y!J2z矝}遐耷餃酱5口╢UY +8廾0澎pT2渵硍豩)T諾漎箆媺`BMㄙR6騰^54Dc15l +傒h詫F4 ue!嘝2笧 巆(荅裏义(廈臱0幥8旅1A餡,朖a柹XL7f)凿H6j氁壝 计('錎惟:⒚,* 畢齁1 u* +0O/c菫~揃UGq=-艩, :-%$?婯 6冔, +d€D/-间攅Ov'軹'$歲 砓琹d奒 k搫l葔赊B0倣屍僡^PZ7c豐俖Y++孂留I舑cN鶉2* 礨聢嗮戓H4腟xBk S0厾6拹$C空A& 愁-C/-堰蜥/瘁$HUY┅z蛂'L)K)E-ad*帢jA皡揑鱞1莟杣4 MR揯e%V6聊J橜 j猨咨l郘.fFF唷8 ,‵?A <嶫0KBち<%臫倀'凋P/x^;23(o餜-w鈗A /1H傘L,喿摃抐,嶉0lIb]珣鏷篢樜@:柔U.㊣)嘌8扁f視摘邞v鯥穛叀軳鲃郬/7mg愂,鐘泬躗 峈茫DE'榄儋脻e1 c拳栛鐁旵F榾,%P*鮠/#矢邊Y髃 )繶姻<梁(鍌I湓炩柇埍熃鱤$K夷顓┦缙9畿蜏s湏洮膊2媣OWOwO鱲飌;`e+X乣8鄠3.鳬Z p 倫憍iL逽蚑 论Y +僳`o%}$沄哀ZC嗸) )0q倽J螈薰j/J坢9[斗2湅`+%"t挬$鮏I恙蹴厞j崿pi+諝`庬呕,d嵈跀W{a鞤w鏭r牶 偐亓N祏^D-]p-Q橏"坵"毄蠰釫;悎叅<圹瑆.c栔l)萷U箔?,>|埇eD湬坜v飅)jj氭@f3鶜雘膂?z啥犞4{征Xオ踼盂'4酵Z雙昌虌稰1/穀!閉渙乙x毌谘NX;灝靖x覃頁飄绷瞦Ш焊鳣 B8U濂&/[洴靐3m9T潙n钅p辅u/*瑿賚G淀_觏惜{瘹G^| 仝|t觞1鮣/噵泧?l勘鉣F&崈摏燊&1<5N.烖t砻/靳S縵 㧟8c侦0B$(藷蓆飮卩9/8眀鹽3渆 +傏]^p$g曋ukp蛫尗蓦▇0蔟皗⺌k(Hh9醾馐;磦頎y +P*}侪/廚繍F*茿y=80聖Q洜x0>猅 +∕-偑pb'琟T篛恅晖至э~A龜\嘁BGO䥇nN窥蒾媗罖埿 枔惘鰺嫜7A#僔B3Y憰:霂_酋Kや拕gZ埄B焓"頸郆邓铈g吱\巈貈犓僌2\#b挱曘zt 5墧熢y<鈩 +K8艳d駘鎻U詗阢驺肾覨锬+o耫Z羋瞶珫锻'遐賎筝`.儥宀r` +2琹 "隤7`~s>{肩'+;\虊髅茟NO?/偸6梀昽烅~恩皔W乔/俎cB{7{车蹶糅#^J +*imQm3R,B牯惑:Z|j鴖H澇漺3鍞韽栵庵瘨鍭独`擳i-杲UX]RB媁苙白鑎<~癯Н-f槠l{跬蓳邤/dsS蘸窥7q0&P聒_皤窥Oo~錠-*;耿As-/>m嵾np篁w闩g娭Z缄 ˙癳臹T{疦vy翦铖VZ(?N憡靈跰 G6耳撟_2\ 2@p>*鱽=z房;rb3% 纚5撛蜏Nw>񤞧9艂牪[闇禙弳嫍KHT铖 罊>╚[崾)飰鷦桮偌蕤-聀蛏蛆|庣箆8誛==C1鳑&╉釺环4'赌嶋傥矾>7旷兩腌咛W弫qfR?蠠l甞o砜m/M?_尪_ J[鱂F0$V眠kG劫s勹[3墉硒由顆笥嵇to\M奎揨 碏ONo~x湛}眠璑鲸詖wV戏w_5岗:x=n>;基縨'莋晑塮焀昀腡s3獫槲 偏7V8JX9楓峱5?捎_侽F彰j骠轺Wo覽~: c)Vc47酥Dw楉褤凄)/翃\A濡lY罰鏔x熳螕謊瓆 +i7鹛+Ou粫傣fG餁闼逐;~\盉饦4蠏&*n戹Ar詿綀j{iO鍻AT=0龣蚭}Po僕kfOV郄W_~麟鳄椏呖鶁紎UV氈x??bT膴礘鉦q嬐僿硟@揖螻O遯\,珝辋幻魑:埤沈鬐蚟鋴枹(&Gq,l肓悷骛q<撜h颸(8沢s!摀 B 鸱1蘘[莵娟諨N疆/〤蕿菌M| E iW8镹C,F鑕g赶 戠O筄紋訇觬ce菇澖鐙w(:)v銀w黚诀mo隡g蘅p糹ot釛鏰u5y^>鳙g>n魁摽﹙鯴壁阓圂硆鹒见}缯隈薕up鎻*齂穤畓~練靯0韙君賍&l虋 QK鎀sg娹O窞?~帱s蓸轭權獙T *她薿S豑*娃qw髊cp1Z棘v/∶I鬒Iq夘江方竺燊忿瀉 菌铟o>&@$a紉]颺柅;繾U絬r皴脔楑鯺Po鼷愠7飤}箐{ ^0;鵳鏘镆坴宲桦~诊颯幻砚Y雳谪噋蛹凩駿踲 W^稣_绝Uk險g髖k騆w黩Ex祛㘚4堶 "poG3昫2囆7龇fW瘅閣0:!箽Ⅹ妣鯊蝻棗?鲷蹼稔 犙TwOqB锵鰚r聆蟖説6夾誺% +mAn执q婲O^}阻VNV3瑼q5勽q袥鰐4{鍏[^4++,w]k_圝󶌧85veX店i鸽魕祑c Xb 嶎 祅E`h棌朊椎Y Rm秥t+3ga聲峇gv5}栔鼺霅泞暽iK埾裢v鏖hi蟴兂N飱∷8障條4溯񭨔緀噑訜@蹵葄(篺犀p嚂$W徨p5淎sxYm熍祿顸齢 艣鈱W=岞2M57~鈬;皺f Y.o=/_喳g^惨 y璖餅稧@拊vg亡awx7v耉礪R哝暲0猲0 釻o +因攽H簂鸎蜜(抿;叠蓆缯铃藫疩"覩覃疎 )- nL茓g痴娱蚬U惦鵂*耿QPm_=齝尻>'旘%t搐謰V浸羖v鳇7.$~(L吸驗閛乨|+W鲼庌漖*W廩弡踎U黡7妟Z蜴坩2蒝E颠熂8';嚐7!uO︾鉰-%t*經鲦鬥 +&j嚮7d揣霽蹚鷽o殐0亳冑厂鞑 逶瀎o窬醤 蕡鍥第r鼬崵w盞 攬哉蚟ryx'茪直滻\葸;帏潳鯦〒/;=>鵕Qb>鎙s鐌膒 譏忮_?~g腚宯 +蚋薷h6蟽`[S阘緇t>f匦6e N蚽t烼涀曋)90蟫}譒 騉xッ艢4簵{啭暆|I嗠褲﹍僺-'V覴oLE正卩z皒<榛進w?enwSw,.儾惖!'u乿倠2b'衁( 哩NT幀pW2褄綮蒢 Dx釜祷缨?R{ 蹪猌萚絳7(6-6_<秕蟞6磧iX?丠=1x俀昍蓨梭蓬 A甂r萧鎛y_1f曻裭鸐祋萹宄摲伺"'$灏b%ìVg_\~菋m拪0鶈勒&羆洿銜N豕$V婨 枍辳 憿Z nkRcYqR :i旌立=|flv;@巠.F$楠Z V膹椇诲剓# _n罱3黋(kF煋陮T酌MNi恎祅絵軝<桋栱 菋梣8G徒卩笘釒A艩斧阠惃v茢欯x累怯+P稍&閩嘎羼iz{洱;~ +4 椀鍵g| +莅z3`g貖閙賓@6蜅y9妤竆迠釳揓╔@攍Nωhq"+MM 栕G).袚狑u{l籟1D1觱旱謓o&祄'ZP|*OGau 雚\舼Y纓qi鉋KU汷^蛏僡蚒躟:鼁y痝"昀r嵧r宝=w弛8眱筰u氕暚&C榩R埚鍵砝/疈NR醋u7皻f碍8[E,`睾i蝋3)Zg扼b俭劾厁矌漓嬘粉 MM,m,{擉恚防蠮蒍艗M瞵厒C酪疋m摛熛,WN齢苟Ne3i匑竊蠜鋗詘窒Ep瀓 !┕SI翳鈒靺)%持:獁+7)1(VALh66溈欖俭淤 ++粴=协鰄r5輣蓤1-攊1跌/邁;邕Z'(D(`-訨∕5喇(蜮彿鳛G斟蝠t12?喫~箉-/򃟂棑-Q^)迫鮓~笖攆6/J惉瓑*/\@/6门浸%L喨d"Ц#w(*蝈j紁蹵 w頓 怄蚖J5櫆折K6!i葔莞ゎ柕暦d)1BW扯['i隫 +蟇朴0轏+併6F鴤诜鼤◤祴㈥r鸜pF.奍 +E]觷q,.纃㎞0qM齌臌怔A餅~嵮 L敜衾K髖Q鋬(兿愀+H葳J'嘿O邏胾U絣6鐘陃嘸*1I昵1鴉.4[Y51倶脖!癓璡9 銄 +QD僗V6K桲EB垓FJ蔐bH擘鍻裡殠-堲pi)#鮉眧h 4m鋿A>q梁%Lb,胠沆(膔泥l鹘bM芤6@Y翩雼н謟'捹-.>勍r汾6滿/Z欮则唓=遾K1蒼s艉7{e鵎贅0B媌薘讧┡06荈3O阦藘/7 大EUV 綿7迆9埯 +覔/躧秵6艅韆UG讼喫讚整卩9-vA贎\ +{悍P泰盹荟4伬彋嶍>䴗G,^領tP\;4涱 +苏]o╆諛x>l+*腚i赢柳Z1 1Lb楥An徉$圛Q无釈Vo'豭 熌鮟芹憯q緃淤o铦L祏4[絳<|羟A噶鷇v%@!ヅF:傯T`2\%_愐韲呩j y眰帟A寴6(荍.+IBY佂m谤,)怌喻UY61鞥(&$8*鷲梉$d鯲祋Q=v%B$C杰源扥84軌 '8(莙巌鰼W绎h~:鼈Z7y榴渾7雰铻->g銉凡7騚籧胘訉阊蛛O?v尔]Z(尠胔蓑缂哂砉jmw/藭啱告V洑賲驼r羃洼l編獓坍闫>善l 遬俇k揖倝r滝伲7鬟盝S财z笒瑱鍸鐊燊FW+7[O w釂噯窉崱鞰糊撑蜬)}朝Yk5曟!+秬 珧(4k劉25P憃喩伂 mgc髶陙i岾%儮cA榛馻祘>&`)\豯鵕鏅V>, 椼E矊i+展撢>堖!EQ磵栵巵L协Y橐 H騸.'8頓Q箿 +鬋T揖c W-暏B 胊稻嘸サ$腟 <览訆Z6嵌畸;鹢 ?\ca郱哜*p鸬5EL9睎尚穇涄恷yy(jc犺66杈"fㄆ皽霱7遧額碚*(./v1"-*HI翳暾oЩ_腩琗FO捔'雟0 jV2鉢褅妭舠Δ$;2輖璾 傃袷 +梟)H堝j礻浻洘 湀D、∕婑+Gn発鹻I脍p8 t泶焀∪挃#( b+IZ骙贞窖墾訟 C鰂龊5ye;邦栒 享`倰,g{蔹 鄈磝8hTc;~uv簖撟寇圾σ>衔.快鬘p襈垡谜oS;"棅|M9d 樂@VG溞+`M伌酐酌賡覽俱腣1鞞)J{8筬樕.鴽犸癛 +訞蛴j9^慴M塭管l9醾j亰 +匈萷顡TX餯媟熃璅8c毄娻蟨(##8 7d禆Tw闶L榍癰蓡櫹嬖B哑2N僯鑲P +9dUu!,ろ<4 衑芹"扫{蜘|^'懻纗}筲7r玺G?9,ˇ4,燣f_s妾穋麔轵洿e箏 F妃n鍒$[癈w1>6(T蹡窐C杋煝刏@X葲I Q惤x赲掹结嬑鴯 鱽 ぅj甌a.A匑z摑搊H菏2壀鮻牦r4Q瞑ZZ癙!窣nL嫦OLPG櫦R(\ -饋坨1f啻'弤up馭9憝#撿鬙:齝牼迨枦弨m騌6撳隐)8煑瞃仩4卟儍j膣4*0t寘殟阔蔖U閾*T▊#)C|亣Q_摳:滋6+MiU*貊%奛H骆h4朥cSS豚岬苸絵甕3Fh痮埮偫3E r|輛6沠葟挭诣鰩D睖沈愩奾 Y踧镉撄惦O1D獤'Y ㄅ?!29%徃8薪冒|倴栙]>[_?yf +/觚d煠坆唻ゝ笴胀*浂瓢& 庙j筘&俆避QT]HZl嚈d󮲃{纳U{旬犷癕`eΨV個-嚂昮νj撈娟L髽/_ 鉳&暶铘峝B.恷瓐嚰赼Iyj8; +X  6x,皨bQ)'踄j茤n蚗盨BAl怢扜lV闍⒎黓Pp郼i棛<.$+u^N瑠鶷6g喎'訶O{ j(攡M肠嚓氀飶U洤3尕x衑%滔4 Mg魚6 b0"愒表镧6娀q辇剒(鄻 +X孈H +(繩Y顾鲟?p徾6^觐鲶f}IS6 沓窡bm>>窥颩,榕拤唷j U)2-C L5璢*閜祬3H(盞E$/td}"3氹鎟bZ?(阩UV吱|A鳍=+贛歡Ψ舒璒P蕾9紺R*iQy狲+@]KeD(%氜夆挅囋辋5魝E共囱彤n7)-Qlロc叹═q﹊嬣佱-h轴1苸7?黵玺嚢vK-XD\ q*&貑黨UZ8犊峈+礗bmT/r0Q钍Z鶳_ $鈥!葕>躕' +9V諃9[4牁fW1\皨j虴m獦[%樶植lQe笽S.歉泦讽D粖紼 劽UV;惪纴輅4晟钺譏鵀≡ .珢\m-唠咷箿刟倸观菕em,('豼鳺;撫Dg鶚釗bL R﹂l囻!H褝\ZC瀉k糥穃嘶ォ +峼eG"Xnえふ汯j>'鎠 +庩炠lU摸^睈翵鹝pU愄0],BV箊珯蚿I>ぷ諸Vh悢嘼jZ厗M邌嘭2xu 騶恬eE玔N_3簜X跻啎鸃梢[.i弨fC41躟襣 p溢vg睁YkpQi鰛a+fK萢Ah瞸GT丯侠=X,糜粓税(ㄜ8褭嶶唹x +I⺁N屋餌7琊-忇Vf!1嗽[5w紺Q竟岙泔cdYUjS$揕MP临Z竺=?嘏Y祕"k-6阏磗蜹P狉蓁囧]*韣蜳/8萲,鐥欍CHv,4羾39-_癤+;`YI3Vh,$8-涀8盵m]暙紣紎麐焢R廸溰E﹔當j[柉昍3 釪e L螺|Nz窮髪,JQ幺境饻MAh湟J}\1砀2D.狿\^ 癊V戥Q%)恱櫖倴L亶\G襦!E燽.玭9 y`#融&丮+甂Q1偢8頣撏轸姠寿!┬##鱭:.扊z^汤l "髀xG稲q敥旜倯x>銾m= +搒^陫R陞挶禔od骽2f僢齑JA薅%礭"88.$堤皝攙念錯跒F删lAJ霟7湕+嚋苁竧Mi$&侾9>8m溂PP繞T2ウ$!'(5襼d╓m?v輾{翏Z悶t筕,J∟眖貉 珸 w#鍎6薞g<攼皠F倷 +獣-^g谺裈凸y伢恈观驅俩矱(豹O绞~o氜  x/螓矫棤鹔.u壬=姭@0喒侾*薥^湾e B45紺?>薲xU╩M濸嶵D乣8E,岅绯錱=躕9失I7惈 'kv0樕乽00<ハ敀蕲弹騳礣脆C0蠜嗵8菔5衪溃<荔y崵蕷6&I-,鮗鄼$鱭 +軇a膎鲓垯迬栚缷("佨}涟鑃脺67A|D衭OJhL惖\," 鑴PW碸禤併籒@鍜▃c 8湧1寱6悕n7I銣M縗 !e㏑o+r銛饆|H&>%?m脁@J/涾$滲^偺罟SMm髚"歰L 0#脏"Q軖:\ыo]敂8ご,wJ0 |嗬q懵K隽[xix` " Q逊鄅4_褲I>;捯+;觅嬔+pZ渢噬\! !'V駿HE旍L/V邕俋霘滸12(a [&+ B睁喤[]y}]_v< 炏UB攃鑴;躮Om2(n凲T`薙栱a棨籀S.+`埢禢"抝痋? kggOPm\>|毩'!1|+尩瓔VZN╒С绂5虐 W磖h@7苴?~嬤绰!曕$愓岁塮癇杹疚!P&#k!mб筗@茿祭,歷d絠抽3'闖Z梕#戵U,蓯纫飊掹Q2纐KUZ睺E19汦潰嬕<(@0 翸L_譬l別c輾喺SЪ郟(i靶郱i髍冣j)像p柗 _槂竡馇麗 鑰J) 咥4}Ti\ Jk9蕱k帤*曚B炈鏧8鰆 ?诠m庆W+U﹃墍Klr=嗗駠秒锼5鸷顋58贯n J聶e 鏠L-m?G!椭,栳C4揳!qd骿鲸銛焼醿揅咺甗6莣﹖q漛QY_C肿q磀1T 鄺闕雛镪轻蝮鲽)p薆羱襜鷍H? 礶ロ亡5L叁8昺>簏E囥甄焴唿/熃;$]#p睥cY";+[0骾蟾0\37奒9邵H +餓^h5翲棦藧臣磁%/礘標 "獥0H 庯筲b熸 枅7 #t紾嵙 D]8尠gp褻q猳t\.丘\橬;蘼L禗澹j钦 +愜7h&蜎I滑X釘枿廡sSR(a夿7售陮熤噺y舱鬎a矪欋缨贎N値h^疕&奕轩糒31I{%D鍬蠻I嚞q<扯嗙s毦 /矇#-豎襔嗇#OI 彍p℡]P@T闒痋貯0'<圻鸯1鶞毶播捖s1$}U隝r了<07%甿0k4]朘xh誋恴 涇ve166榖AEQJ8庳朼,`ucㄛS^4洮e匁孨-Ym{>溴Q.(J媌蕫R7r*#Te/鑓芹.瑛{幏曋胋AF蓜嶷呶.ぢ跉>亘B 8拻輗y蹝>!, +d弻!1/擫鳣俱糯/I(擜Q_W=R榤畸溧鶲{索@_冪 靃a臱6z叠S痾ωSZ乫uH|@唅憨hK:t侰奙#K馚,Wc%$[sEiYZo漋7$,a>A茾炽陸鍖縥苝k临窉袵H槉瞭 琧鶈W> 玏毜 押憽 +E fRT钵)M){羖<T韃p'睳穽5 s>隢^t窍 nP,j亨ND鶞 緅鬑/@傐`覓廘橨唆檶愃:瑄/J劮戝硑@'@+)皚z踛嵟n+氜?瘓r0蟶袯皥b~y,]哙A6茣搑趼H踍乩o396燊镠悅!Q*賟u怏Z飥8囜″l}〩1g滴a魋褚⒐.胖狱^P瞴槗竀;o}豆鱩"_7瞨za槒117c鰷p%﹠榔鋽"毐K爅氛鮏鰳+确-u,@呓鳴V%4 |#*5QM紉S捣.1a習蛠嶬%许炨Luk ((鮀想甌2O犻r辜ㄕvk蚐樭l.<.罇_腖挮欈^T?5胢N1`/菀x颲b,<ωF臋|阽@I悰ny鍞鉴PR O郎td 堮@XV毤 窀棍钹莎4w藁戓 細 $hzC匼cy+b輼f 9愪(f1\ * 岕訉>*埬:浖<渚a螲jK址}狝悁鹱躧Q霛頌~絪鷵皛娪w挣秧潹巄蹋湫翩擯蜎K彼踌T蜔Sb嘸爰猿]8閯`@%栈 I稾r 埶墋)P鉵6K摂柗糮踦 乖J: "託Y謋1詰逄Us茍- +od詬寗c"4Q腖埤wk璖沁騖D57[Е1Q訚鷷c葙.傌kkt〃晦RVzf(LR葏o┶.煋I2謶( 豳 p熎= +_S蚷T?哈 簇4A9淺b +bV [蠯笍鄟7H省2 v勩";(瓸>瓏>#担d飃q)P+H=晭挥旒袦桔颻B@3@踣=I熈rH丼Kz·僛睟#L覘虆桀 畾僀課0b@ 褜/qQ %YU/$鷟zc貸飂揳-爆h暽蚬鄪h疄緄炞妶#A栤^眆v皼R/饴玌絜: U疩\ I歹+熉⑦:襠较攖1蕎蕥遽绯漁]"1M67寴T A嫒5x錀l<)+鲖L80%*;#菴@EE煆忿[6`歂ry`YuI闝4软2N?鋭豹膟窮 厄Ed6*蒹磅ㄒz"Huvm崄衽塎, 琇gG琳A琯X挳@V屮&倆-[2H8f蜿-o鋜Z6#K纆绎齺H0\澎 簦(禑~鼳襔録殗hE+`J!奩~喔(鎝|UO碁 +H┍樘濖8く(僃缪l 縱|#}巺鹩U +hY誱咆摯'羛o锪謀ok0H5邪< x8Hr1榺_舟/LOSp娄*+5Q宜wu{.i唻甋G叴d|H (楩唳縟漩zV"猱Pt(: 趡|R}#/[钴 o樜X3Ze雑明g閩 瓱+匐Y5W4jx℡迈\Iq傎d馾黥筵j6D砸礎9#嶍,黳邒鰑{羶B─"X!C賊暻嶠Р>N糠B A X瞇dn椶`fU}琱}徙>杌 1[癒xy-5璏#}:e2J%)zy噁諱旍纠q蛟株萆/廒1h滨尭瀾q"tM臵^滢艇3X~)儘瑲賽DTN佸擕A训亳彌鸰2虄 琢斌E蚈缩gO啐姐壼癏琅剙-(RxWG3懺j 昤朋嚴操<虯=<鴢3毌Sb啲m8迥z汈佊諾兿蓁.P 掟T邪頣丰 䏝rM作蜀誜f睝> 00n\诲S挴錚3w鸏H:踄f#勶a桦.跇 x)泌鵿ЫUgж怷碎腚榉'08晿铌溲o:阕%PIr3瘵j藹f媕定 b跩1; 一a\#(1琀=C8 +U拲0 +㖞&:臫Y畳J〖傗牕篅虂挎 +Ax⒇R訬避覞e筿砬噽%7襕饫 `(殩B簽汆2評愱SP<'缩f@76Q廤_Z釣$O9sb軫}N昝5屸簰躲抛睨g>暤5蕇'{'飝蛏暽氇lD:*;}痡A唜抹'糅[q颤鄵纛(hVn-y鴲 n肐0{ +@0椐V盁苫缈抭5 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴戕惢6 筴泗鳺2︿繏馟讁q>{{鲴G积?~3?碚洀?毬疦屍浄砬o縷q鲦YN'^淿_殾h闻艡婧a牆_瀃趀t}u辵Di,_<緓yy祒駤Rl l("E壾]6>c﹗k轫騱?*訜沇0 /LH镢弻稣磺W骬撥9H彁.~穽xii檦z凣暬ぷ跸积C襾k祩鬯v蓆_畷唤衪1摔顳 <鴪び+a3\舔6m-B眒N闞L SV祦 9睅憕砢/滘 :J[A蠗%:C臠蹖卑/攓 硈y6棧憭滝荝Z9憣) i〾袮 +k %e浂穊N$'*妝艗A 7Y笡8沴浃驸t刞f〃岣/+]荹J茞%搪V +楯 e觃匮QP籚靆""f[<瑹阱=+伛I烺B綀[ _7_Tsy胾偛Y.b8W醆粓:%#泳tM奙81 NU傕衦vp篤@韑A5砊} )"K*/4E,橮匜恝剫标辜簿谅"垉狆抜扡=擌42鄺鈞萺 毄"↘RI庇糙竾b~ 盞%-Y軎}働?[凶6X鴇瞓.嗀40%恞烫d樀u" +%絼谂扖(醚竢冩鎑睱报肊f2妟]'么x+J璿&%D聢P恴3誑·姼p@歰鉻%_搀漞珕1衷幑9bB8醩b棗z 闦#_惟隂<8甬8g跁婨厾|{蓙妞=DI綴"=倞従巔拭OV蜇驈)秴鄜)矶n朠鐴{芢罜r5摃嗖a兇_A蓘`Y觶雑扼娻\0D礸唟q]>ⅴ>-碼EV;_ f/P&虠tY熣/偸%-(a堡4b笚鰭,(甈2>%c##楰偯sU&湆P鄀尓l滝"0囙伆靀DLp詌嶰勰@璪I绥昍罖J&88e鍆炱:撍Inm潅Ecqp=渓爔U郍8体沾頢t :1肏镝鵣 P戝$!X遥鍞b1-塔p 薼P8j觮漚$琽0p鎓sB /K頕V/掱蔮 +, $d8 驧k莢,k篷邁鼯熛鳛 /┟碪d齽曏i=t"4m+*i侊"L}Y鞵噌T碭糛蛜7E舿tb憯澫嫹M烔0(Y.e妅 V④罰CU跘搏:CZLh3纤=棉M'=pK軿h螔:t%R-捨胬"詟$(垵槩泙lU荌縋R移-||#棉n啧7?k 0芝b鰁k(Z#J鞓轣烬$航 苢O5芕4HLㄣD饞6偼贉姄蒻媌(洆p"+閅*敛 俲娻抣Ay柎i緃fr蛎up跑fL!hT4rY1沉e3皵Z﹉*r囩郠\fC7鲘 S(8晥騽錑,?P諈,O%饖 +抳c +Q 枲塖 I櫤!&7圠柵鸫E'8纄6坏>牧凋yC-挰c@╓*4肈C 琯昄斊6阤攋趧 嘳郀R巏$)砕隯sG<(j遇覰 H hQ6@X 40@%T=⿵e8Y緈w$f睯>瘉'4)cd炊佸h拞m捝i參嚑,鱁贡l 7em!k洭谢鞮 朏五复U査2 S腜縋0 H.\.'@J LVZ9 p\ 2@V$C?xX柾戍糛*3壮l !N+蔯唭牗来CD$xN8)ocC刎  G7门c滖9%阠Q僤鳦5妅倱蠥\pBK'6e(!W*赿4x譀继#^馠&黖$絿梔W}.W訞涢 5y+'慼&蛼-Xby啱q|-+咮)黸t滝鷛x裀(^挜喞Wx,壨P8 +CU梦窯聩绳> +寉 +*3u媴B肚嶣1b劄匢6!d+]蘃i菚鄼qL7h羣y徵罧^櫢w86&ND=鈅 +鴄銲3癹镑媯R睌擐鲁醼d巷=咥牫4W郋嘈斛.H捨抁三L㭎本'x>瘓筤鏗倒c3淴幞奲4mw/f倾覶!玼x<71o趮Φ尀枕yF,+渌藖7伟qм賝O瀗M潝鞏燭k=+5垿秛)[夰Dv#欅斣NIVd囋妭L姈;汬'濎r 挧嗟C.擺逾U飸D薭`E跲1Y;1哽6搒3-/G櫞楐`.I 仴琦:^1顟x6锔縺*kшS夹蹄7P(佗┞塢|1Ι芶t\魇-~ 嵬/i軏抭“ 嶼茅*R+昘艝?m$噌!LY䜣啩k热n H>僬K@?u@彍PC褢E磬+ ~ ㈱鷠Z8滒x敱11h标纜 +^(IK0u県Jj?峜0dA巃J!汇> ‖耨桴醏X類蛁嘞:i鉹A"蔍U獤+qw埫獄;僻9)藗筒蒤Ab7漎.樖z僴勈燎Z证b磡!曟虙jtD.-J(G辜暅k 蝂┵0華jp󸻳諟柎!6?sK 〃#軿旦樞暩* 撒`琴\(猗y鼳槞糿虙Cb嶋呫⑷f稥/駢dz9u?L%喠啨((Tm{F1疝8嗀鑦0?^軫佮+蛿euF攩堔4U饞.&灰G(缼 p趣!博<, +F0萍J膨線 愷| 螠2_孌虘0\E"檖:晛@G翴: z葨繾<+F +0カ=T +螸|顚8囉芀怟 Z +&箩饐兞嗶轸JdcT蹎巰2s藄7寊鸽卶╔4A-毳(e悡馚訊瘪琛=灡(h-N豀8L斆攽鬭攻Ek埾仓∨/(R屚駃Y)伅煸"Θu聇贑丢J`;$鏒ヮ 閳KQ&} F(汧誢Ωk&$aR; 槨謉籯⿻萵麏=>咐U斖#qK6愇l4暳K寬凱D8趣$Gk儥!C +礌钛(Z2虒巕膞兊&v岠鶥\揥矨U1:$櫻%蔏vEa碊*壹N庩J峩訤悄逥M懳FF黅詅檒恖uf嶤@ 蒱冞悏Tn[謠pvj250帼儹pp璍蔔L彭 Uo$騭琝※/7慖@澤浞插肣奬虜董舨爑d撗矒\r笏 =4伸#倬訥稁谖 棤hu^吀還粬9澪琾R92r臙舏x儌'爖qi灯^瓀嶶[裍襈LR,tnD勩E)![IgN鉤6c1wl<哊G9k,夿Re#EC5允阊=╓-TAε帋聒gAh$ q);諵膽bx鼅葥@訅`@e镈2 EAtH 瓡CA's4薲 +呠0賸7E6$3^葶紐夓锱塈P('W!#嬇寣D撩啜儗z缣蠕豩碾錪箴KR枧罜v备X*T_專"~犈S驯T┎,4 +0炲%;莡瓇0"F8銬任蠭^(懇'6坭鏁馊階$栘饽j% ]k/o哽 餯+漟槵(-Uoss 沇觭 P4脭Lk;q%_邾貍 V淘L圢"6攱儘7'偿#vv) 忣]sr嚻~&湥u瑞5涅Ru⺻|\乬缽撋烎眑gp淪#p@ +濂R{斑:'阭Cm #耆hpt4J3瞔(W2鉉趧f換>'芆(呬b=$-顎翻縉t弾!!$x寪 栂墡孌愑#C鼉,弿;渻咲nZ蚆<閌Z A!"錛儈潵3喼BtR蕡u R柴6 uK喫恍b4 491c B鰖`喝!際斢箸|!;涡5:JN掮嚫d掗俑睁孏楱1f$刣仠2lNQ洜;^&y!>e|鵈嫚lF捤爐H斑!L4&Ac票*蚼N,洌d n鎀樚67#盲%┦瞴玩(:E裯)?粆.庙麍Md〆殁*j蝛UOHe匼*3K冰0濆坏}眍g毥-.b啻Pe箮焀 '岐坈 '鸷鸨"_嵺聾DK8B#L帕1>c吁骡蓣-嫃嶧b斿$`Z詇l剑联檝ガH膱R.DG茀垴揆卛钹灁嵂裩 +猶荥骣-嵨4et4祯2@膃#倇Q#N(嚯牕`xc836F醚㏑訉wy0顥嗌1 +Q辜T筬歖:杢韃0vFF\8裆)鬷"5蛬倏覡'腃戜D葁灾詡甎6嘐$繾馌0Q$]i;6妰# 朅禜 垚沣LX)/嶏#鸽&∴u鯌1e屌R抶4壌26N!%R1嚔\IS r揙6 +峏!rGL嬕 藠轇鋔擭涼形2<聓K4楀劶ew94滈膔t睸2* C眲q岂#L嗎 C0_貺U5w嗏孇P腒聏@/"嵰l厳簂Z =s┄沔#m鼓*M_锹脃:成霣2=孺'ar鄍d斠忇G 叒鰕迸 +葲瑀$j"&鋉牶頱逗!窚$4曾8軲{*罖y$"髋$⿴佂沭骸汆y孹G帳]$筴脗yd盠2ypx蛿PV44鯋懬Q冧d$△ydU◢屢譣逧'婺間厭 r茣2&葥Lzx賲: Y怹5ZG玜8蕬 +庭'藙Ⅸ(]u牍1'穯缆ry(hEC酓(拏j鉋c绚,UC髵T鍠揨;s桟剣Wg悹檛擭┲獫菡軈(襜$ 12蠍驀!W彧裆h籬窢齫]\\%壅鐋d侶"墀i9笻q煛h$,裾!覍Q省楧0 |:HHS +摶姳4VWt硭荚:朑椤?啈 B=a~2Leh饣 P + + +侌宻D啇C8`慺伣L 湣櫔雷兝鉦5娔1:'澴訟唃湇啳(L I礖4$傾窶9躌4 |招氁E齫煑禚|輚(<苋(峀H鳰 nI謵嵰`Q疻鱶q趒穷@u,霥B銯*俫A阼h)i."l帋掳 埰妧僉蠥m冟覝 訟)悀疓&'S湉饘吮Ub剄_HェK&蕞,/ k9澺Qb 71#l綄r髚AQ殜阽 +穆銜N矽脿h Z琜S彐緭^~![3笴1稲浐籇q%+tk芁.減Z14[P鬪楯恾帲H鷜A狦) c&/桫P,厦攣4钮8为F [秣a履'敶妊d帿犼9$泰吷軥萵>蛒}|2 +*/<獊 诒(D!弩#嚔h豲笐q2 ゞ毸1Cf妱Z屍 $T:M UA誾 戄瀒)PL饮p緼f#q釢燤偊蝤J叧h措A<沅钿戨 崜 臧@&pK$>4翽T>凌澧褌e E6e(鞨伫玼魕$.N"衬㈤裃艷& 4#>婹:樉愌葊櫁躧.>R8 肐帇P"T夔#7#`泣饆BS3'肉搥蕄%+嘽ID扱 >D镓塱萛,,I劊蠵籂襱F喃娷5竮&B2瘮壾*a圊灓髅d⑨A劇eLh劼賶潇I勏蓯0叕倿rEj6=#7騆姰妑&7RK [ ES醯沄6 AV峺惸 &栦榎17L倈z=狻萍薟 s襂..布蟀#D7)踕)N尼8黆 w鵆qd|X>伀S褌遫晴蕄V褥謽y0慚.蒖歧毦NL魓!跌g墛X浿2渖脧L坺!叼< 窭bA m*r燰疚P_;t(x饙w\A( +!蝐 A霡V|8菌A僞c詢槱軃(矃級+聝Y峆銵`醦礓|~7NWr衹2n羇杚R#1銇明Sh7c|\貐㈩(Y狝慽g` 坓 ((S嗄:|幥CG8坸2倵;祥河俍0PIiHr 8m磗  QsT泥$N40傇Q魽炯cf鏰簚Ii9恲大8燽i)f斒E㈤q振)C裪;1雨颱殯HT擫鸃魜╤膮}ec)炍萊!S舶j~lEm↗M愂鲤 @>DV +C纮┼ 絽<吜 醨菵5F秳G]蘞0~ 2迄絮酑讎<銃(鐯8x葈 鶸Q@!X 瘇 皓(雭琄cc袰丷27榟Z+朙<#/8崕瞲 r讇 ^7z缲樏Pn8 喅0=F犦~d$老蓁)z7!w4$}^Hm8h谪鄭KC$8DfG友X26 %哷 %耄$c燃a2楇0襽_勉懷85J%#t1瀭b醷窲$3螃3&訌l鈍0,嚕菺 郷咷礱鴭.б 糎:P( 寬Y垊偈滔煤类U(:G?嘀庘Y$垯亪It枱皣 +gD…惞$G蹛霶3NV{庖4渐;ㄑ罫f滀1.坄L侶(d〾熖偲乔鍛*v鄧-&S1*)癀PP騴@k. Z + 擇y仉匋鉩 鴩鱟 c.F7@技閌灏 髁q ."!4帵Q 45ㄆG纟呺 .D螉HX拪録瞶-媜8@"朿纯B+墒Z譏吓 妙陂)NB妎圸W只Vr滞姏Q! K劔(.棍J‰  6:b依К!Pk訵 X]A*闒3n y)H 栜4/玓д:^*oiFA炋>E惾r養0蒆C糚Fl鱃`②拲兢粥铢+]4W !觵脼I遄壧rC:7鎁'e}(iSP豎2i f--湱菄 枅Pd6—H梎r $&藍@个剜vd固裾]h戲B@愻懮j D!躎掅奞減(尯YAR尘闶娭卥l2餻M暗曖"+淥蹸'篊n-臥捀椖^h.hv愇l"C僞狅C圵 vb +,9 +"(e捕9`犘 米c\%D&<涠#呅HQ臐'1&n$鑀惱曑 'PGAw妽5;;4d%矫V/]X)w' +k②&7y)跰O J挋A'Umdg%,蠐磶潪薟62排xb姇陳0託碼/┢[炮啢7聇 ++=贅R璱Q腜;鲸桧DnD浃椳灄[*VA%俞X傛硏(F影噕j羣gEネ5-C:僤盛H憛媞0%兪B椺.6 +撉襦%<叕E3 (&r(/Vmw2068√说擋B讇@&o8S5坬yRE顏9嚂 ;缮5V,<!A舎橹瓏訝"^ +嘊駂膶Q圦柪*`8 ;H笀+\p! O翉@,@蹙燛(8見$U-*特閬檋7'v YIsb儣: _晹j麻$#C$*$死T桟D崅_R=n7(膶琕a5},淪1z9xh_4栣H伜壜渓v驮L"7痁w 穄jm:噓 沫Fo陝jvi鳦瓍柗捰;斻-$Y疿^i +J5 +R跱z窲S臮A R蓑I欳昐'5e&ug─b灯+UI铷謹昚q+牲Z<1'&8╊fV,~wg82 +K制;P[Q*渌+曋醠i9_^嵺揱旲貢6/U胐4翫|冑>根珣7w衖/Jr覯.╢O詊j糹&Ee掁%恪;╘y=昣2S琑CxS尞頛+笯藉:'驳5$ K┾J,釣日謷鵬燢R 呹|到櫶苜隻"'棈x沠*勶UBM垹J2#傁1榵b1nO4:坏町牰@5孭FB'缝&胒釴蕃魐ё庉^觎騤S葬卝孭MTZ3賚j[窣Yo&b/曕巟矀窞释瀚鼫i啡v ∏ (Y1SnnV1/]驏纠I%烷勧N毁鵕k>貕'Z嗃H鼘摕I闵A捍'啿贃楧P蕭^蝇.濽(o-_瀃粩X))轊-繬M鋕[梢慫苿釔>IN,榥r熹朌/栎B悒晿4鞄l ;砫$4{Z5's贂Kfj禤竧~蜕,╂P59P雚w*矢翀鬦墡撻gJ鋃R舉8FV*雟?D1B笵擦XKT!驇缅1质瓭Bs+_[脜薉1bI须Fb翲L噑晆藀麃p渇R2蒍j荖獭Cs暤鎌蹊]曓Q o捍阣P淫鵕g薐M覭'fV隙0d硟棸揅E疻*藸P@K氟x(憭卧蒢o7憹m队砰p胎镹+kノN枰[:悝'1 湗MdAYユ鲈赍浙wZG蕧淀c坟夐P笅fr罦+[嬌:瓣馡錼l诎Z偈矝_虜j╟0說$ +o廬捳仜]-45囩棠LゾA犮揮巫巚.l?t銎抠8|u胴誨q諰蕽璻鱬8_no铜]Y;~w+eN蜬j赏L仩'3'3ゥ名黥N蝰:疺溤 ])w$蔥櫰N<7OO;Gh>(抁螙V歋鐨暧g隨g冲崣弩瑫jnn L暼/WZ埤3x珦蛨9 U尔vr*檁瑅彿&螆ZU+v髱ゅ釴;_郇徴曲缨鐤o剠禹乫 练更T~9_Yo鲼;S +担`Zhe屚h馧喊Thn汗y35eggs誙=1啻烘N蒊;;_l麋祥V梐倫)婶忆騾钴~kr皌┶9|翡měf撉杦o>}缥櫥V6/栛禗!Ak洨匍暃z砱挲甍+h麳虝鉼癶"控沕8箊Cv浈N匍!+虍栧lm3兑菟曌鷖鏷1O3f&7詫j ()zパ遌=q麝眐x黲?濡g异鏉弼1^n媕螸蚄z?F-9`eA +訁蒷e必?K朰┮ho剧#_蜹V|A5櫈淽簲挞^ 3櫴6坵锬澕V 凪为敢烆L灍\拒欈?s醽媤鼚娬崊蜎V忁翰s愉蚬褰k洤颻\柜蒰?贅龞螗冁餌o鲕p狳苕晻cwNn箈煲謾鍝''N9呭┱肺<襘笒嬐3輋努f蔹R畒8棕lM韜fO3门炼潪L鋐e硲滔dJ 欌曼j5.i6淯楌pv!檁.詮t鮢夕 肔a襆鬝艆J鏿┕頝虧乜p镦蕲`K輏G'嫦,l^螡iO湰t彌铘乙7覾J炙Dw鎙sx架資诰uc鐜k==祒6&侚Tq跋U6蔹VΣ?樋)n鯴6+*5Y瘯洬壜l惫*午澤鉬b**,艥N┚覚塬6漝WVKP蒙艐NzυX琴陃躧N靎k珎轐纣城j 胣G捁蒍syj鵯娇-/tzpǜ覿馗q]搆菉鮱輾劇眦彑<芞{冡-7臻O]:|闶顣偻浿庍k摍5揆$貎ty{~櫟[藵妣~墭娕vo?筂1v$杸訋х\"钏呹aW9溵+誛檄鬮畒4U佻鰪鎘+p_避~*稵jnL镂^h蜏G頚g虻錶e1X痸 +偷lyvy狲{>豉揿1歄e嫵薣,o莼竨me鱖竟1溫y霌飠觑? 2縬i絪[孵/-韁[>zG2縯胪o|;>敪哮B篴OfK雿狁呿+{.瀁];鱸= f鰶胅@n缭}W飢M狦7/KJ糈諠髈:u筵&杗;v悠9誮 +硻虿潪v33彐s忟^z 簮上x瞊 鳬 _+VO-_浯b買致陕偽L蜑z浔w/疅踮涫筀觜卞7w8吤NnUV膣職燭X!/蜺Z莕=r偻軏謿>踵涋玔礡m~z辄趄e+3媠+7匪0騌4-^蕗渜Q牌戸漑鮒慁苯泿磉窙抨|cp5qbq腙袍}饓w侰vwnx訐颸<|#2'W悧胼 氓&杗J珂籺尻菖褸@揤f9Y,謴{(W輋鳿*? =E 豂(﨑椁硗{摒忐;b\蜕3樟 7(-^军饹w:3瓫 郢 N-綜616)H沗X荌 3E簇 敥5s1W?*姇s蒷椻4.W踇;K雊 埁N草旆嚙k=潩_均岹线臝怪膎c駾眪xr鮆mr?UZA暞^y栉嚍J逘n%繦藟,@;祌兌箄胓_荜9垌藿踯-O疂紀絞<簔>藵惧騼w荦VQ&2硏仰餌交蹤:1籷e皒轏O^厚#{棔x?覛尴U7 +低摁椋甾0籾-S\]奂*>渙%&$cw珀濏Z}v0-(y俕Z&吺逝DaF6j摣W硖噵槓坍7 +9蜌,7觫L~瞂^Hf'O/l]*斗%業┭谨戠躭忿][俟yb馚翰f&zV/hu裩*rVL檳f";旴卒嬉呴Fg 苅c轴媝>觅K嚡蘯^欉父竬nz~/洕|-秫史皐鎺p,)砧6疹镴c*慑}篼?魘怀 谉_<穟饕蝳0伈 +飖9 掲;J驾秖鲈~k佰熧熌x剒咨 jIT +咜`0祙n~髥櫟覰~(壬lq⒁^kN,^h蠟2 俓*枽 鍄ddrs哵愀T*51\8訖=.削fO华Y+謻蓍罾H 哅選锳蝾像9:淔摀*俁*攇z;悁v撒&梟蓴vWo/^皊咏壿[xV禌}g/誹k*S蓓-輵F-I-秡噾£綕榈K [讽?竤鞛鲳d膓.?5,B蹨Z徨鱪 則iY5姧宪謏 +葔霭臆蕯帧\殁Zsx睵榌酆\雗籂\E瘋$]愤灅9珳酀涛kVj囤>R++怕琣枣隙诠y脻8榁1|9nO茚f(6 }从3 7L,灍X87絰羣'驼沶LU髥3琌淒S n8|踅[k0妑遐=O琺潐怈ZH75沉+c#[兕0踦2觭曃阎)4,Yㄉ鐚x#2E[潺灾剷Z愒嚗5^pR貼2)蟅簢嬱蘈ス);ns雄8[苯m完槈a2赤硶碲`_1愩fg?{7贿?%噷? +#赫晏偎彏键Dw黾潥b孎贉茧'陑絴$琲z覝)'姵仝2*髃7j糛O,^+v&v櫈b"1+"Q!%摏潨?蹪>;\9迂B譏鲔辄姞碼澄+剔穆I奜补eQ.qBF祘=$伞洑Dg缚緖wス雨n,炍W譗窵瞱疋蔇2r跬起趑戥薣w kr枷+琼躼駚Zm佸矋析卺'fOW欸*蚞盆擩 Kx!/田?8穠k〖慔$映j紜+瓀6鉽 晵昩静).,瀇;z籲雎!-iW髎轸D孖藌胻3,V穏W幗Q焈呓Yw1謋XK34潶x幪mn构>e惄棪榯$朣峚軡鬋#捕沑饃Y捕-f羪戚oYF泺揄盼 +%8瑴澶P恙巛詫~Q嬌軅櫈-孕8霚XG)G qj貸m!憻2淤贔顃0[*螠:y%%昞ケ2縭靡普Kfr挀螰k偖浶嫇击摊]>q鲠萦妮z5w鲡綅&Jn拤祙i絓Cf疓à>墾z家>焙{mv庹 /o轟,铐2穜裵:J紟羜h>沺5!74 E+8.u布*MQo!埃t幻炸ξ杍剣u摳圥Xg箶eu>帚柸/4{{萆%豲鼓K吜陨箷 帡[溷S鬜屌槜蛘E輓蓏偿缔濑率=迚旬 洳筰2鷀7垧*松懿Φ:-玡圸S在夓落聟鯘;W哐B231嶀睼K-寖氪摡炏梙皕茴JrUVj氈d({iv绂cwl, I烴&egX6 éQ}净祔曙8稚q劖\q恢#趕骩gc%脬>A謟皲|"砲粆孫凬敛众获D崲d郓鰂幫璤:v垅謺夰齃a猉湼z鯙 W魠TA)藵W 酵0)E3E韝zZwg驮B絯=q^PH5嫊锚鄗酜5健i M3堡逤,瞎猑Iぇ愒.(:i邶Dz艼裘T稼^巇+奩Ehb豥2L#R 珃蚚u求佩兎廊h捶}~A媁2厵尢緳灃魖4fG 'ei>撊/N-_Y馗if閱Z{G:Q:嫅六D)昮LE+*薻穷淾緬+璳f g糯j4玧X虳r篭],8(廤絶揠a!墶tY蘀YLT玼=德戌a⿶任j穸at"垍@@c鑄蕉— -E優湾$騉6SK撍[嘜莅w袷忸i奋哲Z4桳N鋜s奪F殙藃蕍j檐 [歱2-7桩u鏽跨癍摋k*狽5_鐉g[蛥\a 駳鎭蟊#焦 ┦:-稵/*肨ェ&蚀扵靯褐樲辬摊媣^詓dz\/Gi鱼岲( .7'纹%I6 ;,3k*塀GOTs曖恸纹3辁UR夓t:縳>k|滘屒╤贾X+Uar>I4r$Y\FJ*#-[蘐91阎淶wぴ侫;鉨.4ト)*f)撫Sv*/婩!H橛7芫s鷍:餑0c嘿貺qIT沲瞾犔駃AC鋼0!﹕炮F&縣93=y1\拰| *!竻lQ讥苨嵙杗稶HC55wyy泠Tv:-( Vw;栛s]7禹L钐蓶囧鷟ケYoJ+焲楮黎(エ昹f妸╟!8 Y墩膈w#螓煑鐓め4F=1o蹄鉚k,W巋J3┚鞹陧#;O^葫趠=醵н~鷆_譥}鮓鷱|齙惋7==酱弒撆B^93裚灋踍^俎;q骊-阭垮瓀=鲽峸遻<方釐O}铢/|牦?v陠齋W幻U8A矢閚2;刑b2Y孀7w鰩熂矜坚7魁m秫利飠->痂#O>弣渑瘄樗唼/|韀飢菐灪袾謝1A4Ip筚~2$r錤gqe{缒厤軸3+氆G6彑=}殒g燐紧鉥W/|醌w=フ銜4E橳卅﹦$*鍏~,鏐!艑楁楓彺啱疹Bkr踉;飝渫=貊O金拢o}媪'搛萚烳癛牷hX7鹾evw虏蹝溚真dw035饭y滠飡鷒啐靤蟷碹啭+瘇醟_縱#泧削雚獳3韤4 7F" 銴曞犰盝k疽毠|圯稂焬遻~徔介-鹘岜'撖穇愤酷亚o荐a7b1搳戟欿呪抍*争t篠.OOMoq媸躴蟷?筇3覘盔祇|舫峡缑卓/~媉7均椏/鬂o{燫_hw7鏂彿嚝﹍迟挹笺+O>駟鹘餄嚲鲰脒~镚_7矿??p&魁~鹉3贤槻d车夻燹1蝾弤鋼/<龡~_唼7罂缯_傀灴嗟n禇l#I峾n闭蒎,县貲 膤鎏鶉~洎?笤s飠辖馥訌_O^駸盔瀵龥呒饏瘻9W5弚萤9#尬矃蓹橥潩7\简鴽{鹲粲/绝裏g縷酯W^痎僴S燍r郴婅心h4&+$睷N$画孳髲=鶘菫~螨燌^O^W钧窥_淼唿昵/眶??辏燓漤w轤k蘦K,k汧┻][[9v衤蚾xO烬頍 ?O旷肪䴖啐蹮肟^{W_{/龡鈍o~胗s媨睨N"=崚畔~焗(yS/涑搅`瀌~a丬カ忼蛽淝_z鵪窥韔眶嵂昣鶡?3o}骈~4洕2尵.%梘諲鞙煎忮罹硌7荦帶>蟑騥 讆焴3燒帻鱛圹踜揣r炏1矗蒳SMf萏D玾7>蚱<м齄駸诀/进蚾~?O>>蠊宪忟]殲踧軫)?lw蜕j捣祐t秫过7輠?|3_ 啉謼_}葵訜_+/g?浸;_yo:r霻2i 拴竀n袡苴8z跏7^厚淫so|杈^/钑_{/紧誳}錱锜k縵緽滁涑/< 7%1+ 賢jX*r蒔硡T}3q婺畛竽>筼~鏪燑堙~~??蝌?飤髶O饟燓鑵+阀r}!悤涭鍔S呪pyiksm肫嫍搦苒?蜓|庥>?傀縶殓/}缁_呔?3飿=蕆i穚P"&$蛒}剡於缥>>蟆O|鑓燒~颍鬅简谒每魁妤燓/廮s飢?P玂橵憡IV2帐f讠|黟壏<駯/|駤?x閲唼莖件席陔窥/_堛骶~笄?s辖汴眵餄挥t;^:报!榜hHPgan銝沷}骩烒早>髾Q蚈|啭唿踥尔聍Q◤~w輚菈cgs^x.O麋&z撦zseuag黟弃猢93硽慎)蕫 秃 r +杀⊕輗褴钺>|麋?盔鲝o?耨w=p睃艙垠S虞頟岺XP 紣繡簂3暕尢裢#鬏t峁?^/涌齇鰮}飝蜣{.M;\R +, Y㈧鱮S韗敬z麴謺+锞蠖囶惑眹飝稆谱_?羯侩#飡鷖焲觨Τ祦&c屛0(4絇/ 3寿隀cм>齄;搛;撖斤~鬀選駇忁'z嫌忁q毳忧v嵐倥3佘屜'鼕犁闃 <5K莩{沁x]焳/鉴酉=篪'?飣?蟒骺榫{鲝 zCCM糑艤HHY&︷& 馮猋璑衔llnS6肆[1Z(峜mIJG"守h 溏x趹$G +铼鋋戟]5抽*G ,蛁尐珫q稟眽@H孎4伡O!妸/R-/r謙)9肏$瓌埋枹6妳n捍p䥺K;{诲ru 厖@圙鑰U嶧蚉X GT霜d2]蠅譙匱q磹J7逝Z挂朩7s橽5_X槣渉62#:R 5瓟-)zud4 窊t簬Q馅ォf疻药J*dgq舱杅&+' =(U嶮R邢|催K蘝?蒍S+7楇卬z渚化;5瑫'摥捂荇朱燷閜4>骥嶴A0>笅U%霧1[枒鋌湱'*貼)帆渐榈諜誅墁*珷餠$瑉鼟/Gc 垲簄G觬,cp4:7_言V>9ub{髭授%.騎,g货\%e)E栍潥繑L术FT騎訮鴦!箙D疺r臚 鹡p)I硽rZ賂7棟奆)N0c箖戨C娮K嘋3d7喉暢燲'J羀Vu7;葧扵堁.Fg蒤儇X彈鳆瀜T箻J-*奪$$杻a佱 浨橂JU嘤6al$蕖cZ$jY硾v层篗殩ZV$[郙EIYN叁B+崘7髋鄒&)QJ)j6章a暒璥P團錒D拕2瞞礣惮u濷&潚ie=A臥 電諮錠%诡髩鹄 鼷X' 0a,歆笜歷洣瀾K已▋}ky8d +|帵瑺O垚w*櫫癊1檖詠粕r遁?{鷕杰 ﹁Zr迶 +.5鮵9懰臁虢^-驒PH-c8认蟩\g昄蹼铜Tj"楈(\偂t&讜,団濡d ts韪A*Di'啂>[79撎璗毲萁楗+R 3;鮵巕F-淭bjy弪造I畭嵠篯[鑈 噓濵晃燰,W"A;垿 +*40tJH蛒筎fa|滜x)/牦S~_孉n曀:櫢^戝r/磈 Mop\ +2Y譃d<$GFcca糷0燡|蜳k喲塹泷P(孩诇錅錘獍,銡ZnjrK嬜糬歧朼渞韕焊b''4璡 2筕6疖P剻俰O5趃8虑傯4 ++仩1\诖;栙F揂e<Cr\#峑扻J'e戒跹盭聈 Y┢販ざC晴縫X!颸}L狼剝$d衝IF"觥儚麪(棪sE>s@柅 aR4&煠鏢|8*洘-9!+鮷呄乧#1騘u釢%箝e&桋鵻<q| +0Y` 栆馘La儕%4-熓NHZY呶妉z刭照傁C玶^5貉X:MD颧E5%;9C3iQ fk蹅X錤8鈞絣耲,.芾硻褢(陯斲遑4茺琛P4(n瓭棨⑾疕r +扲ws垫瀒>%钘96佒饅bL蘐洳aM謹沍0鈃敩k貳.y齦0O5{vz2W\殰?SmF侔蹥袹df芴棘)6>x+殱记寭劉 Y.c檓'91頰 X[P妌vN姺B攨+毗晤%3痒a i 2J星sНl9h睜5-Ei仆佸韱V踏{4m審S%dw&r鍗DjYJ店J:;乲!L舮>b壡;鐳咺〣f休R**梵騸裍6Jゲ匛槷驯( 裳埪2E'橵:H J岈cd`#O镞秖靎OP +D釰|桎謰韈趿塼y虐贙3{棷=施 e-rB請O%砙羑溊伮U諝χDR淠楧TR猋攲瘱U玞V-7籜5!╗廤X懠虆誌t9)($$界揬Yv皝查3燋掊{{锍膊糋獉B( 牷0輍3m赜nz<怯h5$钮搨と2V +"ぽ隣豋妽鏰"2* +ㄌ黝=鏶藿&g"3盽H疸*WX貣Nl q斕3|KTZ娳P堞攵1扬'喹C(:税y':>z(J官9嚏#p,0E灟駼峛s0t`{o?F^楮4獉:,íF僨輽9dn(lV弚1益劈=蚽_殜\巹U倀)*mZ漈z1V|CX湊潥F_0x也鶬w(蒃E璅m蜧肂$t>褐竞见垪 圃犧>0坨珂鎕繌Cb*K劾槼31欼eNe笺W1S4阱伍p魾央V W1鐒B8蘂#B邢<鑗肯傟 稗搱B6憪潴闚14境蠮.骀H@QC胗d"s(%夝営S乣IE,Qo僁慑L9穚6C壟xv匲$1崃雡焴喅.A'4珦p棑顁6划9 3>唃R+猇煔a!)2稧摰圂蜵:>矿屪\L梀 ++ヶA祑28S釩奒g摑衩芍$姫该嫷dzCV;a爜z舠$]末"肰倳Eb受\岎vy3! 紉兢ǖru[QJ 籆宲$ギ;#蒱鉲.俍憳 W !\+幓莱9姈]莟杚!瓸A欼億"#  Y0犧>奵臣7潂{鶄 +s~疛$NX犕 "1圀&6y閞tz凁圗-啯蕆魤$チ +E侷sR 膍+< +RY6殤$笊>V栖 1莊h:Z+E!/Y唓醔2呭|cGI繇懿燭)&坊$槲~"E%保葍h择鵈奌$#P>牓峋fg袡i.彟笋8W嬦垅&0$ + (1詰郸洐鍦ieA4a+ 儃 疈[aD*%鎎g椀腂2悔_刚_簵﹏奲.' 檋幛=毵=郗}Y箨溧樛zV誮倒椞-朖K掮醪`攋兠武fw鵩箋榦斐R毅廖/痭傀^UH聮濯⒍3馆R鮔悮喲鰭攑絻纃ATFb-S褐綒萴 7 枚F8P:)ku衛琍2s胭笙W禵 G聋T濎姇^暚憴XI6A橠K/$3褁8鄷@bz.3V +亩呦硉2糡柎镎;噮.N%"Q@E*鄃@譱f3],vOY)-倊 io榱洪昄v Be+鐜莽僠U*'zmx!泒AkA"^',軕n6N{i駙$u坓+E⿶洓'ffb睺捘|b繭餷"% 琝曹1/讁符燋*YyUs罹`"r]m+ HL03<>K癓灑,_LZ壠訵^櫉*韤甘KRE针p顯窱緗f&S0)a纜2^)慯m香蓞Dn";Zb'G赦簶磛?z;媅鐮狭糮`RPS7瑍 腅CEヂu~瀴!2u7;蒞w矔M哋V┑p鑝6质轞冊竂坶 O栕/疂+(i攼m浑誐UpU :﹒F艄y蔒瓀秕V.挜MVT&UK誐誮1b亾 +虻m$豪鉬獩*;]TiBQF房考鸉s|G泻掁僕0噰线齰2X袩Y'蒢6籗猑O6='峹 d刪坰2双.}^颹#桎+玨7!%9_j碓F厸K蹚wO>┐蜙叢\B1*糏q鍫W鳥 唜飜< @齰4崮櫦h鲇#话3湶 !i51N,蔤Uw号茙弼A秬5 访丟QA蛓;6倊< +灇q佸碓耐R獄|荑,T!ef艍4/) +u聯蔵枃Pi瞝:圜V3綂=樆 Tlg鰰W纥髣o煙世Y"8/T:G+A 恲琍愒z竞暙l//澘/隧L\皃sar回<"邳<蓃Yx揌(r嶅 ^8 抨纽鄜e筯&鶱f挱鞽蒃猫/-?鸔T!蔝v玘鈕W籊曃憶[K觻掹 X{枹S`辄种耋擫剛&K@F6z窄兎荇B"5首諭.1 诒S凊僕焴瓠鸒?鮮!菁v醰羏插礬uS2蝬遑圵"Q砐挎ぶj]YoGQ分豱岐纮僁赚飯Z5Ucū皕T軋憵撽嵵n.]棺[綱\M譋*彏|@0圕'礠)魑4sa嶧O/]W琎緎茌|0貁铜霦蒬躰O懴蟼摀骅值;燈飝呫f聤樷胳< p奔話>3 0切6衰虃,O;'镯瀩4X+垥)l磒j'FA* #41Xy)lE疥 +鑅I颿=: h1耀 陖粝I啔 檷cI郕=ox掖 S傕D4扢荌鏂k=抯E礪霟[巧聉o<慪跏80T瓐0騔+喋R,鏆`9*"穮偒/穪*矜珦阶D!;只{8雬鶭嘴4+蛢温Y"*E敧光啗^Lf&vf,hm擧"dnfz潥允7播滾錔"籎砳玆cS标n)zㄕ=粁膻o际)鶁w蟓w繎+y暯藣3{熅,涧& 6 S贸卋y;嗾y疦巎$澏c>W慬膓7UP"A9皖%2+吰畽鑤[gw灆v囨8ビb亽J┐秓0_Yvg|4齚X % 3姽裴"A笢\釙2'讓膾慫陶7穇{髹5髾9皲D _5;よjUQ姉.噦Y'绍緉O {xm栿'砻厂_|簌d麘揮锩?}鐕ペHMOY糜_蓷防跙!1‐灗rl%饊,+份褹簗-]∪娯喲臦gf*<7K,偸Q{'F揅P硃m尥抭 3氮:奁`-臻修祩b嶥p珹摦%Y&!Dy柀 '8 吥fm;_檟U鮸xaIm蘸菨蓎┙錢遄}急{#鬖im箴偈顡Fl猖`q搿骠琮飦张乸q 啍鎗>倄愻 白;=V,抃帗$[恥飔$'梮轨$x1傥p靠|謁綫閘m钶_诟m嫩Nr瀟F莾錵Vf1Jそ蚕% J瀛93;G塺輕ukzIR妊埵0i+AI馬5橻oof妅哘99榉 + cH悗j庩輷雡>xw雡!t1)朴f絣6D麄"N竊L0<嵤录耗t$f塲7S诤v缗{鎯w~#]垠嘦A.肞陌8E-蒻083@摑Zc绞 ; kD;,疁&G兮R"黄珆F猻r╠跟龄A舝桾UW堁樺辗!0塥远1T浐4w鶗寑wzY:櫆炲1\拯滣,T耡=蚜CD+% 巖媴E奛鴥,蹷杭o75{湬鞢郦辳.蜅囝@T咰R8$"鰄X] +〓,劢癢 +亯饑D^^藢f2臻鈜G驥+{Z W蚫S$擘剝 4i規P啔筎╘o.6熰^駁炵柴D("=G2#凓曭`岚刍26卥尻牿7o<囅>黙kt(7罹沁桋F濁2wk[od狎4:B,w褉D&R愝b糥噪yり窬 tPw\帰訆\*字'X崥碟a赯菁X框@P藩30;似GT@搹Y 鮼>滀\0蘇r5昜藮7G+gw^p髭cAo趘罱帑a趦L~璓谖wE圭趺 +63 9灟疃僻龟6(4偞覚A8"$亮'{O贙w眗y +ю漤W?a<0|q,珯嫢诘r齮苳妱哅翁b/浕)1p雦蛂W% 魮8畞M孒2<晰嫥_F釒喤1疼絝8}酃-ОK E欽V+諿绁并謊*媕帻Ё33验殍糤頊yY睱塃L歀QD<鎑宫蹪tq9]^镋鹇婶倱j壹 +;瞈悢抜u]w Y憍&A愸P* +嗸J#p%p粥 賑 勫 @廷T諰籑&C欛D舤碎诟籸mq驨S﹍<4W>濡钎鎽l鯎BpVQ4媋IM獽r腢糰@x)羜U扝簽 _ 坒;zZ<俸6h0莹酷d'_釄劶<芰qE7筆镱销根9F陘妬0=嬂+慏OuT喸c賂$"儛嬧忭-鯂7V7飥鏡訰wx埋匵T 鷜蒜蘖藂蓀#i;喥Y甦籧.&1院7I) b7躱/\呥\1娗c槱戥D骶Wh 犝K7滀F都紷袆 鳤w{u濯W&n瀸"闯+嵙 =>湠翝x玊蜗!S桟 茉H+媃饞洳╒8! ,_?萔鰗擕仌"刦艣萘﹏祋2幠链喗fyO鹼约忺U_哶U茫伜 瞀鈲嵧洿攟o迤鵮_躾螳伶#的 +Y(瞵_圮姬(2姝6&H":-0"圃嫼Z肂RYC嫠逇3; 豀妭粦晭$道G爠)J裒p{e髕珀'On拷瞹> 筎>z蹊(gb,k丸qBK3"嫏琅`榿Ad,墔h0"_惖/&$i.Oqy蒱ZN惠俟s=宅+j/4硲J瘶鎬鉑 啌n zu癱仩劆帰禗&J歳m +: +,y陡轃><}逤{W帣0J^鱎D4E樀鏆 碀t\滚N:3捱货o菰8 灑腋蜩7羁鵐505M@秩r>襧潍1儢n,輍b)#)i. 蟵< 祟薢)崂D儗逴絞"醡轔覾I65羛凵襌杭^' +3呠\;8~莟稺麯鄪$橞b&"挨W欆k幤y祼圢a栯鉣;賗u7曏ヶv%}捦%鈲+鱳鰹/沨D"胐%沽 U1lFU婂M坂@)坢/_鰂!繠\ W枣默lT`~蹪盹瘅颫vy~皺*&g嵨鑔s睯朰5苔7 玂3錪@洐鯶,屯bZ釔梵职悪閳o(妏怦辢醖s鱪 虄计|巄5髸輇m邎w)晖瓨W(Pま驲a\,贤狊E&吝針弩贬0鋽!y;褏鲤29U瞄JJU荩狺d$286L K8t囚T'G瀺h瀯uh54Ko< +R籠=Ol{標MR+驻R荡 i5=}俪 '+嫑;飉炜P嶎 =.]\鰵hH“M%0\$椖(+摟7^*f*沗k籲n+光姄!宯$;踽馺橹褝w??过 D)2美u苶~zf&6?嘐#<隋耝$$)C彬窖揄颪秓 #恈yм=5琕"9P寁81B巄(fBUVZ臀殿怘`P搅板h,癫翢J.$"@灸)戧n镞劭鯶交絵弼身7M.H橠f羠{;鲊$澞p4髙{w娕+p斜X躿枅.!&渔鏿焀(+麒浨A$S鉲~%摏(j鑽摒樴\)蕺徫{索硶祟m钴k秝@屹錿zY懌@幜77嘵z% +鎍螋Lpn嶡肔蠯Ao臘f╰润(熸A'T昊窀穤酌)S痾5躥覺D&5n)杛B!vr蜧仠Pガ"邯刲2=|蟓o\获,啒晻pz〔 +&T伋_V~:=j扨u犆矨?J)桩兟y錜 唞4蔳揠凟L$锾"BPM 18蟤e(6退UH絩s蟫*'鐝7趌_MN作_o^d俆(&F贱rg#03眄8 2榚乵):G櫂熐悩 笲}篪鰦蹚?,>y蛏橱繐葞)6藀E毻薢送5wG汷溰(:莴弼~<9鞋锧蝎ol歝p棫#棫"34#禗c佲*/唆_,T禭> z2WX8;r肓媩s+灆圝m握74粏应韼F撾蹑躲t娕應f`:砾瞈鬖0漉鹾缒,痾 菩湠騊+5礿臛淧ц茧6w舒韬漱沷罪諫稵{塲遘医>"9 ^鎑谤^綘O纁.曋朞巀洑奓]利 茡娢v5觌W苝涘!澯棪p+TO寢lBQ嬦 +y;g| +S1D洓 銟,奿pCi曏抑翝禎媡i痴 +H%J呁+9玘 +H(枑晴 ф鏟@B圼42T&@P稹蟪萡QH_句縷i+笥SA坖鄅]. +層j甮8iC+芇]怟J茧i雉&砹窄绳岿r xF蚻*k绍2芨昘f腂 UE.祷*N&fgB均p8D唫, !↗P硦殦I%EO勖+ek跗闧峡鲦婳淟棔寿鈄&份贻9~we胙怅漻b楳 療=V阗(忠艌<饠a}C韅XS襹^#0 +,df肐瓈Y籷骡U澨B眖軿輞|z雰/具焧穇};慬陛瀉祔T1唷△cz嘼帵-k >幓羳W揧銴~? +"貌^齃贼枃鋜茼 +j0V(懸骖兩騯垗Fk矚u霽臎D=崌CZ,l眃猐 疦縷圖:侼骿僕霅z闩沐昐Y)Ie貌洩V狴*#1t睶Y倅 ﹢焺垻 H壀亂0蛈旯瑆G廛岩衢潷遷r孭脠剔藿齡S)孉@襄T攻獇Y鞤c C,瑴簧n(HC8妯H惷旸uK+艾 .駿呒Wewz軇H燰4ㄠH?緓O.U粵(;抨述/旷洠}gp h1昣呅 /b要'骏:蚄梖g3Q躋Pf戻訠{邂辗 *P+Jd胜穞P雘盧&UX瑅嶵c竎'5敳o+j肕,4;;Z<)uT塝@ +#8_+㈱.射|!ej褏產y,K牛儑q乤7掶迤鄑磛w玷蚚鬟_诮H椫6n齄躄A斏Z猛-gItsDP巒在将奦鬄覄峗U>-g3硈(腦4γeHZ;S荜.茉0/鈗稻蛬呩鴓q鍤 . )&HU*羳j6硲h 衫s炒e祎篌Z|0\縚Y(nwz{n篗.玩茉b〔橦NT1泩匇胺袞@#鄊囆箺'讇+5 o頵噆W^9}vx滏嫇蠓&鉓[缲尫3骢l㈤湻[僋%渵ズ暟涐C :;Ga&峓0鐭'8朵韩PHMa褠 +>蓛pU擹*!)嬪c薺)]Z^诤s|乓﨏掦 wi惝l礹綡19N(塨豉d溿錕景烢$)D#"唸峳瑛鍯^掀坸a簘x缥蕧B铼犠U祊镡倭馛PV窺IV诸l锛毼(z[X鱺赱紐闀?@GI餯2地闈Z塃5帋'2儵Y``诗Y璽~R铒遉酃峈翋靌[峎轁硧w=閛栛孹翀蒬bX"妟脍咈f焙塦晏,苢箘銀FKGv?7"63 G9抮熹$]侪t帿輈p庭茗/~z噾╦%讴饽蒑,w笉偍褐宯 +bm~烏濿{砰i$2聒pi耔鶍 +J野{娬C<杼b齚雉;誟吒/ 菓ㄡm廌]>檇o岻韤G俪sL0!x2町訹G欖`瞭跏'7_鎘遹薔彚)蕝z{?`X5p4%)▋~1斆`猌X祵驽W黶砲,*E锦b1e B轲鋛$诏呮猩1拜 套逅H$*a剚S+4^];z躝/踓9轑Wj#奍;(S豅殖l +B2Q倊Pqz&憖FT$莓&-箼室蜣胘鳡谵.4{`*牊qKE魍6-H9E+鶾廭螴靓4鞿vW殃峋棪豑+y怈$摣u坁伒蜞梃鎕 +N彐铈殉撣]今鲵汁褛Y2?桅z钧畔兼bd=8莺蚣󩹙njD6覷萄源W滟缱"1梑速隣?|梎Za)倷8換蘓5) Q棷oV搇娽 +揈q繼{0弓;@P.*蝹墒0v辈*砓削=^酃歋譺限|/鞞P牗$5 2(睺b槫\vL朹帟6j綋萦w实蛢莩_盱_l]}m鰗儹G'/y|鉸議n_'_鼒"悝V吁 樌fv弦Zh,>5Ec!4;泫逅f螲釿=>R峷共uA﹉v_逗3睷藨槳鍇e?>猪Fea箢普窍桍,鮊屼8洖芑赏穢,弱JP遅鉱挷 蟼 + _椲5&/WY蚔蒗O疄?絰齥踂V{噦"4I夝椾fwxc紎7[茑e愯2純` @KOlf 华賱 ED咾#b(恬b瓢;J_-髇焧G嚈耲本]jl檝+撽芗斛鲠9A庞瑰rk+]\4Qm叄:塱肺攥罩A柷饇 MK藦焲4Y娟驫淧pr谵h躅k峡g砍y嵺Oe51V-竞骎螻嶲芾1汜6埯f?n'余谐曧骅 牱臣r x伟YQF玕軽藓瀎rc蛂ybX峺瘂/轺 _汁№宑135砆颹暤╭N j'-霜霘QZ\縰擌P[W*\!膝n髦绝钕扶顑辈鈉A竽W衺n杦蹺槇W^裢蝋~ep8讖av躭Slpzt襻_-n?胙<{趑苏鯖?l^焊sS壕飂乥?|泱曧华誺RK殿A┚k+U穮敠\姴^NZ瀊挗Z戸Z)MN无|糁ч矢逸珺v_+4鲔蜜擋7蕧寠敟MN.浳 瀂朱zC饮4滸紆7佱2孹庘.翑糝磡!斓6H琼=Ye_<_,軾迆狄9忮毆旻K菂陝彷Ly}趸o|~|鏺仝l蛹%I森 .懍%5N畓)8:Y,%揮袓Q*咀A漷vRon墥w*仸A狈5[祕w{汔A”C蓄耦蚈>胫祈/茴嶏詺噳詊葅>C兣{凖9琖C瞻G^g|?螫<|齳 HC畷玏迀wn岿璽 +94e??>妀筷0b9拴./枣 諉#j{哏g哪 o縼7捹U'=Q斅浵?y卓桱 1<M7砊i祛_{&5駳G.]蛎m+肰"{阹C訠n 欷o靸堘)犈p":=瞄6zG澭'7 弛_疁e芄x隽g唢M舓_鲠O弉}紆彘菬铈宇譐毵7逫鎳翀E,Pk矘芇9靧#2瞡{紁U栿穴創q浓椱麔耖%莼馮{麒盥苰┗_85%掎氮氳朲{N~2-錻;g渒R3尭$W挰N螆E蒵圴捼淠*'x6S!鮔>I6褊'o7^m峃媿]橔tx4Y歞+涀*醍輓乧莼rA褾8"*;VbAKq粙銐HD娓鑺R躜遑6J沮芊>偰肁1轹H䱷娕鳹o缟/灳鲠僢i%n7D]憢喽娼^莋戥漽}3嘊荇t\巤5L6!唖9&蕃Ol8?弨禵?xx踱荪;衮肳Q詰聂卓奇峆T鼯y屪聓r帵靎k脢7.2y蒽hV_経u俘?{霛蟚3芳䏝o馧┚ `瑕 "饚H 摔骀H奌IRK鄫,澞1gj +墑嘏犷⺻r. 0珹*綎I$蝆Z9恤"p'跺鴺〉Fg环x:\>.媸藂д铑]柜骖山狎a『.掫馏簤蝬r桶氜V$ +y濵@hyP緱膌(膭C,(肈j妇麒毋o躼k紇cg篪oo熆鳈$+趿峔u9薰䴖_l局禁慎驮8'捙斛饅{|镖最翰芵p酐鷒奟蒨膞# 丶瀀粉潩'O;<{c皛敬wo竳3哕X<_呓w玑O>鴉本兕?~癍>嶜/MVD& D繤帕wz俆礦qdz(B灗腙v_諝z2淌蝥M觟 +軳w礣蹐'Wx古q幫凅鶸i 3):墾ss`柹t蟩i嶰驜F3kf 燾圠儅昧糼篩L銜硩絿栞fFzg:^罡ocUB +qwN4"噧 m8$噦< +7W梠$s4_%K妑!(*v/nux.凐d涌:F崣)l鷕tz*?R勁愞 +甩."!!鄃荐埑杷%!de9前6dJ洞柅(扴,;埤蒊瓀淗5 伪X_憉WTL)獸%_)穾离E 》4仅驅-頋) 潑%纲90$諹蚸捍陉畁藓r迤隣拶;雿癁摭`镤澺?=>{揿n踤肕v[王化卷d/.m葸;~及~Qio'#铆棆7^|[愦汬8S芫v鐡玾>6纷~'皲齇賏サ=X=Y>{???/?x飛~霃峻蜔λ腴液漎-7徶w呒拂N>攩*'+g怐Q膶4欿亂導灼k廟u ;歏膘緵_4.圛侦羟g7含窉Hu$U_嫉格簺%2蜄闵塶阑橣5崌潞乏yo硭j罫;柈浬&熏猡聤 6PL鋢[Rs睼Q寠4%崏瞊紃鞶降贠褯8f}爤オ- 5@B ^蝃㊣祡獨}A,*bF個狪騬砃猍腱T*煪鍕CY%3}'礹9c荾(譺II韬k%*,锲'华;!A(кI6 氨圖&妭&戞f憲5沉鲬-)Q-鲉G譶<=粁钊z6檌^渌鉰}/-圝傂4[栒v搣H酭m蒂壅*疶H匹/粔z购斒踅"怣埛%葌晬蹆厓|>镸玫莴禨]Y;}鉭}邕{耖窡珑彏o縳鱧w娇簙胝菬=^或羰癯淀籤ZY>滻v>请鹷g)' Q蒶J鲭焳莙 怭蔒俼颻鼹W鰺(j澢焳龄 +j枷 N.,呋宋錅'O>鑽鰞a賙謖2 +政t=+轣o?,5J糀衖I塏cx(暾*羮 rFV嫭 +箈卜磢硐{紇0闚j夝迴n膡枴;悤拨錽-辭/軒X纎S遮@g穴刹Y7='奮'閿&垊翫St +0;@4飉f涽z頏蘋Oc醶f頧伞沖3c+炎憬H詩9NpC巄銙Z讒鮾| `S芋箌譺$捗驵F祍5羹(/瑙f- 徵鎎s11鹇笲房IU+$ 掻WP6+q纷*アQo# 7 +褰B硇J孖%p觱{俁p(B)kF潳蹾T +h瀞A#轓柖,-&B_U3稒飗V杦 +攀萺v畻珄7礤澹Go緑F也鐠凢1崭v颞仲兀\f誐.鑖棤侎iS5OOo褜+H-7谎鞚\哈鲴汫騅簻/屮麺N殗蔗w焲饟擉绛迒霒菌No=":;覿.懂 楋]件璪u#楆}粞亏瑻X{免糙芑羀吖铟Sネng氤稂玍o/L蝇f{pv貊邹|藳徖X仅怔娲诐 D側@T+4ヴ矿eNn怯腽镹v脘庥幌咀鞜橌謰/欬`鐋|嵟t娞Hrw蛛凳瀇翩\竱)鹗/_芺H蔍n附緐6Z<[*$澠‐(sW撆衠签岣喠鱸艼 +递徜t髭夵"E欏騤2;駔"鐵@鸲Gr鎝D垎懹2fI6C3 [犡\-|v跷慧'O嚊3朂PD 0挪=鷞轸%$狵b蒌2dD6梽`*尪?$僛羰麽丁T罗~Y筴佂1!,焲~葖N8Lp\荓郧k北w慔鰎箏23, ()0D&纬'录o%pHy2 軍FM蕢XrHpI,俙S倫謲r.6圯-`给诺;Q0型偊+鞿iC藍k鱺N\皭〃8*XLzJg櫬z竞m'Kk7穾4 阍嬢7+ 曃V2%;儆滩eW習儞U +亭鎋6瓨p椧 渺圔赗摥苮<禀N)织d猈趽嬾P]K杫!蟒曮僰U R0n訵ZW蛴 z聋啉鮋^齐桟H拺陞趡炯鍢?玃洖BBAYVZユ轼蕮HD墕8Yy煨T@( 催pr B垉褤R蹧讻hD,/`ppT墵羉&傗%J橺$瀂帚 糪yguq漪鮈qQ7Ry0薣$S娕灦49嬸HDどK$緪H 翖酓殻肠R1鋌康北uq抮悩 +飻藡鄾#>柪0&F*軺4BR$L, v尘X( 怦*EH 裩榞"M:4硟雎褱裣G驫dVK膕^%I3Q闟冎JT悳"q9熼8v槇爈煆嶦4&隸^ +E陳80僃9U觽~嶥-*冯嬽鷺gu'炵hT鳦S駱:5嚷b蕲臀剛a艗7途彭&両>k毵 f$ *N記轸B憄'噾0象 Qt!越u1%M髑昘 鴅枢2伬0殜偍/MV0G凵远w葏圙紖6繳7A炏ZfI/K+劽~|s彖祆1K邸 眡D夷4*0霙峇*騹6j4蘍樐扏+, 刪攢!e +9o: Q鎕陹?4O咟锣rh~*粞8L翽r燵姍戍貱橜v睈▊F,*螭 樓揘7.埩GDeq鶗`螈'N_鰏)嬮H垕a(皁9擣5吽0x崍"浺斨靄lj*pn櫋 鵰$弯璠n5bcQ櫎*胒C躒輯霃觉?塨+6;3垄&&-#搕 縮~娝緔翦⒓.2$Z细0W┨.h< 狩4蜫琤*Yq勂 G))6喞5丱揵a1A棆嗂G&0衍<:=迩1M柍倫=觠岣MΑd8世4嬇&N'*H咱燍騙s禪啫儋(竔$Ⅱt +G訮$p1.)昐!<$BK$;暺&DT4"祷;樘入 +=嘊8屺L{ 樦CH鵗韇1 ]酠朠YR鉏崚玮!%週40囄\蜯E+笕;/俇北崋牙|7B耯R7筪珨眜獄曙欦' Ks討㎏京W|瘓%Y萢Qb]&蕱Q +(<&Sp`轨煗 +鎼X悥4叐! +鬋 酭x*抔#砈A]蜛@瓮D 乿y苢O模7C燼,v~&饝h繱 +pe1du喢 8$;[痸药 j娧覺雊r轲黮 q%2;娦-evv6淫R$F$嚉妉f扤),涖w邁诛|1遼d~.$2蛉-Y!陶昍谘D(? VH┩抯缵邬洼谍q o& 蘇SL習槉檲霒&釯憉L堤3.葹<*1J礨ouL3S*t力壠e$挛湍._z喜h痋 ]4H6Fk玨柂1: (U恡+挏b9_屒K掑L8腵1b啠]4%&1([ +镪俧pl9e%透.)帵4)C恞涊(""K 醝Tep 0厜坔8孏BX8l薐繍豩+<8]9;1嶫纝"iC]箼﹑\vD岠0&剖熞寗e崅鋶嗪(<>r+焧2鎓BS楁/ <缋u伪S椦藯3親惹@鹎8%蜷 寿J妶傛gy*閜悩匋 &JaLGS:)埆=w{抵i%+E}訪芙襼vo髕窟;絡2毽,荪Hy骝|p>LFq[怰c裔飴2滷聣 %'[擑\BnW魸↓駬脧9}駂銤腔蚙7鐾臜k蕭攧&%"%銚毜7,值拲+甑遘荗瘄黮従w鳠嬁鐶O肥$+"钎 縶鯲义"煺$鋚暸(g湃F檦~旟舘滮轃钧縬缁o暱吖?>奎?澹糫t篤,'蚃2霕s +6J醷5狁^7>篯N閺x鐥;饗'?驘^4搦嘻嘐G忴q Y氨k愌(攺釲亍}雃隽v稣葩崶湍鴵梍{TJT)+9旮>6~鲖o濤逊n邁黖骟o衔暹<禃b$&0圇lj粚硰7孫nd碀黧鷥[葵妣_鬅菌鍩>?y鹚?~碛煠鱺$=稂䜩#f藳态艮舔辵WUWW{7=捋党v佪垍!, z4G福9Q8餻溲4R儰B)B鞒FTL填TwU撅髚熛7腕钾q)0 +!C贞[鷔曽翸鬀疐?鱒雥_嬶<k鱃齙邕}遾?鴧??鴖7吆贅4蔢 幥璩皖礩鵯そuj阦?{旷晝唿犟_w>~骖稞涞䎱筐?菌W魁鼪畏葳俋去I$弮秢偢讛.2巢痮q摁>u欲+韔}戴?w;_?o抉/氙畀瘗_遹缪Io筯礸$a4简凶{玂蕉琵饣?g褫7~畗'.~觃~髲葵鈝~贲鉕奎缈袷w>忑馇霃6eP崜2壜辚$櫳V劼n>檳o澓=睃歆w疬}+?7餺~饳??豢?骎氲=}3bm乹BЫN捂蛰X#^]r?鬓涍錑Kw鱚~鎜穑?䎱/啉圻{鋬窥7~肭?鵭G輖章A憵"X脖辮R彈苳歧8選唼鱚選麸葵峩啕'絪!Q<厜應Ue!c髝告|锳鯒邿麠o裏~/~琮o獒獹巾v贁M琩%*"||_2疟'l讛场蹯狏鷌銉唤{?'n鮳蹄h>桲#("W觅hp 炼v=t/藜豢戏拖?Y寨荐墈沷\m縮g,歠拎+,y [#幨啹で[锖市棶廄g鐡譔{鱳{漢6諰Yb(c奅>煑xκ朇馶A@1忋惦篥辰'纤啁`?s?穅?痌|飲'唼`g縹`2谈1]f)妃~4u「餕鳓+;污寝骶z馩韌/蚩[魁SO军b魍輷i挢衘灧帘瞎dI{44眂_觋苋杦薏bT匴*镛趞痕歿吕Tk奻 厹楴rk+@)G2翀(D4{a0 胵嗟t.sm]zJ+ V$u覛狟畡捛誇}芇豧H58絎n焞/'畍6>mǒ4.k缀瀜4涡擯纻$姡喨w谸渇f-O鈪mj蚰S;*維:螂{7^l;焳0{歌A9議嗸錽 M"2篅羵樁b傟(皮贞GN荳:昙獻秄糐*X鮐( U玸B愅s*硷╚\霻{奆?絶4驼YYc%0"N +- + 揘3U昵抵q| 欈9'$G 攊莪狺摁h轤F虿-椊芈0玨橽+/Uu`閩伇Sk貺"巨V_輒怪ゎ瘒蠋[锋迵筱声付]Uo喙x〈簹.鈍跾ire~撳汋诹爏堠Nudj +峧韎 o茭'緍眞2煺tUeh哷1 '躙A奔鵫鰄8~袑秛9>~泫莥B嘄(浆宗遛6l 5,K 匾 +劈B. 鱑⿰eq禐韦堷鬢伱,< L类r1儛E藡XQ掆+V螪z0薴报來-鋢趗!q笒hp贔砄鎼P-捉'{企钙慒.4^$p廲4鞅摷$鳰=寛脃V)+F,.Ur9义鵃瞹㈱HQ俑!檀3刐幓9]荟I),鏪雳=9蕙)誖藳除L瀀K 櫆(ic;囟-)瞵US迤by[s啓2馛SAP嬄灢 +Yrm5_葕 YV>5A笅"K99洀GQth[f' +莚|薌|$='I椹Z_7麕縜{#U4組R睰竷bI$*I<FSU珕褘⑼>stream +k蹥5骓轚Em浿悧蹔=oG輐A娌跉锞㈣# 75-訜孃愪[葱r偱柒琳沷S\斕D绁N|Wc替 g]w苽>!.#}Y@@v+p誜癨窐棏偓k}殄 9﹗{8y躺「+萴柉桱,5涛 姯餔椻;閭禆郮.DP)潕赦dYR喖.旁8-)}藵gs*V +p狽s湭rb梑k$滾笑9憯v(Q崟;屲c漠嵛=-摖|抦d +fsq堕7蝨撰澑疡汵媯豓Zrpr?B臋(辘R7糮轾[%軓g-^生潭8X^綷L'锽朑*A喤_E!⒓lYci像7璥[鞫Tw嬫郢+敔 .=鵳8;C)涗+z褨W賺;嗁隻|惩vP,z(錛嚄G觅俞虻咒.0聮础轱毩>-p腼鴭▇` /E砸琘馗錐W%}Jsu (:N(fHZⅱ= o6{a頎Z刍~鲹5浯~k泾鲑;G忿刍xЫ~g殆0契舒榄閻\j經E沉黫瓀N病ǘ5k"*CFhA|饰L1;;彯P5噆i簣诲鶬g蚋迃腎YC2蜠/飬影挅姧0q颻pM輅T(耷6Q術OXv117wo菦螇 壃早鋲j/祰*50 恇桷f箆Ri^6N9M兆5s!kS,(gg--9睟+頾O弹:s臹臧卅縀@請;(№D挶a;1E鸩fo嗸鉒乱衎禺m 帹剹Kx`簺P!Si臠蜏T毀<巤钉9鳹e[箿箌9we)蜏冼RT箤X+娨!厜^q驦*2瑱;龥砹蘦!诞[Y|(i臷 T蘄T蝞汘z{Lq 偖睷獺認g:z变敤Ps7漢磝~r倭S%.NN!T惷"Rl蟨w昝;跎]蜐膬諝粋拮湁l ec:莹uRrJ脥f窡铌肙帠wk齥fybd}rq踔郯b娧飳雉ο&化ug5 鏩Au玎磲礏褞'?緘l鲿孄Z.膹.妥鱊?箂羊悫{嫝$S脂庘屪襜.瘉v欥曤g躅罼=[gn鬭歹l滕E絯a;Z3臜O1z=乘K 撉鈬<緒鴾惬v俜酵V`Gvq/谳轊9\Z壀#X檇歂xRn軵漖;繃臐dF釖@B7>鼟^}沓框肟组$襯q{>u&{o蒯^惦漜H峀V[K0[(姓qkp席滄姌娳厹Jg(挟荡)"凱t跉<簍K& 湴憭嚑>$NV +垙患_i烠佄$鎿 +6骆I議pXb腄w椕橛眢Oz+╨6W{搆觅峧&皹=.蠲cs怠u'徎忀p3侺A呭錇lAf聿夷騱O'[穳悭,4g.╟葸v獅3:<~r懔{vyF芣@裸璆薻:#?滎镞7韝y ^[o忥痮烤8|3範 X绷 滜衑賈_8抉a鶣6爐7孃堜毣轃?鲭'毥 +j;4^镭r}Zi/減幯u霾:箆麧>橦s箓*摄兮崈霟9e"埈粌3sA飨込嬁瘙椏ur}<碻_品蒡f2#椚洪g鹢熯`鷪雼澔~:#勄k影}黟趃鐊痩?W鉌y碇郱級槴3#貞璏N^ 飉緜2H存,Tg#京曤砞躾矜Э.=挬暎 +x色cV崍蔴殆╘;^KJ鶄m椃释脄7簲K僈咻紪d≈坩欔,to蒆C婋'RR5毧踔gI臯借t瑚忸玙閹o o5埗姌]鹤%'"俢瘾g阃7>篼煹灬絒ol,qY$ 6甇髦V揲N4邜叹l廻匲秄N醋哜袣l7哰/6_t$s砶w>祑 減м縹x覹?繇/灄-团溯╳<o&7徫吆簏车農:烤籀]捩>($&(7:掫眎鱑g凲eЪEA蠖eg北翇OCL横n9?捡终嚐i蠠O*妠柨拶竀繣p關2鎹j鱘麈p4藀5較W頌鋖任跤╭H旭4玽锶鬎扸晁褶阙啻;m 7籛 :y jGA vy7ね鹉:阚n,犣p泮t鳈U辯腩'u+祡坖QisB沭+/>[瘄磢`-/D眤镛沁 楰0Q购3輢颈鹼搀x俭 硗_8<|L>'TG蹚w线]|减邳餧Q洣2*/1荃珄~╊K:繭瓀沟KxXi烉 "抜z-舍D 寑m +跏J餟R嘰uV桢れ戚蟃雥阔B$@qd攊 .縵^僜栧岂逎fo洡]u@ro納~缬闩P嶖骝謙飅爭 5附眧辰~9篣闇桄ㄝ?奔 '\謬*秒zy媁畹龐骷6蓵嚦{娃僦迌囅>}x牰m齼絿她仓iv窥妖鏮<烬閮秭琪,я'=凙;nY' 嵼7?跽肮$槹9s*G^銃磅艮隷9件0诳筻凉匙E玙顪岜`.準i瓀w根L64靳;?殌>罷i*#驲挥6Z縰砥碀'<枌)2B8馘闆眑蝈Z{5筕頌臾w轮)N7I掇]痶N12悓~裗剞x脖晰C薩蔶髡鰜b甔a0絎i漽& N^9:{ヒX卺 ⒔\兕 庮?[L{cy痨疰'凍╈n饰&嚯揼飛:猧F?劫_務mH7衍獭A*'靳洴铐麟雡洆[踽M蒟2p熘鯟I顤J`轢`sS擥Q(f+Di-)姙%u鏂O冓)lA亜" +^h  V殕;雵qv1y*JC諊遐$廵礯m熼羈 /錌h嶆G螫嚎I媿jHbccv装≯9滏o~f}U艥L0踶 +4A滘迫白瓋f鱀6z 8獛:冚J{蠅"`樠h磛茯Q罹淸釙X鎫8宔錉茇)鄞合唿驆摪y?4鞰t絳|痍珷蠢嶇曨9h ,Z詊腰翐:cAqM悧气N8喸甌纷荳岿峯}顙?[((q邑瓬n熃{氲煒熅+k鱚/㑇ot<歚,yz{紎礓a譐勲-姸X猸F 歬汝R澁遾Qm铎?騻叅羕`d擟"鳰m5漸虞笆 ^砦5N>溤G-v-<粠n呿s諝僊ǘ巋二音 啔穇檩:9〤逞x~qx鉛$ 埩升骛麳T莸琿尡]挭f2闦R剼樛Y$Uk磏鬐Om茴5踂駫W,鑰懄硆*I5gC眴恮溤D当阬\ %狥穲厕N闷 6烐7燇妯垱彐瀅YJ7力夃-g&=倀7筵曃,DkHJlVZ菎8ti聘重mV1 +*3姺e94鞈/#皷{鄬X⿳<蜌随瑟諏:M;^希*邐邫碥cXЦ1<Lo7F骩⒃剸n*'3,dAX呖z^笉峭 賂 +昄輕视vgg<>簎麔zs 僳s#薣*:X7杰{|tN1测庄礸瘑潧V癳嚮7?=7<硨!#t:蜜亲?倒鹍0佉?考X>蔫f箎迾墉弉va罥:谳乎䥽飢鏇=U{+l\t&鱧3'卮祚o=x'w@HI-j圻枍枉 E蟓臋V塶77$ポ烆>'_洑>裘礤+;麖Y碗┐`}僕x〉菏挙'汷濍>派f嘞框禑痧潟 |A9AR埚L+p鴾苣)'訚pbG4Δ坍懂嚨硆扔玪)qC!7Ij雝y蚵*oΣ|IqJи=啠jK2a荜.閉)7軒篻蓍鸣巅7n歹`#Ik裴TPK%'鯤 !3 羐錛(兖vyOu禭#弱嫑ohV霅 + 毖隃辺婫霼5c$坢稪k庄-1聖儇yS^ 媕;7支W輅=諶b甴慭民4眚渕:鼺`疋鑉祘P奱蟐v囙!/{蔌P +h楯+弪fP軫B紎捐衆 +鰸dM 阀[聒lpT"P郪鏻0惯燹FJ!FT蕧S畻gl 稱$w膻{; 樜F{x}紋?旇 +"鹭启V籹T"9饶7瑴酮痉1莺Ms杒+鎲醡篁竆项囌]掫围g<牁N0e患X讲s鷤b(&CUi矑薸(j +馂x鈺 珪 3Y风睁-ur!潳雹&/8㎡睲愯牶e赜F铴操m>;f鶾訞QC氚#?棇u軾鰜v^,酥8曖D笴湱H蝿鋕訷盪i7囎8┊櫧留巁遷*踤mu鳡怉h善\L緃,?1麻D鸴t)F噷訣P3哩N嵝X遬羃Qj実穂3廽土98tYmkz'蕣巩y爠錛淥本绛箕$W`硑&濄I#管亲D瀑櫉盱菝HR廠{丛懘乫瑡r/_P4辗lD3轁bT3WtzN笝-8a抎/X邊"懔嫪 援邁洜傉U糚蠯d侔7化蟱咴蔟晞惿氚櫆舨岶惥(4LcV4{CQ[曻偠 MH丁A碿y 皳X蒷傣Z僺豈艦聱z鉊EQ起6鱠9藜=丶G2 `!姪儹C +谏崦倨(鲳x恩-7l&LS錃+W╰Z驽h閌z譺g(jA哘r鏦V澳Z!景i-o5|鑆;昪^)^珹J娖垥@=ZE + K JT攉4下闡█J>8V J 窄穛根仳w})o塟WR昭硒%+1>概k?/mn罫0i%:舒5乿沽鲺蹮-o贯|钧愥[詥敗迕拙3賫揵斛鸮拔o./ ka9s柉%R 臵驕)T,⑨み顪B)Y[C种 +#8啄 +l+Cy?諐n:'势嗩n僘餶G%獪桐Z冕Q1GK +<陳L藦陃a[99曖]o濄雺$+8誝絬?篧o_咈AQ辶杼褡鉔郋瓈X葱Q#鮥 筚蚇-賎0<Hg$Qj<7`纳P潌Cf+瞌篑牊安Vv詺<抉祗政9,朔!JS)啞l@6%u=HJ'~&( B附w坂9G覛^驽aP贄!M諕q綱唛徬@峴9%曗WWi徏虍鉶c槗蠅愃夹 J^6#Aj玣煆赡嚥蝡 旿 +欘5'&RF歅@_% $垹蕗m4]迮踞亖疆 0枲脸teO幱凄绞>樍裰S^鍔(7@:皿譕nXビ熮=sj{蓽纑z﹁覿(諬5{~0圬z堘^6'倭V=精ZsN鈚#<6炗T莙$\E*G鬂纾閩愙⿲ ]0_溤填寳疊y椰)圼増ry 姎[揄蹑鲉嫥Q鱒塱伒乑9欉w蔏蓽蚴H6_4伳wk召焼咖r*诺Y>葟幨祂1\!葕ai(菴虞7$3J<传;8沐蓚8菾忔闑挏俛鷕鱲浇]膖較晑蒈d鵄*#IJ枤kk8脝a}o紉?縶 ;堇i8>sy╛q8:5 矞J硄C灨吒旿+玠:+量2LY#朧,)u(|箌苡邂筁Z`▁V(ds 艛sy砐鹄(8莚2敛辞2n&M$W塗俢yā耋(谠xe傕Aux〨qu@瞕m=瑸T谧t濩屨5E縗笓廮輹!呬I捲 静_{}9F住nR磏闡%6雬迀鰠廖C蟻_+*R5'蒯鵀堯 W皞pGQ佻寱|氾⺪:o鬾0| 矩x~G驅;v2y帹$餦楲鄪(喺 0狂@ IuL"-)C巓昿.札d捴!/t揑 饍徙筩8f砽::N/,s氵慕|O@妚"-#&扗5焦}数+X嫤r2+W婛淩,X$昢^6諣鳵\璐8PLA錇,G擕摥淄蕁秤y僢Z$n頙矨q躅gG[疜8%i\bh撳 &+=叮諆矢罧m杝Z呭盆+ 僡4賍ㄎ躳&4 歩俌;GW8<菉N妶诵e^╝ 鞎 {K硸A齃昼Ebh<痶咢1M慂庋L讽 铢,垥v+鄥!kdm攉*&旎浗c鍽]辩沐摻體@菌欲⒁徲m儑=# w徫吆~镉藫7蕧C 5漱魰f麪坖馲杭姄憂N悀6C诡h磓[P4r雈sB煠[p哀-澪Yo|K1о颒'P<哞 V&[ 5@~-?I瘳/>莥灯烆L : █Y(Z(妞A<堾 !^v#怎A 坓鳸DQu酑i QnX筎萪5X鵇RHgKZ`攍g猨1o鄕3忬`*P騮sE輙鸭磦4 '訟偏统筵=葵c泧颶羘60|UdR:⒕!槢娊]碥瓦堢 a猘祏伙Uvie=壌覣颶X萘p漟]Fhㄦt狶0uS茹E也荑屛喫G3#R蜥0仐Jゅ8}'9旵Xs▔<鞖萺编衆珗 W鳍縵!獩4[I曊C濂訙長满Fy+I&W磓 (JC妏81云r锞酦s埑掄 ,(Qu脙劌鳉崜楉q+WJZ +(栜D倎蘲偼Z缂藿翂m挭B癆檈竳6grl鍪3諡器峀Z凘榁%\D|羸r"j!`0H +G>竟顽舑祔袩\7 g芳?EW}_5{/^i庮' =ぐD9姳a祺 鳜觷0叻酵<"$ 蘡@闹琟"}牔ゃY崚 U(皙J_v甝胲阭X趿 挀踇戳洺lл惠堙偑傌釆=Z袬07l紒朆 ∣qM餚 母`:薂r佪n:个-糇R|:+0\賤!^迯1啝=竫玟鉢<[抣v殱}@_;籢h揵蹛発 2灍 R)6憼+Qu娃 敕F欶Y挭@,XI+.祭a)擤9蒯抂=/垚L辀樌7Dp%蝓ryб8彆讶挕萓U峱\ +DxT莓4嶦u層崟U&摝)軤I+9$U阳塶蚃x躐騟T喃脁k +j\&o酬蘯?ho3琎!菃薨?>辐#C謷|*g郘W2w 鯟TサX鍀IL3浻i釧*l +絡m亙嫥踏p!幆饞L菻#N随墉ん騄<QS圄#QA▼r3k嚥> <l罦づByT鬗瘥橧3櫆X@lVh講*e喕d|>托艂(Q慃`nAR0 p)A7Tc掼迏鰔9芀貧莳U%L绥d怗糳/_橳壛艒廖W军3奬蒬VA +14nC懰薛=臚6+练M蘢(唹嘼g3 X<妌r覑撉%矔L2q # !荳/]罵i蓆棯詭s慔粍绸\|$]o猍 P輡!禲怣 圧吁,XZ +Jя瘽躒詾iO津訤RZ扸#徬弿Q: _絔贉栶(蠲#,贡驷跱t[螷u谼Bw姌UV鑋盥嫸T}`;S蜌1沗(H8懊蛰仛d聀-N宱陭飦涕`m船品~誚W恡D g昦^Ke8Y亐,"A輅g腧y%Adr钦J楢洇l蝨w嬜1簹蜬yD晠&/`胇3?<刳}=坴侘d>4閶КBqa;n胺>*i泤L矃倸+蓷%s鈥婊航ホ鸠谮櫵I邈T愇顑儵3沁+簹寋茹DD1臣晩G毷]瓟7Y趨砦e{sVH%橳/%S┱胕踏鉌X駖 2 藭H:D趼]赝I!(X姰嬾 +v錼&庯鋴V&d'rj蘡<油侾\[c9掇闈弪2隁be歩羄qQ格~"f/棶\簥bf 腯h堷i掟 9饘E$羼bE;④袑Vn捙v塸姩R(8n憈|/A礖首宷8獁O骆灗uI挚+(櫖v槮k誨篱1A椼檈砒,b絳菈.祢诡1黗堛.艅P尼/^pl8挷/痱耿憾姡U廢E0蘛偩螙nmPO#)翠D lu俰[我卜 +崉礨\缒:#)!瀄o8cAn!5 MW搎>2O字愪獋戰蹶-溞慑蜁⑦?<卹 o-羚 +M竼謫唣盞去傌爦蓜昂B% y涚邯覈簡 P.嗼箿Q,阛0嵁b槜H痊=酝璪上⒅J奩冋壬<譾麺I嵧 S6肦 +琠81哦禔視tV静ZZM轩俌"蔪揳50\; Q头H靘YD嘷/y( +I歪勍;7徢0v碍3じ挂5 Kr鮠<凨wI耛H%阌翥雋騮殗ち%酨(啳眑jM#藳a銡犷K陠i螴錓猗ry毻K巅犷纆罳c5E垝t B噇紊鎉H誘ZYK泄艰閷"(鸢4輒癱蓷虆廚d8@bA欏眦(> 閘洕W^鹔箋|_ 碖钁\#C脼 +M{ny濴  T姽k鵊kk擛G朊jB ez︵笗泷鼞ⅤVW$f昉 嚓*[D#娃\[c悽 G +KA憂|O)闤轛愿欽 賹 +/ 乽濦0 &郪*#偋幒tJ(鎵b酥 qgJ,)b噜觼未2E3揝庥裭#,渍 058醾?晻Q祋n鹻H⿸/偌彔Q2璬r: +8AWx甙M椺]7爳铖喽煉&q\嵥.asrCs蒹爖LPH-W獘N猈=,裊惨ォ燭"毑9謯G凄&@i|眽 +PTO1E溞,QU彔 +鉻_2_TY逽持Y 莉u!8X 丿灅6D 碰^巰)aB$蛞:U桇a:瘇靋Y@宿d&纃詟匍峯'w!h嫧K鴨爠$SNe +7No/庍 GWk^%P;[!N@苤M嚉偎剪/朝驄`@wB"A鵧9眴蒎#9z撼I緶 秱荾4AaxhyDM坧枍O:%t!g\YAs悞B郢:蜒褝盔侔zz2jU -玏'跷逷-屍uT(厣寶疼Q6滜睚э}頦嘪PDV[柣 BH繯p嚯銪嬤淠&廠i佪K鏛傤埵BR6覻#鹃"Q窰R茽9屝,bN峅=^佭旁"I鴭Z*闇TS眈h﨟w@燴"!-侒X +Y|&兕A韇Q:菃桯鋩N6パR+◥nL0N樝馌#酜耆 uo 鈵螉把ZT8*FF1鏧 8S諟饣/敭_=包m╘恡R8颲(@E疄褆揱"N'碴+H1B=涘)2$鄐y誒,w箦8f+- H誨@棃詚嗼莩芳1A.4邅t&*伫|A/ I臕!⊿"*8]緶_[#爌$RB*#1+N#8陮X脊z&茂\森骙"恄湲跤逭w{'嵙 `藅Z籺 蔮黨X緽^泺哸蚸30楶q曂廘k毼▂燧菱蓛7爵'戽澐矱臷򦬧溞憗爖9]t繧]倎z&襃*嗕傦 #PN翦y鸤\ +圛姰P+yP程x钠)胖儰^燩VI狢1]三YCP皜壇h蹱l8莠/s若椙t汏"T]&8桳闀鈮钒抲|伔謔抎攩饩Z裸洪%僠$_gぞ燣XG詔啂鏔欕土岼舧P"孫t A{8哒v|D瓄忿綃恂闦)曗J笍柼lNr@J!+A@F$滑_筊L%蓔?绕屧Y.km79T螢钐E怞In{逋\A."m娳D疿癝Ia-Ad&8:偑氜^d腙栁0@_ 2#餼皰0麻罏茸@gp3眈`"l潗馨垎纱稁濯/g媴(+僃飂kx5竻鄀僉F諈p!J%臷6Z惨P郪窀#頰q>dm峃^鐴瓝,b&―."鄷xx|陉 +Qx欨愳P^篑2门w>y2jbD镇夺HWV)皪~ O鋢靺|粬$R駵 ._F瞃贩O濪宯P?_4 EG兆悌緲+悒y=)b`^%矃暩晶鵇 +帜彚兞沈通};曊V\ +Vd 13蚟晡:爫1$鵏+L$}鈸紊 鐈(趭j嚢秹敄螝燷-獻*SPP2R胎[9T煞q8蔻阃'(F4 埧枈(裓宛悍c,呗 8苹缐艭#a幆QL怌怽惹沈裎貅Ec +鸦篎ャ3xM<礔5 艗t堗鄴* +霾9#𚽷僤:`Nc.塂 4荹7頇珻q壊90t偢:V誌&6援猳g陞偡&迸偽拥|N壡齹发n3yQ碟"w銰1彩麙綧s璡N籸蜨9瑛v弩&$ 鮍Z!萞*伞詰湃j閅E奦﹉b℉PFn濞夜0 M讐笖囟; O y蘃 疂)趬磾-Z耿MSU1\嘕M3滆婹&g赯娖萺殄輟鶔叧 穜:\俱穙闌\A閬嵧Z蠖/_^q@ q@誣帢o骋X$>"摃襓 聮牜N?|+愝皖語wW歇8俬膂n汛熒 ,'U鳼(舂熗F诐銓菋遽鼥b冡rKd%~<%fr鰅(盘#&<瘞5{+F"鋮 +G-HuE +R剳>3;凪9闔浃N楏≦,輿蝫煂7謵e|Q闡;8'T6飥歪絳ayb昏@p2鈭:,8M裡"/m 譄 窽 +)牞 +硕豰瘓$#閬 巗9$曟h嗜`n;鯆r:蛌W膀`綡C= 怴娋)B +` +V碩啰JR礬葦hf:%激駄2)&指Lx&绢 亾^緺忄ν 濜J珃& +槜3.榶詢,&ónl :I D]Me魰51潌掙+鷨-JtX捻綶m^寳檄x#緩扁]胠 +-3聦棗8& 沐9厝皷隱 諃aIp8Xr1H搛O+嵺5)品侎ED+!林颞橪庸!i臝 +遯攷gˋ艊覑嘋CHp艢鉢c%"y椢鑈)V}5艁唍o(鶣旊B詹岂y 睋蘪+ !橯@j(稏-J,汜酊轴訔鱫 *塢/X"嶧缨柍m痕6侙箃)澩秩眚礿' 怆Vyue禂怂癳/)HY朸%@fi缷漒A咓僳囡2壌-zW琰==砧_狷9 E琾H佐^曽'䦆杷WX^/伎大Z謾`寖j4愗眲 (砇阄恣?戾龅(立1` 琶狜w $m屬醲S莳%)徟=柈Y鍾wx[硣1*鋐牖/*( ^:d姗5HUh.M[o? 燍臸萞H ,xX杚q戃B +篂蒷検番靭8駲E送3縯)(eG削剱褞垺澳9/穂╙C算┨BX&F涼!AkT╛]賧Э蛑怿垚.夣h4嘲@顬`H綽麤7>诐膊嫲噾IdT怋Y 摏n緦4: Gp@Rk淭黌饽/$笿琍踏D~婗餶,n瞝爄m雨拲荈;悱棜g跪X2D柲∞砅E鋤8$砛!搧U熈鼸b怬,B渿BO&洴9卪輼蓃c鈌{推 +薢s4/黥鬎P> 橸4a蜗髞?>|嫠髚8柋菜P死 +榯*梶痡5m#q髴鏇:梏-o玖p+/撜Qx设@柼蛪HY氰m翣!餂0賑'廀撱?w:.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#砀烊E;.;r褞藥\淬#8L髑澍曹絯9~屮l ^鷪噚e屮+^ /f洀^檐荐释洁J5臀;^蘊痪桲锽煀g鶢X庉汊壩e罪菁v鋞鯐G7颹绱嫘豕彷汶+窍惹;:g慘黐v弭>榌|t篾蛖xq踮駶?z''ьq3/礴蠝t聒豂焬厯泓﹠8p>緔缌嶃 e螋褿l吾祗禴剪憈>饖/焪s~佀靄器 燋妌P囝?+烥熿b>+ ^幓s.'/m鋖*4 錧'搦Oj辵悭弆爵憑/}d9M缍痣3耝 ao=z蝤埔+鹻鬸锟呋w|黥;櫭霚腈魲l甀唍yn灳魬'酘谲?萋k8擎罹蜐嗄瓡箢锽䦶営v3/L/鋬 U炢鏫跘s7 wg8-u蜱嶖9r柺缤$蒣鈘祴;'怞34電rYR) +/ud角媢%x眃懙湾磧> +ER鷼qイ-6)&醆キ殦$鞦cR4*f禡{猤g9-溷㎜珠&ts斏.沽Θu"N琎t怘fY"(-Ime%F獎掱㈨x"09渺y梁Iz3I;寪gO見q話漑u孄欓$'h遵V +#反礓7傭欛j#8% KX褬F3杦%(*録\胓盶9瀝敆d幵醟馬EV糥a鴍>跨x孭廠n$nE鞽櫋nv﹖"i)jK觷a扵ⅱhWS浥批 謭铺厫Mゼ匞 Q韗baR)i0In +b-E_I騡臋蓴洡Umz徳I憍f>$巋(: +|^D$绸噶衯8,/皯Of挃汬z,We嫞錣Ah/ 養冨辎豓礊Ψ;潈8M-▃?阃4O︺1滼牋tK罕xF抝凫$m诜肀ぶS瑖敔贉/妳L媖x 9抌Lx僬Gr*霣!0Y>g贀牪涼H蚑Ni%箑鍕{鹢在 衛`X矪濡;啷v娚%Iuy;Ie㎜"旹I羏箷b +)&峓釄巉 擱ジ<+V岕$W:j碠7安焍硽辗 坼蜯反/A "颭b!柼櫯z鏭緕"▆^鞶l!懱`i& 3沔BX'mR7= %E^畄p瓾饱SⅨ*+旾鞺1D鈓81懖懆懆B殊挗"檸盘d<汮贖0$C鏚雇\ +I1誄ay~丟裏啹媟熱SS暠1嬙2ar糚E|瑕硧4虆+4燽C]`矏獷虳傸y:剢(596 汌#Q5讘K墹奷 7"盗D}H%a BX﹂滍l皋躲l蔎;焄{++踳_迎)嵸8旚飿D)vM樹'0紒V桮嗴耪誈=垾2鼠錦裥惋馚戙軽L;/j5翽\)蓶x筩eti*kY潀e蓑F俈&F^1鶼wi<綋u'  -3蝚赱詎*癇昩I緷Qx)QYL@柷)驜 绕 喫艙&)T愺碢毯k澭恿覔骅敄|A)欥纏F3娴l7: +遢^,_3L`e'N~]K鄙设B僡媭R6 +"Q嬦*%-(朤8&3憯揇X&藈,g摃+懜妐钟砐G嵐8C褈2S)<'賖D 囦H'秈t +呬pHz}(,茡Y啹h芓R茠2船U脴%捜妀奣*P4B衎n吸'U鍮l8" ┾ 喩 +徐筲绢冊娕T歳8瓵硛 欞…﹎Q,狫a!b啠P!e鉑擀诂徦.剎倁L^枦x莾欖b絵桍/_壂V送懯)R +4犢b魷00渶 鍿$膟K風7%禋爈/Hへ虁1&勩 +K# d搅蒛^n0樧R慵\卞y硓8銔漙l篊Am╒甙'x妤藯 宇囥j$n衪A諉_C@!ばE +饏閛E銠x2'J] 惮捖T[^( RY4R 涆2%V8翚/*V遣麙仗Uλ/贻塭t a )d槗b1瑝9!`W8#(*b9繲諯"瞈濁冖<洱#L慊瞠枮F忾PEL.校, U眺D<t娗,L +E[$v"8騹,h骁舎膶D怨9.櫶薐農礑厷雽硻轇XD#1聖r&隟Yo菔n B$绘槄炵 +曇秄iMd0#R雌9Qn F5y艗亦奟I唓8*i+硿u脄 荈配k゜蕍&梚嶟晕BTl祴芏##3~祀[W_衎@駷ˋ拲mo=W)U%璉z+<啳申娜l閡蚛论6疕e33姤|恥<閏$us瑱谄娉f(N懸w礨籞j'3q澷|.O 3Ej檎1V恨嚰9W)菶8/泧+銘 D齋⒐鈢垘拻o^奓跩8殠'U4寔f4缑#,授拺^5襅捼?羻穴L陁E鋁落,bぉ\w礞Y$&A桞3愱5\佹1 +嘇 濐玶P滔殸4恅愅糪铂^卑U茡幃7笻T囋暰n.'^:6Y挾羌T(U遇bP陉鬙=h&#鎑-e&Zz损a9^n!t糙63S#=摂瀎尷昮z:揲O锴RA<pB]:貉枪1鸺誾m咛 (嶵:tlzf禅索|:_這'(X(v *0 I擜S.);K凧*'4bq+F颅蟻-纅継狣" +騽 I篐J伟e^l塕媏d:"Q Z4櫶4#K IJ7 +Q)癹 咍h屧;孎 鋁$#,W%襚穮6檛耡c~尒(,Dr牧敦2嶇q W43 龁kH-埉wd, +3e氢&N'`粥懡x偍}R9 +I湁ci(鎈-E箙犆/ tcg$鼕2!$孍蚑圂8FD]XA(肛#立:>垿蛉%:栁﹔+CF袢茀y!懘A軵T艩Q +/儌!箵(?踕鷽=V,%)嗂72𧋓7+錏礹e瓴 +蝦萙伩艣/*8# 廱J斜督ě{绚翂忍殤(F[眤孿&燔j +酄v8y;N籯FvY5О踴鈩!挻C宿P%V顀餔bJ`{^a窋,緗%匥眛羷Z秊4&崏佑 !酸 XK$'d$&Khp蘸3崄nvV豨pJ%歅ゼψWNn萌屸TV1).&ス騂0荹w5EoG顽缽 讦<渂 +粘C娤俎2 &褰諡_<畉n胛2+摵咳+Z(抹 尾棉褠9R=A#條蟔烁嬸那臡LL廮)蘓#堀苈庨JI酅8;蒽i檘宺#2^戜f艼 硧H6)#鍵"Q*欏窃2菗賯赣493  訨e涟 D穐": +d笲倄F0/媩呅R怶墹 嫪 s>gj粞淿P獗,b +w67chG鄫 R-1%眅蓜卌趪%揑1W蕛L!UB 啑e@m )鄫爫PH,s弩 +)嫯/,焽Q"%-iG枊备J-,$B 〥軖ズe&搳+ 萂$褼 (襽蓤R繐羴箮閐馦 +j=4宼嫇 +x,訞& t銳菤5*pr :彎楟岰凋9莀83藐5AkpRM液黏qdW(攺婖4Fj莢~[6嚢]qRT殿[^y潶f1&錤¥T匦qW磋俷稇*D畅攇g楏Q掗RuSw;憚t"\訇\o +F廸莀d詧艐P偠wM:+,-刋蘴 @娧睞 +憷E&.5*6Ca墨O1 薭1H/Hx, 8ROY廛<鐸8?7黙辛58绨VO&躼 萯凚溊鑄蜫&=#匛蓨.'嘜G錒LE"h +唫| +G 9Ee%?7G噥Q罦[凔従H擎〩D勌脣萚PaO:贞f偆奊Y懰垳鹹-Y 擎j峕x1窺漤9赓R9c欗螗%I.E*a抃#KOB3*檎! 颕$-*蚏鮄:栙>~=椚 濈⒅慫喺珫6_n<1<_粟k觅媟雽*惨孺V挏0焆,之9怒罎瀆-彤,0瑛L +篶2昶敆Z绑垫1魋(3郬i峘[Ln奆~n>珸RB%抵熫/=T瑍阼L梟(cn>1?Os|乀Hk偬剠i 8玺那_宭gy?E竚感=嘯Q×X!洗:俆2G贤Q痖鄳s疑+陥'K2v8*炪虂Bbnネ枟呫犍濳H*l$b柪襢廈 +q,譨い8 腗{第/]HE*葡'92J=CG!r$ 袳NQ.?&礖堢(5?O崄\ +A~5c髅!殻M懴RI8 J貉躀j2)2嶊鼖I!BA贞tPp,殹!糘&&善俴/5呵扔d9坦Y/韓炏玧S世1N(1\庒糧y貘;io%r4儡言^:;薟w%;gs蒷啌 梤匲F(S0耚QT[馵飤;:络妡%3HQA槞u輾古}Jl聨鉺q事獶8U扵:興浆Td厊徊{逪睓鵼奺l谉i鎺 〇u啺<毐)*M3HWF菨惕妫O8竨顸灁僩毼侢57><㭎gpN櫉OE"<2洳V綀(衭郤 磓8/,pPt嗂蚮啋Z 40&prn儉爆Cke矯 ?S)豼~Ah]knFY6抢売苁B$p椔.脁如6刺"Fレ$#f覝彜挃簄鮜!e璉s3u +骬枖'E筶;CQ瓍鉅3婬罡E*C儭竂Vjg\熲 糡哻竫!潩嚬票榄0R5柼x弅岣蜬U窺NhH跇怅Y{#氍@\艗鈪b堍1-廐錎6欯0 )<砲Щ7傸^勅伮+喡0茠d鳰R櫌韍\! ⺈!Q=o池< +揫N*&T(凙旗媛a>絠#Im懻婮憟@ Y1+D t2肳%孋q!:剗,N诸闺鬻&SS垵薚翷腖桍}w奷埱m`2M鮀<?O掻b苳 D|n2I +Z/( $wm 彟詨!弜"婉5$ 嫤郌-L=x鋮怢,j4F; 鷋X3渲<饕K衇&:'QP?O ,h(犮z7O茶Fj陃塪僯 讟EiXW3湗OPn-$25]縏酷桍`X   義蔕R96>敟Mm末船擴诞h=7窊q 肁髖毸霎S<3 n +h抲哱,%!舲﹝jdiOy樬,_禶_.蜄丠%<iE+幀Htu扡F歲轔.+肳谅洚"YCj缰.﹠啳pl熎cFa~>鰧枭S鄨頙RPD8$侽L鈧UN@猢7e⿻⒁$=K#-缠t(O甽8OH燬6 Q釷PR嫝$P汬驏 鄾ikb=@D"枆FH曤梌 +CD厜珂1讶Rj敇_v#A紗ze奆"V$俧g\g!擪%蓫T!:偝@m] 矝0涹l2薟(x<& t`[樓按$薽@ +?6p"蠗cd)C滖DNO1耯,Ur鵨汍嚷;S斣q谵螚N籼 F a+蕐﹊刐*恨諐(5@釄&笳|Kp眅/栈份'瀟天菠 葇Ld燔″m1b 羈鶌e痙僲E坞'Ttk攂|R讬営/薺沠0P凪,膾筯聧屏hEI傼#O0)1'*PV黓嚗X腜  a$]賖轻IW虐f殪J "wA籩竰.D鑔3(∠/P餩ゆ=z +掷%)洧阳j$DV嚼A幀幉賛+紹V婁恕qyqㄎAU1蘍2a)K姟f辪A桒Nc捁鯖菳l( 軘LS3*b⒔黵懟揥甈/綌  璋&a` __欍QMWl{(写勾蕨R顕1V憉t*ga辄<%NS|泞f:硦Q:_拘0憫fr糽EI橖T +J5X@#C +Q嶧赏埍魹󻜳铲$n餬)6% 繡莀团善?E僀憸冦 +苍缘緁B阵揊%轿Vo峊k"婨6 G"瓲鯴箵Lg黼嫬w 緲塋呴d/ 劈J斳人2\S漾箲Z銋V捨a鱚9xYO髄 颔 ;錢/E寍 |=f" 5屹E76)T$%ゼ7y噐E*摶 <>$,9槼t蕧F$X32搓|WY軿埨`KS (3崳aJ8沀啿U!o猽蠸)誃箴D33昿*Z6显1笫暷捸2?DB:LDTvc橋eeZ壠2x#轾0l~鼎-鳰`5菒朄隆铯=H~S/D租*t +损弬'k\f}彄亪0~:_怖tK嘊2.I{骴C枬 湑秆p爘ET谛90G觝H<狆q7狻9=oY6阺a,犼Uk!Ob 9瀙‥咼婤GY 尙 kR疅d嬰]U顰9恥L0l炪+裍杅J!潹濴 梬鼤搌zG佬d將)騏`sW性:癈杁!誦$眜-Y#囅e皏炯#驛 +怰"$ +0m踵0業t,ほ !d鈷M$2鏳湳紲候r2拻 !侇S貲蘌dB 胮橮务▉盀雍喊@_y9,艐塜毀髪8梔,!廖鸲0び w  鈙sWpqQ`]烋R *芐鑓>,蟻籧痱抇Vz$E頷怑铄#犣T"潓 Hot 鉆煰庢i6Hゲy^(掿Q4駗1xY藆 +檧 遲8琣Γ鼿T (.$, X2kO偮z謁N戝4d靏"ゥh#A:h裹啢愬 矎J#d6,偠 +珉髳.x +戸Ov芘3 WR!線G(y扝42槹惨s!嶱;(&#/滓钐虒&J Bp凧*"=0&@抶*I8R) 敡(5r)媌[* r崡@7琪ㄖX移H 藵琳+@to䙡瘮 +叀鐆條%磤/鈾苎骀,濧瀫)h輼 +-噳 +CdR 4"滔%骁悳"紎堲4涽7褅袝#%4 茖溸O剉?羣\熉 '}Y鞡漂,H鹑宁渰Z汬佒,S哣鷔t.暟娈 D""創](俓呍≠+晕摏w娧2鞈D卍u墥蕏0E懛嵆似,Q 9*貰Ye販,,玡e:氀c吅(7D說y譾噹兲瞴)7胵鷟8韩58t歶C1}巘-僙 7鬧d'g啥 g.ね4!J夅薂o0)+T剿娕9Q櫊iN–-砛嬅A萡pV4;穁澺6r噇A墤['鏪=阵絭毉(涟0砨=采TA扄:Y恱d籴| Y翞!槽]3瓰 F+庥宎"O馈惌&1 + 叴9,v畤慫Z'E朄Y&P2聙5| +甀θ哛/D寐/!卋岦圅泫1 斎掜 疕X=9l巧}p魬G椣oN壭*IbB滸,05Q参/眶RKI*Ba脰8瞷瓐D"-若1?LU蕴_烁炒3t騅 +逹獭f 韅+钿獓葱犎@&侹罱2橎歟駓洄f搂7k腤3AXCY璟閚茷JjWV;筰^7藺痺砎?2觹y产D翍暊 掅$ <4蘿d蜁'デ5俌?跨k濓tmrb5吿曈蜫谦d;墙厛;℡S誠梦揈K 洠氄Ck肣1焍叁U砧俇.佷.p妉飦櫊WD睞韍Z]敋,WC衣%$ \@%嬚!偢檧4滛K 袡渞SMx琗淄!Tk,類5聘y诀@俲偓咇d槀(T%糂{怃:rk塃|Kpb{凉);s<x襐;疾Rq%L'襌T殣籌b庲哘'{涖i浈6+6抎m癅蒀n;侾屝"惝羹,#躳猩IWr+6#幉T;{Nqnk "%霶静S荇+{娧'7y撬/藌 悤 +f惭蘹Q榫[\U-=O5N~8(T73䲣牰AaY{褋琑[捯>O兹舄贞じ:"#-絛厮5a;┆[}看 r骩^锧饮碢柎瀳DU勼麙雜R=軲;S'窇鮒/I-^▋:d散蕫崑桕%徣倵.|r/銈xH*N!{銚4p茠*樻虿謪晹︺-f`茘(%璄衽x 葪宇抜OX盠b敶=P∧悴*(`滖E%(u磽 P孭杏=藶`辍淭乛懤蒬啨,e薘]枦2M陌劔5E毚q +~趴f3>毎泟 嘯Q咋韼r'?生炷V叁*/*I餜S諞;鸾 /W搇&60譍w1蠯z姴2N囜\Y)hF>嗇碫绕9&餮lA$鷷5-;替V篴L豒K{齔餇6竕筩銨祁寲n!}h0屙`9鞰礚O疻t'Р蓼AF咄"胀\uW6遣> +R缐坮鏂燔㈠N- &谐c賖IzS喗dv茆NP匏V7Z硷封/猰聱F芠:+*飩m礡4zW嫷韗}7,U)O5麙贚屴,啮_搢箖藡RU蘸^癮dG娰22]'法 汍U珛.鉧箣≧}?W薮 K傓Xygr娭矣C薦3闋誷s+冑璪kOw'Ae+W 頨┑敆慮猀4讻牸z~g猛鯱Q3}N 倔o4挽lB%稡睺 +儔g湹唃惭责r澻钵臣P雀1:刍駀mp&]艂jEB-E9頱Vi氄O/艾/5#夓鄊鏙k彐nP^:=騾0M定5猖扺Z粘鄺!鵍嶵諝閹 g桍柦鈠瓀転渄黕陔昬鈻Wr跬L0勺6,猠鹙$戸簀礚{埑*趺淀鏺{O送;筏f唸呿O溰: +j譠^匊z蓏c斜[赗襝V:Ф繕vZ壿q +[i蛅枍靊┘竞4沎帵l._辳 [Fvjd'Hr糦6o夋e"{m茀镵 (╱'%怟(j)z;IS馀2外疨佾鱊*荩rk 簤+5賘Y赺瑄畺V荢幭) +坤莀 -5龊撣户4F迀m-l 翥璆沩G盗憹涘K冲璠+鶮gH ¢L挫S輏7踿Pe忨杏凧KwZ3扛跓绔)帚譀{盗I賓(y嵥魦琘瓄即鹼麈;曓祕g秫艷9IU肄f6匕凊j鉮荐$#W肣昦{泺耷O羁硈$W氋薨;R寧萬?沎]辻m磟=>[遻亯O睘杋Efg|cy魃忸+阏踳瀪ji氘摕 +JY'遤.秒辺!9>[(M蛅3濸u燀込w髌[窡|闗/x鵘圻Z=黿C寅1舒諹k虙mK.悐blPa静XllV焕Ae[P濥釓;褎W窞E 纗啃8館旷q蒷臩4擴u񙃛X|锤齶皘鉕=y鸒Z蓼<8|m黥崫撟n_腽'7w瀩鮗3说疹糁h踽t阊卺嫕焠9荐淦覱俋W讹躾=浑V稐vl銋_淰+質_P姦3跏[ヮ誖绨穞{皕7W[檔6&荖~/璲貼P^)6 +諐觚窔扱6軳构e:PVC偯艒牸]i_.=>萕蔮绐嵙語鳕7=洯莺囎ZZv5>澀哌8|>]贿熭i of藉;W_缒渇諔脮蓍旺郿滕崈摲遺嚃6皉9煫#鞬岰瘄Th転柹〃-蚸栈粇e第菹U姿晚菱同薝2顮洲,^o輅5搬怄7縍腱53獁撼砨kW禙~e}紌5窾弋Q辟蕖XJ;揰筼W]蓊t鵽 {n7K萦\惆9>-穠挰潳襊_奦敖qU隵硖nW鱒流鍕逯v北貦7嘒曨^本航q笄~鯳F78)Wn椒}魤停穠无*wΤ摨鮃况摽暡~餿'謳>6迀簎蛑鲩跘y雿+?虺碰J4i舃m3焦q鱳|缜~】|90Y馆潪!錘罹昵柁k擢4O6n?Gzd綉_BRm5藍癁<葑1踷vk 粨贳N~+畸?{鲷嬥匓y墽YM\!韼a?9雇J璲箨姻cY穗闅_\D!-"$枋谊菹~窕淃阁苝韎{|c土 穜-韏F籠贀鯁 收礔镟嗥最交z剒1{怂w?廩vZ_込醇.m躅q絯⒋\*种)螙潽v焲粽w0縬穇8輏s3怪涊6踷-_Z籷汩媁攮&2漑 跘戆诰阌ユ1/時錟)駁呮_n啕芊n?~.Y雝7'芳姚馋豉笙|﨣咄柇U]oM頽^}[KwY!愓2+嗪P粎0鮒灁讧娨X_{噷hZN劫?/過诟5[=仝繜龊q蕄凗`r?阶\9刨pz貔?pQ-鮢g澟[政张酃Ⅻ陭O_ *揌虏} 叶_^E.<茽津嬁kop蹯崌逎鲝飤恂/燹x喏?兎啐篵4*>?秸 杗紭l>搀婳熃睑s=觠彲鯑o棜曋醜槊檄経惊e:〃谭}睾櫄灷kd嫉鲟刚^澨巈届衚[嗄?4鰲w烒-軿軁),▓櫄F鑌+欥b絪濇枭j}#(..o咣8zZ搄g8<g宽図徂紊氤颓^倭X6跩簢^攋蹅捤鷀扛斆)+藵動窿儯玂爘Λ范X?|眫餯箴狎bq瘾?#睇琥Sl k #=@4圇C岡者腤~阦孔lA聧譤猎o<_;zw脘}園蛝鰖;9I愶粃[价湰<讆鲷;ペ蔪z曖|5菟鋿祎t吒箴揼忿授业鲽@M7E礽'v{t3.H舃~VKZCT;锁k喺+朧x蒏覛櫓:沰;|⒊x"朙荢啢=︴握著鰀筠钌7焴率砶N~愅鮫>镣w鸎穥摮袷m +猎{nqM6j奮┐鲪K_Y倩鐤РFtc铲缚z.l萙璟[揍loR(瓥(鎟官t泾`鮊揪>Z桔灉賄档卍败A跊塴T(毋咟厂恛鲃%Q猔漜AitE!氲J}e磝 +鑿啭遭諫 祿洼7茮彎因hv銎Ьe8抠!﹎薧*4螰[o梉W喘辙*緎蹴掬& 炘6M&/鷼偈U7浗#寖琏冘(玉"P= U-屿驅车z蜈蔷人蘼B奐旝!搳+侾H膷l葫蹩<:媺⑧翾﹝荜辢跷媹╁tT4`9-袒L3沲r脔鐫F唯镽径鋀fi<隫+挂 +窵襃s嗺$イ陯;踩燯镘{?;鏊3蓍蔞U褘n许李鍐㈣鴑w46z/睌 鴧公wO缩m'7隠nm=嘝閹榃湹酰/蕹僾(*k(匨c|(.哨隉e胔庅Xrt鉩汫/f敕 暐ju鲫=~鮾h覑礷芣步昍u'm鮵>!圝AQ媹r;揰都誰n=鹤=拲f6齖汾豀 涸:160棅 掕V孟/俩A]0\恥苸~碰)&屿5F +=蹌i鈪 葝'K穉cq5 珛蒣k '7苏眢h奪轸彛1偬4 +晻咽韑~Y第4隤t<(狤N*庭l揭隉h鎬鎶磭f 幭阥皆剞获皴ペ緳磲鈧7鞏i7觱栯妄f肴唫+橪3"a濶簔鲿隣^l炤箨C觡昷kA0+曋t爐幭hZ蝢[浌厼W攴唊o诀ィ;蟍 彤n耻淣7瘱F泴樑鹻輱Re扝J鋪虮;僰5枪凭dVmo覾cd鴘Ntou枏;臌奡VY逢4 G(1懾跷苾宊S祃)諔-诠哶X~吃榥顭芎無O=楏逋箫)亍 漣u鰆ML1T丰抎%,V趽l甆KiVqL5\京戥D聦刋懲ZZ稍珤攃X;興y)瑛鉢}[Iw@矚亏蕸'鱚-4'1ZJ馳Z╪)z=#!炐D)/+錎掽%澶碃缘j霠P薮蔺'o澽y跈n╅r溨际 +z宒橰grd9}#跜J儯椒傣|蚛q9慠慫f篰in谹7 lo潸C0,_琟+支貊z仡烼j;瘿v邋<峛a墶寘鵧8腝I郾GqY0{睒岺ぽ蝲榏埌屺h漽銡﹚⿺礴茙坭鳁瘽芙}玳雘暖}銍钧轃鶍筐鎜稂開峡/~7髁hy6;).磏we6轣^;揶9緙膻}隟_g~痣飢馣限洘_鐍鄈閧窥~錡n軁弼軼囉](Y-x鵤P湗賘4菗觚脫7<{>鏖7~洄隄/燏耮窥瓱鴧蹇鯳~睇鸚齩~绉~狒3'hI娤唉*{邂皋樄~┺l熫z|pvweg髭趺=}齕唼锓?鶮矿羚穠o6毸 揺R区猏j7沏k歏J&鮨Χ緘}i骦o痕nw>{燒况釛~ __g傀璡e)福SV謏圪‰蚻Нj舝m异.'+Kk噰>}鶶啐址魁脒[喾鏦7搡鋑>O3v囥s,侺5 RTV査灯鰐鮂7掼<鼗啭櫉Og掘/}鉍>|s_駸蟷酜限鶷陂發枴-(iズ:s=噪薑饲w径w煺弤翥焫飪宵臺麷黖盔W/诊?'唼睙仿91槭遢n,櫲&猹纄韑[7诩P_7师Um窏韻`m鹒簺+v粷裾C愤|裾/'~;嫦琪~稃旷鱺7髈劭鸠褣矿w军蚾,U槡闠嫮賦斛x芑帻>顭逕?黧啐3?閧鮫鴱?罂䴖啭葸燑櫡搦L澶)6{3Q*J糞鬧}3燒髃唼询A襸蓂]纰3蘈鏣]]9М铌隃s铋樯9b2D&H侷蘐%K瞕刹%Q瞕Y讝)塚爞 贃韠锘锝.h璣X愑]u无_:;鶗瘆臌o}o稔磉罂_W縵笙r漉|q^*较 j覉泛潊照悃>g^{齷'>/~?蟸O~蜚熆筵t敕诀焬惬吺'鷟偳Z!㏎tJ W妳駬霞瘘3饝O};o?_7绝弹楋俭珶矸/~O|鲇W綋蛍Y6铖(*媩睼櫇澽k癯肗鸫)rq莹蛛s營擉'蝆x媾>O觉鰪~_瀵蜚o骰O~顛椷c?mm灟qdx詽較=欝wo\y飣蹰瘆鍗_@E魸岿歧湮滸666颔v,倜癤QX*"2aC6嬚摶煾 飠殄#房啁鏃掘暖~碂_x闫蓰+g;齍U'虵2/2欔忪谖浦墲酾n]龐/今寨均走O啭窨镛O搡?䦶_/况薕璴钇-Y蚄JZ昩鮮kq~砺徨sg蠞=y恂桔o均櫡唼轔~o觉肿抉?齄褡锛篌駍h|陷钧D3@綉L闲T抔尭瀔暃腼y窆瘄 _踥| 燍頪啭涂w齙o魗岿譥盹~龀蜷蟸庠酻=V9`D;瀐對f蠞9麌雩燌瑙>鹓o|嵊啐烤o遾宸岿/~7奎见綕妧q蟾縒D僡Q5j 昍霓羬搠顝}阠鳄蟸啕7葵弌;?y珥唿鰺開~踔旷碂锦?|碇澔賊[ 謰F磾4k胨巯?鼽遹牖篦|7䴖w~Ow矬鬟房鄾 W飈渪TT6)彛傁嵱2贌鍂=躦攫_勝房蠓W螂顯踼0Q燌鬐痏慷統3;遮VTNuj齠礥&W讞珑喕垠O芑鹨K奉=v嵫玤獣L$,1嫝 唺閝>A叅剼zo?镜坊辈8y槁殖O_zwn_粄镱臛畬骀cfVV +h +忡Gb峴 \螡紎塀:-fOn-芨zgn剧=O_~䥽7?;盔崆?鵊W疂煘焿)=Rち簡d Sd!v婺ニ梠:拥Z{n羞Y毠r?7峻韄O狂穇?駞蟶瑁x娴绠熮;揄蜠蜌呦揹AU | 顅S璹Z%8本7爵購袼焬髎艚o趴?跎鬟}滗欍K僾i秕 唊稷)崳腄4莓vVn_<斛kO鞆_龐/~房鮋蝮骶蜓緋腈賄c +Sd茔Ic-Qv谺$&鬜J贤M同-/灩耔晎}骜洘绝~煊焴/|#>u玮羄![p "侂,襄&#z )#晨箋'?}嘟縶鐑飣頉黪_y嘵各罻熅v捩臧3櫹鱷脈#值踧1 >7!l!Y9刎琥?鲏7盔~嗾走?礼唿豢訌|洎鄯v6暾蟞8娮蛒]h0@cA柭]/d2漗w~aqd4趻 溸蠁P$#^/=v涕v0D!駊iLe瑮1r"V0"偅H($8FbYUP髜Ts 煑怒} +痕GL乩誦DHB,帄&%企ZX诣&袻>s3S'O焆軽O0弉顃c`:@*鹼③脄紝$ィ2桥B8=疀`G銁$烰dS閞>歒圗c3>賘5 (#,4}毸=V* +3鋎籔操垶#;+V睎婳u[閐欑43h:Bu窊t9BN;獍多飺琗&瓓臵a攱W穙炟md摚f経,/;嫿z)]!澍樏6顆9瘃c烋1熡v1M螞`鵏(襻P $sZ(G昑)S濌涛tg4A唐襋)Nc捵肔8  h瞈Q2似 B爏透賭刓酱綮YUN`兀LVs贝.F&U$)曵鄉82p:閲/Q7>炂4濼鉠Y嘓戉胋FW妴^m:E壟粧Z?鷲J舊C钲閎~康茔q,嗻%鱖;旸桮GQF88;烱曒v廐e姅A庙F嶚於26羧C6B`Q窙磡 鮬P鵩? +肬咍Z蚗窵嚧牊 鷺辋Gw餠U :'6祹搎牐勥n86.l+潻C轀r:併膔n +*G8V硌豉vIe菐H);卌裞c楳弴眯埅猿箙db陔blc>")篯4釽侶脫鄽徙翳澍8:a筵>幻锇傕[g}q=MQ﹖葱 /鎅. +Кe韆3鹧N1|ㄋ蓯X実<焽颢梛晚駢嗄&濇睯/-x[4▕lZd叕篡 昑v9挊柮M朚ビ鮤@x鴀3偁qQn鏚!{駜戭繹=从匔CQ.Kb蚷eB咮1烵"墹iQ\襢GMU踆窱褭#檼郢$敓荂祐.x\鰻舾p廈粎0ぷ+y麽鳙篼娛Q庙#h腏页觱ce樈Tn聈窼-HcT嘭Q蠘礧髱耭d v;/;]4尠道HF孮4>h,k闒揹覲=a璷G 4(痵L>0斏_ 怦i^+-*疎тp F" +&マ=櫲.酓啝痓场殧N炂需保^侸襱V潋篫 P锴幐}.bq$I&殼R('闇硡 Ql8泶薃匬 Z6D欽馬摋讵> +U%9潦Iu9+T慥,1靏姵 熲礹W(GM蟽徐=㧟!O鄕 E%堡剾║▽ 砧揃秧椸莟⒍簙V詊vCD羛((x"煆~<眞8坎瑧i)襱A霋覅j缳D4RE~|s +i攆,5#Of3 鱞Q癬腊( 敗傾澚u"蚮`6蘟gH0|~輬At髞C斚K搉EDFh: 囿肬グP"D&歙嗣6d s淴饃%+ 1麳=亭;lv掔 9鷲s(]&霾7羢)笧`@駒飪($lE歚02骒鼨Fw%DD崾Y搃毺Pd&嗅穩U岭卮c#*繁减T祡郈t^蘟槅S+嵲*塙拡{=T桿貫塹>硺(u耣P恮侟艌种常b羆 F\R 馨;x汣湴驡荁瞧q悜{;W7/M窰爡汯6s蹴Hj殫JS輱髲<b.?矧43夹. h 吺0Y柹 H"D$IZg蒰1&臜eIL姫1Ld譊型 i敯6偐 u2NE兏蘇F崓n迩瞃Y,4- <仡C"A瘜&A$脄+憸騳%Ja:氓弽糚x僸]锲途 %轨G泝p{9_@& |t|f*+@嵣蔺V倒崲Q嚀辟HA2MF1'$旽e倥懖禵录,鷖噿Z阿𩐏缅糬诛丬NF?鴠T煁6橒$,E顽VFV桩jJ崛椡妀J椖s烋麃.僞o8v体v燯)鼒潍M(櫶d噩哿咊"鴟$=KKe淚izc{脍匸/卙#c娹姍3qs&漗P屔q臨壻酙Y;0BC%x:屾疶[;蒬筇琑ε|0洬o歔逦^﹚J婔 &檸忿嘑帅%傾 惲驎xrQ擺^+ ^Z9Y溙噲酺傗r淭 +.v(P颪列i査啀ns鉹6 聇衒P~線 +屆XjZ?r?6嶣y:E旹 鶧俆9撋 c镮妴N訡=$=泹MQ眗rBh敹F/)隋r}=灆*/遟"*巾骤t{鎡苯澀m褺夋捗揸洘诠kO鷥庨栦f*砎(飏B]託V揵Φ像rO嬐 +{土帽"~英&娕>攲婮4卤A骄|顺+{}蔉zVO 泹%朄欨曟 Rtb碾并悁欼 e淀t4酌5V( +JC塼韁e-D膢~@E洛)醶哺攐衦漌娹v撝矪縣&gS閥(1+=鄓僓)馚* o诎RM w9嶌z啅搃#5\烷-W$ +蘤瞧 |⑺壉t,某摯X型!+VY塿6k%YY┕i4d>H休V圽J昸轨,PP4熇h*K怸毻駽偾WYA(蒵7nv翖弿籠.` +& 槒'+艗s觜橦|2墤氅馎贱r党噾駦嵜郭有銈-4V+儍赇殚曤k呉LL襃糏0E|!==軒#P岸p啫,&k;衍Z埵]觡俁c〝U阥4 ` X3棆鮗+豟PE俛粌p估kng灇2佸憴Y爡*艜杖爸=+m=银x0%Y綣P9Q猙朤N,擩 悙.4覬霢儡85z``z孺碿[>攣赤xp9+Qd译帠瀋 骽.'日ly9SZ櫃>筘飶%{瑯/6'r0q蒉溟裳箌}藣(v;N3ix婭b協sV99牑簌8_3S敃定6鼳 稲[iv丰僁W籀i馢夙Amr頳【#虩炥肛欃' 糧娓蓻Wo>峇:圕#盭闊/vN)酙9t譿鰊9 +5"閮lk方t狗鼒YZ縻馠傣GycwI儷嵠G趿俳笙w.Z羜鉤塐0Lz聨;\ T,+4 l傔薖d攆狢椈瓩氓'譔=蹧估癀c切龄A46p[Q8|蠨o鰎*缝芬?$蝎轌gz添7@孝笗 陖 魪 'B Sd +dvW畜QO 肨z8鄎鈾橨{gL^.Wn<芬<K蚘q.喞4YC0驃 +饠漀!0胉92δ 硜 +,藭浢G霃餦z0禺蹲C+憻彟猳&O臨S燫x/毶﹛jM 9<潧汙憼炌/ 褾,=G襂獴mI耀HH椩:P3v牮睽G焄趜槕草鲆'^琩颾m缭锝饓櫇'遑 F'ajX:/瑴7"d^總揑=6打珼n>2}~)埮0:;痹l幍诮錝鏾嚕-拤曚s凱嗾R┍r蛞3僖歹m 丗説醉U躛E祙f?Z0K琓d膴浿S欔鈖褴#O紀0f蹻厛D$>R沛繡ML0)猏枻鼞稯TⅲxfS崕磋!疒4cAe弉熀u遛珱э孷閥 ;x鲋*T朅j咮 牎$脰才e鸲蠫H@(G矘踴<牆ε豃芬 懆ΦCAc鼧6A<AダK(騴@冄6╕6雈訤81'致`(-賖懼禍*郮嵞M瀴覶 J挪4U匴藝,垃敲++僖菾誷`鄥筈i锒Fg +蚭C/>r豕诺Ζ +驥鄯g譶趾 棫柉(F最ぢXnH!%檴2 l潁cF顽q&e溛壀; 琗4鈸,煈膖贊9諡9Yj-/璤歗<欶甲祜唤==5迩扸斐O紹q冁&l/V5cJ整牀 祺 Z+斻欩谅t*?痠僈/撅@0n柔A到恻覹{椒pJ賬$9 狕兠咹嚊a&4篼E^,燰.1 杓躈桏芜{蝈廬~鼜挄u婺" E嵗LxV挌傌364E蟠 瘈 偣睼A磽& 涝忐`磽蜲且蟋堀*#謤J鷖廯T皱杢sZ譀V簜嬿t+邁CCz┎昪GlG阐`琈3家B聒 嗒60廩騴U疧卆q+F泩鏹 a鎠Ss篿竻dqSO.)補 }l+[逽礗w犚1郤蓝腊鑂(眲B4隈ZqUL動妹暟bI稁台璙w+m駖vz駊v齬c騲8辒N汚藹惏φI<牦r 曫t畉⑥9淾猜焂朓Gb]怓<!<袓!╛^*&粉 殜!瀃9~沅彗蝄~骣3j $鑵'瀪題@(J 拊狳颍;: !39#c 鑞梼 ^蘯漼$珣n罔顦 A&%盤,6/觔亠W眍鵟ayn閜a2'椊>1锟袅p|rb /&襖蠤}88窏膔"3.. fO澘鎏谵uN璆] 飦矬#Z8贙e鐂厱L~;謞Xn殹 磤灼'@?G插灯 S^厗醶2阵鷛窏円&:h齠s<艞 ▲箛煣,014瓌 +暯b鮜茭幩泱R烜&拉轀6|③墖B +豥穻C8艂焟-l^9减顖藸hEk氀仗a4砽渲.O駌i戝羫嗉P斾(Re~貥{|?6娣[i缭內2) 搙偫">/#奅5贘鎔捙鵭o/殰/ON:蓡iNCs俆雖訙F@助枈ax你e@狉\帰瓐縛朽8k餌徐D聄89爁^╠r筢h敲幠Ja硺 鄢{SK+跽Riqs隞>G 39,詗D.洫蹥1 4(UA虄蛤7tq腃劇侧/c1P足6镅1(QcO.栯{弫 k屙軬嶔嗨;&o' c稱WTty副 ^熇嫢HlAEh=歂鴟"9HC琔爡n滠襶餦抃h鼢6鹚n'雦铐v 鱶湆)D汀 雚r昗k葆 9>臻o6'徝縛L邪6bIp軟V@K.衽tqU:.wj享b{頃官鉜L#aAkΛ缔I5慒⌒粉恈G= 棠@VK桊"/. ,[軯6;偈#槩G觏迊7Cx茈媭i鮖囧袾'閜vs~焼G,hR!3-.&'e;'<蚴镱-]4棊j吔ゥ媻V#捵/⒅悠嶦Lc毾G呎*缌班D:矢=Lx琯v阅`#( +頕擹傂穆紣n鯳f梫W廮谑fe 瞡樊j搼豀贞hP徜篁>熰鲵.焋s塿 M弙Eム1`⑤n书臐众3硸s'I j鄬阘 +禃xa:Y\(uvc笶设丅铞龆vm羗厽pLH ,i%揫嚕1纸鹵魔╪曓p-o5+K籛 团Bs%QZ娲.Ngb戁纹フ鮗貎C4|~灑覀Xc笢,W(:%K鵥q$`@段馦-?[赤ⅰ莵V< 棎`斸英V債m禫>稹蟶鶮3硘`3憶雿N語汼凖S篰忻e-\W院Iv)鉩K J穗3,d|嚏癱.A`F$L/璢pyYP5╱0!轷li-_僭"m4儹j}9`ヴ 娫z萍VJ3恶爙#8;醋 =\6kCaX_RY$#蚳 Rk輧hz咤忄2:L犄 +B摫&<駾CA竽宫Dx笎m^军#'4嬪僐u?韌2j抎 .藹[崓淵ォフ'7锷Z踗#2|軕.V!偳%.湁埱巠~n瑦O晼吏佔N滋脳2鵜#誂(U嫹蒉糍潛O\湖頖飣`3湗銋, q8神駙輪鷠,蚫糣NT  M页澚薕孷N"#恈q第>ǐ閸X'iMo@「 A莾h 濁盛渊扶趠瓣=纴YX@E齺堄9节㩳4}>%盌{e筲孓#睁适乒齭7耭R痹vV.鮃'q2巻鋚8痪~>煙勥D$薲Q$ (v[萢錣a弍{$A<1LggS檻$g穡眙w1"嶊郘g鍾捍狦;K胪U)恉z&櫆懩2悾勖豯#箌nC-Lw踠X 魭踷b"RD襝y誤0|漃E"钟+歀務矔6|"丒I躾祈t劶n& 9矏杧S栆棊'7罹秝騰 DZk篱挂*(X9& 鶛 嗓鮱(W覆瀡;)YL樠*(渿幐A嬫@瓝皃$鈘 T謇嵄躒姞摤X喼+肿u4纡馄悯嫫`t鞍p0U\鋭\0"+s4侎1k塝蒨顶衕頎x蘮G憖萷橽ui鬈絪譥闙芗睇褻侼SL灓尝0S篚迏烈M#3 橵鹸惫夨B阱厄嵜!笍荆莬鉽掆6I01}2擎s殟優啼&O澒>r鲵絣}9馬es髦犟G昲%D啠鎌0:QF+萺 +/蚫A细=V9軯o懒喦嶻ㄥ蟀奬#啱d4雓g淤.蜎fv8粂u媵c齾 樟Y9邝鶗bf#镶L葬慢肘d谤V炢羺*鎔龇v9v蘷歙 H0羳d +矮V]刎 +^ Ei󶥌I""闕q瀻Ir揠a<k鍖覰困 E蹌7剨<7昖狶/o潫_=L濄T紣[诟09疻厄]溓%褬ǘ6=e "b$鷩礝 儁.y魣箬麘囲c擒P绽血樼(_H乹p摎UN,H懚ソ6{菞G沖唢熃 濹 72xfn\復P|.攜&倍鷓廙寋v儃4 !↗P硳N膟I鰶龒撂^6w魑S7=oぺ碢L缱S檿F玟觐乘Wф蜧b齮庠u9掱c`-MOi鶣R{乣皂翑丆qx噓 |V<礹$f连+E!砍ue0芤⒌xvχ;蘝X莨q鲆得D~z~皲G>龝p燣Tjfj硬2﹩a╖ベ9.)隱鸇PxQT炪玽雚65a B嶚*\啝4S鲣i5髵M頄+,熾阀f鱀pIA暊鄝d╀v 醡(鈴 X嗦6A陑C諍n`1'獶z齾K胖巒鯭" E[漸3倌I摛3fb*WZ娕G儕騴X啂z "毸Z2vW*r捃L麋7甽苻>赋䴔唬K-0t蔤拔l"蓪礪僉膶n┘嬛. +CT2d鳿 亞蓯2N;菩訙C驑坲1燥緌怄镚;郴顼F?媾\倒潃恤 +竇扟銊詎'飖媈 0U瓮閆CN跠0骲揎e╬\a{合xl6 +t并酡骐鑁溺PL %熯罐澔$F嘼认V;4孉*窋- 珰倜铇胢Ⅹ<"鈸躈Pql<聇忷偑' ㄑ獤〒倷*M犀_)贩释貊鋨f9dm`) 嗑$E'9!#)鵡w'峹g鞓$M=跂*姍R麙澣洄Y) 鈘儉b2e + "癛祉鞙Lo刾璛_[诠钯'沋>;?訅>塽o7頣j*祿懾0N,漥Kr骅貥蜢p*線I信tv孚璯钴L+p圝I酕郴疹潽跷|.[]配* 鯢{Jゅ魀a犫t╝@惉蜅V鵿畻[[荸3泏诅W/傛T曁鬟_v+.啡q@QA╟xφ霌DQq胳(>+^甎:鹝+K[k>逗y竱鼞蛃O鰱痸.咣>qc麂鮆k絍_瘆膣W>L鄳癛Q G褞4倎缺c8VB銝_>鷲kb蒔Z d璝,-*'晹hW咱13線,i舕i;躑5Rkcr槁怦雼环7o:鸝|楴.>.+9盳jn绐況d^惁膖:i癚 k皩 乊帏2スty褐^9}篪橻囎瀂9~ボ冁N%Ab) +鹼,b捷?9湽愇/"Ht轆50V袑牓軌臇夜59\嚈貘x妷{}记税|J嫸才貸c&藲曟jg高lsJ《6R壷槌譜断`D$櫃)6枔p 痏呏繯屐暿<饤%!HE砲(乞厵7w8喫櫣te}0w釕;飝颔O,縂轩ns褴-Q蜙孰搒祖V镏:qa0P硎肙詻浿f'n:'痢+趿)*轿晏.9E*j峛yqf鵥愂 6嬇懄嘴珠礁由RlQ整Qc勢nV 转濄5勿N螄p]撰曏偄螢国|sx惈,HZ異e1硙鲆摨'椬/伇#C+ +鈍]v>a谯&X脺倝x!悄8阾衈X冡玴(崉@潽O>s鳅户V畟酲w抖鰋_锦贶麻kw^Z睾槱螹璣艛琻歩牁隬}yv鍌7嵞tソUói,Ff诼膞$L倛暣,A舮$獣D~&U頍簈躅嬌野証晖Aw镥j浲崖EJD0B棿:#肍/挊Q⒂戜vI2媂陷8奍Q|21猔E巡9痷碅2m`7儘鏢介3+梈;琗憰耟z7WQ瑱*.,l]火杷荤烰W桇x揹uA/jN雮Va牟泑!銜襱<蓁稲癍肶0憼慙彧鮡^皏%$(靓⒆T絉m,n]握V1臆];h2粨:皿曻v,1绫緹!菱]洎no觙2ke╦袮洞灜v96y缰覹q笽璧Bmkn闫暬療获辒iA 捫?蜓O铑^蝤曔03壧薝l6 *N构閜a謟Q觭Fr$Iw灴'}4懻簷.罩6鳟]击炨N3L^Q>腽枥#N窶棑tヨ捪=v試"r.3 v襛!孝鏄<:=蚳:;)F琸醨wx?{(泓犴鶣gy狯39蚱^抑蚿碵),渵<烅粆袮瓑| 奮4"-m6嚀荅1膑 !<"i誃s6鋕k0跎Tg瓁a*.磔-t龃膜mc]8腎碗鉹=6审匟 +舼>慳釬 澹G殖9E惒妃t$鈛髊硟沭籇 6:7锝r氡梂/ 硲hAxS%1n薾1lX璙椧椤敲實鮿BV E1G1&CE暾Q匀垌h麉+煒^9..Rl94>+颵\:轳'k薠荂X呃#塰奖℅jG騹ォn)zW夢阥螬g^蝴鞕橸钢:_ó毶) K含-B贩OS '皠 486O擇j;嗻<鬞鞢鼀嚜sq(4綏H围亯N蟦)j8嬦沚dH慗覚:柘'3艡堁h蹲7N轝劭責傥9@.x^3庼4絥-e +<梕敄 斸燊x(瘒eK织灴稚幻鶕獽醯抗箐Kz宋V{'3艴rkw貘鞬7^Y趡=貀怡C(/T'毭媨嚡靅zqv笱^o3_鴽|霮A"铞i稳0:σ鶗fk蹑'稯=赱83絶笨p:[_淶:嘲v顸暓o>秊|u┵菁~锝O绝釗楊O.\H鋐y孤5Y膣繤<敃銯蔫pB慦~S=>矰][峷eI'-\歒86j橽徽+T#馳Vl0L墶赤紐4妴 2轶6Xi灕襒篻$&Y.+酘T櫭E螽ㄡ|<螢Z\竣GCqkO莾w$b-瑠q\.b鯟樶鲏^H膈7娫篬楘3'銠9捦y紓畺A楶f裑,@}疑唢 +馽柝Q1麳`:匸O衕:q靾晴醆N:q" 鐄英槨(tJ0)璊俀(MW[+菅~コK1_U摋耡(ki地窮5怠〞{lIk`@⑷勥+劳趍A0S棑吂Fg{n殪破蒶7_Z??葛酊绠几{闚浇5kf驾/\x1#~anz跎吤Rs%hf禈芙麾#w 慺,9肨~e稂笄?W蘋m靳暖藜|,/5Vzs+М??龝O}屣o^狐'>摅裠q!YX垿鎶鯘叺}啁3淭撆黨4  +$m$跁*F$矇J6昄<5S14躺\~>S獨z珼砯$3襰飧bビSn x( &l葍L!C`鹥<*H9^.v;{'o:糞锆妀:瀓.f嬅ru-L騌0n鑪訉w 暪zgM账琓)揹汜H褜U嬪镈匑帧蕈 f硝&凡申3欩点Q<;p逦s窡}跎椷锱鬏~姿gYZ劢髂S焄8鯒f庄蟧苴亟=縭L+&S裰/骆 ;醫褱怱"漒};}菿YEJ筐译哘$8缥铈'N\zyv螃$g/溈陯vI.'G簲Xc涮庞梍m嵨啶q箧訚力+ZG灑箁w:洧iN弙7整[R慖A﹉盫瞳錊P臄(鏸.勬2憍gz逡c/閜嵞$jma璆>臌. 臀(%浬M*憂s騖$9Ks`~氩:篼򮋶摻t~$︰淟X卿9憘0尩6侪舕vk堸1肔朦 <2魓咛蜦SC=諹#焈彣3=>啝#倻O蛘璴 `]Q硻l[7際P娕奚rk; 斠蔬s;塜鞅6[6/蘌@衁炆祷棔\ *够'鸼1;u惉B嘛qb-W\蟄鄂荕,帤N*赸L58. 輸 瓓ο/竆$藰 +>k% M旰d驺錬+拴h8踤蚇维'g螗乶症橬:坭-苇,7Wffv>鲵I]/s寜c +d髩谵Jk 舫dRsf|R 1 酸儍$erB肔/;'=woi鏩";瓓骚瀤鰋倔幂37⿸玱楙ggv钸|#鹓4:嫤Yx鼷>xp鰱Q淋呁檤c?s耩趝箦臠Ⅲ斐锘{]^ 霫崍r}硭w_眶叆vkYU睫鞚:~瞟?8硉屨#譥(W椘yP棆前TE贝锤vY +庄蓰膅"蒃FlF 痖Fzy鹋 愤_餅翽泐絎<鮖*;p竓泝?暲S傌灠蝂ハ湼z阊 G徍q=睿G0釱X(喊|j0 禩顣p2"2蘛LEF  +)(鼭M轳A=薔D竂湅謾貉殁憣┥蛮=熄~/铛8"娢t茝埡^ 诪9u+鶮WR弿肞I譳h鳃觑佊*饏|y娦樵$\偸0贜n褗 E5╀抵揌萞M.qt*P)L鹕f,ox媚p卤阷鰤Gc馧&訊$叅﹀y6AbOEX~叧;餠搩'0引>I2柾砛伬蠯扨4 +C0梾丐I{v&3?$cG +2躹q:;,逃(毀H襡Y右{规, 骎谦76彏\莼8Q6佀.囐譧\瞆鳇~ %棒荴 灤HRE殙Ia +戝)斦D!(塛9拄KAa毉\緐鹖憱/6胟Aq棦\睮:О孡喨80斆睧E韹\匑tG-8倔耴臜3僅a\ㄉ鹨 *!2 ,鄦T5y惒YU 9r.M閸諪/+痘$%bf伍鎟}x3珺恄.)簭c祎J- $"'220E昚慁l致0'(LB=茹c 瓢偆8約",P W "訶q鬎9緿`&濽q膁(P&陯&$秦矞绻溔y ゛:$片擹橠K4&遣>|]"挝! 襴鎑2簚銏濶(`2Y>kh$蛃琌E:皫样ld.晫 nD +谻 +=пZ輊礝濴A*湙 掉胏癟"N)#6E*(nQ*貉u輣P隖;3i颧杼"HHy挥Z.桮栒 =洝鉸$濅狟Eh暵ǚtv> +\憤. i%Fu璪X壢疛Z>R?戤譇I>両弑悏p規D↙奊2鍱珦亾N襀毰8-e 奶櫟^k拐歳屾X%巙AB/▊e敁'3@Yh&谲l"灁臇a wb亅6.槕T湭u俙┵躹s釢肨掋8Wr躔筙貈捖聋cr&M"橳 1 下 +葮湲wd)$妉Vyh9夹簏金 nヂm阔td>昅骮s8甡UQ朧H&X晰+W瀌(;#2 K壀罓pDN'櫲\喣禥襂朌EyJfHG馮,A!8"Q_ 烻情lZ5:鵋4盄&`p"眕2廝XVhW棆燵*+弫葎d桰*HZFG控9?穭gurDZ娢'廍`]4Q2$!H%豑滸(D曎<峐HJ_暬s髾'c'ND`4:萶3茧罪腹F<羋AZ,W渑1蘓r.貤緱F誻縦nv&仸9U餖=镥蕷h菁v麒&侷溽C;KDq4L欴 塉/ 嫻綅f侩+冥戕>={g瑛h8l9 瘣驧-G异墔鳥扝c6/"mP蓨L螨峨X糾J甤"Wt]踥<}鎹/緋'Ou毰菳22!)十膞"頚豃<樻梉j掌妩Z駦g選鲨;熀龥}桤縷珞nq,發c>幐 +k讄{圆+絙 U蟄x9撎ⅸ+藡t9:谍茮o鰡 'RI.`n鴬讔!藮肹s'fx/;N縑m攔$!2毱A6n][殞]=:讵T蝑炒Ⅷ傕價銆桺 ^U護梛氘0 鄣涚V蛀卆I=^)军<畛捡謰灲wfg9t肦d6A掣璊丷28薓c4穱螎碥j}f驥o翛_暇鼞彲瀆檛霒≒峠榣氥YOb\:儊﹏樖b辧9聑>礣枏穱u果马;忽峅?鲑~睽娠诀?蝓?窬k&5麗姤脖垚峎%t瓈瘲R-粑秠|碇櫴碛'.鱛9x螬=7+酾o?蟎}鯞盿檟"CxZh匒p OO羰埢&絭迭潍;萧#,~禑缟'{奎蜜焴阗窡踶舾[蟵4 +*x奤s张捀?0跊U|籈MJ酤=Ё摭泠;唼/貂/~=={檈C眡6Ib2?煔91嚻垟e串c匿椽l鳚奖}y威菿g>蜈7=惑|鈨7蓓蹰嘱匰鐬5&橨V愷慘^]謃寡{䌷阙颤茲鱿亏氏~鹌g^荠翶+魁岖鷚_銮_忽O縷跸縬髌畻悴x2琁萣 +儝2,╉踯冱w?s錱?s髶蠌傀侕~橼?觏絪釤~唿瘙g無=q砇髮z共e2:癖&銩瘀遠緑锄G熁锦磉奎钣7窥隷}畹[漮}滠/~疴'^9Sq碩$ 6Vdt"潶!錱c漷ㄈV嵐稺x鬞弪猽{莭躅鑿喙w釢}鳙瀼!0癋-僛/捛=鏅=齭O/~鱟W倔彼?惴魁轱~鲅}橼_琬燏o焈疶繟r奼 +M;,秇搟5戽攜r[妩?摨?蟐欺G鰠kg稞骺奎#傀䲟魁藿_褍7lt0 I'2C娰6递"9鉩w鬅y荐n7鑟鳅焲狎}~唼痖}铎O9o^9鼬故犫#I习B,5O忼優觉錡?}po睨钋o{稆鉕]荗沁~/搡輜鬓箆 XHD2I 篙鍏崻4q2c3~o檥闇麨s铥钤遹m沱9魍穡驆渠盹军?y貅?z齙 М淼6WΦ鷺栗婋ws4飞G椯?;譶蹚}Э|磙奎鯿盔鰞飣怍齏o雡均R塍O柉-I**+奇S硰,眡丱7坡沱蝛7焴~?窡简?|榀趄暇z雊_鉴']糟礕7触<]T砂湪`翊仵iwp0)甒疙~w咠蘳鼔s??厽珙蝌唿舻_絖|耢唿嘌嬁c啁冷鉾僕5鸈损瞂8蠑襞娸麒季?wたz窿疠 +唐_/O;w鲺[?~䲢?嘜鐡7^{闔$9驃Z旇妱L譲痎)n7eKg捀k4]棧6=2/跄嗻乕暦锏掘谖魁頲糅髅鼽鱛撅_3?鉥豚/o/錧X営.冖XT樣嬣J.d,蚕.减桫针蜹>鋀遺饟>7眶怅澻萑4 р +-眲J&2涘1N烈揨蔘g+k諎K徘鰆锝趡<冰涀'謲眖m忪4syIA悬獦楖偐T,亠-Gk翧腔盳镜炀齢沷n7阆_/蔸+k_yac鳐]愕硶釸i%4逛豤嗱#"熒鯩颞%^/灦&?}岿 _}栈;簅H*愰 铍喰w抾5om曨鞼^钾鷥WO}鞢>蜢琼醵%qX6橦D3賹T 平惟7謞摔櫯谰;qs較5^勘>ゥ荖諢:奂扳M獸类鸫+D])倯] +z緸Sq耬檰5箾O鮯6忣.疷6r柋dH"Mb漀s嗓妊E讘DK,獠躵fR康?s杩筲树?u;?~梃;镗嫑熅呖積釐棒13C攅酃鄷4嘵iw朱'v蒿紆/7'n践`冁奕o%矊潜亰o*潑7M鄢さ娀R0秺鼭嵚城K7譳楋JIVMFd1> 燔 (@覑N 佻娽e胔^7鸀[峪材5彪>媯,埵6Rx\ JS*1M跈$坢毴0:掾廖馐繯麟s逖諘议Ε颲嶍娸5,葌,栒畞34csI*NlUP暗"袗頼~包瘰禴2:m晉^芚G逋艜<JA5瀯 1,傩y艝魽污崪苋I伷9猦:)U廌p堤騘<"YE鎟垛V黬Xb迟既穄Ns4FR 歠罥e觸巨捊x歋s藺俎] n碇'顛褪磔羇看Z6枫:X +潩崷S豳鯤敇橫佭d豭勾読6#嶅<夓:|C% +v~Tz惚泖=}跷哑^稶叇h滄荾 w)賢'今祅J5开q鲛觐c窡鋚 諯$5_+正Vг8嵮8儳匾@旹r⿺旿8朣"迁4鋤*撩踎)蒆jpT帶=撘 慺懁1|best^ ,ビ*剞T偅1嫥莑雑嘐漊囌6懭奯v[莂*K鑹耙x荺.疲旎寺墂/撙1蚒s灋g1嶢(儜}Y镶挩莥嫨 聦儖^發;Ki鵟綜2面L玏kk,鏟*x3柲珂3眲 獇薣5漞1URなt寮jwci潬肅$]萪M9襆艍官d*.袆/Km柇M撏毑XYOH馾仃垽雨腹緄4駻_ +穦聟塺KQ蹥讯sC隧)r^贞8曄娰Y&█ 紅Z!p冦\]*JQ譡掔l沉捥),琝孎3$塩枽嵻翓 vn櫃0櫍餈b湁掫x讧幨R6*繩唊$质灭班9黱"稵礩mr;漲3 臠蠠呎X凪'az=E琵T贎[:捲J&鋒刧榸絬苧И緢S匟#h|犓y餳荚虝6 徒V貞v韆穛昬r嫞sbX杰r躨靖S齢覙櫑g缟L茒G笹Y樓U}Xh)7,w;{2汳)墭羧#轾y俠J喗-g%漸釯}~!|,%y.糑潫挺,E卅谠膢l!泭a4窷羠鹑RZC?冩yW)l裝E o廣 .)u+蓏C3;;璣N鉰U9眑鏕$_F% 9/遺麮觜┕(汢'都験賊」倸纱HRo後TI1,oQ踊瞈Ke,隊劽 + 脻U侦憈>鏜戥S睷7.'誩kT顬7O{錷藳HJm瞺G謟f╢潛jFn"h]偒Q|亡γ闀S鐬 冱B孖e4Nl#咷x\3膂鱵m@癕氾哨J*淬g恜O`"泞í E2l3潝2)IS垅 1(5O昜┫J=斕g1嚄 WFQS腏&u)pr撲褦972l惿娧hXH#|Q顁BC$]b(稭gO(阛d檅Yd&蓴▍y0OtVe-礹々;cY 積鈊巂*睌慏尒*Zn-99&x.珝,jc8膥> 淚獦挖Ks譡qs( {彟MN領谪2,O淗G═溗裔鵢;D柜h崱\;穌z珰滑8W煗!yu慦:实/uY"n~-瑖矛E!躭酬椧M嬌I筋鴉w逖卩"#债慬7糓J鑐L孢蜯箦-覽zIgM昪'J訤[茍.@1疑"酣彐a: +J[乓茩嬒Hf桿鄣徨諆師8zx》t]迓隐駜 al爀鳾ブ罐鬡gr吃:$楡P戟9.妥煉=枍诘3梍R岊\擩c巁辦 畻涀Xq,頲t^8A誋貐Yk>蚔{"[S^棣廴-銗5翵h=挴垸-Q瘡2槸ZKAy7X-歩赎仁-脠P蘂1蟨 #Q.1(T9謑壊pU⿲6s"v釪怃澠 +1秗+傑I膭TR栧!寋 +媑抷嬯ㄑ>WZ迾怏傏t ++8坖C6劜1葪谆鉺Fn1塰舱' +N睎&K(优杵钺O6Jd7{盂{鏮o=@"庣to颲嗶H.$右澋r鰾ypQuac店:U{ 閉I)(_垠穗琝q蜚蠓_=u鯔奘臨醥&a 媰荗缹蓏谎啃?_Vs[髪k[嘜只i+_苴;箐觐蓠鷿K/櫫:郍:糪(団晶夫D緔LRe傱U!埤龚怘]喌iy;~鶢<纈S:A砝)?魱o->(穾,o 剸f聲鯑b-騻b%戰皼洓ll遞筨*珳耻f`M瞁iL[椭珼*J3圤蠻;伢kg{=J宓+谉藙朂竻 %叾蠟胡~Q钶}魰/}嶖迀TJdl贇t7锂瀩蟕1+豀e璻cB#W珂i)!$餵恐箶+'鈠6c菾b*#伝姊R,m↑~mp響撊庒Vu3`# +㎜.,砅?O蕶PHT狣伱闌&毘輁=|氉j^a┮9滎幭隱;蒚琻wzV-l洬v蔹Nsp9碱0€l4枙Z 懙螆36Z9X>弴{廤Lo^閗筓桓≠巾g舯?璇溛P9N]//沶遫 嶩茓&xFㄐ|cr碶蚉綿.N鞛}="機H濤ル傊#笂戡'譻=諝_yサ(朆<*鸳v0A2蓇tk;}硹灆彶墧"J舯3/粫蟋<鄥 稞|硈怉`磐兦_x哏^x鬂剿/棹君岑:BLB壊戂.w畮78拣jgt视祴垫f4蒭p桽GA鲩W&w7o+a〖z璼:\D腝瞽I+-6簵V凤`D2P磈O{nje犢帋Qkt+靫E0+溡g&A铛柈莨1櫜,侬n椲G啷D\蜴-纒 鋤+8P飑娈衎梔垠睒<遁}骰"抎妌~瘩噔6)'掾蛩i腏兒W'('<c鶮/搡柔錡L珄轼贬4(.x叺勿蘞ziq鮦背/k峟g=綡q裩KV趷X%sl7挲cV獊Z擊舑鏙wp鸄czM4:7>}=览质3蹏O芗'逓n蓥笏K鱼耱枦譶栛鏩僺;噺_庚J┑2殰佘筼溰﹀@夞蚶娠圸甙:迎藠軨H喏 )猟O囯弉潁0階鉷悃\熫煍录,鏆古起t +鬨嘦孩>┐泧;丵,D-i症b礑{(贈f~+镧+8v唱穠 '猠疫竈觎梉螜jNy@廭i+*Os-褾癵y嶠y'繏湿葆櫻-觃s5凫k螑泤&燴愲,_>u缌嫙8倔陉徙澤u菬 +B褚'焳槌)牧榧_\琞锆憊圹 "球呸牾趺gWv熿/?:賬VPG憳 usr艒\y.n娭"垷R雝﹒<7/燲Pqbg>/D┕肒0蟕,s淛)'g _Eニ啫k0|+櫛伿蝆|筙綂S #椭 M冣穓萦藪T佥窹m攃樈P钯g/<邿^q婼E/6n&A19=7瑄W钭/W{菂茷f絷=诹J箋\铻腰eNi讻7彏s双雡菞冨+Wo=縸鎞憝崼+沇$礠ml_葵阱埏?賕蹞K箎髾k7_( a牤庢ブ彀bY灧傟 +N迤乚豵+嚌鍥楊}p3A~舐 f踥祀.oL砺~﹗被tK6嚜V2x簇a錇狑9鞭h濐->{km#鮁}劀!屔[㩳u~H洔_猳徒鲨BP矍*翑3吰>Bx⑥.稄陭W朊悯'媁蛙姢4>x眚e 鈯`:呞,亗迮蛑逎潈;吺韣a笛俟|3弮_0手s蟲鮹蒠掛%惎7n叫h"YU誟硌笷((瓸 芌"隕bu0聺l罂w铢輘//n迺N{愕k 捚 C^镩謆ザUm領z媐r炞{嵨z【a鏦恆z[s!$Aj>靃幄專{揬i7id睡,a樛埙<{蟮\u/唶仸5wwol熀 L :9糫h譌穪C孝i禂焅柜\7;3彄l瑗铱郩v! 耪毗⿵}鴿W喵阤<+鰸漫炅城弤t.]z鹕;嵶W8 $鬸逖将飪UCq'(刻蒛(")解Cv:s馎焙侗y王Β瘉鵇諰冞T{睨E胇4湣镺99Y竞緖/_伲拱qR焦/.嘲j羦 磌8*lB倍C1鍑2T萃B隦緌擄O幎限暛娹L#氦5K牪撍ou7跭9 亢aVR↖qU癷腹觀偡 J '煳赓武|”cxS领鈢獏趎]1z/U謐\q9慟y!$gIR燵=+7繸n3b膠uUs"")f5哓-]\b瞮/橴册Vx-绽:厖隶ngt?=蹧 b嶇k _1Ay笤侑Ac噶*'d"q|4b x闽G跗Z靠s|ru9媦a{;"泲`運ue泮瘟#D!W>] 鏛o +謎1,x空硿歰4虹w霞gi鼺g﹕驰埤饑8]箠PU縹X\,魑5Fa *烤|?S/ *xO臵*G嵙錜罄鰱L铎鉝n狡J R偗 昀虱J鷺廒8Y淑'藳眾5敧&3N"⿱r窖輄呖M9AíZ7l軾奂勿鮴R婦yC飉n葆,増④,莠4蜨#猑n蛄}鍪乍ff)碊睗Bq疶诘`T湃嗃3`厗爮2籜;69(O钒,$W%*嫷龝壋p=⒅c錐惫 lK蠥X戥}(jM)'X7殻珦'蝆捣|g颌Z 釘RPg +-偐侅坆磽蠛喑扽T(LH +编+,C睏┝K澹s彥f +峒P5龇>厔-鰥銋:埛Bm=WZAp鏰aF荷$(u/.嶯9掴B劅壌I;7(嘽-胣W赱拽;穵铜,f侸循衩H彘戚澇/┕璗6圖e達驃垈桹妋欈軄ˋ1k磡 $" 危 \kt棲腕4@饌_氧甬倕`V6V;军躳蛕=瑆萧.{-*V=6;(n玍.lA$.镘/6悉?Wr頿磡瀊 [棈☆畆R/l羟梼:A;[W'庻矆営惧O;w嘱恡%8┐A揈($j6k%R馂般昳w媴!C睒揵8摰1>篅!iU`X莞P* 9誮9╇6E㎏懃叞~W*榔墑塸吵庡]菸"垵L_罳7!M吺$i漟+狘訣褱憂OT;Tご8 A}&PN ( m{Fs\彠弦斾J9N韮Ct 沗79H+俆*k魩镯澖煰o1r=:;俟e6<弥傗伂 g*=舎寮駊*偣駝hy衰謦zNX⿱Qew櫚OS肨wdmv&k穥K` #1炲沗綳鞭_璇軈簸# 7'*傎訦莀oO&椇記1J桌贎L.埝 +P刪8恭欿{欯;モ犸憚B瞮Fh叔wiY乗翂俷Lx彼K]肶7,母櫃癷W硈繧q0虛艝拕 谑r}5峢毜Xn澤65c夅:憳43兾/悞X潧胔&鯖蟶vi薣蘩2b鄕 !吪F`t櫖羶!麳 騽跗虷T殭%~J泳,J慹_斔慀砂镚I蘑灎I贠$峵3"齾y啞\唙bQ|a徧 94<瘖銥瑤燔'2槜乌溫"賠鱻$u1(戋弟$懷g绋l制I鹚E+婋掁/"3I 4Y瓋痩喯h瀀\繊Pe葲$Z0葾5纓'W陷z3v5 T#)3x褂^紅逯[o|ǹ ,朡mgQ1$S靿陳W普走?t萰 5x~!*%液殐KN拔说f W\外9`6,j执:颳N罝iZe玷窳陁+1JG揣屢崔p錔絵奻螽;h.灂魬n疜茢昛5vFK橉d_)_)嘱:N桝 /DX*iJ;檇怜±奷肾諼jCA$RJ'4Gq =+4W. 隣.垹<檬噸X覇3:Ax,蘡睺駜都*樳!E孷ゲ﹚@Lf2&P(wY畣b`塞 敠w9竟袄Cp侟牴帮F8峝mV)劦䴓d徬き -&/鄷陉谊eH'N怵衂Y& 晲嗝O濴'r:et~n}T呬K-Z鑰D巐N流臨/礬o7惔I: ⺈终盁W4唃蹤孠裡+X导版3/觏-+啫懺A┸([K邦奟vU珱蘪5榀茇8| +璜=,萂8:x丨d柒ヅZ玮吾鉭.=坎鳂_貴埠熾镬擤址襓5lK桾0"灜褼.#ё炵6]兰Y,&DK嘘似A梒a +併*N罫o捁3!Q內/撕ナ唂弍*锐蒂9"6硤蚰=I晷lX峆:(Dcg(P斒:馥[d,琰5樢w=拪臮橓>SS垱F5岳(Y瞛:ヽX怚垧g4l缌刌u5c1泆銘$$,_/V峡rxK巯氜z<)覾Q$7mK驳Zl\闙 !妌5)yq!阃GU[uZ俰阈|E1FC2曧d啅&p葲 >亽x$0}J G2苘b鐂B盭輏広糜蓠盵\侅ORE?O 媵t肷N祑  鑴盃牑-隒a俊;嵵昻插.%3"糀T*ひ校-佭煙'bQ:R嬦;墿纱巂轔(腸T:艃-暼Km0D n丷t)NU}Ri^匇眈皪<>.&(&#啔W,傄0飕}鹜O蒖!cq9懚y  侔 E"AVO*窀W崅0揁D裻;A鈶T滑訥壼諳嬔"癨駪揌$*螉,{贅蜧攚?個f阖I<.8頗3Ю荷Th 歨莫摏0`iIH濟VN1KVZ5r)皪(譊祫鄗,l熐裻9l#7h排-z洅1B眧X嘒陿箷狷潵'禳,='朼9蘊# ^d長蔹并u,{$b酟% T,t琡Oq g2≠+剾= 琈&+嶂霯&簚(g協V娔 + ( 觝~匴喆秀渑x<1G湝莄 瀍K()c蚘嬖E*F揵2 曺*/皀M揭A.豘^跨遄A颕\/觳 +蓞i8奁怃Θ.ヒ温揓)墹拣p[2+t(Y藲?U珂圖B纳Fz褎斄r`u羆授匚瓋漖k萩x灓 fy94晉猉饤蕘錘母皕s湉,袘. 筎FJ, +鹝Xf槷鵼`&8:A0X*び痔 r駾"l杒$觙,&'@N$樓哀 P湜cXh%黶v幭">E譧-骀貄0|媾弞搌 翡IY腍 + 瀱 pPOg碔2G.'!H5尠a*H拆朘X撩Bq;潟Si 肔 +こ&A鎀Tv释綘!∕倖)9ST '4r鹄)?靁"枦禳戝j兔/鎼tIz缓%蔆x仐O筜,汻d浔"+C軽з.饹n/k鎗*腧\b*嬫瞂炩le湲涼奿-嵏9潪a2Z钃|毓^符糡 囹(Qj仡2v?0釯餉50 mHv8 )嗙凥T翂瞐N!頏e陪2婛0-8UFqHp聕D 鑊P>k$錧跟芷蓿SG"林拡-N驺!颕q4%s鈊vf嗕*p@(堍NVLmdh*.剷鷪X豵O槢,提*梂na鵉"i烫囗>)皒s骪2.S福玼鴦w?抷捝X缞 簏 oHZ跿6d碣9,M*瓔 笵BOУ魖臐煑~14zY'6觝.5g"蘁B庳簼[曅乨妵絗挻 y#圹%蚑岾'g奄y*2P 硜`jXY堲(瓼衊o+ _塯4鴓0>阥,哰L籥箵= ]K导U傽 +霟薓湖:翓&\"槮癑鍬(焜.|6怗 梽AⅣhδ0葔9牂b貜,i曈撼)*C脷T覔孺}O灣r牒f糍B敔*8蟺x'靫襾P岲骞y*\o慸3sx4&篁P矨<*乇厙3_=cA骲橡W虢餱鑈g薶躽舻曱 帑P.綞皍$(曇)蕌B刜埌; 匎鲛7,{omU抋捋疝冝搃Hf&覹栯草]=恙{fzl锾4+峷G悹 @磤"z鼳绎D颒鯝oXL2馄=琨緹90>艠EZT2<绑F杛$虯`4遠烆潀%[艂犓5E1硇W汦[慂I0X*Y⑿蔫0珮 +Co=V:颫n玌彙c酨年|鈞跦B I:呫@8?uI讴蘞(6滋)興d +R]D{`呭M沽Kd3|霧8?2:吣姃:(頌|6P3蹮iZ右k炗箇<7螪.辩磺馧固B漴|垹L柉,\,蚯8=巙4幕嵽u诤8P審@#祒)1湣壩p庘|O /{xUk_偣Pt怰锲 V葆 訚jV邏Ve&~) +\鋣c唓í^環x_讻髑蟡陀u;鎆otP\褾鄗啌'?/箢銦1B*蒑9荹d怲腩③N霸,餧\Β*i讈Fq釟a遜鋽蛛,÷r0噽F紨蒍 湑 {甜檔鰅.`x錚7喌D+鶫攼`嬡旬賂s:溈._⒁足J♀x1R ū靮6>甊Q 渐悗窐杀_衵坑>r/**嵬Δd氄蛰h喏枩S碔鶩禹穬喕惔Y蚻僬; 1Z~2^~"╉bI¬EmKJ伟攦 僮 D9蒈#癭?d#c夹銮a2椩荞嚌羗謝6N黿$m@e蝃軸1Oj 鴝碘暿酶嗈+軀纻=n;sVh暘Pnn筨Bn胀~脛琙欥\:氘瑎澃XTi抒笖f葒橼8 7 +抅 %砅 +$e靫摷^^U*樒弘巈J-V<侦9崧 队鴤朘ki~@>梌k袛肐U熻皮JR让冡?X嘛Y/h$稵佨蔐g迤莢発篬'5憪糥饾a懴鴷鋵銄Q舥懣3zHE鴔X9(凵焱4?櫍▁mW弛N8/捩7賃`枂虪LbXQF膹寅#Y#郷,藛亠煼7n赶-I7雵;勂-尟粨棐6b鴼ù!驰角q簜鹈o齪豚鋴7縞 VJ1rC匾 S宎藓j鬾語,mA}dP#x;踏屙 b蟱GUm艴巾肳劫3葙咈a雔g竛滍髠F蹞瓀碀鞒韽D祴4爄▼tU+>酥紁.)5 +WT蒅>-檤L焁*檿j鑪[3F虌e5趥怡d賘S阕厪b絩dk9d攇晭Y)k肸#- 仄v鳘調挾 鬽UI煄Ky"$磙邋朝嚥9幞6'浼袌艺Wn貉^鷍k+A唝 +endstream endobj 21 0 obj <>stream ++鶯勥)穃艤贷韮//~?_e抌!谱x罋跂崙'鯆磓f{ `#梖{Ax┒⺶}+敵n襦cよno7Zべ=6JN诮0趤!ばvY際骹7匣F钍UL襖[坾w戝绨N鸽唟幏+Y"1N裗曭伬貊y愳琽eu郯 噱索鸣$!噟喟 񞶕v砶7匍蚽棁.堪齗5B觢]'/4kK悋=5m將-趣瓘(!;悱徫燒*1=0弟惧u蝣緱:YAY「8>@>=檱閚@Y鲕2дjP, 夿億時&肋 禠k伟)衖銟}b パ>蟦h4c饌Wo煸6D郡4)>XY-?訙A醹M,笑ㄔ篥嗖iX硞実b畑櫦\v E鍿坳悰Z +鳔{_= 儷-塞呸郜q爷 +亩眄1绹bCd偄碯~?浩軚 配.`K眀衸$辇(縣票钗U學h甧|径m o粟邾*閟P2漄:K[篥#蹪㈱:A怘聏pv軕auX1洧/緗讆v勳- 姮圊M趁憉 \鏶 -梐磚Xr帍U絥笴^蕘i!YG匢湷\ +4湧,耫O寅p[Np+訂囡g停纥与5讉2d:磌+QS7:N!〣e l{.+佰-Al肫杗n{甩沚時Lk\(IvgO鉝蓠觀l赐M3螗[#Vj ((=魽P$ V諐隋^|炷.hT2`&U踔j|X鍜C33渚?剟8>)U鳪藲晦傑伌q珁*A姹>-焥R U4;瑛T7z2V榇P) +斱幰么u=A瓝?p椕楂綃ok+ 矎E瑧ㄉu睯闦薇^佝瀗A`d5貇V88&\ATC哢 饃鑠Xr鋁%_o?L轌祡乴s1Q魹f8)疨&+dArh鸎Uood层"=岳鵂C(皎v:揃6陰Y槔傕TsRk_联@8愈C鑽(蓥帽('7鋈簞卡0I§UPc#F*寷主v庌淿睫宽暙/[ Qn姥$镼璹7/僤0綼晾fpz黪p窆l擕V\\(*,"dkˉ` 禲硫 据絼扣,Ze*a勚f貳h爈?$籗蝍9┢堓-z銞臀)鼌 $喋兂/痎⺗^琍 +%G汙Wb知侀蘝~藫ouwY,{アm俪N*齵埐疫{颢勸寖y0籎' +姳納繜[-鈈N哢侇Zh +;蹲c8疪┤d闠+碩儲韽?,渴!w!$1鬣a齿 罥j*r?.Z7^xR*C|`{"k]KF柯E曱2踖礨褼睎6z蟨J:1趞 +]jx[嶠用藷掘襝 +oQ5礯箋)銷敐]晋汩雩 \3j折譤{X2樦$&崢S氕圂6"2 0挽IZ摋裣枻d掸閉b叒.'繭 験>?珨+姽e峕oJ6; =i _在徖扙$B鵶($弱RQ廓锫龝珢Oq栵A嫤eoo燒 n\匚O1'I8E眼劁e}fyd駞霽hwsS纬潒 V慢pS.U/$23,儇Pa6簫;嘇 飮0菹泮e_W驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚筴驱@钰q?惢v洚罂#钱麸锐弔}纣7|飢窳黥2柯Oo>g|o? +嚐}蝥禀_娉o鶛u螈鲡i箝3g~栨4j>鳠誣4歽&斛-'颻?痒?{ 桰&-?簓y{xy蹞撳臇_j;K;芤!们俁擳硽)f+%颓觜 79滤1y$N冸譕篥焓鎬b砧&!^馚 蕢7U,紬()6」r塼蒢G7糙鋘浸(NOqI欜*聪虮,mwJ>蛒9察葠綥焁姘<缒L }暘[(j-甩,嘒諟J闔R%已(y! M*j忓2I钚lB>T[9酒 门9v恼蔜癥责(暛JI巩"槓亸J%u 柅& 椥L*J]Ql醠U +W*z忓覴YラY*椝蔃旡:6瑱e''ys嘺m^l橏U96 c"(*揟〡觶a疙{s佅}VL糥迎檃蟄*e醽漪倉觅杣d蒊z+ 歷E规E踶纭煉1b敍?錅s芹mt^堑'6fCz璆 襩@!芀#Vh癇紹yゲ嵥H{%KIuQ8璾=哳潂"+問7砩毪鮔9AD蜰縘罱缭F 渀?y_>W坦l8盇3r襂抮 %漛"褽 %D莁鵏B码= .59迸 +-^願Z泃"U鷺Cd 瀱襩凞-W $柎峣漂V] +Y&B!巨獫镇鉨Q+訨.桇蛡 b皞躓豕 9+粟猅=屹CㄉJ! p餫陣{紨o<犫8K踆燲荣*.Me哓銴EYEㄚP雲肃\1珨峔琗(:aX)K禇X((aJ:献Ⅷ4I/怿L7契隈梍崤G>ㄚi9敢 4tGZTh梶7嶉洼p醲S.7弾>螈E 奤S栛垫UR$+MIN猆k葩i勧#禿}{Yr<z蓼9饕-抨(3o80賍砑 搈A蕬朅|洄'9e箚╰9戜埴#业 +F膮(@QF泶eed撳 (%m[r濿歛r<羸r舙霒2舎寡聣番x%[(L4g跷)Xr/軒'柨浴Al^H貖((WcX X榖9驎∶J*鮮 ◆:r潻a 慟泞^*宽錨, +r莚v4cK;r淽欰VtY覌┝罤悋痘浾IZg(柺/悶f惨:椊nu沴lH璲珍筙&S敱e嶶礽mB§*1PZ M訹<赽営2:‘隒P宗`菁譑虞&HWq緍摜bLo頓埒*k=Qn74/Qf檙x綼ZKI!犂姻|↑ +PLM咋榡$m0凡襐炊a Lw@X;w搣Q肽鵴旐弈嬫7瑄烄|訜酒F&3JR萹窙漑D邱禡k,-喇R臚p\ $J 睷_惼姴k +dIrd;e/枬b[$=NH纀捯E接Ttⅹ$荍:^揨雈GV╈V>2崃陉捨栥*W挵JBk1耹I3#馬[宴#0MU;愗4 8J亹"h斚77認-椡 塧旰1伔R彟3U%* f厭妺/W 鱍4r户埯az+踗A) `譮A(dYjtZ柣鋾^P,o#僳邋'扚喲aY[bI韏致 § b +rL^qBk悶轶嗴牳\o5彙v +5)r 窚`Q蠌~胥> 湝$*JOj嵥V鞅f (pf6臑nn;俩銦X>&坲Ck涣V曂@揳&mwe观撼昬千g_ 'G蒕橱5竚瀧駐飤?嬟%趀Ig> +蚶剁7k曗乗攗9鬙嫍殯E綛牓,)跱┾St蝦M荵X蝡lq(Ι[麕澍麣9_鳐乣Ch淛E'莴蕑晇%0嬟Gy瓼QE乗鬔S E砛駚揌-0 ))6h皉侃VC咺r碭(k%蔲Ik9郦帰鑒赒褣勌怃P^県E赚b忕襜Q坢l*-<熴扢倴鼻倧B鑀9v沁諏欏l+]g祙7啭甘汯J叽&3莐Mg懄Gc7Xp轾琱}枥8?oto靈g?鵸妱ЧXg8 (v *0醨|枢箘4a秅%B%RWRU诗抪xT*纒`癥o悶膳瞾<狲7I-#U塨梐jfQ*W4hQ K9训仸鯩c拾90I眃W鸰モ 鞘e曵羘厒0q╀ln1M!扖[4Y%u恌$4RKU{刑8'螇隚jAt暋鐏Ke嫧鞑Q(鐷'B%惴H咟戝枭醴! 飸c8-*埖j艁f I莖>.`う4y槚+: 悢$知丫韼遺廉Φm5祒6淾婮C59褒i滎椿桸(U\菨X/蚇馒,.P砠|"肴稨W;睨批P悴襨w煆o鐊飃蘹醚靍T;▲㎏?蔔叉摷ue:[$藱慆╨署搉e鯂泫护yAqmZKn蒬 軕l;q攂kX#葉An瀑蓆雧{蒦了2┝T<I痠c垼X250縃 D椅聆5}耇Q輐洎鷪8O4 Tc壇茠新@鈆纉舉佻T 8FD] 閸CP;.vJH皧7夤:r 鋕>*U慟2脖癌蠰:(+&&鹈* 赏莫 +擈wg② )鐜9N離+hoQf  螉蒢Av臶o<4%1+4藅 -柝(诔齓卶$欃s鼌釋 o&鑮^mGl麚╲虊#oW~r靹粛缬'b 櫪饓,借詐鱁}&+〤(砗遧嬦Ro晢榠{iト咐5 %怴穄Y臌羘^繝鶆鍮葉4%喞ж垹鉿嘐dhom簱*腛A忈 *蓕94XoI钄I摓川逋 歅庬@!摖3ぅ<,垊腦嚣P*唙B抙蔦2K雛\副"慦譧Y餞捅sM6i 膵DRP啸H3锥椂硡鑰C壩_鱢腛奅棈 C \&d鑼ek7\6Pg$mQ+.d*篡i_长~鴢农D踞B-{=^鹕艛灵~∪?T*饊5啀悳悜PG暥圄!猰k: 蹪"蠔粣孨69V岛e鱻Wq碓 (.4+誎U 'I~l劂 +懔.駌 麳徉 g}f绂蜂鋃 k异跍e蜎武:閭嫾鈺F */箃 櫍鮥ベq愳羨G(L.D G窴脷$岾7>擨褾挝vgV蔼r駀Y荗4}昝\)t& 寂&  B盠( 9Gi)泼"[w濭I謵3o俛 D稾6 +M暿呂r罿b仙庳&W.珢y!TX粕櫢=膈慣TET昍叵u秳@*I崤郌懛k膵胜弎喙沲見Q),損/t=掺4'嫥気((%xO"#逗缀5褴K擣指x,7 硰詒糦穟|z鯈LK肽D藃/寧椈叽G/ィ儼v菻排`.2>躪鰹磐<俟}鶕さ麪 櫞7G1谖幀峘鐊桤b褑f?馵综侻&榕鎎暝76)` +獧靳鲔7鳚晌*鏻l覜浖$7H縋; ,攭やIH!.斯A軒~恍結變庙樞`"凱陑Ek?剜768鴗鹑歵陠%龕2BTk<19p[@HT:鋿飵亿V2姿b0x !⿸CW=Ej孋 +I巩鱝い6 耐Ы蕙6]"5﹗袮#9ulRK 桲]鋮爑8蕛揙+孶.脌67膳W 桭^? +┤K极!抢Y困8惨矟)郚3菒Ie恑.醎\丳φ偒晙G喨)L拲$LoT愮申 +<^ K諯W遃9W栯9T6pLRZ俆ご>簓齭?]U蚎;9竺輟鳌f彨k6总a塹経k J泝枤9毾n~驄`簎嶗U鍘Lcえ.茑啮v撴cN聨9鼮醹 m;鏰哅": 绯B郸ㄔ菨砡?c臽s(啥伌圦趒!章x 提厛銃^HA +83[?5+镰{R1掘| ↖艺胀&嬬鄶蚆禱枒 桞"F8@讈O6衅ア\(HPt9 儱fv奤 溰(萡惒《 点X0\Jb炂[4v66X +':箚:蚸氀- V*'偩u:;X嘍$檭 nx8蠟?鼱\啬蒩[X萣Q斠裰鵀c3`&偼 泻轋AFE&缐9躂窪腄R詋慜趧rC顖辜!4{3XH騌=寃馄懍良5'㎝UoG馬5{E +t蒑y2姴琅貉<泓溰惖腊T派~赣\7nz(h*xКe薢nTR毜猡~潌!腢晀/\!姝R呟J塗γ +崉6 ,緤肝(o炴蹴f{" +荁(藎∪釤 +荵i芁厌7He帍*擜 !Q郁9.慬N& +猉$:I(郯噉触#产膠諍V.+⑾砯昇!eD梻!枑傗B8l*E诸}氈肕︽;(硪UW涑,貯2PTL9穑MS艕鸼9苨6 *迼aH{憥*q焕Ir譌騒F焫騊駹h_抺H@狭峼(=x銪Q'&c}9鷋cS.!湀 +╛&J4 1嫅&罁,z攼Z锳 "P-waC奅H,g ﹗欿X绷餸^&巽VU襷芒╩(`9  Rl苝56轙鋝P湳m屿,杀牰`帷誩8h刮K5'z7_搁)啡寮:CZ 摹趏uo漙洟碋 lA鵦\7SH锄V,櫮僕m 璲u5祮 翍5壆fH1駼""?8 8VA顐吷]E矄阅堉志瘷sA霩b烺UL2笽=)6啚d厗DtHA@AアJh>懥 粧傑kPlC拠6b9煠莦1饽w囼斱MA瀺x埰睞U@I#巓r\N覲汬騐 鄧痉碲3@] *e殷鶅JQ%詬MYJ鬀羘心k6%爃轨曀胳 塛瞆d!7R^j擑^灹lnnB伴捌>鍝:-# ,m辁/糚栛U矓韦2酏0.@:碟/醈hj媸.戥鐅 #嗁H矯c輝嶂磶mOmg怑﹍閞窞WY@ .觫鬽R緿⺁L靻毜 鮄Q硎K祰`塺菋命0攵?憯庬m盉F髉鷐&J冝儼┮y暕U瑜B佈殮G灎(郸PVs䦷岼%璟vL倓Y$Mw;c +>毈quoi倻.K倂踦<(W|鑔D蹧䦆t荋::y怋璕7(萶☉"Y藕HV婔($怛(.A誵-唙y钟昮 l禄tM炨%`LR鸓縯绷r)笁3Ih惬6Qh~X粫婁钿0E:坤l醞嚯 9匙怡N4m头淈V:VJ&矌gsx懐on4繵碘fi絴a慺er检UH2枀R 溉&B+r3b +涧O輕條>Y砩jsX捦$煯維╕濵*e W缔@V +e瑱焄f~ +f斒燴<溉T戤=U 墣P-4廘4皜 X`9Y:V劗 +h掌残*顑捸2邤6LD;9d3軽V*_珋敛縔偼糁7 趥吣堭 鹥VH8対\?A 醶镹*q0饛 +'kfc孈膔 +筷瓧,Pn~报冹>$[5察狇嗥脕C鐢J香@9嚪[邎囨L蓍o攄皜iOLk<┮1蕶*p惊涓 +ats醲垌皔褏1Y嘇9e\ %筍﹩夹怿z 忚Tl咺g嚦账留 +嶡嗌H舠)浍"4゛檥L`,葿猆Ib畚谋G嘿G痚暗^尴慁 H)LHM鑬3)L&冡悈舁@#.!Mk舶0>d|葦C'  t蠁t1tB!鬦舤筆蜹臕X状n +鼉R鼝2_7屃Z9黑唗;蜜聹-怤洓 +迋5 $堶璴>郎UELd!e贉f17K富 +/#5m帙[斗d8rG,2?,僯Y趃(稰@zch皠~:Z缗渆C 凙]V歞O|r 灄%k Y#蝓K% 晭隚ⅡB蜪y欥0伻7谅鱌昦礉7N落%藦>d'蚙,!-h偪[a餽玍? D霰B蒥`,%t]蠽c>7YT赿RH咗′I"P昂1s!嶱;( +鍽謠~搽[傌S ^ RDp&H 悇b霅膱#莃描懟谺[U菉浴蒥\篩遦6`燴獿剻l6&嫥lU柁鷝瘮*枲踺A)P*緬;z浭茊\桻p`& +嗮裠R 4棰ln袥HN^綡F殖3EM?2U&箘 ,1穗麎蠳L玖I.賞2淄)`麬A僄&鰃@v竄7E 魮K{`"慐t 幛d姠w!ux&*锦漛r笪pFN磂2雹惉 Q扟 +6骜*b腂 墥埼1十 謙界y#/榅蜭T>P蒍訶敁(Y崎> (鍠(鷟辊慽鬣衴1)V 24 +礍n鑿萅N/抦馞掩,Z淍敀 穪轥RQ鯰T薰T6櫊iI镃-嬕蒤ム t0辅t啌7I[于r匔稜T森擋VOs阶%v@*獼#d貑∠m仓#袢裁z Y赁TJE槽Cs綑,uJf@|zA :E谩惌&U +嬛茊[隺U侐a(洇謈h砛郤88p 脪 ゲ塄敂?@ +U岦圅撳1N肾怶筪畐G1蝥鏀 +毘|盄Qj*d漘炅 *Ba $瞷瓑oT - 苓5-w櫾弮d讖梣}_5徕'喕醇eネ薢鲓W賆#}X#緰 耑阥左矗橲轀(洇y遯迟隵邗0騞鯄#kA A$ iz督蔄xX▆d/ gf+盂俌_唧踔;]噿讠爯ザ众廳摤r:玨+攎豂僳1輢0&Y才?芳T8侅_5)XH庫砫{ 6莆IM$詭e鮑m(J=$-\# I +Y&楡-洳阱q罫F骾!398eペ┄鰉w 語财H闺Td-導 4Tカ)畤"餍 飷[K"廑/ 孈甴we ~o窻己褖硙iC萞啒:泗赊f蔊AY嬯!hA<$鬼B!0搂 9L裁4?@羔殼+薴垼nc萆8y7妍喎P裋絪賍嘉: gNn +qZ?许)餉!+D 3 襪U:^l$@爽sl吽皏樀N渉酕喇灍蝱'脚S/Y!俬驳 簟;C蒅鶃燁X撂壸膂/й泛=A<!莩Z鳌町t{T玥工"5郈R蹚j{^矋lW3异¢-渉?j\&退箭(葞<兜鱭<L5莍2m忡z}Qm U7>fл虨6{睨 狿lj簊瞕c恨戮Al痮鋸;ず猽Mk氭竐#'樒=餽fzS /倜D碟弅沓ū袒P3瑧/絛_結R;\炀i偕v9痷/s矃{5z敺怾τ O嗴}淳弁鯹贞\R绬坥C7B,5<莇鈪 逎,^寲/tg☉>:筫蠂惨挱铧j磅|u蟒勋唛-^h卧馉匜e +Bhd爻8贈蝊tF犲烷鮽(f氋:胰辯璾>疼莂<###禩}膿-j0跲[Gv~Y?裳:s-'搋觾磞覜輰窡偬O'y m&砻Z,确虢S/郾鹿镺$狠7綉-癃N犋怆鉍_秶桻m 枅E攎堑蓥:=m}9慤燝0]亷撝贯痶o贆蹻贋/,=鐍v炱N缸j]~*l劺折彃乒86O譂q愵髍Js.7Ic砧懕院P寠禀#"乗B貮P税 鶍槚y?I滸笪艉=z 肈蒄O髌~峨g{缴又1傚+ $筬摝,忪<歯縸x林-Ψ辿4N鵪珛蟴嬰ǘ[o溈9||RH杵踁咐[涅庬 @(R藡Vx>毗谎謰瑈4呔﹚X1暣v橆弞嬬}d7悚FZ邠峟呉U5Y唤橥峻yg霈?yt箨Gqv纏?= 笥(?甒莀錆侨誖凾U陗4k.姻Yxu蝙hqltW;O g蜀衒胸=速N;覹訚O渺p0~仭犹A壹h弉楙熯箭'_'O拷~鮩= +箜嚎|歸O脬G异?9鉴=<妀篥銲:Re韹领fu1^枨日=F宔"蜀*西篥賞鵽尔贬-og IKL$篥枭x缯x赅臰恜^柬F;繹 恐緃OWo麩vF稝Zpエ4躟Q餃wi$峭V稹梞豈w齶/n瀟'O1毛揙絟)+櫘7%F 覍I^?呋鴟y黺恩v酸忾砘cf罏n5賩u疋粵?{/ǖv9榏文;kG?:鷛紌q蜩>'0奻沓申樟/~u赧輻靠\逹尪M澧9篫渱2X緇瓗?晫$噸謳)诖搅d踱釠_<|鯎穇_鼑uZ?姴螅珶蹒4kn8[a砟鬡"俣8!;{土Yw +|x晈.s0檁襁7谏雥G鏮鍹 励qcp鄛g;⒇袊碴^蝪/>刍鴝q瘀阆嫙/蓊煖^犴w椣皐耖潘焅匠睡~7誨疔o鲙;o稁>9浰W?9}w蹯媁_堳疴輷7?飤攖.~u蚈可;蓍aX+F訊w姻yk5箽砜]}T顪秓恸^:猜I>l鬘萦撉?.^iN跰&磲CY- 7O篥Eg黮橹'跷N3f玓鱰皒跊^蟰^縴/痎~呆Ⅸhu粄蝰檎;蟱 柉敏帱帅?斣氬鯌嗣O;嬬7=y燑隉餆}"闿鋦i\ロ肫囗錾俻KQ殕=布Q0uk輷鲳b摈:迢纀滴y,z闼呸肆*蓷栍顫}懺{撉竄/揸O烲w_4Guo+霚瑤^崠O黿2迆柗計龐O偏缤蜞暖鈅釺A<}蛘阕?遻趱d鱑w嬾 h棲罪>麚腰壃Eim壁=鍕o幃~痂/阙Q薷t侲2!挲洆洘>縳觃巾Qq6吆Z磔r虊攙P?N 筥t哋&訚儣今C伢▇謿拗W谜m{t蓤鸣P_喺堃U璾逈>濎綹}>; 警|;輞仈{?兛 o螼>郭Y Iu>樳<鵪兕鵚/_赏4﹗龐竳6欠燓褘/夹h ,o3 +鯯仪6燁_|甗u埏e="iB}鬐fx=孙柷_嶹.ngq鶰襶毚Z胃輞ほEo椿莾贀'{鳋GW_籔/铎噜?膵F窖闪鵪_G#\[z訜=(m飨浗N4p茽簱g彑枸5傈账紌 瀡'擁g齿7g走~胥?麅缾峡Э厂_┲f~y键|琰腔?ǚ巁晋驔o秧mtm/j\浣鉝縩 od璘k丱Qq七m 瘨h~趸7o?┄]5欘}<軂摱蝨kF;_龂8鹇2鮮待奄訜Z⺄Tr輑婮&+I掜4(7屿饗著0'菬嫱篰委Wo鱋哽=?烴)蜪蝙b|琮h,7w;O傀釤軂鰏誰蛌_L鲛t鏞~3趝[隴"蔬~箅燒蛭v欥 坱懙彁贷棢c耶聒岌q簒籓魶G飤u笱/?菌U?/p哬o:遹3^綳炜9z蛲鲑gQ}锼瘇蹯遄v0癁薅哋:+瓋鞣燓裱鮋輫彯镜侷眀螅 秐佐丰5傯x几崗秝ot冃{玎 垌 \~憉-戴疔副oP籪,5Jj寡^驋梥枭n4o\?浸;1!&蜕ry?鷱益r紎t嚮g熥徛l+蔠;6F殃](F-苔Ys繂猧;撆5動撉焅?蔳玷往觨N9y蚺僬'/浲竭鼡?麿怂蕣筺 伌.枠髧φ/?f8噭[ケ:缦h9衈逳窡愉o;樝>.]~駠貅窡;\<ぬ鬵A砝蜱牄F襸xKn曺w9擩9*鐪茅S'鐪:Gw佰澻6G纮 L2 C钨疗`23魍}w蒗>5kiy崞瓛鳋綺愽壕}赕%Q*諾K訇,骚d氠k¤0[偬曌P0B峢紡Q1篳躷g傊c競 橁鬚K缴规 洆坊屢 :肷躡U霳-熯8qoK葨Kr$昱嶃蚽躑lmj鄩S*Fg媏А Z妹c濋]%Z签o御謟mp簇輷裸8晥'诒d紑ぶ聭蟚]躐絉w;旍W;仝*#f鈾 (N)駄嵶j8s鸘 1>au腩艴+批v('n`R暏擂Y=1 J >净w樎'术T~>湗 +脓篚鞽7=*S瀲去4おV+蹬Fg<姄1(餇 %%經..庞S稍d<皱鵏o癬lo藨>6n=V XR怺3藈‵藡唨錚9~18?說.?u鲡C 鍟z侗 MQ?秞錇櫟奣暌旼︾鬈!崊瑯胔脥揉璬滴婨PがTC絋iバ趤5jb^菶噵蝥%s?翟愻q挬H殕门b涪%# +'哗""9躀彗卤劲鎘曎怒 疋4+Y$j鮜x\ 屧BΧE9犮|i≮莓t*=6XGㄨ璻滵5濐鞜zp#孱Yo8孎脊闺牵Z,樭挪\9滌k癞燡$&#贆凄燽┍瑓+4s$粌u{$;閜ほ祜椲塻彳枩諅漙ㄋe赣liN30S彟嗎鵂382絩+.'斢垮橮ㄡCB暘ㄔ汩咁溟櫏嫚豷冼剃9N)鸓A%!疻1,`>踈X:*.z鹪/"!/吗uA鞽碥亙^疒jp|虃歬踻(OABA鈙k悭I/疇 cP誮ǒ妿趍I膬憅1詬e爍fD(劂U(*&Hi5R檘-趹耺#3[眄眓"拶倬8硘I&麚&f箱L1!*銠+"鹋鲮陼┩齵Vwoj禱桧繗輝蘔囨兊hb&蠟u{ 汦盃弁pB逌Z皆< +鰆妹贵┰`m貊掬q^)袯毋 M沓L羗拘鋓6﹁eP粤4J Z揔(f鴏熑8虊p84燢R蒼E瞧<&JD求暤rs3驔J`d陬M瀯F 8葊le#憶7鉙竸1ODN.P\鰱/夐Jsk|4'攟~#F 塃*`杻!坆挗Z#<5c9~tf膳; + 粨蝥x弿E舊豇 ]槆qP昩P疿m4!牶 桰*M柾#^y⒒|雎C畮尭躈捘B$嚌鷿-@#g槒2La 嫲懷ht斦F览鶤hA iA-琛赎讴\k蕥 $ %ZZ!aF2p儓O壡契H "0鎊D艌Iヂ檭咿絋l,h-鐀.N袉嚏李殄@@謹|ケT +m.蘛2Md綉玬N虩j*B冉+R0;j)"鸝x 玌穇蓺) +Z齐%]楝鱢幭痏虩n舴卤V<8s媸3w[ N%H|掔Ⅺa0A0 P跙ㄍQ蟅v媿#8搗zXM锨S慵攤]蕆9柾眛mc~*氓碢  ?(蔝-詰椽+萤蔙8=I媔0M 暾Zk 臁蚇陧缅殚rm#挹Cd,W\摆pVH卌滼gK 礗.腭蒼< ?症冎痿傥谋Lq檅K#足2~Dべd$5淾砍=<I贪bN!F拾R殫騔皾L悉3((:&i 硨!'墄9妶竇脊樞(R嵩+橷:喴dL3含P澌M"f烦坃蟜f& +9!谐慔掖櫿|{2讱hw幁?=X軺揺V虳絗夢h&閜觺D(]V2虷4攑A3遛+蟧熓云))(閔篰,F*o@緪從j'苧<爘i┮;f06.〾Lu\O挣T呇拁:H搜P&譤X弱g9Jp篑8楐1嬠韊“摴欐%HJ溴H0^C襍Zi镠>榊炤 ek(璳F;苴 崕z荈}^彁蒑' r爙傂醛騌0>梽si剬喱酥D=榱x!矹 閷昧ZF}熑Q枎c橆鮅.瘓`含U蹁愢s@8=vqy鱈8]硑0"狥7 桎b睜v繠8u8$梉鍱犜^<3$ジw述塡}備 +A嵳筦翄I烧9谷(i鄅.磟ump慞Z,煂デ^PK抁Q床.椱嫢顠懍'除Tn.[\%&鞻昀m鯟嚰42-瘺9趸潚,U*照\~塧 6m礰鋾堋1邎7f 0|%S豊X:飗I歗晻T必^Z拶>q钜祰{馍g燒效>鰰o~眭o|锴w?餯{b vk E尿爑鬂Fu仡- '6魑軂獒菫哥亚/?麴苫甞紂镙oy饩?上}n}缲治檙} +N喺P9h訶1 Λ叠誊蜈砌蓅gw-O=駧>wG线x疝肪薩椌踺鯖飠頲+;'錪#4瘡%q5jT摡啟E挋襚ray箬礻Ngrfjimnc髂狗?鬄框揰/}+楋~`bj#昻{舰%塆R神ju墷"N'- +夻p5X*鸳义馚sj瑛漌題薈=跎梌z瘃э~鋲{珌阁8懰JbYQ抃$)#毃ン蛂晖->q钰擄|鲰<笳o}瘇硪鮷廡k3倲#合盶,溞q<欻 胼鮐*tN]鸽]语=oy溽'辯髞G餍#O襟骭蛀>y/鐋>央&㈤鮔|B+﹖?*%擁V{a匍贆揼n魁潍W罹鏢燍祜銦鹎?仅霞鲀弪臉稾hh篽t*焈u:D嚌D$fi&嫚a説&蕆駆督嬉調N]紇蟆>g彎糲0{①邞浼箹鮛c魶S+籫O溄vw姐墬_蟔麤燓鈍鲒锟縸㥮眶>竨漩J{訌FP(甛IィX埥隅o裤实隣?缇/|蹼н嚲舻蛩_}/|腚啉椌癞|╈x<n隨簯乡獘髎w\<G顊跹O|啁觌o均璚~o|阚?燓翮餆w啁y鷻钿F$坤H9nd疹谮:粄罹飡鰠OO|滟弤鋮>齼W~魦_褊篾o迀>t轵=呪勌梄2 +逭f`坙h铨#7锕鞅~鞕w旷霞襞瘄'皈鵲椏o~>褰#梥匶A(圁/#蓂#朱寸枟窂?[z隀w鶑~赍鹩燒黈蜈k奎?协/>楎錳N魓椆BRh,蚪#锦褔瀨雜焫䥽歆蛩啭嫠_雘抉苚龘W_燓裏龥7O絧裎霗\噀Ao.墷踩'殚甚鉍陷w#=踉g筐覐~o籣讆麌砜7選龒W/䱷菬 謯誩-增x膛6+劣Q憢E岼6殼?>{檱搛謴筐馱^骰/~?{項O?鉕?y=F嬬v7椃o?~昶]硷畐<W绝o牏_?鱚嚠_看抖+".咵柯R! j窺儋摞}隱{z罱流钧}顙/__鬝燓鋴焳癞/瓭h鳀U5棃謰羼\緳NW妲W吨6o>p踱縹钆/}楗驥袼?o虻W~耋7唿痮沖~鼇ヵ漍)9II㏑j蜗疁9}墦'娴梌礯陒驎o~~髌縹7繂fg^髦踫$a惛译壴M%x茍橘f┍饭=蚺蟷唼 燒鋸^魁泔??}鮃燏試^G彏鲸G `%o赔踽狞荇'搋蘏?瘵徑~魮卓鈺o鐙飤蠡7_甾;谳4沔r0^穲"AQ戎玸錬镳铪圻?襻弣鍿??oO馩耧+?瘇跏O^3飠觋檒K斺^  F笜圴W7}溲 ?|錑啁钭唿7?抉姣瘾?脃钧蒋G啉蒓亏󉰸s聱卺;E礵>忊箴8*x8+憬氽蠞耍弢虺/绝2替'~鹈o憧褊顕衯?L訥_逅wlG㈨Ju#,'壅^R,g髶S闼珛3儩唾{o瀥毂7>s缗銜r:奅QCE梼t9弸R\MV挄^;央頼o祛-蛷;绸饍舢胱罡q笃貹3硲hFV驊8h锊咚>幠鏎笢曨2G6骖簒鞈嚠箭眵~燍劳k?}7?{蟐搞凿霻豀辍 5 c" 戙囅?灛V[3致詤S巯m唿歧^{7眭o~鹲_x燒潲>鵀嚍z潋陛鞱g*瓃鸠>耨w吒t澍鯞空.楇粱]8C囜纏 氁8J寚S璊gcn橼伲<踵?痄烤~肟??穅絩/s9A覙K攎壀q綐猿3S+嬻侩 7=W>鱺齥/鍿~狴w潺O~鰠鐬|帔冽輡3A!圚:伺操駩#|襀锃镘蟷?骶骷銐鹢\;烔辸抉嵂奎膬喵譀飣蛄;螣豜_辞s筤w癵D:V+n费8觖D彄傈l>Q轤鄹蟶/近慎剧蒰瀪鴧鐭w钧戠瀧嘹窄暤Zノ3帺^熲v2n婙h a)\絮|:蓊vf珂AF-9煙髗*揹软贊鎃H<饗42!r忎峆:嗲Q #爆*9/潉峭怄>蓍!,鄇1" >GEE醳-(it揾&彆 侃夞#荖,&揑楪 ;10 =验b]nF扲醦夈"樱`Gcz(棇g挬R6湚媱#閔l假l鋝a^笼竑眑聢鱤.}饜 訬P)+|謵瓅蘢BzJm--殔j66裪%炗x螤閠諠v襛 丨~浥k L瞓檾*a6V$ 鱚浑翎漽&1l詺呉\=攮S盰F>z5:獗踦.辕2DD搒Q癥馶:Y慀`9-e斅J矘甃揣:S f"┌1身b苐錁嶒4Y.玧塭#(寡XM- 賔ksa跻漪 U巆^_DV硲.唸&U$)錠D0苑坶埝 Q弞=<峣<┢碭6歂E夤D; E奿])z9b<%際j磬mN(嬇飏挩彠▌ 涫派7绩怦偠Ls|AK+I2骟0j>+q1f褊8( 變uI* +l奻鈌悢媟竝 !h茰S8操Q彈鳅E6$}蛺L挄髍挨獃繜BM8&掖.)Y桌dZ闋构ZA8&H漟 穱u縚r8p弴r籌琢#薘乤熍癭PI垝1:"^暋@4[#S$暤Z 欣坃癥Q蹣蟘G\6熕 鴺悮0匥騲p遶笙.c縒rXq饭SIt$/vy􈤼妳瞟l蹭春DB暔℉4`詧莏 仺諅竿bX亻d醼桏!\A釜燸玩鐄 栬唜9拿L68竷SaT炰k淴WN<~}+黇 v倯蒚~#W^kO溨v;p淴述坮饊輋&Z(褐N瀓u彃Tf鋹6/f&p,|h抽rqR昛&;棃O宔腃 @殺覣 +ax\3鼫E,^嬚c祔mV緯Jr鎯隝奐︹爡1莚笯览e.k詪磸尭郍v喣"<撫擾拱Pml帋!cc^榯毸(翞6岽(lふ済厡艂X瓇E%橸 '錪僥摡T-)<黓3銰c④0謤 F 篽嚜C!Q.Ib課eB!1廏"墑jR\耣觖|毆洞`儮>4B2E壁H(?棆:h頫p9瑘輮8墖≥h@翼軍zU?怩殭旻P瞄悪キ剖坴撡A揍Nm勂 ɡ憙s:孑 FCC膅Xv;1:獾;has胮l蛛覺6 扢Am籰魳咕%蠵酱11霕煛 _鲽B.忔6英rZxBv麳 耟Rj#裉N *鉹+ 狪沽1 :&MgD.Й鮺鑰鱼 妲彁d躩*夆1捨猌/揰藕軯;lT諣5,c>'襎挆荚R鮭^(敤*蓂VNXl蓹)燽E5#駢f/]榝$/Y緺;j窸qE/u葳 +皖踺阢? 8幥袬X婮1:啔e8W)淾 5.癁氮菩痐8攝<L嵡?==淮瑧))衪^k捯乯缳x8T覃Q/蘀 燪LRP戜 <慖O唽軏I羄寐,侾侼D澚玫<挺a蘤e|䦂莋x己:4嘊;)彌F搉FD唄: 囫耈%盄茜峐Q噵C塋0芟鋑81飏Kf緳唣鶦 飅& 輆睊 羽渝砌允EV;綅JcE6;c睈v泖4鯌T<櫃廹D臆~ 騔P茱蜏栐 +艛`.雟砠绱臃6里c狕垂聊#a0曜<.羏鍺>$醇rQS8,PTS:$%鸫 t壐]<減鋹瞄 @獲Sx:6@ⅳ鱼羑 +($羚B﹊Z*酟R与w湽鶻巄dD褯戣T,:旿)气◢b羿埇T  < +鲊*铜D5V)裝.憻沃烛崓R{坟=*厇揌艢O?蹙徕QhI扆垔 /螈躷沬:b嗙dp2 r]褻銁わ馡3W櫥3'抪發^捤呉$#F-怼!H砧 Z#@=堫醞A5葳dg4E=\D154吅r9y4`怲N).薎燻鑒噧鮪 漛筁需4c\謆7S2$ 氏鉙乹SmBkzGFQ(焀Ж(6@焾r]惇4椕#銩茭锑('Dq "粃YhX,縚:f$IF@k馆<蟚8.EQQ笜dv*S]"漰z姄J匸8祵av孁 側|S籢痑丑壟鸂|@K脈崓"#\IB慉:;杜躆&狛惞)!CTj唁4,z裔D.洛嫱檧h隧9餴Е斎x,5?褭<,-饇:DR 潹p p{蘊9鮱Q1srh6G/!衰Rm5枮如'O熆烾 湒/w7浢cc呏fN E欿 核/}+'锔蠇H8bI婶J敬 5Mk楳奅蛵纗枟籞d6欉m鬿彜琮71-n燲拈郂蓸═@逞\>樽j嬜?>絫慧 蕨dう跄尃鲀戦H|攭庄襹㑇奛能汔 ft擐Y.Bm垌,M启` +俁WB鞪s3[^ P憄)衭J皷(,鋃\阏孩鰼9潳衕胈&℡(3=鄑俇)駼 o诎RU v8嶌啅)#5X嵣 W$ +蘠臚G}4脦眛$曢2愦樧V\!0l芁2SsSh z+ @w!rIU甪3永 ~焸瘌FS偺衛`0 h烹搊煌:j&韤甘BQV+p顯副h|aR軃鵻糝$1S牌#椤j*懏肭r硆 阞X_yg&弮>髠侷A倰R ;氜q瘚!埜#[瓟/侾彟啓襯@M献7团艼淋k涫隧揶攒檩泖rR聊p竐姒JU*蕟馎0琏+嵪&味球 4_B垽,*錕 瞊,#dy 鋕C嫶莾馰<譳鯳怡!Ah蕽盗)Ni j6\qhs袪?1紓沐Tj9_:淗/*N萯:Qc$螣绝xソ嫅钡涤3城犌1摨/楙麜馽揔梂-謴 +垽 6*x揱 +N3鳥v篨s{鼷侜胇煿3@e鴃'Q +gWT6@铓^2苗Dイ璡uY弙@秬5s8X聛E諒6箩w9/xj* +,i9Z≒\I 獫c兮τ%崕",硫偸奟3俧獉4漰赝窓fb蘛栥奱 龆,v+f琧(@8 '瀍"E&躈鄅蒳92忔矀\蓴优ォ摄w啕頗⑺姽Bc;瀰夒t菑O鎗N縝碘4摙7眻$杋6k枔 J:+t頦s罤荋S錯=6暽墲k厩(0D殁J蒷Rk軍PLW牑幟 譃&8X"掣竤3s +#.'C1/;軅誂葓Z;S轣芨M孏恺Lyg"V啈F8逎鄹冿8w躐I^-d递脳礹蒜`0:*苔K 傊;Zㄨs昡#>K1Yi塲脣h@稿闞3 W$孩7訮揥JNC瘩#W寈?{lr韑{j芬輲珂x的q|瑗媁(摹/鱊贕曕篙撩;玔籛掫~覼8遌-畓馲(\}龉w.陟4岗plX霟=鮤g猬7陽8盲片竿罖挪B]P:辔&x E唅&酖u桠Rg9uza锞暎wp|裥!?庺漟*?#4褲>熖.z汪 舄纼餮繷sz (n儂齝翂"A奓偺1郕z> 郔扐楯灵x淴zZ艡(/検濤\}'朷j$g8\C`毈鋹尲6舶q;#e:瓍>曃浬迏曛殉o基謴Nm'G0:S靡賊a蒩婕3'衟{淟钁仚`&r髞@糟,傃i%軒$С諘`べ.=u-n扡,@$%<嬽#'颓#X98 4獑;N封t (浸."咵比JF,k慖->懏鍻^瑚濤巽*@腃薄)6 jlHQ鍜$t9=埔雑x▍'@佔*xx箬 7焅?v}竧袶詮Y聋癢飝_炯R3堧F $稑),偡>螓凚a(皪ZiZlD壜F*縁郰执V1F-c沫T +$"粉n倸卥3oAm3瞐. 喴拲&i.Q薐>嶶I<31殜@ 啨*p癨毯\|)蚑=^X愲逯Nsx<遆4袈徧瘻鯽j2?话ymz錔祍t8w~b駛bt瑅*j冋 R)薺闍P耍骆穙!9淚3B С顜d<+屫8帅%1侦瓀鼎泲 &鏞j6z{威NwjWONx眲慴F7_X簇1 翄蜆P%Aj {=2E%3倰`匯,=蹮;WK鎓5頼稂 &!r癬i>踵吇熼螡佉u麆xJ |▇隿Cね(4駔E^蹋f.1轳榧躂wO菁锺熆缳Dy疹9C酑C0S纀瀾 6类寣毬馳贚哤淋Y 谏( 滥鬪笗蔒FR超堋 +#V丣z30*鉷JztRf簜凎鷗3邁Cz奔"省杻穀=0&)^ild寀 pUV孂体斳n枕Q罜aX虒&b訇2CDs 倢貪4蹷'旔 Y^>稌顽T-捦幂佹╰稫魕-0靆J齎,份f\&骂忉JX(洘台赔蚮g#n騶fr絷鴙0謄8NG甜麅歏#癜峭2T倱兮醃渎晙睱*閫4ryx扮X哷_7爚y┬遧底h*L擝ifi#9~k蒋捱棨隄g題饝w妀琶(檇2銿锬痨d0凩胙 婥w;l 坢餬^鬀G嵁 +陰IdB髤蜍p<-柤轥共訇準gN檄濈鋻#嗶引徑7~儣@h駃 鮼>孹溣 +b)灋MGO蓠惺頴N瓍脻3go傦篾礰笡烫f驥檐 +/锻颽9i啂佇^蕯V陜齮i 嗠塪醉釢nJ 歚隳C谜+嵣S_$D3鵳t 门D簻\嵴jg'H嶰秢雿駇屔y!斦z$巤 ǚ#墆#6*,薢坩 B9l返43絤颇Yq?(h峊e=z##T乡{V蠥僪/獷h梼貔t8崩薊咾/薚6R捧鲳\∏z~L袰礦w_<骣劺春蛷逖v;iV23 從褁:縫屼鉁攊O9~閴w=輂8'i.謗藄 g鮇n瘓歰#8u<*ㄦT9'RH 韙o02哔Qcc8(Qj +B|y!砧-M/,o焄?zec蜣苫蝔8疺f斗.餬覈垻RT6谜m肦>_5庥P睦$喥| 秉 + 2蟜Eヌ騫U A臜&C0AFQ\>u>9X戜8 栂+羓<1 v6b8mV N3坨p +~膼:/杫裵 /(颁┸Rgx?{rs&黲椠nwum脞?缅hF牲z娓说YQ圓酇籌罠⒋軞;慷{O"9X_=駞瘇? +5繱玨>u町匪●C#t(栢W牠,f 雝戟6 U瓎"*'彌鱴wx婥礆蛐魀GT.&陂れv躰=1s9饉俤颌唯+_]婂'吂b{'挐棇.(銷wwc鐬犙r躥 卿p<铟%蚫r筱h寉颺蒿Q T孱`%k諿K ;髰鵿c)^\浯N#£众瑰斋丨廻x缇5祒`3灊廣涬吂:炞%-XS詺Ht(#',c(敄叟厶wX復9l?痉皉漆fA諣鎳 I痚+跪jぱ飋Tj>3 Pゆ+00纟鞝\湶"1尷c囡╪逞n7魯苢檖卆>ひ瞆巊啔/V蝴锦徜灻亮e0t樤圔搼m<驑CA驞工mD)x0焛?7#'4 +be/睽用xr渄r !_蔕A[崒zo} -J 索童邤禆臖俥f鱵蛷h.w$骮竝&鹤':潸'副B.Y\^;QX墻緲蜯啥烺礨骋坶N炟:r锕薕遹={'饽,/d@f(肝愅N帋噪Dei&6sr8烥狆 Nh挒i鱓O灴w竧 +鋁X阩z=隞Z庙S(.M1 3\I旉垫nV絢w80 ╚ヨ傋不4籟货? P 憍kikii礓奚粋 +'$#蓂=赹8辽悆撂觋‐n8h/d>KD,揂鼳魔X-攇==诂兵 暀N挏佘撼蒇翗猈跾鏡舉=躛X>[k,L羳$RS壞$杸.芺A苕89 51yd詉盽?垻A蠯N髰塇 楅U$|漃凚孥+殞諕欋68鮵D 摳鶐踤 笣M.;n 'd!%馫YJq\*栬輚悌#讄 A +湠-.儌%1檆路挓 扡槒C共罆桊斢N蒪<畝鹿韤脟4是j~ ;(廜薇岡 +8焈cL窌$+枲 +礥(<縱{钕>X8,蘳B6j∫瓡9尷鑸光埬蘢0]蹝7稰w恻蚅m1騌y}珀蝣滼 冡h?<\-F3楇藃/蚫@8]7F童瑛t3c9d桥*rI瓸悪h炊瞯"曢衸4L痏8vwo頛B<^<{閍 缸\ 6 衧诟OW咟煸奁芝C<:帱@偂 搥]帐苴鍱鹇h L承 咺=TO岓tD抯n鉹+g霽~棚換縝sP戠鄦犚婂膳峉乘鶇z{悐 k&雟薴僺9崍j揳有SV Hu孁d妶~:唫 婀牧鰞n硯rBUG玝帲寊m. 屏IjJ螄槜B-#J{=<蓁n/卓馥镱澑濹 钟刨Xz +n\廘Q|謬<_Y=G艶]6砺]NT%╕IN媟'b糥 +%z嵽Zj稲澒q齺籲>j$[碢H錠撻蛭接'fN"絋紈e9旘b`-(炓艟}H亻翑丆惫淁!0,Xr迗O僘;瑛摩屼x谚煒Y炯饬7逽5;+'o;挒G蹥轥,鴅P艀嚉隈!娒iv娷吁 0鴣@蚤03檡6o 2Q4e鎔"A篚怷E[湝a偱降皉~8uj煝笀(p輈N㈥鯁.喷謎<蕤,鮷#"a +z#琝e +崔`bgjz_旘DY彰5Y)瞝B 櫳H'a漀耡恰 琉{e嚂L晅受#0瑶滏g7殷WF变觋傧~⺧澎び涟LZ氩濡拽绦遭駂r扨N 醧2繉#di: 牢9浾L7羉堫uJ?镙)穱%(+邃p+挐蜹杝ラス'唏狺p 埦佥Z実f牬X $+oy魕侉806:b踮鄮0嬂魄缨o俊UT乗湔|$買図蓫rg採霥┕%kM#:0釩N*C I瓼#愕娌J'驧Yoz|:FN螚a虿噵Si汯:4妭栩cQ-躢厒(涠6.Z薒U畸3薣w8w涫閤nrvs/|1雭:(昷49袓IYW儅0ThoKJ質J阒䴔 +E8綽5_gScj屉S2-镀彥!槜蘰bYb鵯o91+侹BT倞挜⒂!動鷟a7鋡壚1R纂猇p嬞Y%皂蜐+4肤h%bH 躭疐 湆抰:熑"薄,?F牏.枴#76_碋挎0桟ㄌ瓭k罆奬揋S劫 k6鳢还wp袄R`KC 4譾o6慸赲瑼#FZ寗kn咘U2`x 蓘顂3v+菩鵫t斍勌HB.慑}*I鍃瑝:湍*,戍D~jr裨务;莖N甠r'缦坺潉Nas昮<蟝@񘰙<`s踚墨{\p洔酌綵h焕)婄鐑湽9}$坜嬖,g蠟径眘nc夐橘SK朔'R訏ZmU'搋'竿iw恀@扏,焗恩跞讯v.G捿Cc~泝ff'2肑ef}祢IJ: i7k取b档|趑=g>攀@ 吰Q,係I"鎨韑a!WZ穑蜩0閳azF Mx结1 k币~D祕較'宲l(;ブ告|z瘌6 ##%C∞淠瞩洀sB 敜nKz!23s晬正{埋鲕+7炶岋x細<墯聋x將眺}圤`H劥踓Fd廦(b¤tゾ昄u嚀踜嚡霍缺K餃N艚h硶苆gx +@铀鄓I*&P;砑),繲);祪焚-c埾+x枉偶 蔖岣辝廤龡qY,鑔E雴槸瘈bZ衕.認o{v雛g鏈垺Z<7]頻T0霣<;検/k.FGlN3浙蒳GF}P LG癜Q]>A W磝⑸怃躁匯kTXm嶏遮`牊枹顩JPt覓掚v/辯kr揹T$b裑﹠ 値摤q8A@1Ee "癨鑞m隣p璓[Y睾秝蜥#wO-峞﹛=|褶'>d~\ 5蝴媖姿眨尻慞d郈4K%[挏9:4b<垤娗%鐱*3u钦嚠$榁嘯馉晹傰FgU=Z頌$T]2X嵱q娚T + 鰡幻揓╥wq?~K砰P Y)*+Nx)X+57:亲w/.桐*閗w忡拒/9"菚E醧榁稧都~zq;s鐤鰊n緆缛錼s礪黈'餚P)玧專S憄[W陥/t勑亘闂捩=7峝 (缯`厯奐#-盆腭)廜柎B8歙醞惫6緋f~瞪趸蝽=-6H%唃O?皐+8盧llf+雛hV&ㄝN儘r範_X氕el~5*/]淚&弓cW稄_=}KJ鞰NT剨 仩敲鷳 諾#儵3┸<+侱QTc虷Z薯Pd!昡憙5榊棁樭没 '祊3S.诅釤貉`賖贡斓鷽伸L敮.悯d紋炷K浨1"擧O陭壾D0义搴郢Bk啜r怿]弪,饤! 蜖亴変騍棷<<溭顿喫闄Ty?s嬉醴喵谿秓t?y(А乞フ駲;f杘T踘帽╲狯{k島s 碀7嘈S钮Z(X昻{yjz饻糝祕4?祒掇跲泤翽荧V箅礁菸RlA調ac囿漀V V+韒Q)g4'府霑ruN羊s'巁|1叵栫$W2塇磚廛}O茧銒繶椤}^棚eV:f赱芚#:q踡侗Q詎] 肳帔Q4 +謥 :Y哌:壦OO,]隥kol靅粁跎櫣cw\ln鉲63眧S⒉M臷緋玢覭gd絘'谁峾eE婲cd鏌_[EH"Ja挅%/E螹%竺剑w]捡禗qPl-tg牷w痴鮂镤p钗Bu%BZ A奜)嵘Pb^P;$欛涳8奍R|坆T迣硁笥塒笌橭V閇'簱Е杗/6稾,+銷4へh07穛菣;9魼犌$ Blq毋.heF,櫚骚2V.N芺-袓^3唿8 1゛ザ 娈呸P舄獥+鶏筚牝O襸6蓵]讉`膯)楟藜辿o襸*+藍婤[鹁 捶l6凫f6=%'"臛+#姅4z胰M屾M哪{髆NB*Tf=绗仅Z鳛7J8籯y碛嶴"I=y?_猲坜\hx镏跐脱a撡a U侦 雿r{廵鼂O?簔鉤 HX薝舵6n_}娼s愤 P"p_铑T#5悭4:娖a观)7'(t高@P*nr悟箎飼鏮䦟鐄銏!)U'1]ìm縬懔'鹲X覻YiF喭O=5榒粧T!1娔!)摎vr|.巟 -#Kg伄厂Z蚃kа;E UU+尔'怀g@8p餮腼踲p粡堪s謦鍗z汶K[w4砞-8涱#|襾Z8? 醓7"5樵麚!嶒f坖9W攥鬙,l^沕籤x醯 搵gr屯lc薐蠇F儜嫆萏罩&-侽#`tV?U軪鵭r0:请 /籃rY^痯z撲*糡ス"韒4&佇梎L鴷蓰+{鼷嫍k偈Xz?掩>蟠$虺K菬傻帿蓼b謤c]85a3匲轂涓渁6膸D歷-簧衽C嘼#胓s2/誐輏Cr0館<cj;迀+踂补Y矛B嚕(d佦fi&Q査K蒬?變 &$e驜啢4乮e瞧 犿懂;x8絩>檁$" [<缈'楒CQe|秶迊r幚蚸mQ7*O}"|(E!雖勹煪;傀坛o葹蠊 + C菬BQ?0<婪;{閸巄8犟|峞"q腽a(ⅵ簁~羟c豎 叒w<>狨x跍炤挄,萗4W>I葧艼k闐w鍰sr;暉1琙焦颈{m颾wf;S\3I诶:v?8蔗V>潜i啿磫` |蟬蒔 ( m皛睃扶熼巷.睨/~z锕譽縞藵齌q截豜=v饕7椂7{;_y_篾Q膙 孱蓏怦7廮zmv骹С笸?鸰>尰翀G瀶Ri艦JfW陯;O?穧阥g崽酊蓬麻tuqj樘纶朋W輞羯ly┺藜踵葭^'.x橸N*qBER;p#F?J婻桶Z,熺鋃睂燡(偂CQ譚潭$Wq镮 +3 5珤4凸\i裵g欽珲焆$鈗 '麳DV殻$奨 萦碠3>&dM犑D ``辝E撕~?{jqn諭趲c3Ov衟c曂瞄" 6BA1*憝艒K輽}75G0橮樧暍鐅p0民皗嗈`鑔 鄵髷U9=r8~腝澞哋(;黅(b浒= R倫")DJ27*瑠紩+L+砹^┑k鹽Y鐦- +娒墯f%祼.k;离E\MU┥J樯[bx0&拕 骮癱00$i摂#iE?7Wkm-澼刎縬缳ヵS={铌k户頤+q躥p狎}+荇颔踺[ 咜姏瞟N9燀=筻惦霞庬溪V?慮9~䲡c鏮*VW妲毒?矿+v瞇ōt骣N輟钔蟷鉕傀?羟呓t骞徔鼭W??苦棠\竞嘲v蚈=f艎$d厂@E!- 嫜痃准,u揝\型稉濺&搾謍鱋澗舨牑-{ ^N-辮Rk('紱@n岴峆X>Sp -65鎂o处OjnG&Q+"楬q6J╬湥摋R俓諅fUy)峲倰8~璡[贠T狧\唗Ia5  hA埵i'$rY慘堻衂jz5柶(咺V藔還寗8y爏P亘偂f0@]=i?&(;cLe,%-痀j笚鯦閘W怱nyS赫窚蒐v>暃酔[Q.P宑+9悊X69僤r*燽C4殑仦傂 |啓紭幛|s|镾鳘軺AI簤贏:/桘檐$'f5雞莔螘妾5E/2b#俼5#镓鍇q贙祰E o +f蟯&芬~y<c湞?q蹀Kw_|牍7>筻礝輢鶏3最->x卥舷-溄|膈脔[Oo燹漘L+砒 否桴6/寣婂3惭蔜髭湗柵浍gYU 恅躴乹n韓瀨x蛞硾wD)}狳啁3%貙d碔嬐蓹嫥溋胛滸f0, [KPl陛:洧n鸳凰涀:SИ-穴爠纤%課T痕淩屃<+$)K60 2苤羰o|?ZU藮7a啅t#名]2訹[倶楀t*3)睑9脽`齎%襓4猀T荫;伸@T 垆F偭B銊8vxhl笝ml笉p蒯堸#G( 鸒峘1囊莓摓5}輓+F+ %E砃(B銛罧賒v![轏梹J:昻闚侲垌V;岂Z玟摙斆鷞 苤J.橉3:^&A侼st$YW36@r{C骰俈0淰HV迡F乆莎gJ酆萸0E4觟眀~,@胵媏 毤T_V頓 @0TA82躀B.:Y窐洗%)aj閒cvrf99-魌轵l8肪_烫靄泣鯱0摵^diCe f瞊屮薜Rc 鑗遂s;﹉M熜$砟壋榘|虸.V[{'镲瀧按s肒O+旅抠=sK欔v眥vf琦;>縲鎊8箇>趿壋OG!;蜋芍巜g.躼7[\Ly_ 凟`ObqC惇肭頭y娼K喵rK推螂飣抵Z徟d(.藌缔9u燔 窡`f0V護絑,/v鐗&*騾ヅ+矘籾懔沁鶶Q视B蒺困[慑絻.荦L祡 +峓z梍{x檃 !$_螖6御eK藒鴧<~鍧P>r +A'w"1琧兝 @ %伾诏;B城{+K'つa圶喫葾`6D冦胐N奀0(调 oF1&∪1周枣迚夓攂T40怂檵臘喰e!0P#0浡=炆豽2鮥"〾U榷k媼j磦S聙鯟斎XT(葞廱蹄`N8.蓃嗙7%%嶁掋7藣虳f寻'劢}?9崲zУZ.蘑檬$qXu?qQ 塽pIb* 栓乷娛偺酙|厁F(Eg,х豈歳萡嗰1T弰)頗$qCOP "(\ M 糜!&f8襜$/杙2嵅俾 欙倾愧Z姈鐓*g#' ^,LI紵纱8+捓UoU 厴H'I唵[筽硠B⒙麿惆 Gx鐀tXa尷p@qi3 L屆朲$&1DG!卽J@!甈靮塟(3) 杚x匹p墤P(=.荁Q$'1恔汌狼厒翳莵=r8<1啟 眖癪▕{業僵M陕Q枴=s 謖b墑'0 +掌*` 膖m栉鄎箴H匞 掉揷癉(HH%&並 窫幩猌投~j昉悓EA>9<G0 $瓞Y-Oe2(鈽 +湃`巻娙楨`J6侃O顚N畝&脾伇(叢%跢jX壢 J":疭-$x" ,侺勨骧8嫲pLPyQ +8缐咺8J#8-8Ac邦棂zy猏3攂i喍丗o拟蕣菃C9 +咵8顁|Y于栞3*/湊5`F|犫dリ麚ヒ㈨ F 秘煁 P(瘙嫆侎X$搱B郣筆GU0$ +挒槵&柅晦署 jD瘨悖(浢0I]笋ごB8<,皖:u"蘌媴($滤吢b4L崗膒T6R4L鉸濬y)\B鉮$"`"Q3>扨kt壭毨 吰G冦i玝 +钖l嬖U 2A矉8*pT孏3c坘5=g匱鋱01鶧00諩焫湫Mh鏕Bt$鰉b&`Y$b帲偮矮〞擺%LE/W粧釳.1侫2鍳廌?5~銘#r9丮#O昃橫趛]蛥885b恕墤谩( 磴q)4'験up膵唲#憫肁EH@偞藧枼詧格(慐18葥炴歍矞春 0Hf瞈l鴁氬8'鈗樒R;應9壛}O鮡毐D稒K.\$ 獕倴p璡谕ъ鹷垌柜褙鳻dl4膽鋺﹁倛AqGs%sQ馠H O晴蠝^涍鞐豚廔膯 S寖+袲6]昹缅(K擈 儁R,f说妞%r&藲8Eㄑ1C噦脅Y陌\ 樅h攴Y橥贤霋偲圥臦)饌G裋{k璟J崗吳Gc 螈-P.弞2(殡TY螜H 烮紧羝Kw7矿 岿褯?錑燐軡礤|趀懀iE<%谔{f未儂蔠笢kK C馠臯9埏W7_z淼z粐燲$寕 9鴬U6Mg喎aQ4cY峾畼v饃 !("qr粩籸pf沧-{ss!汳a(A$y迤^"`罻析*D(0蜛翜烮⒊槿j9~qQ縱<皾桨暯惯xp均陧翛鼹焮~鰋タ酾魁儆w鱎EC虙 +GJ*h磄臤u 3裸訖-}隀;O>鱴骁吖鯊岿粝縴鍡吆疬~?}朕义軿!釖q瓬+y[n咋vj跍稀媏&W;鯢哌昊譾+?搦齩旷薩} >篪钪&掅@ +鉎\94L<窆犗圎9i盿璽妄鬂囒<>跻轁/縶袂?x秕5J鲡laqo碡](釕愅 I碡)貔s觖3S釱+?摅?K焳v轶魁幔/?宵//漑vB妹殑4"Qq\D翴.矘'铐$钧賁?胦}鳇эw况觎縳骥/?攫鳋/瘆p縷T钅|6飆涫ぅed欿夞瀲瑮豙膻[7髑鯊搌飤/縶?龥?们誳緎?x鼋绶硸橜@6枾T,%A蕠秷駞:;媴理6送鍎腙+S裘c3庆/>z<鼾[?/G/邁/縬Jy~邢猣m三礫/O褵慧W~箜}o脎熫W雘啐欧锝齏鷎狂包筟3`欐峚乣拲&爏]钇鴟颀?窡<>彏??靏n/) 2%忝r翏鎧/5沞予{?y镓縫嫦>亏箫\O烕蹮>樊 ;麅g鲀|调㎏3JGb8普禃5.9殂g杲M跹烓謦,槏傀;奎违焳磬邁{;>鼬&38%$9%怸罟豭伕0%縯呼嵶6镾?酾飤酎><脮 鶖起8Iⅱ·-%硎厩Y 抽磺/淟雡稞礼飤衽/<靰镯鍩|檐邹趡p秗z必蕳LSb喡M嗯8R薡楠沔%b#OO夔f靕K雩緎稃=穡>苴;瘽<綑陟宍I c$65K禫需睯,菋_e/><⺈吖驔镞熆餙縷绉_紧/烒鐭>鱫縳閃_邬鲢S┡捜"裍档R物糾3D$;Z|蓫軠鉥=染u暻Kwo囅_军oO緌鉱o苈阣耉 幎羛j箹审)壼j箖簶凬佃鸞7.w漨苒蝵p击玱^汕7均谄煗~鹯镆\br**峣@蓪匵剳惃OE&b籩煔蓾楲]]煽p候终蓋n慰us8渍昔挀$曗D歘"浽ガ!z誨猯)%峓绂3S鯷選m岑緌鸁~/縳饡鏶掘狖十齪Y{紦,K6e銟"-矺.皝$L駊蹋爢巓桖砞-髸S/<椠/烗丝儚_9}i<]4A冦琊h铍"装匍锤^襑V诚(赪<葙;粫賷!0&bPLHzu-関U中I沢楙譔夷卛砼s/絶缮玨呟;ソ佦蟟i%韆孤窶R)`鋪僋鹵Oud砳猦(%K9黌9/\遠^^-锵d鐘壻L,cZxG`2e耡!S! EX秈f*涋婕7紡|3?~q閲]遾s;/瘄W _乮梄mX鷺(軒C'袽6趙';逝箧昌76醑н~昕~w;髭踬k; 急*籑S.C[X淲X璮e钉S /)tf馋 -へ媠苫粨鏶=洯jRZ攗姧6&畦#@鈿P拑 A3歏鲚氾7\;.(|=:碻挆汏幠豪昤@#R6%q3b浤b擩+e2稻4-y禒輁-獼r榄挷]V梥赽脂i<d凘*8皝14#a"2溫,4m(!3)v(\櫝呔>酴 蠠隇顥,+"触纥蘾kp仴|MJrぢ鈆B4C訲V2E禉蟇f嫀+%髥寗瓣沣h<甁r唂輅槅!IdS渤^畼*斷檰oW拃,d"搨0@NL(朒f栍2%搜凃︿搎惁i兂髎潵^e愋 脸<:呴8朻笟$Uuヂ捚鳫00巨]G馷攀[z3c.伏冨黱>7熃败躧ぇ3z?eWm 壞潏F唃矍'#G#纎Rt.揯棆⿴B3畝,( 9轎縯u麇;/n苇允iE扝侱I杝Q訤P+u籛餅5N +c甃/_絧婣癪<畑J亨暙閆质*攰)4-=PA懓"幠о BDA'汨瘀W剢c耡I桪刪 咵i8塘Q>22 矻F2敖C"KX朸Q:惟窜蜺癙虠紝]泤慽L +岹Q摩蒚p傼2vc纎拡b藥&h劇`BOT噂q窀Ec酶坚皓8勯'\蚀&;N"E;篞蠗諷鵈毐\%o;#1@堛鍐酦胫?晼刲p\6k仺姂肅8檶A:帢 瓽傌妊p$葢' +毼殜#"$傖a#滒u; ]+&鼏0茯1|袉a6/%耿h觟v]睷@塂,n侻岎1虓F% 芕諟$禍HL篰釉 &垖dS県GCQ:vj3=29览垳僒 @岣藪3D铚^^2T 噞R+A狭{茿,梤舥N珼cv,δ蒗鷡r:0NG胉z]I.‵3巣懆忙(T,E +錷妙薺 %掋9溌JNz>YZ);椅<6.訑雨銍账 祟'RK欬啑YkGF桑,f'槯>1>6娛j;Y谖6 {衶0E@x戛梃(FPi蜏騍5圔V0瑤 Kq <2糑61zi3u工饓 d\"Q晢G枹 +寉备笤MX捪騜rk鉈gzc孴 槾絡贊昔~昪q欋3f筱xR一嶖7 嵉 :瀀p3;> <酌Q'lA*!構iI4躖缊奪舼$q+嶻4W造灄灃:N&稺(瘔RA觡孭峃VT{缬 岒9 隡N瑧l郤0虎謽9辰P襧#D奔蘆眣6S:C髆KC▏悏'{醖8.0诳窯9-w唳鎝艫H,"玹e{豠貺屌b赿刬w義'B燚姱蠦S2琓FP咲C痡fP1*皮梌I嬷R贂`H枖柆>+唞翗92罜堢&)6?琽Ox琓懱瀐鬥4l蜋BAVBl罫,餵[sgXC<贅3藖0 +燛R%QQ疋埆Y 嶰0Z3橻e勂癴 *98t(tx剬"IY蝷 嫝X釦.夏邋N眗琍0.&8筪%(泱rQ訸劉諰dfk輈氂 +脢h4p:)娤G駎湭!d?黟G鉬鱡k襆套V?.\彄)ur~e 喕!貕>N昒k&S鬯4O萔s豖-7*賚 +jMP霋買鋀继,-f璂鼬匞kN+[70 襧n3&獣bc9h蝆.u鱡g +◇njfa鉜《壴率霏殄K葙嫑u缽燭Y1羋鎂煘Y~>笝(礅D#=Y/奻cd 卐繻1o窴^f=SZGI]6獈~軯~∣L-_蠑7 w-澎罉-猠设蓽 妹胣队沎粿3〩 c負榿翜&筞8j斒洖?藂<=屘欮姉邞藤扡gfN澖V鯿" .Pheg眙+糥縯/~攀疏姍⒀_氜y9w震"悜).冃鍛Qヒ0x祽癁t挮 +4Q*仒鄝籉&凘T鏅胏c(备IKFb& o>Y :cC}捘┈熪膱4Wd僙琰羝V苫缮lu塥uwR蚽偵攲ZVm6W墺R髄﹠烛缌0C皧>)恆i, 瞗)京;3濋笸┿鑠锺@w賑釲洨9努/.熪9u橡贺蔼|(崞詸林]3戒鴿7啐rc#Fn+k沛&N!栤$汦(s1鬡聱蛭肑鐢牱A阬L炲:芼ek阂;雂VdM蠈N 橋2漝=樔郘U5手褊;'潬C蔺諈礴祆qZl瞈 +U譪Xq~儣?|疒G+To輍旷銮79釾Fs3沼甍{彧3 楅蠝葪'翷 广N,n=邲85A+浍[肊-勹尃O褺玐;9絰@*姈途d秶沍"衛浕庄媁檝揔n +#5('蛛揼剪蛉7邋3曂rg餜h隔侃 G(愲 ]2麏= NWF蛆T闫K崗忈8暡珴闺'.絕j G垣7遬SQ貓u/麾@8 0'缔樇v忄潔ur鱦豢梟5蒌L到蒽焞M烴UWET'&薻哩\$VA餁壒Bc駺 j+W=U浐轣糬鞜岬v扶濱f L&S賌芨y嬬o菊_膏%&荸=輏gJk瓩髾时r筘移嵔 惜藘No{~闅酠3b8J沄b塛歈/霮f=記IA锭尺灲及s`因g柒螎涤z鐎O .勜河*斗":UZj/[貼6F16A憈Z1Z扱嫱禶坞塭7硽.⒛皼U〖べu^胃橝c頻汉)挂J竴蒴挍w @Hk䦅嵛黔 傻鰒g鯜鱢,F娬R2=P蛪毻.甝件靮Oo塄鑫Z^熴R'O藓l翶蛅f/磄/4g6fH籿排嫘l>}vv泐`鵙c阹o.'w`膔RsNf蒐腕F 垷ty+]邂垷汰0|ut F苃M儁F佬粦坱鳫萕^C)帣蕍N<検綂>@H$i(.'祼痬乆勳蜍^<枽讒rw頽燧o鬙侃兢&粷贵a (Gu邬犟鲟Z〉煫&+奦/TVt籱鷥Lm7Y踁)FJ[鬀黛4F{殿蒤y}j钤閮麐7荇椽V鍺鍻 r1W\<{轳䥇梂忂_毓[闈酝靺驩9,B鬠U.繞杭K4_蚮g=髥牑)疀%;籕:蚴雼跲麎Sf织pz+2弯j簗6y 阭Y蒥积*鄤隊d婁珨X缭婂瓃kwk鏯f%4x9嗼0嫁絷!m2^0無n+曃灍_EFer蹴dq芢^*泤珠B鸤{鯲眜Zw俆簍尝V鈯b嬂 T;'擓U蹮 +栧3 +椫/&蔑磠砷bui斐7_袑鯼醏褙觧aU&s茸s娕i抏礬+6647N A顇@枙*傎靳笄.:{麬"总驮庱阘<;5}J80颲 睮爕碔N;2侰!J @J#cl$j骲嚄簴逢/ FDP(畞as1伶Tg囇 暓(f%ユ@0蕑萩A +電搓接蹀y艡$竘Ry.垲濸*千淹l罂r忐虮鏩髼D珘抧w IC^F+沖葧V礚R庪6﹝:,虣d槡玩g, '敒舡般敟='届id了N"浮楗 譤9厣瑰帷i哗(ュ錽媖漘j_H杤鬂 C(燛:;u頭本|d砰牀lc贤.冃NΖ[嵉w唼柩孙G.%h綼%Wё镱^㩳o醍 譕灱蟷砛_峌$魌cpy弭薫这ㄥ[敇84蝑 :+H踉v>q=暃櫅?c粆^c佭旊暺 蚻iV[鼹孴闙潪]緬犬愄皅R〈淗M裛拯4挟鮙堪!澳&をK晊b$@啿=,烲穒綡P塅osq鐠hTG b*-Tr=饢DjV铭`侍bx*怓8!糜冱NN呉R喣韍DR<(j譑痑xF6邰^qB骟@rC2'Q:aN麙Z娐獱斠錟?讳$髸 孷"殫3拑H\'癷ps誱轀/悚2姍罩N祑ёP6塻筪~9[氦誩祽挝嫠婲j*揧.&8c偗u瞄昀ZgD(n藌O袣X愻\⒏P<1硓撤p% I衟+~;s蚶: 礿鏧?S镯r|瀍髪鼦7燖鴻;@c佝42,NH啵)6Q7L疭(4K磺痜rS怅鰷.轹@訹2~辰榱苜ヵ崃X疑l簵1轁2黋黖莞V- >嫷闼巯L螢6A隃椷~ i樔y厤l驞9&#砈籣熫~頬 V侘攲)?籝l瞌K毽;峜;7N<" R-pr觩礙0O'僵鶀娤!d>N渎1+Vy盤萎^繦囥r睷s谅艡[啎 VS塍 6(9>误b9y>[傚\鷽:}鴤HAX mhf%[Y榐<踎:H D*E5篛狢0 .T钕]Z趛(; =o襇M荘@x鵳$璨钗洨%5q蔫L N腝0p靖^m铉J莄qF揯v埉'w 1犡 +茴鯼彜]蚻j蹗蓕7'扏+=诸奒q詳嵑橽8祎-U趲繼0(9v3u湢]刀jO3B肒5蝴~j渺咏:C瑺x遗櫿8檯`+誋皳p\随珧 皻⒀e擵 b hR鄀b \1y:y#矦 醖睾XD^Y<輒痯+)Y?+詵籹B 喺慟*2茄#囻 蕗K珴赫 }|淓1?慪原掎#痂劝B 竊Mk桷t緑贘m浬eF 樒 +I咾儛湓:鋈G/樢XLLd鎾箄? 葊0憟郮 覎萵弼~m颥钐圝唆8鼓K貸m軨H'N豵nqk+疞._n=k绖N塦X幣,wz濐`昨{劫$搹@ !琗p賩唾k8曞谼2o- 犣b剨u矴1檠q蒢狪厘愬1翜Bq憫厝H$b嚤B鏯" 枙膍唛(ji" j[宝乊p襅q $璟m)欗Aq$0dbd轎Q7 杣"$薾袻ft E4勅sR7撨Of +k }喔W汵kX <*Gb:%絆偼嚸l瘂琗Z傗0\0 Lx/8n/0,缊`肸@ 橨g">!9奙y餥掫D!A(z紭/拄>t(S±K饷~X( 8閰耑4b3"世9zcEi&斜h(M1 汐ⅷ+覻`膄 q绅e溛@ (K怺~j%Y豏淾(! 菵q鄺S;悚f礔衝4偳)静4|Fs5{&2 o鈩))ML碮橆F雉眱棯3膬琕)G4V賩语6抏O靮mI馨0跃$A ."礙B还)R莺骷{呒逄{򺖩鲴弿徔鳲#" $P5ja*碯"礵dFF黚扇骊輄呔飋~7;, 螽╩忱{%i(逈_9狶$RS( 6yaS祋_9Qxesy骔s鶼QXX辺Y?釖U恖塼]6Vф:0P<讂龔汷% 9盰2婺 ^^遺黺q祿妥*曂寤繑昺舩VV嫠+捄栋在~p斆潁车F袨殅6 廜涑橸Y\ 咈`A*嵣聤$o皴f0琈N?膄 P幣珯聮R}6金jn鍡lad)tl泾Q 'V>\驀 (UR┥B~z|,!旂Ζme馋宊<惵煏 Mi槍F5%a-_X'0A飶廹de璓\/骡鴳-喙c壴t 愺Mp啽2=8VkB!恱舎D皲苈O嶢葸簼 ke覎tr:,妹o邘剛B$驳蜒8匨%P鹃麶杘D橡MA{v?\.朩*搹󬦏齍漼岄緪捨.劊X5摏\Z}輞鬅㎜通<痄尋o璧4鉜〈標賹楴 孤 +J持 Fヶ}(c3櫓偙<=鞔争垠W⒄趹蚅姵眲2酰?挻菗崡e鶁鸚P$<纤鏞r1Z岶+檒C焴b顽"?掣簱-虁- ,m.mX{#`轊1框B易B,梓7鲢竦簘 薫,/ 婈膨輩鏇肢駋鹢Ss蟘2U輍睨e~q'翴x,]HL埠Y滔gS諃?m氹隱嘐a5q悝鐙Ps +爀i殄势仩n儅検6黿_(汰Lf`$呤趦d5|瑬?.洫|蟇f鐍攳韉2癙 (弻β崑>炆蓃箼/%,7銐i9^毶左炮漪j許绎岦豿宴椔盝$VJ罕Z5R夐h膧縸x淕礍"玾9昔E钅&&2$鵥膞}}瘘_瞪g亹-訣L/o傼ぞ綦酷yC1Qe}2,#廚廀$C賜M谉r&gf媠⒑Zf顈(Z摖7E 9Q,].-\{|Z2%髎褁Oi啽jL3f灻槂N 哷著\N&壥質kW氙y馎&73酜 qq/X6棢)企J Mk2S\L&囐x轭鋖gn灏MLg 蟮利X 麟谥衰鎛IY '*%t\銠L%R峫q覞戶豿VS浰/5 +/4齰蒧餖l抖o A湨s蠊聤^}bL=懶CU聩颡9輝KW顚g=憴葪忠I#6q铖徢姽w +伸\$>%腈偄堡&系俐G舼勾騰m鉞<EKpAI鉸2墻Y#灙J犏/諞t蟡,K3i癠匲y騣28籺安.钳偐辧頛NoG釬剔秠.反竢8<武 D9比/冟B-c揲贊;汊由膁慱蜗 !洘/騒嚷scm隸g颻2耪褖/P替.錭l宇件O溓硊瞼$鐥v鏃~鑋檢*浵*朝m嫲`G荝x~娫湗葝峞⒈J<輴臾訊杊潴e⒀r㏕婯瘠 綳X)洶0S%f帥馜p?硴臻-^pSSOg鎣A徘鈸\TJ臵"!鹋囵Z誊 ^蹾d骖宒L:R&怷蹾$yS诸摖o葩妳鈴賚et, :襰饨赈叟璤m=蘉W諺7^伒煝c厜爳.椩gFe'厖O镘閲胸X!漑&焢1Vq"efr5QYQ詄癅K聇徠 0頜晓$猭欆敤瑲盂9疵H&捀測i5暉.塎諀TV斦莯69?*訫c'A枍﹪紑囌N譄艴壈<(ヒ覨鮚Y\櫆z栋~@/s闅? 豀鐡官(艴颤PA25 f@)鄊郮@~.S".慎輶笐涛俽&[A)橻E/j徖肧f&繠 轙v:[Z e蹙Y唏吺w 5$X5^\V缢KK妥映纤r34vY 瑣pD(擂K鶀YG鮘)iO&黂(⒛f + 3&.俌(盭^-垟Xb +,0&3sn ?`:偏蘖焯齲L + q-I駆傔j>%攇鼇? #FQ殠qX"台:舷%璀垃 *浥C,榵樘|敬/o腟 沣Y瑹嫦枈御B龂郾 _I5嬫I贃>鬋 0[!扏7+鄄(宖ln/蜎整90i訝:V9!櫺qE辗+SA跀剠4K*~<>瘣6瘌a)[腢#z椝陃$沖润樤9怉L(7%b曜烊潹o6@%覢,痧8?摡啰=剈(+鈮)杁O倐闱&鳷va貉㎜?Mg&廚泅擐r嬹d=昣*磎撻Z錨V\缎$(愎[饭;w覅<"`!LQO蟟蚨*of2鮭楎銐{ht|4 R%杺5@朵婯翋z鏝ruu)↘0馞 +怚殜On泞Qも鳻q銷z.閰(瑐MLLdM*婾傾%懅'7鬃;盭el瑴+轊C3-8砦DvF#X.嶊儝埰@揔P^訊灼鋴tn!洓Kef|侐響X&V闵)0揳4b + '3厖T疼筡q.曖醏$巸E漁$瀳饯W钽4瑾>鵇绎@满缏瞓lUヲ峲<劔FVIJ槹斠)0|娅G&鼯 +@`(噬ln6棝潹i涃\# ┯s{婛SI躌觖㎜許)_洑凧眃U>S抬."UF&RDS櫣dr 嘆凩X>at, 駮苫閈砦h溢娐杔xx瑲O屟 箸K腙該舥t巺瀣獽羼#胞 粖+b,5]嚸J&S1ь廜'虬v庞 傶LFG优L眍谙1NF驀`叁癮渭馗*H+#w"4X0靲\蒃笟?18:殟FLF"213词Z\gb饗'卶f巹U[~l:繯?櫂喙X呯桝诲r0-嗵R.墎窎.翢DvQ鼳菅9繣变T.,)` 蟼}慔歚煐咍+晋c4>奓B(W  p8憴)饗槹潤傜浩栽9齝≤p伔鴣丼墑坖7╃藄抭wnd鼸僰H葇njpi礢?廹晷^3镮@GJ鵿-撝9 弻IJ1財炰87彤*雦q.潪玢閦4Q-溔誀摗垬讼@?%.琅\a Wh埵z4&竄o珦O[夜:娜 LXA  セ鸫xz$B鉄ㄩr厃0莭 2 vV6W7覨82z0暆氿T槗侄绝0杹嘿脺死' 蹻球櫶搐僧ふ7tWKs砾┅毖牷`T彞r苾潻 fE,顖 +醇濴`襄虚4> 曐w ,赦be婀Qk祣鶑稔=]呓u+ 䦟巇榿|簌5陯vc閑獘偢脬~q<揝妐魃O`吤豥昂牂?鍕M`BX,繦皲$P懴|輦娎嘞琦 Р鏋/&3K拣$<LN\T6@鎬#1#獭m猖cA缑2誖)X/饍徦o? P 9~!4)瓨驙0v39螅n>宺z$" 峾n:螐潌耬様瑰=涟-嫑q爲d瞆讔殓r1_噳 +sR:_彞j坰48邰 `鰠癨h'牴`*`粎脿hr|iu2S極fkyau, 䅟; 舃#塞&R鉏xo「Xk5乾M>,┆Y怟蒠絮酤偎额 +k樇朻9'搖0鏑芈呪\┘(P\3馍橠(柚鑘秦Dq耞娔4\>Q c験"1 p]铳 1淺亠/芄約' +垑X 膐"33儇}荠讜5l轶I?jI湤輿漿 &h8曒{x猨>猹E齓筢oo鯻膻?"23蝸]/.儛Β覧淁襯2 鶱 xx$樏案犗`九R 99蜊QNO3uFaN壟+牫TO犧4垢捥N +峫i(l鎶恕ㄨ骻疖(躅|髼檿絫a塊N##*%3旸弛罍;bv鵐c 棬帉'&蝰D晪珌`怌4>+C諶i榚砣膞*2笐- b7骧FYZj灟O蝨鉍俑蠇 `乓U暐騜e闍0\嶥UI{繩Mz懓>1^K卼 +V犴偁魦黚.孴F'破3o$n邏蠱&U珯躡"9IР傌)弻$b($X專T睶.o渺+%i=5$蛙-q馞8牀W乔a魾KT@欓|y㏄j赎=? 松赾Y綃u閾嗊q搲診*=7,T?亹臈柫偃k/#Fn)欬jA紬+璯 ++0!{ 巎線@撺砐銞)0崟4坧縓zX靟0傥-翦Z;繵览9;曁V箦炮/阾 33 f3%P|嗐褓$>擋g$ +懕X:Sw+S瑽y3璸皞M}玃硉︸|j棞 劦h +0:(饍o瘦O[+/99 +e0KWA7u蓆]^玼d4骟g}亹5瘍懱{|a銵"QQ鯈嬷腴卾*幡莭<榰箌捂,4鏥涯皝呦冊vA41僙奔扰5(笐東LTbX/::(+祬v 獛尌&2 #Q皶 +p=涵n'么餫眱z |*浨@~16c珊Vy斵I冑X澸㎜匪x靺鴙t<9佺tL}臶发亐T潂颏齕m駃,3妾O鯈a6zeH 寳F<K螤~&`L贜箢殒-N+"Z0襲.&2h闘稒H瓼"5Pパ塋,5絇\K滏虣莸R]X暡騚vSi :1繕+m纓J継 2櫓摳:V`u/wf棢"; B[eOh橪,鵥鱾@遣堔l0望塴ダO?t0柑xjw歄瘙犎嫬5U I勑+隑獘 讒,Uタz鹘Zy揘G聩襌"3鈹pL+埙燒恶喹宀U@#|iゾ*懪`驿Kk嶅譠19滁z2夸脌R胜3S惨'揰(m5稔.树倾撱瞗r古X添J$ZMR檉戇錥罚緗&蹣饤翆鈷酴F沲T沌Ln轹濅碹 y0綬儋 W'啦<(堅 wF揬| +磈*= 〦馸^!3j4R@f&妱齐沣h<僸塗%栴$纞蘤 % 腀見0/塞9VC\Vq2,+廈a9暈'd~(矬丣 +驏\y螸G:n(,诅_o<V紒y,Q g-ηVqS兮紹鵴庍He`(鋬)阢粡@&6/ 8Lr1惣^轁;赐"Q)灇N鎓C:钏#JI谑袼塗踔f 5续B@g贷夵軡盶敨潞簌錢| @Pp壧淰S}d"BXT禿) An蝈F4&晩uM跕4愵驱垰tn6) +簿倍g縎ql╔鈼+搹1,I拗'$m/嘤Y0` g鋮証}閙驹母UH3喪0e剛酪#I撑R忱/H帮n廳莬R R=Vd+垱e蘊yr堄雪Q:2!菗K訊W驿/" 粼輫飗^齕钓豣wF硍F髴 嵉塕&盔觏_鏣ayd8:捤&数a麿?Dc褛芆葫/eq !摕茷餕忾跏烃/稔Y1睡dK( +喈vV(娪丳f|'G糜怕纥/Yay"TR吊鸒逩S耵L,; 谜读:Meg餞hNL[k:伏沚> 垕狤癮曱杨LB畷J+諢嬪c>薂`叠R<缫雕0N9!8赾墤裠4赟c =KwFShh爛K优vb肷?/摭(唧+Fr蒁m|紅FO`H#盜Ay阁歰+)?kN?荧蠇 0屈1)摑 f魡リz濠^橝? 噐 櫃鎾f8縑改L,1滾M)4QE罏Z 损雱崻賚溓你|$忒訽j誫%G%杞 ?翿H譍GRQ(暲T_雘l鄵è蜧F2賊躇/Ⅰ8梍OユaLをB}f+-藓帴r碟rn4_Zn邘┦阢澾觵0% +(藈-儸#`晞秠au虠圂幷S櫏古没*? 剑`$髎Kn軯 l撌凌=鹁迒Q]\+闛F'飭|瀇u>浊#膍穧桱钗礜Z鱤辂颮鮡uZ禯oO:沁M;妃裆躛鹍镨皍鼮玚[顶秂yWS鰦]^1w[鼖 厳讵诓!媌+?躪韛禣庽_q羸菠p璚澀謔楃r\)斷或VУ蟚冫9x1穛槛j粉巙mVz)J嫠 ^S2M乷墥項沪*祁骄鎢速*齱'r椠鬟窈*%YRD脨売uS-┬*H2w@W塉I6$M2E04鏤鹴昹朤4 CW4M伀to3MQ7]樊r捡惝r抉貅=幻锟畸齱&椡q忇?么8沓千o_o禢`蠙agp茞绛鲑蘆7,o;Q`_n?X\刿'6*燒屲S~粗\嘫翢/┵9U炉<⺷:`/r邋脫/O蘅a_忿;_泄wzt縮仡|拮T席h哭圻=+K_oO6'瓀澐槌謦2樺憬'0+齫囖钓O貹絋m=;i烤贩>彾﹕CP贕崫潊阄繹镙F琍!笛b'醺篥t膍4灷偲.v釾哕G谇>蟴蜥s鍕瀊潡澠蚜洠穥'.悷Go:黔摚廢_m忽嚇"靋絯xv# +渄箥S鉽g窀蹑鮚{(>曲 3朞咺詐 }驥瑮蟰.懙戥磑gラ轏鸤+m槨!+5ヵ;o:瓝9P;茼架;)蹸 {5瘨蕂爢噗7XEp"痠 A&.1LA0葑,メU;↙缥}>"'V%U鳾噜* V 顁[{\_忥竤pt懳"貘<昏*"楋Zzq犰_觹KCv}v.})諢W4浇袨鶘;裣GFu芄期甍8綘o椎j棋cW注瓢疫"W2M綋潛: 撓Ql魲 W`~A鲛A免r娔k$駠嘩潺/富鲛鞉d恎遵釶%}蒽(p s齬棢o酋g躴龖1+8F嘣ap@!踱獉揎濤妄蛀滽旚鳍鵡4邒;h簪鵚G夥r"枉Ⅸ^4獝 企%:,*"鴁送流"!蘀綏/O遶歑 +n +d 蠣 J蠣t筼IG緧xV宓*接睡︰晨鬧跽qXL丞偄躿uT}穡催9wv獹黔脣暈郭蒟黏9D跽/:]7跉0n**裣{.k C熚崡騃ü砥c締)p逴嘋2#畄tH 詍=u恇,vU簀z礓 鎏笒囅腰膝fq釐舄 O埘q!潁鸐 v鏡sCx.5膝婀<棜鏡骪j濳璚-嵐,y<棜鏡涣.5鱕汒宵卾︾( 嶣薺sm槺tcg7鸈畔狞飋纓p岈E獌;诡鰨鞄Q费貪OU胢艄亮嬲孁秼蝲5婧]邿侞$儒f$W3[逥釞撏洲E栊9妴*妐=j蝄"迀=晖 舽注尢<倘}g啔/Qp朴蔀N钫蒦!鸽o`!杆Z*譈1呒Bp桜褡C'{E嗑χw/c{鄗X+娍p(厸X+/蝰2 {黴ywZc^%/嵷xmI`钿#擠菨輆珉C{乶ds@/鲛+靣艮mD 5M=撿d$嵕場穰胨舕<+Y杨0穇穠弤雼{驽<笠3/=笠瓈铤槜唃^^髍╥蛱g痻驽禋.霞籼#7洍棃^:蓩jj氜;Ir4挙囔ug*_/{I啞獽劃高鰒]该]6媶峒箇zt縮xQ)錊賴堲隂y跬異潊阄 "/O脭7;9ri槼暟腧纝T S檭Q囵+筄]x畚u +秠帐>殃?<=豩煷薰/OyJ絛貀漤赊I浇}餮xx碝*b谻崫!魳邾磵攣W懽⺄繊;cmC戸∝霗{y壉縹7訴靖弁蔺惣歪WT呟qotUめDywEtNZ~1閭_抒|砽渁RG<:8耮磓躨溊示&辽G +亣=綮$.@<礅鐂箂AM﹄5T2蕌葔姞霌%茑尐醜2⒕5鹴槤鬄}z煊af3O軪讧F<3P=3P=鮇8~=挣y牾m&╚綍/aq%[0嶷摒"2W到堀ed芊皫>bd寅Fx臰疎u+/竞t舯忡q祠5晙肦!△鲣禁\夵涛佼钾o﹔鐼w蚓2湏撷癯/;=苊畵,o⿶M闫蕳/偘\桢氖f茁?v;Q秹9铬:栨鲛灤O欳2繝l铎眯秆 除竾 +鱇鐌滪O莠邡筠俩 乞0a3">}A_施zz疹l穂頒櫭 c?摂啥蒲!:6Y)vZ-刅鰖甘Svj3W诧{'/q置觱}楏題^湽m掛M黟 渭z渋翜簇9孥@蛰q補菂s:孴sk鱽愁,m#=6 @螈&_+j騧1讌n羝佀蜑'H甪禯莧':h簄e飀车w>(i蛩iW愋?U貃EX6叞髯@鈅耞9HrA梥焲糇'.飨楇q<濎閐O'{:yH姰嘚粳-趄P闦桢K岆嚉/剑s痶t]^}潹珑e疍榳Lq洩 敯朂蚔 +s簂閶鴗鰪幾Zp咔n慆吆q-聯轣湇sm哿G烃礬f搩 O豪uZ]肟A?澋 A{椢.e糱@_;呴g遲6]ほ軷=菨湼駇敊醥^潤O蠓辜 ?岝鶨 +蝬a辭;椮较S壾呩肙$楏2VA!h僴漂#-熴\n-籏 +/桟嶜戭呔N踇W坷OZ/;\榘懜abM}勜'讔~D牮e軋煑霊=>櫸 溓塤g=N#N=戻%矜x<璨皐9鈕尞庇<窂琏a翄隙謀瑛裹狍工包r墾^f虻[蚖w;"qY}r +喲;T颙i/<<:趠u +-\鮴衿潻7$I诅T=煪7m燋T絋}Yvw螻祝6泇謴71T嫹趃;{岿79 +鹯翄;/纇葈/p躏窯酷啧西邼蒌綠锺gh麔S5铋 =邡;^扟!*$S4刑肠鎦?垔圪{n>祀黆DS%]6 C4tJ簄垈,"4稍瞡*ⅱ洑!扴2%U;MM E"K厕讋-猣h挳▊i采=jA稤丹嬸 瘯燷讘N^J挭瘲4I5I,I 彼DS乘4Y9^-).襱~PJ篳"%U l 0綯+墥蜀r稍T*%YPtl裠$U敯A6eUe妨>J杄鞎〝:姥rR方鞕%$隁d +%E罥∷!s襏黆7U搟XW| 疉/9珽D]$j +幏(i* 氄 餯$懨1腶7芽N穟 r +-嘬HJI $h*L焹Fr尅墯 ɡ(矆蟋殥 ( 宩姾-p帾 *3嶲Dx鬋5 IV*眹C8x壞0zIPD`摹6U伨;~@7eSQ盇%靿a +<﹣7徼`GT弈&u]偂氃7U啑%4%糑顈怉 龝 鎈/ E姰>Fd疨乑誨w勹h瀺缱]伻v鴡窤% #乵0饍劤庪V |g7[B(袬h枃 <$U2ebj墠;(胘VT欈o陹F l馣%CU-`|EMv C +2u`!;h`蘨敔;0煱A梔+\&DQ杚茚嵅琄寑继 継4i扁)凝0H0呍擧8$骸2a"脬M. 1} 捀<_惸O碢袭cg~桯鰥0z8劝梧b斕@薄紷b 牗:` 儗藗拼2x挨悮橠k 7a拌oAf-1橫?0渄( 5糤D sJ輧a*慖` 塟舃= NSH聈ba駍(||EK 糓Q圥裈垺盦%篳珹右雐櫌-漛IohT4僒寫妱償&甡l1MA扽 迖簳V躦 傿 琋儘6,@j祫^(僴癪h膻U1-粢偮Q訦E娫Κ +AC賴l養腝D璥I搎,X(t憨谺寘Jx踐:gI.鉚鄅堉骵`k埡,阖倓桅W2pc郐IqN乻歭硥7誔"棵D1 %$}ZB%$礼壸T#锚押祹ia灏6慃 圬_賈Z8@m%藙蔂Q桯@ 7B-$ +幦$ 0p +倢 +rS诣[x櫴蔕腶Wg伮SH@:儮&i6窺梡湂)!bx剚薂`毫E;! +:<4D=H屌珒全Zq@敗予3〓叛F媪濨犐 +尙翘r亖7I>┠0.5窵7 聊亖 OM衣寊 u9屃AF0嬓哘蝫X{羘U碮?獒▌⊿尯 巄)皑珽I屆n锧胉镲+ D'瞥bqeM巻肁 谪" 颮Q檍oL瀉t蛁聟`s[H亀&4樚pφk矝$4罾"観A愛缞 tKx獂摆瑚(竌 /聥oq檷寷仐H +Z5$祚¥[楪# *虰 &h12長$ae崷6T崼迃]穌穽>仄圶Rd\#掶屻坆.橮(匭硈"r冬uG煾9L% :垽蠮穯_揂驸摾j$!*Ⅱ4 煥奃纓鬛;`k\6!C 0嘝}9 +2 ;U:覵缼琈A} h b僉rDfY2訆0$w帢靅&t^捘蓇#И s咺\瓐鎒誾=."|!ZfdkF楃erJ丷斞胐徢W腻`H(Z K嗉錄Ua鰅IJ3衻?@燾鉪6[cB'妀2h噧uB?+纖乥I鰬噺rLR`醔]%w隌"Vd Jh渙ぼZ 4豩1}欕蒡啮徸-(窾>㈥2TkEB\mtu,T籨瑜b貶A鱍2SN%((Pv eM3cA敎·5v撌  ]"覣 wAfxPG蓛翸S憾珐'Dⅹ欋嘨擉僉萭%!g衼磑楌茽沿g.h燺朒,F凐Ba{Q$笔 3鴼 敩l|廷DKu(5.:蔑e侚&杄鋔凂瀗櫘(V!* +8I摇鑳$⒌ p'Yn:X2D +aCh2衣%駑R6R疕k8H甘`4讶*2讉垿9A垭皰qtt晫r*l繦袄8PㄎD$鷁擬鎳T+8Q >身K塜 !幍,郲A +哄M4爾z垀o4粚=7橂芅:瘋](鵗夳PD'o)rPA我添J&_翍 |嶣掓AJ㳠Ce 2?蜇債徫]I⒘DK壋w鋳 2G<<芏犈癋瑁MY0HH!Q@缁@ 1狜n坤-nfz=濝0 冭甼}觡捖h)儥H讋膳Km$鷿-║矮M+ J夜xjZ1h`61憽K濝訳啟賒挋$O=IH4纏RQ牎靺箚5Lo$掅t i壷a$tⅸ +尧皭-庱f_嗤3-@"4擭鶦狀仑夿饯0F噤) +EF E发+(P皝|. t@泬獭篖g< ,L峀&>纀AF!0俉兮 r4cyaiQm78俛巿-︽ 箥蘯侨9喎M孪Cu芛鸅眒;V溒B?$d%鎜:V 5;h兊Om婖鼐0;忮轅#5 f =t# + 8Pk$S(1jP洸&绤枩徊N*疧甔笠OH#仭<臆袳m 蹱稇$輏燩()),f! 暚 孲怟0弸K9X戳x粡暃圜|G貰帋牑=r蓌 僥攧 +w懝:里z/衍2楥y慵"櫸P"秞="[2a*戦嵸鑕觍3崅iu腾)榮潨BAA盖堰驵H#"6韽#琩蛦L~R5R鴊8抮屟蘣溆 5冃:w$翲 &Al釺,6%芧圏咘帒"*a耟#/泸b僉%愲錂b9U4皪M搥/9佇 3簯Wt#@摨"毋)n ダ<ゴ需" 权F]8~觘 +贔奔3糓qq A旸15貾:I&SgAC睍 }4q酈f恈淵P2kA釄X汱翧拕d+茀砝偄0澥醙篒 +橷:覥%z侷@-协喔 `%恄囔U()苅瞡+潸,菒勣踤YeAJfUZiK﹝ z魦q渓$Zq"戄銱琅n'8 &畒5* 頕qd{抧3[9z7 c坡S╘蛸Z媹蔌p狝l  /悡]b渉-恳09恚/ ,Y臑P2 -c`鰡#倾裠Hhc# 觯k E羍僃G>濪檊rK褬芏eV迹Ir&`84lmk蔣5I讃/赪 D棔晘IJ槺'殌2艃p<旔(盭%~匕諴厴僅醤+嚯燃`  g-蹱駚攧厀5葅D + 絒羓tH磍坛hB摦咴dLNEt╕? G媓<牼K!厀L<+裘胭W2E滵6柂謚陻覌O {潝ⅴ 飿++h︸鋣WY-4J矔'1% +* ~"F羽)闫Z, 纫諮壻Z敄BAy臞媚瀾k,駝` >諮!訳慹褗,滈牅e肛9垘眓覶ZH|灿姶摏佮 y|褭`1%甂z婜嬏o@鶯a1眃M诽祱炙 +:e灔鈭萰&/!1爒uv褻FW璂抯w::撴插O1∝OHz蘲塗翦T-ァ 2K@#嘧BHP>t杁m衻b芡縐++艢"d^竖鑢&隝L9堑M湄囘9E鰤l硱3圫2涘騚䲠%骗\r蔶帐*D *Z,孫靑D颴鎬-廴檻淙閍>stream +%w峮=1盬旹釮9 碧\仈 $ TXJ僋RM冋l厸赴, p嚒0総皀?7-菢2輆R3 +(B癶譳:糜*@巘6&冬.G迼=9⑶重 呱VU枎评!嗛1嫟羵L亮'犸乜饚 B.>{U凼傞说r 授zI密?讓?z沽-巊蒂渤% H&崇5Е賡s薇0#嚽戠c菛桎L3eXH%S燛BM-:3&:K鑱y5鑉桋сbU1玆湀黌α宼v:{) 齤l铏荪冎艴师I.y宱IPⅶAf|2Y-8a剭 +蜌"翟俧(碭澈イ6']x弶P渌姧af([蠛<汥v#38>8廘簇&凵秈[臑慻馅sdlY蠔族L%圷" 秒喎@ 韙v 狲鯦W 摌1)嬏3t+朣[0*9~d = P虉吅6#&:(,羠 XlJE鎕韌+贪$髇L肑B1<噥g8"a"翧&S餲;O霣t-0%6PZ掬g62 +A/鹧ぢt贏埾杖⒉"&擸馯$簆s悿憉/SV]72oe孲F-鮊?E鳬坻擙s霕};媂壐Ho虥#瓎壒靪+yX+Q耸H@M虜'Z毎?列憗hKS磆鐵UτQY渥瞊?鏶J悈>合b0\I惩U捈&閣 u+`2m衎C/猦燳Ez價 e鄏皢%睃汔皛6l 釻m5鄏禌鍒zD,G┍=Zb71覒7iK畛D-袘#hK$l矰B認及挼 簳硘D k0@卖0<fGa.釙(M卐V@-诮垬 k7拿'[5*薸Aπ7g櫜v.*玵`V#障.鲙a揶:G茲=蛯檕堔)w嬳B, 40廸瘭翑59 Q蝀蝝H:)J瑵y1>4Q檍粽 PXa僉G-珓0<^$燪r<鎧I螜f湇禳bc)kU%柨"鉷[吱昳hK-u$熩骝猼!@t騝闁;6秈M?-攟y4ng渀g芼*鑶e住樘野鏜2眎K畉赗4瓂d"臽{髊鍚bi6G沬 +亪]S1=j*!L2殃A倥嵃湁抹8^剦(壾i済啃龋;x徚Ll√a(XJK朵?篛 繝獶A稌湆gP瀓8{兰}秐:盨k国O{s秷(!I%rAe溓 砶猿顉UG's枸A冇I-≡0$.7③>XWd6a`9愵%b SK櫗庫虀㈱鎊衵3, }#欨$+8t.#=(e諔株H|礸嵌{窮L柤罛拻晸囅e颈"8) -$𸨢&.0嵰爐A伖5︶蒐6d鄏" 長6T褅d刚嚗q3紝8䜣1憴d﨡喣d樛Am粀屛嚹>hK鎨 v瑇a1V ~b悌6*%朏唓^\涠wx=m/兩繽 H6-h 笰1.'僂Y嬴2亞l +;錫谽岏 +Nj绌bO璂綩賠槩瀾魜僬饵k{z=兓崝H些L嫫 G蝦洢9塾氻i辖櫻 g虼}H遌默${鎚?8OQQ<8K鰤碠礉(鲬ec婁啞mW斦(釬@Qt鋚穒柬Y帻i鈓JM4hE霐叵R蕶抏Vt1 +=aK嬧C膽V筒3欃朵m*d桍D{EF船9夢惲旨"B@ㄈROb帴b錒4SxE[ろ┫腎f禒-%R鐯艸+鈫nRy绌驾,䦷.箆)嵃gxlCg6薝DN3荷訏谍@ @E洜q秚蚏(脱儰Y[~;b淊 铪黱[x9VWe"汇Rz碮㊣, 傾╭eㄙ池in嶾6 +軸$k擲粔\$e蔳gi4笡廍6T媤鐰L>賠睭и缝橾儾$柕C&1I6 𵫑腅q"莗Y跇j愬O焙% @>7U職殠P漬*魱驾`y 皠0'H + %漅喣蘒籇m冘罡椱0诡F伂u胮&梅塎m)碴my蛅-砣S-s焖柉[扁`豟ek趓M.GB#e諙阗傀DPG兩堿 帘Rl麬7i錄fD缎@,蒣蛎懢H7酾8:r fJJ╰&]赗葳d鲐3鉁Ys鲈:騍棳H熣F 0猜R{:3迨cYK尒T+ N6-E糢蔆W潆0C転帚L齫dY閅鋳檬(&K+⑽\6帨v3竺b嬮[9缎狋兀%筘8鈾旬G!&E聇1褿8"炱潙Dg磓@P簍7X蛛h%薊L荬疟{H箝 睕濖膽忛"策錸{t偼-1 妊镢fw1俩Z 砜Q- mw滩{l蝃粀祖:d靜s/p@鰗仑j3蒑痆踻唫Au髅畈9堨$洆塡囄}妄麃櫮阺蚂S撚Sc箧8|>$4%&R 呎#牕∵錊瀫~穭輒a弛I;66鱗菠峕1l纺Rk6[蝔)礄韤煜孯曤+V眼l烠?姺|~p藔D6I6蕘;-頉1頉5s 动A裠8*m贙q鰞6A军秊页"W兛^U儭戸$睸乻p9f`a 础8V狤V0园Br糗敺甉恀D  -3岡翫K仔N%揜稇)% =顢糮Rx6狙U櫩傱0眾嘫lk熭h殽r嘸榟g溦=K 偒萀n2_+婆p圲ZgTd圗1s2 穘鵎毺絆賋]砟趖柶6OR敖伓7F1E↖B%*譃謋-洔羷m賘尤U\:被呀賯2附雿2摜矍傧X托*冧8[窢!>)iMb{I蔾l1晪>塴6蠂疷P溞T墧e寑*褜傛椯3璱9水P%霭37蟊扔h講Ytf恌垆X茪@* 螞&摫$u7J蹤欃纱钛.\纄s埽噂鍩a萄3侹 Pp棊RQ諭②衋4绖Qi轉`@P]唴j宆7扎堞2鵇aY癧da簝詵8捞 +m蚥囿i槎0尙搵忪*鄊酣麡隡L殉&T2?礊偘揧<衜"拍簍种韘鰽6柉,t佗j括hX@p婩弧 +xh4A$/躛/韴窒G8犌$h~l汆v[dKfc}14訒nV絁O1V暽=c]%[{槼啚另6皲Ya==[m"犂鷗种眙贀lt祷.7n鄃柪嚨g禸eWHg牅!┵s!,A 6=m聓=活%虯ofK_&;析$"燝 R腕玴hV[眰=M:zn靆餃晨彪獌 "憭H腏烃棭湑蘐焨∧9$tJ诡mQ{镩^衹vs利X7衦賄9蔍25]W仩漻畃蛔殿禠鎺鑛$F旎砏5骼隂詴#礋; h擶I蘤飼"刀惬璲斀m,队ww髀頺殐掭靚!R<<@奾 2-R橱B蒍`zY揾聍7姾焆i涧9噍g]挬軌d懩耗va订腊踪uX远媿谕!鞯芍鬓劢N6鹻虾 +=b,kO6衼!鮬S:懲赫哸P悲M膘汘{賣輜4甲咰檏漨e)4&Q覯遫鯸'[ +豀═殺繊钁T5曱A譓4钛侒a 甚︶N 袖稠A]"懒dEW駩= 郢$!醛a;#砢/@.zUX2 5鸴3T6z咙G'?t雔櫹蝵 A紖谐衃咥J+~@庭P旸M傜屜俕览m槆`8^L0g>穣鷞藲嬍zUt娸)葕塭nL栜 脿 簜r%9嘉娇,鯁郉儃T/C $n睇洰 咭鋞嵚硳8缤1K󼢆.9C趺C Ly+砻邓⒓:9禴靪O鱲璖_S;3k{疡山盍禇 +l;o遰[濚I腽政EN酭N:枍i猉8V㈥煀e燰暬G偁雀s +7B9.b洑叠莯02J1_J恻! 隡}聆珰簀离阾?韼KtT. 袉5谪>k跡Mv>L_芮砀:疫醽椮乔q褉t嶃U浇匈~屖舼狱CtX;U)蒚LU罦1斻薭R7afXv絣 幬範 Q埿E馨e*钼牠倵}汵鸍p& 崦啲刐M04虆齦礉9{dE續&ΘH簀^鲴hb:帣|`k*2 艸'<[脺 ~?d|甶1唉.嫝%,'=q拧渖yh废)吭损穑//磟z牯愆綀蠐bR邭}g鎧<` 鴶DV70, 堇蘀2狉b"鎹 +t狱Uwm泮eSP+韮~m忰=6|T廉蛮徳 x~紓 +卐94胉;靴擐[D躧1X媍蚎]芧i0'"龣棼p珸Q5糒呯燄>t_h~鑮焟<@澧CIWp藛f*赾T+窉钂j +g!爂諙檵﹤=櫎6 Ta-3<铎捦n寓髹/沢k)捐{辯蓟y铒穇咞k蝱8%=t叝fj今姙+Xo~6u3/_黥,= 匎镯忥頊硂荏e1;齮訐{}逽镬頀慝~j{8焳呲k魠]忑7l釅畉湼雉:邃eE镳y橥諤0焬wRf_哂亟wP[O庸脷u斟N氕/?襍絬袍駹K裷縬娸WN攷q歶惄留7瘁畓苓iM礎⿶腑悤i剖 ++{仭m]c(J!a񔿩怡b$躰 `Q懕2S罝]lPh銡繨蒂剴乮I骗晪諃莏(X)峷(X衇 顟t M瑍僄^`7^,2%薛4:k昒T,)R'mffe餳 炮n亡3c泾.<{彧(喣晖 +滾|稉柂珨D女1E6謎b8x捚天炧 /K玃.,c+K<*/'P}^E?玱.瞞7謻uw琀%噓堞a刃nv種僎撆縟I*靉 忢Y:禿袲Y柡'D璎$栨脕抜4m溔儏B穽,涓蝣神掎+.;;[o稯稁NZx娉鮢崇㈨篆7澷犷Z毪扪l珏裶W@dg^ +蜾躜\鳉^5b <漀c$<`煌鑐ch豣蠭悅藸翰&V陮tk_`0Ub熨蚵cSㄎ1uL﹤qg噃w穟#珠x"潂c( ╥q31;隬敂茟摆>;呪姄h7鯃4VbC旇(c拵K:蕬晓辕鎕亐 腨@*蚅wWW邹UR鼾戧[猫.M!R賛W?Ev>9<+.w9=j1Q5w僢灈嚪佀垰`沽;椶猛o 秱,)嵋p?"v'#牕h#羂I/_-擨儰綢*糽n苰. +K釲0噜1B聫雫!L怵涤乧魛itB8褑滷潠蜠喞g\昌y瑅[蕸pn日朤&羏鳻H錺僔銷y踞s誳 %L经巆)魼 of +鈑殲 ;氓|g蔇鱊 +鶹/J嗍鱺鍌覇 麰#嚵褬'Z|XY5 +%7^4pM舝O<)文 8滿埫櫒棴鯆璙 个0! +$a蔠4杹UG-巐夹3尐齥裋 +n箏W&6鶧 n辯'驱s詃玮7L F箳U柸崪'鎴0蒦娭5>'軧v%-X墁犍nk 璱e a4緊獽>p=ruXl1Vgㄕ芕栄%`1pm騀y︳豬晅1&J#.]g虼d穻#癵鸅$ Y陣s-璢14ク|%JK逞*2NZX褈(m騨数Yg吽L6Z: ^鋱4Q勐"潈+趩緒-(n*铆hrg砠娳J/$魋懧芌臩跋 +,7<鰖憊葶"!除-4[頫:凔骜嵒F$(%厈橰pX(搒┕5Ko>魍E6矣Q?1W2霵儶crA詰!u5Z匒晼隡rYu+e滰栆u,z V眑9'*+咟墭=hgT辉6輻F蒨菚! +艕饰:雅筊&「%楇49IV^r骱N.茜K処邤婠陲个眿A:8Xl鄶p(颥x!纖4犯f*Om 蔧{AwDd/蝃+赽蜦(勆5-1馟%U!1杜读[攴5筹桐 +HF鮨o闥tK眛嫽4(5J%_茡私懿 D蓝枛懵,鳠暫X-墕+肬贎j囝f0=酼贝Xo鍟澶\%Z&b )n玊,啚t憱F▕咈忄颸Q俒8YQ ﹏ +煢Iu阫 譙Ey#餟i2gD(蟁刍碨]荊愲*Ar镌勺he俋D_襮 兖`0窫9肂籵;誈Y屻d皫o>胜IWi檧i鮊Tg炯l溉屧 赂趌Apw镜X)^H,VH惭j% ABQ熵r韘;K门4W濍闸 +囷Uh;>椁eK劭吱P罣LK瞀厑贔cA袕\FQP]R貜%2枏#c鉋*_p!v0}棺*$tt +1騴咽,泤M:5局5歚dI[飕*xR+紪緭蘋hAMs頪鱕舫0羵,WI 壄莘怃Ze('r庅Z躓赀跻寑籿睔罎]P0Qf棓{(磏攪擘2K"m蝚m毼ァ@/'橑橿郄A嬸.諭tB '7趘T[w抃垻6陯鄦碦)綌u"不Nz^$〝ia+妚p鈥$慱'茩奋>譴潟R鹾90⿻媦i瞐P-L冉H0嶃`o闣+咟嗣练鑟 5摻2\湂+?q蛌〔諪V禋庨疉in%lX v訆紟I癀嶝'纝<寒墇纙6^羾搂B$ri煹]楠遒膒塬J剙n俇]"嬗姍邸-c侑勾r踰荡<!f羷-6-馠袿60W蔐-閨'*'E銈埽肘受1妫搟纫<Q毴靐;QUy蘋mz褖mJ醻茳扄[q駀嶱冨5滑&鬔8侸詭笈梑颜4à 8 蚟"蘈)窪墾 +*^u罥婹=$$Y豦骡勶劆&讋J梡オ霅;>p?)s\KOz 蠮眎T瘏&旲p%l畐3i恦狽鉃④|;堩N*溍P戞@* E# +`1@%71氲3X棾RT棔玔 +L﨓鮊巁聿掔风*隞X浐W泓4nS鉏'gV机*YJM4絤檄V2|"恍コ畂斥拉禭菆济芪M儂堌陞3w,樶5;KW6叹/郑uM/7換錅F撚嘓髄B~B曣捳x+斬1J疺xLま掵986M鞊K俕嫁r蕾-夿)! \3_b上-藕Hl;賯N挥r擛穮+q楡柾璴9N嗄晌-|8绌q蹳H0(韪悉醃礲8羑d?C];4iキ崪晃sQ咐'=5-苈V簒DQ汑〔%吃幷P6(Q!|靅g絭33嚊!/a顊漛b'Gx8f1衈b/諺ヒ剦噐*磾橠 Rl 映衠%4G4?KZ:-蹁40o偠劃P峁槧d舦棃\麻A狷訐批r证[坛/Х櫨垅O炙冑耢W綷<燉[忳椈\鍸W._棧if=7移e棚黥w=y饵箈0籽kIPY2檫剧拃啲hVtb9:蓘$唲H}鄈w=赒茨ZP举べ_#B邱蓺夃焀鍵螺X[饔袭釤 +,~枓抃鼏x鎵楔牍)$怼愗牀鶫'4=2饺4缍Δ麤qU軁l蠝宥I髷F򰱈囻茗欜鏱0譖懎#N "纱w8懏C忻h袰閥'E)8晷+衦z橌g斡騟6漡毭xn麹鵶9O.O禗媄暌聭塈79 獩拹咲撝::惖cX?s.蛼漞毩xf麹鵶1KT["1)-鳦 X劵C罦z擈垉0-p毇嘦逌3O熸樘04囻軠齖螕&鐷鷨;PxOs"ド&M堍孹鄸/y4OS"W湤rn齖虛<兡G4碶/袘螏袉G褼旀#}5鸫萡蟯/Zゆ潁苑c>烀,Mq喪櫟鯊`dEy頪d诫 8T8cc庸Ts訾Z漈q^娿2L#T?!VH1繳這=咉1d$爁,貳,&+ぽ愐/ 迪濷1拞1L麓鯊艅?!饁災縉 +?i濘#!-=Y苤驕 :!;袞0T堂鲺徝敶%嵳@殞c6t肩6 - "沸H冁*#Gu:d蒵5v!$麹y?=S鐘i2酏朔1 邂?欚q]庹塮囉埢誻 6泙%,騌輽溇玬71@cz*[耝 Jon塓?圖!鵛T[xi鵘鯱饎瓗*O吘嬚>u=  螽 .-悤逊8桃s P踽d横 P 戰探*v- F牙y甽歸(X栌儭 ;*(oIh龛An#纼HnH乕K`a锒渢╣K 6E奙汙 渔>艀c鸳]a儂,鲞雇(煅eHB<;?浞崆ye棵9轖亶[魆o,媘tj@蒥A丳犠/p港蜍7繘1P梼A氌骞6CRR淣鲜6ZC鷸$ SL;円籠t硘5攮 扸l*D[猓戦I?僩庖&P繚[2旙睈&滾i悿22酔┧D措俞Y涺芵题 巵枫果7>|{.椦pi藑薯圕 LeC绡%$郄Q絥愴 +謉ⅱ擸\/餁惕ねJ'帶S絙+ +猓~N]4P帠b9 衅*-薕梒R遴qe4LT鍍A7圼p 羢O瀦箞)笻薩烿vC%堓伍]鍪胱減G))铭t橕a芇鸈H斞2╳炬眞8A蜽稀贆昦cf~嵩 菭sQd驭9煒^%dwh["t2炯e{禛"劄l櫲臰蒔hc儖8k阽sn 锵A洅n}礏耺A!):纸&m贳M鴘kS^).1р懘8髂秭3R虰檵0$蹳%4l_p_嫖璌 覚!#,悿笔爜椆~xV疜鈹M嬓尜t胠校C#Gymm?倓~喃h搻鐍 j擸/C浮_^ m撧膠 蕭!犔悜B敗,2h8l灐q孲Tf-酱於fX&燗Z;瞰翽N媆  鍨gh#0@m4d7 :摱C?迫恊72ヵ,S.珬;3渟.S1]≈!馴*Hb%˙!i5'庱葼Vw%鴀m彏緍9:2榳廼@詿諭柭~$: 藸 4JD I鑢b +@褸羠碪p蕑~M集1c&2≦鵭.欰閉nX?h丸cV朼囙犺烗hvX5D]墉胋1Ux懟5綔)伺艪瘚A废g區蟍Sj-!觾Hm?淏#鞡+-UMT埾5雹U k虡織答驁xIz//Q堆 儞 m%幭鹤4挗乒罴磀$H厒 寠w筤S0+錘Ey緬*Wm逢|鵰i4栵缰<<泇 +褣##芊晅楔鉎3q換?趣4犬2_S釙!嗧擖.]礇.E珬;;咟総咗蝕過胱疟P殷`琇xdFUJC糡M<,樷犞w顣- ]l4糈咆9衵!駶`訓鯀跘L'拠A+庬kV\枯刜封 +9ㄈ顺m諿E薒PI>Y揧便蹤*EnD@9}8仈阣6]棳泗5帟酌極-:晝p犍x2~[鶻出jk+@︿4幼F=鞑a辦z盓^顔#藓TI V蘪QDIo▍酀@櫡%6謨J鞆/m,x,胝鯥| C峼醗*ヲU逫& 4倭!WFd蚃槺蜲苒"0#啞 椰hE3邡o2(I軃)b笹%q|嫶+Yq扝―8逾ro壷vN串jw梗f r&n c4yz%Mv趨?咕袻悭浪霌砱⒗L  蚅J铛饚$_P蟼4驖挂愰=.(羒歖M^P|烞貯X}SzW#嬦显U豘窼(Kq晊XW *13@3 +幼<鏠 捎K鏿r}aD[*阝k嫣亨潧@ .7拃&訐訣瘨胃轍7Z*=n馳兹Mz鬝@\凩徹娪7浓}弅秤f2忞孾歅僢轄L?囸57嶙 !'Z锼ㄟ$t5闟蠛>荂 鋫>5腃(6#)%┨)誓3(媟句V?丐%+Mi"欃椞&瀖!哏榟 垄試圞k錔 毖Tc\孿&</4@56夾ZY勆j #bI!h妽u崰&孌h貫=)4暾搳u t卸瞚)4 +P/驥(:"4姶躒I⊙dぁQ-Xt襅毕盦4篞魔榞奧&惣鋘A隣搓錋$p壭wE燔鯅!G勛峾.EG3+#4EG鵶 8Fe|vepT飩殏爁惼<8d2(;&9楱.犴8 + -UO'sI盦ū忻x".-牖 毖.荈节4氢籦匓}dC@ 峼紧<5閈;h8=(?>譯@T 燊凰黕扳2凢 h +峼I鑗PH慓杯荾嗓z}癐#n2 ,忰w喰ㄗ嬺m瞶蠗w斻碥=淎6壬渿(3仳m巟第( N`鬽鷾很&噪 t耓艩艶僞t P妽"6殹}妽>荈僯瀨旣a殊,PS! 峺 +巖w舔A檄9:缯嫚j +/G,X堕 9棇覼裂*h昻毎h俺2磃鹽Z摶潓儰"匱@ユ77"粗'愖!kH轊9噭枇7g5]= 悉嗐Zc揦^3K&#-鲽飯 &5*T爻,dY0E溱qXT鉱埐z羦奰笰(鈑hE魽撘ER2(%穣+葼!滺q1<堺FOo &誫槦>*B!ュ鎄f抑*訦M16勺 +殨柤7v7 !聠PB杏擉bb"a+A%}e鐯埪b+r峇R5梼@涢:杉橶s>e^.鰱怵W漻~!镎G蔾K!〣l橍BI+x圃cWi瞈兀L}!7俗*\+H挶R巡"\i|宥諵Z洭2G|[ 羬Wi沺@_dWU嬟+.爓.r结W湇}俏珇婤纏L5}楝鉁~S +.S ~炰蠎2剝o倩嘴橔v~輲㏕I膛RN:秌Ki8/f遚h蠖\D 爳G慩s躕孩擮棇薁鋫ym淔卵霂 材蓯J0%hRrj窉哛,6I译僘负)2植YRtH栲凵咫g癠僅R夕岤边袦#ビxm)'冴 M1讕韙@r蘒騂驟械c/^礒z藑"=, 荰 N$字橳R: 厫歍喟*f:k歇K j訫aL(@閉巨>z癝>'~﹛TNP\m紝ㄋRZov&rL酒 n7<蛮阳牅盩lN [@ >槔p=芕骱塽罝!Jp巆R侹-潤 歨1 䝼b1皮 W\CuRp浬汃A凎(/a!域瘊p~ =A/f/,2f-UX燪/蹅u袻 ^8偠]_翠R匽u 1jvあ蕩孊胸︴暊纓T%lK'褹餯药 b瑒 QHET4I槜^C)8荣爄e4殐W 髚*a舳M鹾刬 +T0/鯹捜 +u ,螿鯺彂Pk?魑[靟r奙S堄*2a順轕銿僭郥G蒒R:24E枈5Q0U 蕾3旀譸b煬B賉2M!(c-虠茘^x汕珰4宄X\34シ绡 9餓~U跪r/柏=芍;>觋`┫d痡鯦蜭辟 +Zc(;d擜(眾肵"嬃 狒羭霽zVP(膊h才㏎┡b悘鮣#朘E[偆:薨鳗fj*38柿浉婈簥+8曤5WpR~夸 +Nu^q十@jJh&/[`:.末臃鼗溥*v z儐36&d谷戫P;/{2+|糏闠P呜疐]#楊,篇mG@%h>湿vaK呼9梔+戊波69痓 <"/壙詳dQ髦M灜&bY%V*瀊3搬禝K Tr訳虜刑暧瀷Q孆(6qIu﹫獲AE廄O`_垹OЙ腵2阬Gj 9桥垼[ZS怇!8哗qɑc.z4 鷕 潾砀 椵)}DnC/┝E鋳峘妟逑顄s鴙~.I诎!w蓡I顠 撥%[誶H筀6宻條樹.侔)w﹡癐荧s條財籨$w蓡I顠 況條.0蝅倁堾捇d嚭)%蓡I顠 況條樹.0蝅bc杭狭筀6Lr條樹.侔)w﹝0*娗筀5乒K6Lr條樹.侔)w蓡I顠 撥%6.0蒥瞐捇d忙堀闍蒥瞐捇d忙%&筀6Lr棳邤籨囀毣d8w生M筀諳r棳熶.%P暬T<梤棳熶.侏皟.Y?蒥瞺捇d堀祆抌*髶%7.Y?蒥瞺捇擛u頡鯛.eg爨E祣C顠鯎%肭筀謔蔧瞺捇d$w蓭H顠鯎%(輒緔辽I謔蔧瞺捇d$w生M筀諳r棳涗.Y)w﹝P⒇諳r楆酽%'筀諳r棳邤籨8w蓡I顠 況條樹.0蒥瞐S顠 撥%&筀6l蔧睠a嚁籨$w蒒 ;l餔X可+憼[冋荐J约!瑹x%豘宑仍+aS鍙阫c瘎鯖幖LさW"乯疍傊^夑u馢T儓Wb<#覰螁bqh僕b繴竦慦}騄{敿誑奧"*疍顝LK昗"j&9;騄0馢$g]頃t鋾y%#8馢:騄餫M誢 >p礧"乿Gㄙ鄷楡EL厜W侴<艍W傋R{%x诺WM y% +L'疍%+Q靅騄;溂 Tz%j騊谠+1~Tt 错垩瑾脛塛b鯦TgC厷4鮆0瞜oI頃H芃頃69痓鞎摋x%jJJ&讵<鯦#'Oq鞎萊op6訳偊^吤灼^墇?婇嵔碰贏\o餔尒CI7濦,-*u摁枻璆綢鬨~*甕H"A&Y-棯u健殴6O唊哣I*n3d脏zpS槩钀)晆*:)就t_穻"H稪4(\A1T}a[ &梋斜:}upQe杵%失*徜虏$槱狘*VJJM胑d48隣(俍枰学洒\試N. +禉)\扇滏] 凌x犼⒗"e葘.<桔pl宝劺`泣: R皢*囂Rc此^a[凰:吃$13K,@URe嗘蘎歓.QG4HR"傒烻C洏m鲵斏y0;排(iTwQ珴E%D寭RS憱5脐墺v泻幷鑣A!V雡t=M箩6%eB:蕕R唒2t徜 !)躍Id帀* 庺 -根_蹈T4鵮儝bT*3''k=R燫崥$3蕭H_燉Zq$苁FC15J5T$+检jg 饣 +/ +KW纲jp犚>@籺YJV鐘ecZ{蔠鹿dks鍛F焣S9喳鋓V>儫]*屃&鄢  k螑苒间鋒@ィ}UO{z閔嵇ょ朕Y =;lセt錭媲鋪 L^E菐H&A=撙楡[u僰{遰*/Fk褳绣殽丒厵TfV%躼G呼筶Q鑩v记y%H构毤,w瓫捾WC痴澘橠`1-<膒啜H E薶丶 4啷*嚡 X危V蹜#镖<浣5鈺vu'/"崿uZ窆J +Tcm趩qD舂u笝FE 和∏閲藓8GOTG鍱愔騏C0E暼3NE棆D US d蛛铁uGs糐k灉G怏梧聊剘樍 +鬜6%2k鸴I10 W莍羖_!p隅,P覫_&鏈Mqd7皫"WRt甶蒌戍谵鰆:n倻aY9eo]穃Ma<愜|m豀2艆Sf㭎'im视鑊檉煶u2BFhK+uF&恍9c汽睁倠r_錸y唀\=6(kEIO▽&P巄'ㄌTb`敼7J猗!葨艁珦oR羣aQU!Q}Jx<TJf竘犪闍奴NRu胋(!V + 揧傛门Y疆,吮娐关kWz秱|唁z莚`讣m耝U8刃!]HhY"d肂,W╲闰薺UTPv夘9"兡徍灲9薒焱阛('PNPC{鏱5/bW娃=l,禬鯠姠卋&y肽E{%n咼 +渱N7赿焬痙Rl狵呼胞p'6{5卐イ񇛎端5峝 c棦姑d拧鴱冕 郹菆-倖=﹜茙+鱺(7((願m斲 5y筎3|D^r - +J7N罺鲗j鏋潝`b翨/c祡兗4抰疈*,?辫TT夈"#~歷j9澊t(2衒fBJ烌嵤蕈犋(頊肝|i|抡铔d宖X)]pCH鬉X﹥u,譢>羶L醴JI轸婆H致惕鉊:I&?  .轀[渞)8=4G!Z慪てU'(捚薃桭定閤m9l3艶)+酌查,B] 7"柦湜虓⑻(D閾"憽'G-宜#磁δQ褞|Mb陟宮妇x滞8&|>孹/畝qhb蘽曡JO讷袁蒽藱熭'A赟$#﨓?骑| 8/*鱌:秊¨M肱bL儝鄖 R樹d剅LW^*'4歄9澭lF摍五3撛 dE!癷F蛟$呫隉)㱮W虝け疬?溢錡=罀x摕/~r楂畬_0成H酎M6掕/睒6o7yu蹥N8':诅HYET^u:ps`&6[窦鼩V涂 乡熞S黃蚧W_鸪蒆y寨炷Y1f殂u?Jz紦睦8O&4銩y雿i妽')2aV敟腀[6R DQR>JO惉鲯'J饰勀蠗4夺m郡 3嶇 忆迥%晭埓Db今篧鍁谛eV>谝2 樥剹鲄/I`蜜4~IBf'*腆| 6鱏⒇o蛆J>熆V鞸3煊橂)橢U i彁g曚矑FE蒝峝l 琩豸 &剪aτ佯I毹崘u7鶱餄頃:'蠮緊z莑dJ +窨]>:I"銈酯:y破鳧跶(+萊傢;&.cf$龁w様'0t鉵5zX渿h抣帋 桅9崰暈伴縬 xzmj頉t;J疎髜st魁妖,s衺A嶇 j屲壟癷简TN舢>阈O4洪{O賦蔜I湝砷椙g?]虽蚆渇#s37皢Aベ9g雅苾2奄&4p謾滆捃p7*洆#砤闉u:7琸&Fw竮s貇鴩韚o鱳{缚z鯪淢_勶9谗摲~霁席]_熫Z頱篚速;欃术黄=湡,謬;麐N梴嬨唠cwO戋:Z璒灱桪f $w<轒1氋-鶂x漜'浆盆囟-けE.W齰'}\慣鳩 +Dp>.-闯鋊|宧KA觠坚莑 蕅[閼o5蓒福団U鰩m;/UDe娳蔫&鱮徜猸V唱h淕7Dm#:Z~壦浟Lk胎漲e><弓屗B媵VD+0╃勗!N媓#Jku3擪喔p蹕1IoY7巬88卢錷u跰斕%+祽:/┗集\x/餭z轂0;筋O8赍BCl烸身:n峳0豵9Dz烕#U97燙>创NE惱u:瓼e D TNr0z鶈!?R餠 Q*難崉@)ep!w曾E苄  A_腁@ +m彸N飯s鯡踙J绖畢=!凯mIW8嚯6ypoznU蔥軮B:z僙HGS唺p撨旮)a囯 xs颞h鹽簈R,鉺墐稉泝>u錵淹显3攭ケ9券 莯踯#qKt壻:`-聬銰3垿S _鼆+坐C送陒趙攻僾d秒4╄鋏NxH]u鑧,⑦{ 覐,外9峱搝/鳦D -外w! 蜛+/5絚鍐TX)j:O侮培*$1g奵∞腱愓勒i觽 Q恨t隊O`a笇俉Z摄 - 粽桇G 摖o Fr嗕%怪\搪w%}Os7R鱃*Qx+="1u質!絰d幊ho墠穅汻兄y鐦蹫;停j抯r3 胳驭扱镤`惽杰霔蜂"A潢i诡戯XQ窞 9*荏K*Y鮎2-燢<鳌h碝bHW "砬芭襊肏 f孨{DX4gC脺Q =-彣6jJ盩甖咰涬 [H旊. 拹=)鸎孴娵⒕崴|:zh2斺!螲#0萕%X淂樴zo@nv蠮騢⒅奬8'0莡蕒龚恉艥 +泻嵷2笺戱GT 靦3Zyh癏HC顎+黫算姎|I獢y';荕 瞘辄鶹顉馵璡余脿s襍 =qB殒3 瘿>鈲加K彧 驜 +爮r郱 舻L欓A<$hc鷾觟潲幸,Z鑴W.翷 慪滈 藸GA寑1=榔箹_H滽滥H/∵]荍敁[埬O竎 緿蔥衈鱍示S"{噬霉聁嵕億螁`^/#燡)@荑:,V~ 詹&審9(>梧U犲鳙琌樴惶V9χ昱9Tll钩E>-筚m?b嬑;Dm+矃_BM潔:a墝辮+O穃Y噅藉9d=P'瑬c(%綴戩罈#7| 偡r$1tu]5b;>];G倨4e粩只鞈m烻>航\堐凂阑J'遤酱6煮握儤w鞒狩碖%拞J綂N3G=瀽圪rY=驴2#0蚓蔯 m|薊箘6C_1魵zU+7J跤^褸愞`觞挀 +A愔 i鞹-q"<度,鏝舩 %.鮂F-挫阿腲呴2o剘儭;缧B爩罈<.彩繣}| +*剨Z钘h笶Z囎TnPgC瑂<啿詻枧阆%%.遤氖傌*N皆巼懼婃瞖螁嶾佒q鼳綛Q窌K詮喴郠A  Z羼哎b扳裐鞥夌D-埥V9亀qt泌b耖X;鎙^H芕,4\ 坌-.刺6傲4燗e擵嬊;zt五T>jyv膰;p g鎍FNa媯貛bG K#,(]D)輄4x.猶褜 .zh;譖叴嘛dp1]4R吺严" +妦嫺7B艵M#攽:4`泧+*愭药dI壭 3趭喼侅z1e誤泶z筓) 廏供読Bl_ +h(0#毬=傃q玟{B 2СB陜.k2w@竻 砓 烶)'斊冄M74╅q0弑躦Y'竲6 韓h9饈}唳輓(T咚+轕VD0v莡}|獔n[FCA閽50-梃*|鳣_ψ鄁b邵&趿3R暵饯頟悊渫鍉圓靘賋)m鑘爯.uC泡涆鮞埿[4紃mz坓#阧h6b >獭6t饖觡薂3cぐ<洖/.Xf甝羽谌脔乙:C"C Kd+=_,苅谝\W鋂j{ A鳞絭-o製R鹄j<默農5脤求w;+鶻眙⑴崾箃殗獩賢G T漝_虀/(旗鴪R室;憪鸩5\{O譽S\呉怬-{c鴦1躪镓t衷U(旴埅y帩+r瓝叭曩朅囼F詛h/黕瘽&)愀畹~觮-Oe=LG 4Ⅺh檦煗═L礡-锣t(淜承丠莨贊傭嬱侺皼僆 Er?彵l 硠新8襊㎡%>墾;#祌⑤鈜篞瞢宷b 储|-"骂挦嵱 涅驃+ス#PL18/梈RR>什* 荞阷堀儊掫枛銍rivj:閈i馡5X+駌h莻?N镼笆(晍蔆仰=Ap_"CUO蟴X)U龠,MJ廰{FD2V飣8h5^榳鬜8┕幃PI炏╟<鬨缻d゛尨N+骼杋組(砉t龀qD瑘A +Bp箁9乳珠&鲒G9⑧({:e)p0凞@餛Z=1h情槩D徿}缞玂B?臠壘鍘 ㄇ4驑t揄甘"磆鉚r虏楅鱸圪饋D削髂(挙绔.滵絾讏弶/6镉ADD2吳Jj:脭bA鉘)X:Y鍽酚.0刮屍熏DmK鱜} J 4/e輑[T妮蔭 v苉帘-磬n鴕├.硢8w(4宲丑4赚 漝37,+=\韢剔魺FL弮tA峅撌[蛒%例j谋类げ蟈禶g抂攛%i^昀彑6 %&/1瓊鹯碻MLHd獓韩m%- +%行1礸艆c抶粚.蔵w#j+K癡倗鴋蹍榯甼沰 傚鞌5l;'M棂漗鴵竻;=澏曵\藡@鄽稰iC,薛n祷K+泭"鈇鴪∫K米Sg槁华8\財u$裈zTN秋峣s漫菓U/8{瘛W=蔤北飕;蛏sdN1)g嫡q嬥檟V籘■q5{ KH铯p|怃鈂斥儥0Fg晞n/煐+蚿駜RC娗:└!矗効9~袇z1AXqJ;qHp+滀陆妖7]#S婀肣2√荈[藽#躒k掁月OE#蠌 +凡Vq邿-嚒Po剘圽'洬+詅{匥_嫲;d3 疳'tn@諚9 2败泼H縅盪v4/羾兓醢KR殊u荿9b⿴BB1%味^,噂Th)g#"g鹞7#钸s + 4,mr嬂f氲a肐t8籱/jG倦2f r肠@sn;砚 邚?*篇Y蚒 厘$Q槕,K<5齬(頴滢匆悛U  +72o;9X98U,]rU/h嫳 +$堾紹)l綪宍%縛EO鈹 +;泮旤:情@a徚k镺欹.菠H/离y谩[{峔v坛酼m"e㘎&;順)N$聬磄灩趙8{X橠Mf痬d単^zZ;\I0&戨忮E1鞄S峑N>堂賲 +~;:{ 煄陦rP'甕蓴qQ"YQkF;8恳{0q骸-O簱蒁D h揬L!珼V<嵦亍 掁ヽ癊.曳6槂zah龛""忂闛发Z/敍oM)j`輗!鬯x閮:1T]l^G踵 糡旓鰧.o9"薐!╔佽5溢>簽eY噇砰.婩鰵貒堔<*t +l醥<{趒鸕a"謅!圦簼饍憚蠩藔>瞼 +IN薢$鳒sX剬<醪`婰*cZNW 裸w樜NU脖G1/8荕4[Le4:d4溿噫u两,滿`≦ N珝#抏Tp>噈$h)疈\腒,岺x橉$螭淰靀r堉臆8鋸慟悀珂翯<鶪J-g僚揂嚱碙拡麶薔P+8TJ咨9徚{v掷c$蝋[顄g +T䲠8}佗獋#妟#捪Q]6Z*;駓x X訔5眽蜰&Xe磉K瓺P%=%*梣*珘o$鲖竹DF沗p魠&倞饝g7,, DVHfr鵾藋忺R甫=)e:>~T緌 w鲧'|[緌崀>輢踞◆:Q僀"缯07熛谆+|5怀燝塍吆迭侼G~h搊韵輄旚6}lq<=^甝漨+呎打=休炋%龎53瞀墇跳噑)>8粇黧k:冫 ~鬓r淑7訐醩愢b矬;竺W护砲(闆陪(壷弱#?芜r|桹孨$善滃<絛蠼=&泴P^o~#葐G輮敖x龠';.},~ごg遲.啧y倌0Aa%C晕>9<,鰂褛,龡f}嶗褛7犹 c&S槞o忢砯xy箍8~雊>:\}y瓤A嚱r齪EB孚谴╬桩搯"MU庯, 凕 +Q黩p&鑼颽僜鹴y$E?横#廜婊/狙Gn虖椈4V噞撍組婇熠鸣鷇悃煬W/遜6`猥@]跓繑_*娔p敆e匍3wt7d*擁<[YD薵\朏蛙 +-:啅溄扺@ 旓5巛$ 噆?蛙 _IB妕┙邂餯稚远鶤捺;7nT蝧ag'菋踎,祉齈H摊}%$#迃覾M+啐毤}ehz璍饕鐓薰b搼?'6+3訂:e魨蕋唕躾DYbOzo牍6R@鑷t芪鬘蓳.旇-谛迣珡lV 呀T!鳑隸NO.T職枠靮埋鰡.OC蓤捡 z戬f鍬MD)|廕蔕C[垫峈尔F:芎鹢篝/啕q(鬟婸y>鎜pf茎亏5祡2鄧f軁?岯駣(榈u /D'?呱纯;50*#R9tNT袮l藀qc)糎:GV肇臗x玺氙_晤蠌_|'盍旐R8螱谎T淤旼劔鱼譲 J苑塋憢p"忊身h3J]-V硜uxr( M喆 瞶z|蛴丛俉櫁骿 z醹k:=~>遊}鵉zDk 案(;凊晒$蟱墶镬煯雱潱鵕 !嬎靳380Ui趩p賰{坸]強龒绱茶贺褺1m12讃{雧h耺)烲CgXbm58b珞o%姯>掭椀诖/霌騶叠:a堝漕駔祆 +Mp迃挃G筝抱菋噺镙忛搮D6g房:眡篫/f.智K銵,僮.*N緫?A襁d籡a髄漆 +"J弱 擛鑏忨鰀=?<&p懶瀖吆什h:櫉,>康x禴瑗屈穬婳?x黙>逎镉鉾骅砈鉯絰篛茗8箨` 桝/=\瑆i珀楕o鳀嚸\!aN杝*%帠WKx莄+嚙7WG1儼乮闥潳澭K 缲萶桎 濣t蚝滱鲆螤W煏搡颫蛕#m7K[s浇X抟鷔a+P嵓}肎皘 澕吋齛奫鱹4䦆e瑼下未}饾A/s﹁ "yQ榲 鼺Z+呓8桗啣綟杁鴉3;Pd:G硟谓酑o'zs虫曮!_镃廀怌=蜔遗-竁蠭凶'岶穲Kpq觑-%峥 \|g悼?[|7A銦d续U頓QWo晤{餸-k莭w嶍鰠傺k癁h遷流藉B滠べv +餂惧r晑垩!C-猉鴟肏_'# 廌嚍 3}肔耏歰l镲啮6咴鰒哕6?A埯嚵 烇璑護旂*Qz^萝▋N掞\6?\婛>y苉5!"茤裶q.岝璆珶璎q煄蔮@O逗Tm/4幪愶埭鳩赳_/`皋鎗}竂响扈航Y莴&驖$H尵鴯$黡%走{嵎埼.惣4|雑?V#韻;2N瘗辋?KN鵻yp?p37砬v詳r?┌马n.頩饜LG25娵n}遉 斤Y硤鑃镅n2zik燮 ]竛>喼鬗0.毚+/沨*泾痏c详?减硣粵鲧蔩/O橄b%. <!沿蠿ns 棴鞡灼柧#=a:G歒G焷矃巁解,瓍寨~〝[U1 .萳n欤伲呸0!皨4D儐呅z鏩;磖t鑤(~渚\汯~dg孆楖<透霚邛堕{4釬揤n嘆笋%t{jBR6唏Lb(楀6骛羫8,v5 破玉宱槛 z7鹅@Wm7ve錣^閔珖1n緶C鬌-}瀪#j蓥mgZ離绛i携誤搚櫨7}!|z藓r<覼?&璓腿S罕(葖癎H屍{薦&A_]"7孡爫 蜀&F#;>)忲{蟒怵d濭5mo%嶊h慼[/汨tU襴埲i{%衮笳頱輷5 m舺&填w謌秕挽#鷔鞨觍oL唔钄%F;n4輑豥.W虗jB 腼兣盁阶喉髴疝簌vD 嶲玉Y耰nz'估{4ADY +]愌jR踏c,T3tm椎Dg狋纳裖粠子m兴 帢 %Vv╜J5',0lK鬎 BMkw"蛑v$,佗!z01 鍯g$@荹T髢blxC姓豖A炧d2 Z鐉疵:u#*廴`麔;B蘢8寣l坟b嵕砎8 +Z泙w鞂u3柛垟J莓q泪魂橍$懳6:曆兄噹q挝{%AG2椄,ju[a朮U雸Y3a;翐-76c瀣勾&覂垦嗪飫}BJ欢鏜弧6x):聚[嬑 g踏嬆(t^D }遡髽崙"[谑`z欚鬑&:v'\*>p)挶t坂唻尴Z4矶瑘銱杇l;鷥椐m*RMJ$3 WlJ z +謙=灆搷 3偲堋環Qz!m<邡劧A;p( IF酏%)*]始'+鯠具豹0孓睌>']搗艔嬉惼馡英:躢4Z'5iB0樕箞嘫7R*xlp1乏cGJ盚>"Q4SR有-蠂r(頭箼=012儺&塃xb,|HsrP軭倎oF5&远7碸釓鈽炡P睆湈麪氏+w臂L櫎崭鄊cY0)抃遍櫇櫛fJ,产>3.招X nC莲憱F'巚@86仩崥V)bgI穔Hq:Kg W0洱5è裊橬組D鞰C (0=牫=)8矄*弇垺粸7犓;&C叇堥v|<莦&j]s铺啦h2z/lKG福褉::l煒Sg麛Glj傾尻c敠$筆骍楰 yJaj "#%=榮b秹蠣 Ry\R朒樱壱"輨橪O炢&3)岝 殷棼乪幇6踿f萷@3{稻F磌Fk厝^1蝉裫I 8壮E榼亴> }G 蠨:虱輛艹n*v荾鞉2-矘Q 駨@L肁KV鯪鼫t倖O/Y匘袱7聙"醼H蕹i骷0?覝tjX!m衟掎 避A[4樾産K紣]t蒊 竆 陲Z鏶麳'郌J~y瑯-铅f?羨搅荌E>惇D2!u妶樔塴wN +cO\覂g挌oEq潜━Hv1蜾p蝲AQ$hD=剄顥LV-iHL66簴◣N'e D短观壭垥n糯>#%咘<穫毚E' 竾蜄蔶-o$眝f$I栾腉蒒狨膔b蘄(g腇S儒=mG靿鰭葷To:螈蘂痹萊& +b5敇閭憀s"`い燕AC`=р2"麏y驗v#偯/h榁穱6h拄Mo╅dV\Q$梚wI&璱獟貖w2<鵫茞)7虓芼艓vH孋睋鏝鬳$鵋&#諡竚友僱幓3裄歴鳩;h蟆螁啝=碻鞛-芿艀遭#J'湋fDNV0薏倀#yv辑m殰珠d楄飃鈱,<9耞]儴>鬬=?|FR忂艧絇}煳|-縳yI轤蝤鬶辨谡2髻g噋V_恹g+脻洴<螘牖,英x<┞W>X蟔rH踽W[t崵 襾=19鴓;︶h:扥拿:榁闠j=┎4<#B_t0x-8紂gb珳Z_虒l:栅睝 ぇ摬 鯊滞JD 偌蠴6Fv!睘$7塜W膑沠麮鏋81\桑5Qm)6CX癍eu\Z6R砒b1嫨l濬喘诹碼bm118聓E荁竀<媎垜 +遝m蛼R8雠FX橛#齧媚b嵊"e!VH鯡'f閚-煑}闔#駚t竼$K瞦zV穰v倌 6;墔傢 R密X擀呺2!撐蚜 H殯Ir︻媺7 &F徉% d<[=抻A儖!+(+XDFD闊皠fR鴹H噰峡4迪mCVG<恱傽H_%擆庫0叢1 厀# +0[槆)+I{ 澅嫺'f@鎎DYぅ}!@*uPя榽U7 鴡dm鋼肔撙n懢e89轺轅 q矤焫彔 +椹叫4V0壦M (v,7炙g螼 +羊赾旓 6糌kK砂@鼛#墑$IBR窦xi椟美0(er鷙囘%,6遑韈'R16l殯mu$t墘3kl噍$2.℉!鍰Р壞,>;鞈嵽祆舺hP矣塡i鴨檁C怋@浨籋鼪币掵呿H恼j纔"0闿塮$B舍摇鹓Khpp祍 5問脶順鰰$M綢&繖愊T䦶嵟跓噶塅2 矦冢1 + O*擁1!廼O鞐q茔L17N遽!" e钆[?H5鴒)U戕蝤なcya9-pz璀薣Z妇9蝍&幦l.俑2尤<豗磴SF\痸乔4蛰2!觥K_鵷+炙9嗣bo&柶U)<樰煰_晓q逅迳骙旷x够U扑rgg8䲡霛舲~5M冩^M鉁関躗頌,On蚈h貔@~-鹱>^-浞+控忧確[.祍掠>秕~F摋G橄桩B8攘鈊綠蠡x 蟓区b綹蝫%痙淲1蘷粬w嚙v/鼢謰敏詷N奊'4仢綉螳7O閶92A鋲w醌絪屙1闯煍板=&厃wqzE诰!R鸙 葊Bf\$冑糸9 )鸆\櫤dG郑5餥\技6/稆逇3奂y-.^b峣1r徎稞嘀闇閻 詖A/^Мe2wV'輀<=y癪=鵆\q緦yщx#/$S弇家"羹呸螋`鰄q稼?誟E>9\钜碎冏3宋RRO廸w鯭镶p睘=\/碢\Mt]q齨z矜孂胥T磴W煣姈7撰k肱\.鉵R埰x糕齘剥) ]靘y郴徽n韾欅]7嬕$妇>資妥{焲r鱒殻須賄U渞%怗孆'獹rH畮l莋q\嗁L羍嶻5m駋S篵 窎荊楓S#紞悒G忱5=检 +甜ea?J攼啒)TF蒮壹 % 贩返砲脰!l鮉觤櫣壉iwbt篌纺喚哳$e6醄nOs狯囝G5蝎*鉒骄飢鏵猾遪v:4坲鴡й陑敕>}亨匃官9鸤o豁刿 鶏厉祡1D(肏痟鹟趱燀涃薼嗷0/刌6s骢嬞撆W'驰{藫ry騬剱M撄鹳辄賐鰌utz4 涌笨X燧`芥覤略:龖G{竂-樧癪題NkM(范黗38:菹)#愭k?|:构赺ⅡfB汜<>Cpg +贲r鰧毿D擢U#"'別b}髦q筼g={oE撑頦O桹<+Co軅G0"蔒陯e簳~突w籶k'?柜l~楶 鲅bLJ浶鴓~膏馤|廞,雮讀掮痉氭陆9/w鯳缅駍:OC寨'纎3亖<郵愩槏釅9蜱帡|A,抭M毾扪r{rbv)?wX'gS骽緱9ч姾~wvd5{4?&创偁盁%=u篙孄9熁搚f噄"o;筝舥巒&緹珧恸輫5 氷胥R@铿Oa寔*yvm壻e:%N耱HV鴅鶗∠衿蛍甽文释毗読 +ㄚB尶鄾桮冒|鑊轞+鏃87 +f戳旧Ac帝_'鄍讖i嫃嚌 干|)F賹奉QD/旽<$裾1E^1~毁n +綀聘s嚎烿≥曢疭禶氋觢D璑O鰲噵 I阣D噫o輊坵#w3寁蘣e&Le趑铪驁x拢_椭媑礌 +歈'慭静f&蝉叅$(顤B7淕!冐ug ︿鋥x鱬o裾cp噞>@!=>rrgO灍焯靸嚈栉?欠:Lk绝v2G'&>x,g镊 幞'嗀*餆藻巽撜.c89緪\j膬r|:1樰C翶z綮鮺篭|I瘧*}RlmIA盱耖3|盭廛296Zs(褭缘昴,v?\癁.#9s壧謏謡yi愬蒚\朧,浊!&炵&~7:揋XHDe螰聡+RV栟 0鲷轳"婳d陪7<8跅>I<淅09∝戧掣<|9Z鬴;%篡;嫿 〉}$*2鞮0q>眞y鋰q燥/師g輲5甭绶 橸r蝆畍_惾=[)輽J鹛蝪,9䥺g挽Yqv/z仨-侩 +NO巋I`渎舠\貅h綹罹,鱄Vx茙,i歞嬓 0萙捕豀翚#滆,;!鹲.z9癖k+WGY,眴y偻O珅鈇u4:RIn:嶅旯3蠫 U*籡'讃脬砟弿嚣&?8:是v廬I缡3T<簕痱Eyd7瓐鑨zT'o缗妸 &彖涬藒swbO湵砳情 by媮y^9~袅嵸蒇7q=n夙 炵 覙珵?崦懦yI馗U虢磴荩1<礪?踾~i/'碴3D孥7J蠱%+鏲儔r~x橅<& l鏰碣翄磔蹶椟摰:;=玐(尘 PB&Wg焘;.毾q阱l墝﹎弽屶H谸qh +O脭j纣婰缚.徛欒迊?澧x聣rg>趑饎NVZ<%薾o扼rvkM嘸}>a薶x轢7S$&祧魀鳒脛侦萃m墂䌷'錩珴r峮箧倇>燂-謰KSA:﹎o7~q|7騇钺犼o&咠.;僙鐾.{4.銭e蜤4g谓|霯*>蝩G/M阎'$q磣鞎望椣躁橛頁展,箏x煍 #t碀<制蜔憣{毾硕 g蝷~/氼簴$I娋{魘叠>昅过~諩嵮D>gNwL0]II*=襤9S1轞虖&毸%fqr甽鉭k 運_$译}q +@[??含 纳谭袑.狍孟c嫡麿稸叁?{餎/豐衊异廣9/縄裴薮你擙$M d祡 + 斻珬A6F8:趦T劭馘锵弲/箪H#>K\晘檚$烛XM犴(潤猼魕汓j.J/F绒鈞pDI缤/"癇%vP嶺痹Kl盒S界鏜 誷牟<[驗ws紵淽O徬臧7 y鴅鴦S粄鴅唻冨湶r襻/蠅婏 L~N:腆$茹孄D\耍鼸騐Lb鵞分/#恽錶"qL;煣4姠)r)桡7鏕扱斊6|',躗}y(吠& +鴮8瘣Hpx2Q舗挷i +(2锑.堥陭J;>箦谜铙蹶`q"釫("-s8纥i07欦h婣!f9娇虇F _Z/眼棲鯆迸Up沃o_蜵4!#iO疿l聽佥胅:c烋馀G頨 +腺餺秖魑拭QP.馼譿撰濝山批r,>G@Vo"湺|禾谔7弥笢a._迖~谄鞝F7涺,7鷤続匉紦p氕効c靥/q樜壡7颚t3禫^2任研獫紂緘|q蚊%肘鴇)*崤 l)+饈逇灛\*濝魫喣YH 镳?9^皻鳏r醖//婯铈Cb秝'品cB椮)#今音x飢_Mz鲅釿祍鐟6a~侧膬鸣r\+礆虛s2rS港(Y饧gY*->|yD1狎2=剡_;H愀鬸+彗<%o$E/>mV坱~t斴/W<':洴?<_淘詼 冣}<pv<嚱@hV桄3痄冱`i紽_媳禹 |揀Y戾阾vDb`FBl!=-焮.p薺犨蟞包!ahv猜'v冲 炏鲧/9哑媭<>輢庨=寂栱韾6釘f穤: <灊継洣鞬s容躜桠c萇?>顟5u?犓 +鲘L讍嬋囏邰蕊$&H/Kc柢姡蔽鍕b覂┻#A))9"Y/I?p硱EN#夦3?p峵鵄袖縊瞷夌~蘶H熬DL'錗Hm3穊皙#苛鏍)緼"包験觀/`V.袄縓噛q缮nt稂i唂为論*"?dg罪鎔彄@摚H'5g}玁gDf9T滊uVH1扤"?查;臩|[梍-鰤L.歅矬諚.'QG8#_傺0囜昔_/炨暠&<躝瑹孜縋a 7W娞蘳颿箭鲔稯麌厚燒钪鲲迿j嵡O鉃{縻愤^G锟筻龘~y琬?绢|v委?竪5ns\[o魁圻矸殓糍.芑脶?割a達~蛊疧|禣?萧彑w躼駚惕紫馌x*涍鸠o黝燄牖 捉鸊@~蚍輜痣.z禁;熾菝=嘷熜0黤镩椷猢?W/>v粲?齐穙.彑\茂<誴k1ewn.漂熰篆鲊_s鶪n冂;k㑳V佑躡8竤箝?啕:-=拷螭箄z}圯o輱k[?癔钴抉[K蛳;縷顼窞胈蔸柙/c嶑殍蠹炕䦆窡踇w輢{霔縊停/罪区у厨d氤抠踥o莞鳇縆{B_佳芈O炾胚X梜挛/~\顂鈛墫鷽怇椸/栭釤績-z9睿a-蛵??㧟琬耨儿嗥g{t}泠礯x炑曧g咻嬿nz踝邁pn紉g秣鍗偄喯>结 +鰚咦V螻稂蠞b黨饔浰>|鐆凤3麖豁飊呋髊t<蔟k/眼葵蒙篣,濍湾=dS6>lo黹锟篑縙\轱|{饂笊h>鬟絳冔;惋O糍/炓~w7耳?萁豢∠葚咻口i踜荗蒗躅]蠡?qP~?沿鱒熅w7n郄\7氕呓7;谆熯z乎w肫o枳L蘝魁嫬?{镔溇< ?U|#2垹@其1榙2666&C>鸼?H$0范瀧膪襬zΗвt 潣笼甭魺鵢 Kw祙樧黂膢髶=圵h,橎浔P a釓窶X能馽裩眴炮憃,&q,钵盩􃋼娼酥wq,o癇mk繨蜸+OMc胢X蒽+`,T, 楢峰荈l蜴u`硋}v稦祀3Z涢[殙< +鮲卅媸a粡;:+LOz6Y褯侈鸿遏x*F铦覦OT=MVV屴*U婾e忥{;}j裩瓿G_錋睛瘆V<唠Z:哆= 4H蹉&6窒V鬢窣Z`昦;詏雭s创|}so4=眳瘤3淢_轅医羕C`5=^&/C捡鹡HW5C綢d 逦2b^=喎邎有3,哸p7L胗絘\~┮/cX7R 昧滧6阫/E扂6猓苈H凨縁/諾儍裎-m1c*MZ寉:4V饚棕p"茙+3茼簈2魨_曇赂N祈12a酳1櫥詹 ?Y&:]泑nz&$裾4 S睓殈W茉沪堰rg檦菗篿2c烻徺颤|5惶巽讎汀:7V茰蟮K鍶w6繖篼knf?篦苒7楖浯u,鍯莍q屋]嫥=tY炉醽%Y趚,匷笥RDc栁弖k藯瘒[V迓豶\芻Z剃 +v/d嶞幹L6艿V彺经沠隸0~積隷掟Y徤掁fI?l^幅隋-6:竘筣鷃枱秐1毡M6X肾}僠l豢譶J飌凰7貆敏藍桍L鴒%嗦忷qX菃獛绂锶?広橇噼 氪鉩Bg层辕邧N);!g聶:我咦瀑h鏳些8棶坡y鷡'\x瞋q?W|眳`\ザ点j梍尞i⿻wn}憕q;崣;餴鸷S萞 i鱷8rr艉w跹尠Z/2,墭w%娗簛h;撵曵k4琫$67idaJT戎芆32!座z2韣编Tt擓㏎応赸9 +~jW6Xh[汗蹌Ny'-侯O閍诉従S#忹樎=抠S灬zO譶N壩 a5x_猢邿楘猓2 l/化鱅毳"Q-R.>"愣絫詰+恚戶l瓥靺桫I 糊贇cNgj媀髅Xm[G:哆N僸w-鐜'%薮毎j筂`a2AO?壧g;样顋%~-覧因颤M_O玠iK鞊螑茴?p&濯陂T*GS豌睒鷼遐ic黥欥转噒辨r滶"綕T9鷵I於Lk%2?鯱/k辄瞐"槶螚瑅<浒-掦:罺卄rC覩%访m<,ヲ辁~欙.2腰漱鱙p紩勍鯷h?R呥`n_礉╦1:7嗯孥bX\寸褣抵?"铮v1簏9柇亇S8r筰I厮媣穊#眝%鷵LU轟?T7篇{QM2齤莐╒W/僼蚒蓡kA怔鷵6,-uj15 绷>>帋痣萵舣禒兰~>[藐o頧cUm涱构仗虫╢劬ax嫿颊C众埙駅植 璬j7惘[x裒"d徊圴赺嫣o菛lz楴恹y橍濤W4吁鍑枯n w織晱>1鷞閍k雯;6z-时7Gh缶守蕔螂`飾栾Qs4ll2砿t ]ff畣f弥k<芗G灘0猘颻拷5v礪檘罦>眣 +jM.' ̄馽j,覺驾櫨请烷㏄潊斛佼霄鯵#P=槒鎭lJ呴颀鶤?W砭m)辻=驗ヂ/:葵u骇W滯)吼]k毲咚[携腽㈩^她3皡^[〓虾Z唺榀Q鴐鹫秭Y熕v:醎~酚織蘫喁w"+}w]臺毇請k胁蝀攘MD6侩)骈蝔1嬀l)刂涖蓈僣Ef楧交Nac磌緩粏睚仡lΟ喙, 揿縤Μ怖圯l&组祧┃臣鋂 +筲9?阀?煂?暕0綵4轳饈7胡.雬%澾荒4aL嘃8蜴料7b=%e&伵﹄O&琼e)?k嬻媆;?c専囁#鯮滞O婏7e麰B_恜 鞗(k>o,S軑eCpc)\0&匁@ +VA繨U莁f鑺_鋋焦fVB?肌匭7 +鐟Q穲yY卆 'kXw〤/*q弥g嚮w~囻A掱C酫锬徢37崞+N<8茵鍄y 褩瘲O虄0{;&觃淋2ohD﹂/%肓畿毯y馑谑烹朙6W喥_嫊x}竜韩嶱8Q)L雚o瞹J悂N撊O10擊义>x罅蒣.掗$鐛耕瘕+留{:侨+i[櫅)`3 >,慔~繌Y←+戺M獧齪軱縢{ox秀:? ; 苵酤勤 1壹:執'!剡W矨眉庶踌τ撐7^)&F邀_1>ZR,楴 伎~u _蒊-yrd'&]翶偶顰b骸绝枢玀㈢礜x詆7ょ)僕蕽t﹢5椁兮&苭匤幂 V╭7K娑覷耞h租踺鴌/G馪披辎藖銀兪圐:1狅W0U胠/U;4蹉榗褊酿2嬞 f修<~蜑讣Ed岳 ( .鞬`(坌`2囃葚鰓D褋奄邞慭斆U2梈〾命Fg4.堡鎈课嗪⺪1й遗Ls棛聹臽: 历娷"洢覓趆丮巂&`x漶^W驉 @F>7腍恡闣F$#吽您e铳覠@{61r戰潏/{魪6鳍胃"笋謣g旲堘筣硚.4g3制'i s&{閅羋隂h07j裦蘎 枀嬏混舒鹵E分.i槤癚pGp僯榗帣=3)f味`蘟媁1g偖r`氀鳘:2#萑罻1撃滙fL榠';X鬃 9/柌mH昌萱P隝铑9$'7* "h?橏=p3Nx4杮3 洙So2c 榲鼷稹谝马iZ2灖?七=z*d抃Cd詘P-_Z昢◥爡!陨~;禿牔f酒訧IB=:T萳嗉'hJ,贿胯媞硶偤?M\F胩HA臺2籚乃 眵猈鱊d摼氫Z踬還qM囯" Ld>2H虜憙鶬鋜麨4喅晍洐亟駆n吨 +qP媓k閩劢`爳瞿,#茏榥!T*胢璯9篫Niㄛ|QJ rP?觯 90禋v維E +炅癕f鍫鎐詺|Ae腊H鄂痧_*T膄弚霺)―6槈蔃屚>2夊zzC";7$转娄セ輸剼s湭"╣炂短裤5i/du#刯苛餶笄1坅V 奠O鯴]9妃氬e泤,硞稻菈r?銜劒巷嵴w +漦WGj|9N%d狏mD34?HC-9L閟8J.9巺e鵥Rj奾[簛+T嗖嵩鼮}$《虽Fj+缥A-A俷o楦魊1[{詸$$b3,择8q靄Jx坅硗& 礪恙_鞉P嘒撰,TfU峭]欏材鴘" 讽麎CJj孀榛B厈#X擸⊿1'<<饼┯鰼歪露裪5P#{TF7鄀.闿槈 +'y(K詺Bu逧勱糴e60j7倂 睵c謱C刣,懎YXc(腊瓍圀"勱A*莍"濥铲螢腜?15絷5逬毺/ T:*k5轞煈<Cib4牖亲J蒺陖b秐&鶨鷌2`榈蕛㈣閅OS/鳴驘煢(9= RO>d)iL莽,nk您黋# _!}~滨->Z骈z锆 骬櫑莄尵麢H蘕贾杉J舐1\* 椐%bX苢颕趑 鐺緌5=Yd⺻楂蚍潚O誻襢嶕囸┿杄F娌》確鰴[觺&*篝炮N絫2O擌巕揹濲!瓬w孲痉侓?$部m搤Zm,~ .zzEZ蝶虎nJ鏌痸鐁悀窒z的印繺椟鰠癞}fO*襉巛j雳e戹E 栠俕驘:療m+V岻=蒿#鉝h馴酳椖褴G╠■歕, 滮耜 -殡S謻0Y/?┃饠愚飑扃壍W5丱:葀貽砾蹰筌 夐?憴 (u 8<眴 {=e壴漡ys0磠u_h c2R.J鮷W眷`蝫O愺w9御*`!R7|繢柊Wd嵷甙 e狏睵醞糍--籠"gxo葿f3攒 f籅 #蓇/艃鷌6甈岿*鑙T2?)▽令 B誫.Y―遏R梺3<蒸刧楇閸犳>yüW没猿羘TσH鲷騊誖[j&邮 +-_p\>悲頞鰣[H2镅)B=鑴糂熦C !裥鏄aY 忯<炜=翓3迨垻羂7EYbD鈫{眨帉凎0潘鹗z9&茲*W瘝-]兢$侕2黋 黇|5贸|矡!皻37澓y{~?鹟2㈣5櫘飴语E嶭2榡|蔷"喔虒擃Y8.璩薁o敗啩dI殙KO螰鰔鰷l锸Y(爗b33gIf&庬澶)+W2_I@傡3兇 麜雖E替r唐 4d穵"=e:d檷nw沂QNも>/=碨 -晐Mt~=}po罈烀悰螌:I&兇髥 !髧c壧輫mL鮟晋枤-歴m咝H鰡%騁骳藑3m撚 +%K奉徿jg +勐*鉵3d.魴#砩攥敇b括k摷M^幨J傇_ェ梎覵敧玫霄眷|Y,Cx`Ns杰溾蘴榌\膇砷z`N灯屦J睢蚻畤紘A觰献D(儻"犑6欿;}]p4# "瀶4颟H4鷳8I蛻涖6序w烒碙3k蜹阐) |WliH焽c C6|d忕w^(黠?炃楺曇n蘨嬷WAG;岏r( 痊A"箝弗獭鶌啢V3V9刑孳(O +敐 )窂J虅u┆LF迦妽GS 8u0庴L僬!2q<O片=8辇擛仮唶铮r顝邆蜳';(妹NV钏祥j ︴$V歘 廣矲縺<忾X偽s蕸醓乺+f=邹\W葯Q鲯馿賣x 皅9蹣>j鬌揞豳寕< _7']Iz捺Kt厣釧t豬cp{𖺞fE* +患俞(E捥孊V"a塲s綂3翍* +晎膳盕!}穻骕t劕`#\妿@ '≠)^視C+/)福e峬'GiEf皗7腤鳃籏n;W)鴙聦 ,iˇ輋冮lKB5[耏蜄87nx}蹝5&糰&C侧訟ez糗la礉P*ㄛ櫂H鍀零╆-塪■% (H$颼L(㭎Y=M 7>=桼s卆p倓翺AHj.硷偗4D 撅姈1.6 +镳枾繴y敼 O鼭寥I@8Z(A"c髱8婐 +,┺s\G懡峛拺呞!wY,緃4毿o尛"M7'諄G#d嚭phD 巉W5捈) 礓鳓笷&_1曠n俎0 N$顅X:U伝軩i躵7t=,i pyG玞弐窎埢菟牢i醤驍z溁丵 w姷{z-.3悙 畁^/4鋹x7炀)97愐.-萀l袱W桔~諹n跼wU濵Jq\% Oz4鵾WM棏7柷 K鯰gy硤螫!6#飀bxL?徱蹔F憊 ぱ鞏t2﹨5)桦狻f嶑i娳`w+羙P8r!姀蒅烙躉0 +S%殜髬O)1r濰8詫w岠H覦nY韄沊涽乔H +Gkp 诳(,噯=(y洣鈬.澐景nWJ8騒&8+8yqY~牪, +盒箺椯>6'S +/蠑uMT'7j!p覀鍦冄柺搠坭nぁvU%桉槟+]寐釖鮵场VHW"S:囲旃晳T趁礇q2]徐攚_ '艱凵xノ"紧 F舦┻龍鯢4Y*?脵 -竂愛M穕く 粚漤Y芴轹*倷"Y(吪rg沲掛'ix\k稸0o綉砆9oY#0n6-吥鷈賸嘵=趖缵9甙褬)Res世狢L [黴睍镕 +罋D扑馓"蘱塷i 儽雹FW╬5傚*f<騊s嶪[*c橻 筪J圆E掰袏bWㄌ柒C鐩`k缌3|对 +褰裪跎缄3霧檔M=飩>幭4烝,on衲汉唾搢>苏q)"掇Z$&`墒YG溨檰迻瑢E )蝣$潞甕h逾$垣U偮5沢'"DB>#愓:裀%姚誕%淤簳 幪sX鱪猂孃</爯哀舢築V雱)v!燡蜪2嶯儓x暣?晄#d;禰3狮2D{s睊佇s9Xz帲埾阯槕3𦉺=k-煿溋淎2 T4<醤-冟犳茌jyv廭1H97诏'`⒓_Ux嫬狞2勅攲bd奻_箷奓橯;祘F1>/ HjW.槪鞲#猹r|!&b8"D帢e`{ P竸鯶"-+ 鵳泛献〇{&TIs 捊摉< N4>粟濨7->鵿8L6/淽/酵斱C緆H?(d鋩2.!崤式u 紹襔言L椤tE纇操椛惁iw鏄 M容4.S斚滌鰷淨xMi潍3(耿?忞睏藯Z狉 <0芌9_菮M Lyu^"忇n{;瘹$特7蔍ij=輁n刣侩vK+Uy& a梩 +%&n +啔鬒;F(\@#團拚g#遗X敒j'^`)h槨;%橉&0颒駬 h晅'M 瑢驻 +H軮沦库I'_0$烻8OTO塀>灑鱂wN扙洊j炯虦to&ㄉ{0'^V邫頔ⅦF茖zo\忿沀Q擏R殞妆ㄈF1彻;皼6哱f$/B窩锿碰cX蹀e7:q"軁I|詛3="能喉衟#锝憣斂葒侽薱`.蜻巹P.)易劸朕<#謗 '漪 +殓漪R垻涕摜R~ㄕ9} }*禽9}Z冶乳c^BAk碎D尊紸竞 籔v摀7 +oraM殰D靘虩$?1 瘰櫼 蔚дJD 撛&虅溠G:榙Iq D╠獠i>奟h"@幜裠R乧罚 昉豄繿 +B2"騻;7葢A +!齌I{n橺.嵚L浛s麔翈!(玒@-蝪!yX猹7卙鰾0酙I]a—R簠6 +帵漠砌#\喟DNBRp c.钐 ;TIq 曇畧+椧葁N*眎溉{&4瓡Yf烥饹C站A<弇Mv秥bLO┖秊镉蝐o+[@G儶q.)颭誥^`ITH厩膃襳宒臍r葎栭>D艧M鏅 駣V^NP领>G=溛嚾M玢酨"桹ww殢(漁貾U葕袞'竆>醡閨剩仇,籨=樜'櫵'J寉B:焤鼟)則>e7楲h/\=bv +B乙x瘂f襌鳗IK荮&-u煐茨 鞾IK!)IK7眨KZ偵亸'-]5茢松HO懸榬┤D嵄wuR 殉R)` 侔X)B3覶&┙I辜),囼=M场==趍B賰b 蒍僮HH. 瞪姙<凬滧顉=苿;;vHd&K'喬稻dnW喼 6N臡焗笙0GM2肸躃匤 窟[倉K弆藌k描噳zM槰W茰硹$摥S鼩榗嗁>l^?sy~ケ椬=,鶚;6a鷶U>3.Pwb幘檘LGt綜[袐vD_蕌麚旎瞧 0y[#q" ?G-楂葽`G舯\>迗伿筏墍9+vD緻玢QCi2痲~KEa"\獁[刼yx=ヌ竜B*"\昒n 栴鯨闠┷拝属媲獘a酸朶燙i砲_ul.'3嬗9%篝)zU歛庰鰫珽0刉鳔褚你3p76W踬ZS害Q徢]N胀宏`崪-嗈螼FZ 掭螼rNRQ猽骬偈GMn汉.&罱^Y%淽鄜P蒠W堄簘W!=OXC"> == G@O 呇蟉-}咈絢(<: +s篣n岽怌`真T DNHえ^9镖苘[)齕=uq攜F晉23)2犀?<紃:0jd4'T壸钸杤ゝ濹%|? &QvO罓*玊匜2M锶=xふ聐<襓 M 顕G:^&J殤h鳫@q牪B繥:*#g!u,&2髒N簁"繥:(崏槡:陻1儶q鵝1憵則@.>毝:储&O@J@膃Jf4軑4mo&餖岁o(ワん庑;2堿:*#c鎼撟C.彬咵╳u 8芁騩淦Pi 燬n =肏9吙蠖鳛溌6妵D)鄴ixN! +=歋坒#掰Q0凨R)&淳$昒V箙:泬髹;ю溌 +у粌捩F僈沸d*>)7遥贋*賠O虓"KfZn1DZ魊瑠O蓫2:D \煈擏瀾煈p枲HP|rnT,T?;}芞&掊磐E>'勀棡:=)P,N>橶x乏苻飦廊5L鈡8# +n糳(幚鯠Y扗,枮0榴褬H劼fhiA~詂|秓!%矢,@ 扥閚M詋P/郎蓁匍=VO& 陎(嵘膤艛πkPSvhE`遠HCn緗幥M{厢鉧譎/Z)睨_@底# 臹冓厤u妝kr檮|l"5札#26钞飇4xc八e]吣Y/Lp|抸淂e遦懊4戠硗猛寵D3槆R'F机fz打s z<f收裼i蕸閣u岄mo蟘oz炒&o姱╲;F 趔谾H捀醝茬饼"@L傘苗f擩)黈0B8応E榿=忟(椕,諸R蓳7jI +p4*{%鴨9\T嵛 檮'l痸s 僀l FCJ*?:筁/Roz醩沣轆&Q╃L)=?Y垠.黺: +AT:洇艂梈氇鴰g$L葞N\6uS披>7槹菭O訛IㄚcPw[>7閬兎{#說鹞溷k徚;}漐{ "蹫忰鉴 >躢P靱PV极菭? 璶枿碆鴥 畕C鵧毅濾! %::!Q*d撩M蕝煲攅#缒}极 羋J薂 B&〃c!"Y餧忖z挘奘Z 3_聑9彏M寽峑:*k,Z2鰀娖gv椈2$#疝覮荍臈趸痷2瘈a蘏鹽4泡GK*篦绎俎[=硰'蚓穊*辁H哕-C訜痧T){簁BY 伙+d(締陓れ後廧E'郄谢皼^皪\甡Wヽ唰[U秋SHd邟騷 +M禑蔜闐j7恻~怚 =軪9,<Х*)軣&*^甚)を"/k黼$瘮n揶d梭脓B熉笲6f醯+5S礴d1 扥潘}劫Z(8'庈C曙閤i!=2趝:d(霼D'q鲷'vK+曀搶jfu迺岎" +_y=阻陝6T殂!東蜷;崄c + [x狖∮犟**瀮笩~V糷輦壎Owg疟~箟9pLU"3粗 C蔭氰T祽%衚 j桱戀鼿掛丗焰馁迀^#4汙=7郭Q%繬G1笖踯㈢ 迿j"RbL驷毦~k0馣lx荛迻擟)瘹岼v鵓UzZo穖I枍LQY\啮腐s[z酉 m輅r劑N1{躐Bt0HMy檄齃J2仾> @,⒇I饹U9"鯢O 煬塭綝襌閐 祖椈#@慑殠3(-0翯c~ 聈*鶠┡2s年=爽;w膢翾dF戹\z!劌6o靄W~䦛D衒6=擰'汸F{V朝鎆"Pf藏|撆嫱摒痾擱错鴐妚K6E[蔳:T槖敒(oOd暽絻=Q>=玘g軎鰸\狌p6艳<∝-3奓婗/E[ぇ1=轆 +"8屸汢m]AZ!#J8弇話 讀h賻n栞C鍑歡c牉Tw&V%O"O=彊A&\MU囐悘桳鑝瘒QT[} 磼 &.3J&01焣醫斳e篕*J +M滚椞P:镽莗咗M*Rf藰:q]帋2* 烕AV幜( ╉昛6dE堞鲋8薪L旓錪zB廟0娯竞'H䴕-旸tP)5魬;_E@^岣9!玧 >r][kH幏J 懇ni"棠夓p'r嶴(麚}④ *鰞 灈f剽%氥X抙>壎e 趀rG捶E#褖鸵陌,茫獽 517L匿ed埏玁塔噸拱?厧齼a淈倽3Ol鏛熄蟼UZI宸N-蠛↓5瞵欜尗朓3锌?滧[秐壘咎}%%話2N冱 下迊Nl3t矛D.-o疀aOPAM 螽羏Db$俾l馿惘伟櫒}b孔織橇那胫t 鲫l苅B氺墄箞 碼w毮M轅8ov峟抛Y炱y咖崢懚鎩Ο~;- }蟜01G唌藋儞oH喛O3J鯆绀O熹貁&除俜7a傔% 3@啧怎酀贤构狲x=媜饷#辶;繰?O賄D歳蛎pWYT荏/遂蔔Z秡Po迕~O}槶揹1挊兪V侬稐j鯫-`N伐佱痾3|谀 : +|b嶫7Zs`lb伣T奂50迱g敗y吗柹4[,Q}!G}Fc<斮 Bt*=N讥F僉峻C苭 w"]X查?2赏軗將qk8TA羇宭0i囬數 ]沝Z@F{>^淧'2簫o.]`胻祉O齞望x垡菖7鶀/;v 壼鱇9駯觃瘒茩匦&>M4`f鳗鬐-芁Fa&翷喙I櫡垨Yf: Z訁警榟灛K,牒娸卬箢卛C6=砞?忉2馮萹!!癀&喏L-qvC 1@圁:Y囐醋;:摿%[q2獺+蟿坫崃b渧5&Wd=活s(賋{,K筗傒{耺+'擹6嗐渕O:>6旿.-階阱麦鄜 袀-|橬-~羛^>皔,坺{jS>$J]吕廟鍘狱貚>噦E`鳆Xf]鮴鬱 汮R糜6u搢崴2)'9+l毝 +頄耉i湈鸍脤钓\2幎砌 軁奐鋈砋愐劵%鄚[鯅p鞠~瘭?牼"#Z撑 dE鄭N扢茌.j拵(C擽;bY[狁"鱂g图巘儌r葕w+,飕]刜 瘫踲〣=筴榚25F轉椘G剦$12麄砦(6摩浀B%庘u&$愛kH落Q眴0c63蔐=漝栺跷=3jO!狋1}仆砚蜾+罀齥eIY午摺rl拯'勾Z_v 纖疂伩+徱1u9泭叄fu6e&0H\S泙雸#oA K騩嵴&塀隗x)d乔7,3裾矆`nq m&鯄,jM襐.护c葫(挶5([銔8夢琀z殨N;YTn,艎.0#9'b/筥 Ak故姮v8_g忥A1v軹;FQ撐G1馭欟睕$萹?葿紴祉壼f+L%]曢${U([",遤6媒艅c菠叱莂"餂T鉥o踦f?溦硲1}氈kq齄hLN猅34xY牨駲 ;闔<6e壻s直(缄硛絘桭◥莒T谫秋 iH3P饵VR a躹<陲Pi楇&3$汜獠k蕢撍5酉p鐧0罞冖採&%Y竸E繱孭7.嚊p蓸谷Z7>W钟nロ漑呉陥]DE轇0欵.淒M頹b猬沈4塅諃 戠榼舴絃仟e莹珵4= l毧螕;悛蘦販灕8#/幝5鷏$g$穇滀睫磔J^Ⅵ眲虇矙孖bY蛌%7,戕?_﹖l单望瘜旔綍-谽G$y榩宭覇蟂&砱hd0鴓d觯(黕^Gs眍 戺鰤耕癩0\>珇'灑( +夭%櫆T U娅彾9N 媮l闽BW 芞[硥块/U1煒X待iR鰏J聇鏣(/W篔蚥M齚}*胒 ~r邛┬艡穘I它榋鴩sIA&ce飌.>突=3!HU!啝(]诿|+謡眴}恱k龓=);评柇5&H .ev&9j'F帬N磃Z>`戺 鷗嶿4宝 A逆眢蕦滗阾08 啡B6q顴2鷏c hm51A)a:尡魴| d儵Ns峃骇fw誕+臈蒵豶'戀P焄я譩'㳠Y!樖rd7-巃蝏八歡繮#豰挃哷穒攔k嶕c|u拡R蓻|憆孍銴鍵筃蛙D搑滖dq窋b"遑$緺幌xS※蹐;功瞋欑L筟EB㑳剷(咜攴r鱈珈d6DZ稈幯T踭 Ak!塜C炍圀洕嶫堚*\_癗Q樽浙鹵逈;)鮎岪>侳/?D(簸)- 镵輈 ]隇=峤畫r%RU箎橬媇we奞鉊qo-0,綷擪T芵xネ?o糪.])m榃`f1)瀚 嗾f檳檅踢'诰 +嘻+cW奤㈨薸6wM/<7r姣篤袄彏 A+`4Z动钴貽曼}㈨珨s.eA}O酝-9篦墻沦輢痵仰竭靴I媍c=b輔魞讹s Z東dZ6谤i瑽A讹騥q塂せ鋒欲t:y翢当-抡蘑忒bb"M2k貍.蘨茊O?f=5樐w诿休裏)乄{12錛汕篢袽;%s恪$居~氎Nj鯃3E檙汶h矅u\坳絏3疖h1夛孶罓A祰舮弦琰Ak M鲳]䁖 鶥>2-k_薸P焄G6O綣@!*v龖吃K,f嶇ub墂 +$Y}Y B瓟L鈿嫻M邺&E`莓|L膕=箧c|9*F楬g鎖rR椁灈鄓X蹎 媛烅壭F{t戭 I$伂)B`発 + +{~~:6J犑U:瑙 墫惬灍!s铹5[-'軲磷楲胆}桽&嗭*&VuF芤7←h綨鍒=貲_Uf箪Bí 聤hq5磌L裦鵺"94Q1寃 *:咝墱魼鏻媮籭撨麛5A:0*63]c庇瀩.珜5矙郂钉糨罂`^NtC鍹:6 y鎹i宥擦I +榄r[唯掻釟@~B,'馪 +O?圅师>9┄溯弓O頃_}^h4臓#M3 堦 0Q此蟵u 譈*璾围Q饺槈2俞)3B奬U坎螖&>6茊驯金湕挅)~ 藟镺 V鹘詚d腓q嚵&X!瑰砮.d柱_:2r鋴:燷聆p>.齓抔倖鮉螰嬵R + VU毤7H2tW#t啨is嗈S憔1歨|V谀2粂#栫 '槦褏Y蘍閠1玸炑%L.噡:鎡汫橅/9庄樫劀焓#珢x賗帗t: 醛q5T/Q朒纤(,w赅B瓬l津╳p_輁礣o農鵧e欍勴U騰唽`Al嗑惻鋆嫫3韓瀜ww::洲&福k6CU啶K6轙零敟 ?(N䞍<` 耗聞嚧1鼭8瑧W0凣竤7覟"密斯攦鱜jLE +..溓08罊3x 櫙t瑓伅貘u1SR鼥u繵爨忍 A)愘=xユ勶u皛仢b频悠嚓决iwスち?谩H00 蔷Wv^燦蝋楥L户/嫘髭沂綿<糠曙++ | |(,)!テ育#?p貖佔` 棈[鎜槁gK疜為鍗侯>e2薦2鮘;)s r69!Lr3曘璃.羃B销(賵 丿贁>00浰4!滾誢鸬腈.幈]in觬敍悟撴=a魳=灀饰沫f跪轼u皿戫+叼ek煽!纊搪-РK湖ak漘划 巀#J穫/S螯閾壕 +窮箼庽匚趍寻宽訵矒)劝N<>鴣鍊{羱 }|. 丳鳿到S獚:n搵r喠Q憧6FysWs岲3垂缗?T詷爁箕%盼 s<餽 賝3/n奓E; 栖8]nX4NF鴌v9崓e劺躟)6烦熳i傗nf '<3雂 E@JR膳襦簓y癈葍蒈M𘢶煈紦) ~K筦I.氢s%讱蠜u_+_'SE踇 蜧v8冯`6`J=駃祮螌5,腏fF髈q喯Y9蕢軇wV妐谂甾.緇圼 稏捆蟰S5"#s#己:L惞m 2债 ̄v>5Y&禑9_縭h擹界R/ 唑騏uJ &圦绸H3髖6?%ピ龟湫滝r ;擤rcb弎氄w<跽麼y榄.fQ嫿捇 +F秒厶轒V<]鑏莌瞔湵鋏7冨迟眳箔拁H鳹癬w単銅烆焯螾s腶藇顴z蚴懗 +4 戻*=薇O蟱 17苀嶕 +:{3^>闉繸mC迺EU匰彰+n畩 ]l阄0諣u皉R沧哭篫g破IO枽v TO祖尨:lz}簌捲謪 组堦@蛝,怵x0絗3<+鄑<咆;8$ 傌A<|曜.x +襦惵 tj鍚0嵳H贬l0 鉶窩拼韋嶡襐 !?t[Wb` 1@儥鄅賍[rx燦$>j9b癅^m;{振犒U殸侨 T奷(Mb尒>噑c5 >E樈< NMG'j@p嶺;r%mi +屣x╜/琖勈/$Zc谽槹^1!殑饅U慦]闆颧洺降=4f匏%_yH Et}鮊J3嗷) H棪IHP趦g呤悄綌艷-#@@i/K1 釤[6E敠 ;"V9 Ca6繚腢)!s鯭:埊;ri貲躕 +沺5蔯饁醍0[zF跐 慶b釯0$ 3剝奩覂Wn0`TFH邇 麜6&羛佦yH&M撪渔潿訋B汢箃:洎< 諲 彙"煣賗c(U鈣嵉叔薟鬘凉疊1未 +簙誡,Qk烑U07湙埘+;1苶=澔Y'鲾q"0J鯘褴滐蠻浨5泝盪t蟳vINpユ姭砕尟氽晄c冄僮YY_綀踙(孵?鏐`莘=缭:Z∶`|錅^楀鼔d%g瀥)lp慆灆ь蹸 .俹縖+n]Q宽2!邲嵿ェ?楓h罱*!濶-6苔壠劾挋9钷z)螻钽謜>濩?燵 鐋潰+,'{{0莣膤v}f癁!詽䲣鷘V天x厕舩}] 轻Y]騭宫摻渂]肮2雮屮u+硈r魰临鱷戒傀纵8鞯飨鷂囶煱w挱蹒&粺线1靳8脬俊輭f狿x芋復娑/簳进N叡異6撻痐n74"郁褘册I險臗洀M'澙5 x㎝::m~┵輱m鶑苉Q<熙腬9]踇铘蓥!F>惾6MAA邟7黕綐芑E +綏V;bl 餂> ^`W@;fv黡$Z_-闃 銲rf鬁肢"? +X姴}V 聱b鄏WQ +戕豛k癵-甥7遂绎Yo>戺哃捐3QS<_?8W钪`嘗z1翋8潹)' +t忡5球HK$掃颿V=闆譓0x z鸾甙櫁暃l7嗔=ㄧWZ8銿鸰1>ZR`碞)4琠璃齕"O/^I髜霠bA譓_M畈^ 轾>y枢時嘺炋< G)&~l9;驎EN拤X诙狂灏S姺]1+e鹯X;y穫3榐攢E9啒m囝椐^5JFwi蕺rkヘ询D8绍聵O琠戬膢e&?溮Zlù9k笥x䲡埧:鼬z矃!殍枪屣K欱/1毯I=В燁&-:1<鞾曤+u隩-笧友蟿 E{S笟G-#D2獳-H}G縮佇f鑱巭:醵&翔枨=4兑t$鳰秊Sp^*巭0襓邹扬|諴@>坨馀|JC銪瓜j3DHu凴HY{NG?潠嶱鱳粲)さ乴f峧#j儒fF遱0敠遈燐,k_塬R氘-g +)t綦Q秵紷Q胎"钍茻"駨m歳5冸x綊偳3军Z([q咕駺踸:灅酩燨殇 k2 T?觐=3)* IⅫOO梃'a芑KJ櫖痕氏埰6袳すk蟦+照@媺鸃G?Fy_3 剮~怌+6鮷桅辋工躂7鮷NG?>;;1\@Z鳽h簋譋:Z5w嗊槑~D厌_淴犒xⅡ6懝}O矟頤駼JSl犄湈~ +ズ臗~BS %巭:& 鰝剒軬鯚):~謸﹃汓袡r_u M~ hFi2On瑡nb +=滼艒荹*W苄织]煄駂8bJ喀^鲒蚟 jv鲚f疲齮ou頓4v9濡~祥 :觇箑bS繃 礙l癰S?~t廥z>$YY([`#g撃瘦斩 r/_澐Z<詭A 塼w{G?9) 0鹗O*丁醒O荗}ㄦ栤L.餩哲,嘻:?匮O鲃bEC滲)s院(gFI7鮷巼郠]保遀@*H}oG砍.啗;)8jG矿j竝F殍W7蹉W遺碾粰浱佥鸇o- slu巚w桃Ik綏>r風%b醐鐄5P)|N醠.v痤猌8b蔽笈术腯鮑ap] .铑鹝; :e*嫷搏{-h昵T攜rWY釷馲 +厛翸醩8内雍韪緋妋.D燲{Z-nh4q餄$hMt_W -EA╙ 偩%%倊bWY俈 醍D畼v洁<5燨滌茚]蘙B6X_熶赗栈旄忒]趯.酃.t佡M淿L籛s轭 乾腧囘pK儡?d嬥 鳹$擩刺酙j/mo塽図鼦燠G虓S犍㏄麱_k濗7yV6f渞-靎 :`Yi鹖猳除}譅E恷 鮎`>q;2鐔`C.[.X/;`:8拎 +麎W纜9蕉蓻1账像i噘风\!双ke骻6嵹@褚呿埽Mw>J昣鳧y烀Hs ;)3(忪'尢忂4`瑇F4啕*楟2辴L槷囌b⑥[箠?&3W[鵻馃帜剁猸蚾俕^[>?嗮蟜K&/膩0繓輱} 浩)[;C:瑣pⅠ訅阮D>蟑",馇怌郦颲稛~ +!_蝐[霱%y]東睘56"靏呜󺡄幃槲塻=謐E﨣 }翱氰泪W圹锼瞔锯梤菃伂亓碻`Zk?荩嫮 c8S9欚A琞-塟D---*呦鸫hph甉@4艤.藪璗}槁3斛享>E鶽鐨说謒鱙缄嗒{ 要.甛1~. 3藐]z偗y晽咜 *圣-5膫f縵毚皺煒黢{鯡芸W瓫橂筋蹫}&O5齴6,鼬m呖X7[0梸6硰:x瓺?"驲粠*杷 p 7绡(鈔<,l4燰G晜]I`浬肯K>赀2I袮Cy郖^屼=A/ES>熕$AS^尖s$E>7痻]饆黷悇]椤:~赀孰" >`唑>黃勫#揂僽W.|?A熯^/"糮$拀%K爄xe`Q.Ay/E)騊@冟U:!]>0N 嚔筗(MB$AP`) ~豮孔G^?@碂 豪炝曼佧麞,覱>!~+2#H=0咷+瘶8,隟岂閡冬テ[.脁卑々дK.&q楮琑颯K德~敼丕MxJ?衖馭鑰礗禩糼蟝,M住5$鮷JQ鳡t]氎, 磕b阍 +*顩扯~*妍9鑤t膙O拥s[s蚤 複b kfcE2頠尐e'鱙$切9脞A楅遊閎蜭L..+EO.qf 祹檃{l;嘚emd捾H遍淠h発倁鮂=瘚z"1t韱#本 mv 砲!祠^GU鰾梂<嶐蚩 !1啍誽僾磎矯r:疧]Y鏉}秣J篊蹬薚'狴釆堰J廢俕X7-u剮靄7筯1uI宍.I6篦 (螻:$uMK絀適臑m<.4圅C'$橛F嶂*%箛頾 鹤拀RI癞墔o>詈d6$墘y+Q颢v8D⒒2W +牪kR +Z+v閯Q蓷嘗+E絗樍鋥夲.报d栊齙)1^5J掼9橐&s镶獶0o_%q&,7訵sl蛖P5塹莳\熠!迹樇诞k朌R愜2膐氤俆杤η鶽K 媖$+J闅TB 懹 +煳萹. 脔葳$墿 Z;H =謎I紶4囃*Is]m8葂sHOIn6R焤櫴 螉﹩鳽65h婮 鏊翼1%肱i 歵L稐 &{某>YRD枒I珃皫D戣'#ctt仉Ht悉0;] 釦垄覽孋$华Dz|~蘻c駁檥x瑅&1畺1$圎 恍鈽!^雜戣蹴mH膜u$m%渆x鑺楩桸锕忠瓛厐湑 -k$RG镆匩\贖㈱惯 櫋 <1H抓) j婆 帒'叟1x  谀6LdbZl;端;頄N篺i"Y[K.H鉩栁b灶挗b拪l銩]@僆喘2$葰尯>|#裋 Y&轉耖Zj'2J3k<1狢U霬G爨vs轝?i很鶷肄E!"n#@O/礝頻cF764-╥韖]飺英榥珊bA)<韼E琹]慍V媔 鈡Y籭 譡鳔窨普2u 2硊怲Yw矠暖覊趧╩2]<掙b塗侔滽 恢*/.I%M~呣h&棇{(>玞n0朖b+ⅴ呠]&盧擸7d'谎⒁馠 圫蕼Z-M f旇恌┠鋹 襥≮d(曗R +挌h3i:U顛^V瑮倅辸IV>楮.I撉卓I1嶠0Lo%|簈;ONKR\俆,3 .9籋t璈P钖4弝1歕A恁4B孫窹T)萚憛sbg疾知.庸&|⒊d皎p7%棱啗笪騠漤2bO耷KZ H浽8=6媹潏&抻蝁饶螡画+帊-垾δ腪k齔j篢1戉y榍=f蚮^9(┣Z譯>胻 d詞wd3N鑟啥鋆3壄递骓A籐豝g-辡m"j蹫]蝝浖 L锎v苫.縜=)璺毀膮Dqd乳噠籉仢2nd饏闥\ +=R蠱.砰r}zE z> +沉.A|#>D躄禰CVciz '3{3?W芺"W碦韵篋癗镆O埼i顼J,#;`!W_Μ紳*[t)G婝+iaq籍?善+鴓塲鰼媬$#OYL雁U"];啰(t擓 2i/宝霨蘋┼;赊);a7nT6=╞9炮5贠9^剽I尞籠含纳>贳$Y!持BU梐.嘶C詁rW;q=QiO鋚J.尸F}!.⊙睽ex媆JQY枤G1'z'挤狐.彣4娇^";懩嘅(*!羫銋[ + 鯬漄z/c8K{t"ペYM. +?齡51磮8覔L摲)紜L[#熴q宕遐`]{}Db檑愔%顿壝蹴b#茍x> 剿~d靔 wD缀斪-N\圵鸬O疹M_(酰=攌锚8/柎敀殭嘴ze8 n6┶傧Vつブ咸鸍w$u杘娍伸Q襖=6Lb惨.h*廧.艻Zgw&椒g*v婾dE熳菨8+!zw-5鵨=停b镼⿱$鑥泥r 熹DKI8|箚4摿跂吐4mB/Z.棤aM旌冸N鐘N厛約 湥焪UbC抓|煃炾 }銤(];潖&if帆q RWI窣%杹n斁P6油.岞_V磛令麙 洄F僛'#魂N睰G.h俸躮m蠞GD$巚|E$X呼Nd!*奨#;2H橙藬蔾rS93$k浺srt奲D郉尟>q8IM}] w=编ㄈ4\恻 +!檢2 pg徒=摪4=蔅N眨捬墔,%S`戣銻躄獘濘.紌|Vr憁lX囏.K殨褙琲zp嚙鯣=嬚蕣盜內捲鯔hVQ杔霺T($寯迗峛+呕畱<|莼8uP叁孧9>矊赼1;eL窙rdb鶄v潏‰*雖%4PFqLR澎r檘$tO寒М鍚湔型晵嚮乊'垹OuId岁#-婯;TNhd霋 +旈*排q盹,Ks軎 閮靰 _蒱叹栍az罨(滞R蜄5(Gg 刦腯c d蠇S鯂%&$%忌菣5嗩z侫,(m3癫ひ1祇0楧.朸g㎏;$v0坱钯8U侫\*銎+u羥M抓墟劊俜d]熎E7珿" yS挀昐+癇p捿 )+┗罥鰐H騅D&m4e曡鞁柆>沛鮖dゥ{伺兜d輴Z圫 +zmt挣椸譛棐緳攌壓毢 + z甋+樃$^轴肕L]cK!v%d3iZ! /祤燃9k v*焊扞7G钚zk&;J兌+N嫑 q紉僤軔&M+#]"eッM(>嘼@4珉闀遑#羧;+仭O攄DkI~樹c吊布耜崇箎鞸;Qk軯黓T +R6瑒欖鏓IEr蘣 點怿杽_l& Y腱-飱x褵捁惩v.閃髾蜌2胕b#Nr|釔@摯N.6婦E碪m漿懡AhgU9欞暣h+n璤缷隻'潓$MHG鳱桻j,[黴K朋8耤嚑9V$稝駄で悴&e谶劜wT驒膜O濞挨豇D!紧韛w 矡财s=菠t3.n}H:Y O)v禹IZ1-襫阓奃殞 Hw3{篬8*Q+憒/硴颉淢Z鏿^fL{mv見u熭L9脙r 鵜a,=7搾湪?n寸fR劎訕瘗4:{檮d罥蠵M鹉蒷>擷n] 呁涩%支Nu孏芠绨R-衚8犽eV韅1#?T碾t琄;;^f-愿I槔e>2w"2"芚''S6焁3*9^&k蟕茞,痨{櫖I 橛碞舡椛s17j斸 墝倹悘J瓝椆 +冧親釒8欥~\λ2P蜰鈂&囀眗w摴框偾t>蓠1=<麡v#n^┦搹i*桰垣颿gLn:炀闕N>&煺+唴^g庘鴺皓鋅$犮c>Lxk貜箉>嵷DWZ)蟻潸Q"祡頇廔RC"漴蒦 盠崬囐HdⅵInK|鈇J6EZ抄m>y8j.F&|^<S抮榻8;&"着鱢&o蜻0 #ou餸橩泧馘蛼0#u夤;夈c篋埘s∟^纩蕸楖炾揑U坟Uv9y檊Nuv2E>篠阮9檷B皝)雪|鈊R'Kj癝9]'S,KO導輘2[腢暋挬緭┧!洊耝TuM 鴭)殻9歎騠缌皘鴆g?砇d杮#=勢[?呈芵`橓倒嚮R鳇虋铿-ld_㈢崥尬拡h譛揖]H┤'6綹邱3%鞤!扇砎沼傧,驘y$3g$%伤*t麹G鼮齃Y緕9櫱m3T杆棗z炀焂KQ猸鬳譁軱(6D}$笝.\.8T'7觀賿浉Vqv3#K1呡舜-攊埫?;櫆y\璄iR鳒L% +s|搪螲縅桥<'赤U+/h+霾95闌┬怣>V娐q2+霱^LLXZ鰷虋3&! + w9櫟賏I'd傷爭!?!y哓+搝m龎廔R唖缹=麡拕陵h0J袤1EB糔7O:o>q17遚0戃魱P!5裣7(ㄋěh~囩a钂懓/鮍黩泼t粞倜tHx}貅悦l訲cL蕓篕扝ιK:[邢 +乎甐枬=袄}裓詑 蹜囉iZcP!wP┝圶⑩袘狢缕M鶟m$迳s壤6垐p<*搱$!B奴哺8芮`0,)1﹗諩袟则柙#b簮f-*$XS&.zxu塇挓矆雉 4筢q怴fァ煛瞚虥珠E泟NMr6 津爖 k:`3輎僈X[瘣鸥7脍橖.F噵9夀8╢ +彍25QeR%m'!筭&R艸蜜w(t$ t%1>] %"X冤#[綍ぐ*5|/S9m麄W埁抃 Y鏱D=姢鶸*oA輊腴恊%!皎慰@屙镁5*tWFuYKB}B曬;#峒愯Y惔紦∟堈a##YrQ$F珦6弾盇P8$/1㈦H堞8狥葻侗!ek(:vZ奌耐*$Rr_8欬汔nQ莖絑諣R E踥&关L撫qq摤r煂u-G氁: +鵴茬褼逻.H窍=生'樽m抙(="哎f}C),(瓙Loj洷S礤U崚蟻;(跇壖*締B蹿p溤黏织a_M*%硔v覛.扄(臖镐"曶咃n户L郅攼{)~谴G磜LC%.L甸蔍淶$$N涞L.fn4Db魽&蛰方cZ顣4iD2藥^谴0iy瓛p[nn么<曽0輄0搛嗛Fi!)a暀d麪u澽脫唅儇wK g$7 觤P隌齡鹃飺7|'廠吥rHX d?yT:;=丨e濯 于E"潗輮9璖0TH({璫%s +攗椕軂/韾忑懅虄 >e'曦=猄#/$0J"<恃笉凝 +}歇X/彳W塘NB肽歵钇斸 =]鲡堜詏{3躗鮣6}U8\崅_困磋鮇s駎]u1绅^G诐炉珣宣.銯﹝迀x磑7h@6;${看C鍦絥( ? +a賢櫴懯锸WO*鳒5逧o_}铴sI$]-:轒O禭&f跫6鱀瘟+q紱&&cE侎脩:=z%怳gv紱螇#Sㄨ杳鱪:}絍2@e:轒椌與栂1n轒'B 寜`v吖慘p'O蜡蠋sI爗刲E闉s#絢N羨n舢\^Ju巜夵嫡忥>7夈8T1揲邥5M瀅瑛 r痻壥s^銲莪阇GJ5蜺*wE栰 篈w呧Py;悲x嵤qq嬅庭輟癢"犰檛肫*h孹V収汊HF臆$E+Y5 麅娔,&{汊癎筓r銯牵赸淣哵嫃r}苻8輽侅臜玉q.菻锨門想)槮变稌#Y8n怛纥A%-扢K6d堔g窺診嶂醀慞背佷K !y墑B\Q迗$P5骔肷Z&$7彪< ><;洕j譊ZT"眂ZR唓懫籗鹙专鑹0=亹d_!o蔡懤 谴痘喽懰巉4)OfA号N,徨S陙别CidxT3 9Tjs)L謨*漰:Z苯eZ渗壯a閽,&%;4狖剪瘰OT'鹥匸]蟆銘4殫j3=Ki诎P 箘n^滸hEN窪B歑<锈e⒂z.秸賘-i5賬蠛>〤156扂敊~櫴a鹷呤; +貹wY!Dj)VL柷簊=KnP摹+舺独脐}孺士9栜輧鹅婕 ;幃╕Sn孒.'侁Ai怆k ,o,9y賥S-%轟r冝j1羰:枩~癞抓H蠏:w)妬<.誮(螙$ 嫂邟!G蟜禕4菕Vh^>陥蠁躈嶝q;慻pP郕璨j祈T=糂錂g" 5hb濷庠;暬爩}tR江樓5*g疩9F淐u6鈫5F脑瘓y= mD 瓰a:熌#]喡 擼#n#槅 7F{*瑲(叹鏠鞦4aq!熄矼G澷贬.HG蠁 va6戝7廽S]$婌﹐蓫5歖o]xД 湦#蓂屾s縱<炞嬇n6c磄鑟债皋+W籭充係[{★ 杽M嘊0鴱雦圁/,崡> 'Ou緕髙巰;<蝧濓:M曜厑y}y樚7吘2飻{嬘{Z厪Nワ+鈒 婎\; L薽SZ髨炯)劵Ⅺc]Nワh茼傤蚼unj㈡窲o*}^峏[1d辙csL癖A?.>Fc髞"z*,彞${2#仛趘踛}u搐'埍<咴j孼h 諓x鏩B(C証銼悲84閅m/鲺H龊廽痥pㄎ啪;煫}潖w獇漖焃-A +输禆lm~彨s醆﹄╢мw3癛:酅状穢HX婟!}咿《纖:悔嘴\;ZYb夶貭7蹙饶Dq 頁W;Z)煐痎X釴蒋#佅蹙/豓b屓踁  劯窹v漽_$凢屪踍饗世荽F茅拮∝僄成厺鑄靕囌烷B=~\靕/]/[,頖梉 靆 ENoX棚m0蹯!褙>V焝}a +hO钍m叺.%濚@;怔拢f6$[xR 砈啈V庙a羁迨L餩M潵#氧譗蔔0,牋$甤q#'>: 3)s +endstream endobj 23 0 obj <>stream +E怛7焜}慚ぃ力@:蓥Z_$\≤ $饵腊{S雼戎H〩>耘关遵?握緪t芀X铖稐麣0覮ぼ譚 pG簶澾秗_O澥}=,~_=-鳚蒵绋"2$譱v"Er )Xp牵鵞S輧协Tau8釐 N淴4 XGp琤k诃涗i"_ +r裫52XI% =E<勍M$鏑漊蕍 c邀= zPj9$瑓-ヅe┯巫Y棽膃諢 o_峀+褔)H:挟贚捩犧萚R2葃捰Y}褐:Q鞶 甃κ#U咰鋭J滜.R 哘l-i*]礍.散JT!&dJd8些`j'Cr[訋Dph雃犄F*婾jzZ哧4X諃$R点o爞雘幧*?悑z$V(蜣rO悴淸k' >_>螶栳蕶{苟懖 6}e兊[ 洫God@g+"軓Bi<㏕k+盨$U)倔0箛謊J鑯<濶鞱x鼁媞z"燱h.昭 藯C锜襾经8枺 v謎Yr泃a'Vt跃俫' 嫻階含 冊q嘳 +諍5\扚圿斉娌 讴溗癞t鼳0沴穇鱿~穇?< (䦃a鳰祁攁8S烮$C3M☆,癣⑿檰 綐4 +@涷H報gr艻芺裼b衪br"儬覓$|%哉Q,虇-cSC+揾 6≌a,趑 ..猿隘t9 錰氻Q 峳6E婶孠Oi繬e笀/猘~mT@'vNg褃g胉,/偲1齩鴷效遬6盩郋鬳膔 Rg; +忎t麱雕唩綬A;1 即玊yTz枖9P挤B t脸掋,y惄↗N渷/貌-r;幭X-#0檚h\觻`滀坥渤 my,劑p8L凩/=7瀯`7 檐 a8惞2委烛-#馭+仒3標F钬癙 块漎%$%oQ.w纅齶yf獯RA 闚!禑曕asy儹 ③H&".ㄜ扳砌g趡t&pc"j揹珽7*胉'钃3Uq;o屡鵷琿姗G逗e=4_N!猞<鰞諞Y碝6s嫌"飻&Rln6簠閅`k8s棩澲8葭要璊I69D銬塋n椘#亠鸑遢鋡鯀雜胘W箅K癡剬崖+R5$骜徐:伕 轊 + e2瑒eV壅F錼>:0e,自薝*[<虠Y絣xu邦瓆蒉^襇2=鈓整吒*擿葾穣sh慒}o]*=毼怫d庂╤i恄C跍j.#翍f^}_噺%}a茷!;6刚>1&od捩J欤 懟5;吰} +I號┲PB瘽焽 9☉(e涨潒躚,rZd_'L&!旟穒jv袠A!$臷 *輼h'B閈03添)亞Uj)俦攴@阓{孾cet6-厧衸僁V2樵HU0$3o蘷7;IΕ0G5(欪X隠)圄HS荟飞諬-踀)W乜jcG哿篥d嬚嗷3鐷y遜賙w29 渊ik漁K钭濓“粭>輳=[l7偍m盐<6'r鯞驫c贾螀L#瓅.5gvf#%殪鬼梻;$芛t蜴贖铚P\96T齦44;d瑆家l*i錋M奣姊炉釿 嶶鷽VC∫6-猨J!p 6羵鵷卄=#2]t鮗6J凢桓尉2谔B M__渂b4e竤千瀟馜Z 冷P5聭枺s崻訳維貴Y绵80綹IN> y z,榅裱洢"舕F銜 -笟L霘` g獠恠 q倕猾U"\蹲ajJ%羾徶e-爝虐摛阻:踷t湞w嘠&朒 1#6=>(G(柲M罠淥溴L鬭A姓&橢螺!X赟畄訣轏._n愼!觟e冔,T&SkP 篗+#笴8Ri jM8乓64i p涧Д2J 譕ht鍖鬇!燸楯恑l躀钪/L8橲1Q鷇Z~!)貶$*$睾M=斷mk遝槅i3谼^,病霴$繢宰 + a#鏤h趼 伈歛=<璗 Tzi狄-NZc>1a窱賓鏡h 8遐虅桳遬黃8d顥匋<鋒倖x%7獟"秌8篣冬=I;軫Z翫 洊q0蘨耘斺s-亻灢E躂 郍帄A!#thI橹:憄rA 緿c a瓺U [#0[+峝齠簕餎僎晾袑@ 1t 闬4訽>+i;犱琄lX襔帉u铙緟1鼶V X鲓o握}酥vF 秊&禔[1< 捾FB紩(K┱豖H頧f昲曑职X}マ hⅷG?h藒榖;今 侶K<齳.;T摯$<E笀銋d孅傏輂7z5*1, 鳷隯佇擫8 +赠*6 +糤v{<3Jǔ藶%莋Qg"玍驄驥 璗#炄;Q7薗\,掏TW欈躻笘# 铼GcFN绵)X70P嫊(镹5u $?!!鬐%4-洊-mI9@尔`T糫枅u@]瞚bbZNrB$"[d$ 訅裓e2羇#獽檣]_(贅垢wb鷯u 洣菣>- I緘/髆鬧c蒊狉z>YE厌錾'f澩嘦鲢VT瘥[R溭兡,嶳璈$ ^8/Q 觩2Xk ッ13纬=J鋓F伭x 臿懕L9,`\ |嚂l奓㏒4;暜G仭L餏(:](綥Yk=癇橠J" 0 +]犞鹾焐き$竡 躀(2wmmJ馈惭e 樜 >6誽'T腄纻2oG篔uF搖鳤浊Wj亶:Q~夛寠宱P弦睉VJ0H441Z滫@d#曏 鏒?撠N蕸['︽P僮僫L"椯V蓒硆8m,铎p_4l \|鲺X1D滔輒摩QQ櫷=対你叔恌逍.k%*棌v +鍆茈"U0s勌v!!H[矿驾l3嬆寗爚述#Z3-6!?2RW}F虌<*0综L6伔+9舜N泭 酬6,^ト币倈c3骚楐`f2裬}򖃿g#u#g备F9鲙0尀%紆'凼%WV痣鱠(攳&1鸞_龕韛疂獱竒Oz$餢隓Ez5E +;舉莾蘧:兛桌ニ辸Q. 缇:W滮褍儱槠B7欩UL樾.踄(>=帩l$>薔d穇牉V'榜["狜粞 Ny_`5 [發㧟`篱o魯M2= 烐O$me炁ō$<O妌T匯Xb罳骚7捕T蜿2/E7狫澂%:迣で眆^?py侔k 2tm鏈玬d称=`)GXダ匮︾閵喻c罦d搝爸靶ヂゆh\寘 yH輂Z袔疵12卋&7W[ Q陣恙GnC`r扷8>梵"C%喞h5.P;虲⿻湙"辢妊僪>絺Ya8z厢3骚s(9(绽贞 濚LeW~My犵9/砣珉I裄Mb!忎l#5緁鼮C$覟蓊$硇う噈 D氺 縞{*p'fb}u7朦!pN噾#裧5= .<梽:^Y钢*R栔殇絅x~ 冽覸Hy= 躄2`+濛脵犉麨蟡#1檔-E7窙惆}p<躲;駑嗩墛Q睑恇坔y酻9颪寈,璏0鮾&鉓q魨奪 &(;$譪楠3[鱸疤|gv M濋羓:m鸲)N>M麆@榝腨挨3>X6*LHH箷慚2鍏'2鏛乛k亐7<水"勉Ax盀穓敥"捬6蒉昀f功傴 小H&}#`>槤5- 8蹥b渭:9濩#;鰏續H^雊#惕憍7hш$4熹i嫿9o)畜W +艏;=锉A)鄀#]媶⒘t' +魘戗Y"幝6'娟;4鐝迊焰H0#﹗ 贆贇-乛(齁@B痉HE#孟$&:#錍0)z鷓pO菲E=投)錜栽闟Η軐w亴k詿瓖$頌缴檨: 榍袻騬夜!俠h'碈弍蘁棅嫟O>囘J髆祲 v-敮#=i`?8x韘=H簡鎪5锾*g"m搵 奒(.艠2knЖ e=Ho咼枏s_hw6邳f;Cm拋r#_勉玥"*灜試a巘$ :T嚙窟1>蹯$&O嘸_睦do 0撇zA憄絣*郻灲A蟄棆涐z邬鑉-F視{fd挷猜舯&茞i廉澩)籈鎗鱈c與sk(,靑/弪榬2誌Q臓-4瑩量搙灻N倒 垭靣Y8遶荙 逌除筛橄嵞U咋逊踪韨砘<鸼蹮軳裒x穠睹r挺碓w鹝銤輮蹣57n揄薯N熘関s赗磥 鯇蒫yH冥*爪v{!qn燙u臼la,O矞wgP焺軂P灛躉|;遧g@O鞙)擙>l*i縓!|c +o詾1 苐椭 皢弌J,牅uM>-腠L鰃U(3*僵祕幐郗潩腟*;說澾f7馕咪冔揿V宥粱m攇 +,鈾聣AO謶EI怗E恵赽X鯉鐥啯u臭絤>澂OWlz扉\№$OJ鞹g挢辠c褒>輜gc鱹徬wf?+~飤>7厯5@祰7玳a顅x媛0║j雿噬K ^# <獚'2軴鬴I7/e癱Z5$旭7&2 +4晕隀nS夵Ac 3b毜4晎?[掁葩.晽腺W舂馹僐5箊7q2%Wsx斛蝭竕卧l謮8)婶坱蹲鈐]罝蹹需I>夰;兔p葐c樶纮6:毛E缥\C 瑫驖i`莄-惖+虦H畗磽%;S評;宓ずq嵤毁{)[U +鄈強!ζ+8T0;2KN扙嚖$?-v媑衏w耳慙? I幸彛z6C= +笖Q%`砾銰厪9.P03籏馚dγq+7铁#!I*軗竼觘採 1k%闽榿藴Kp董裇$价n绊 汭k1nl鎢INPd 狔渿髵┤28 =:>謿X囚Nv瀋厡4帴!򔾛C!EH9僀r|<p薭>j^T +槗葇#契0 *|t芞V蟅u(腍礼衏亨Z="p#年幢S"【C*.`眎鷥磢隖b*嶀detD氩(0[8*C牏植袁M裐S粡#T  :%逖哴鰥S-逅hW埳`艤i)话uq b垻僕臉D讟1"话俙筳*^2C, +墪U樸7 f圓B/嚵赂 C8璳)芵,|摰+躁啪氿ygJ晾aDd 6=[_NORZ[L3螎輁 轍XHK綗壾/楷Z3:鷪f敢n絠EiL&a輗鯏bfr玷旫,灣a鏢C镒$蔀$ 儅S犲I悹 +lO'辏l蔅&鳷糄疮鞣迴1rz毾俫"w摲醍Q]搼-hx赚N`鏲Vt.>荻憌S跺yy:踀怷4プ蒗{7b簔 `r 玦j)Cz太{kX绽鳦 %&]|撎p籴(坊鬝燮vPIj觍0}胘榖_学y0蒠鎱メ.D&1a品v諂瀅E煒同姷ヵBg皇b娚鸨Ku嫶)冾2J|bVY 5E峯*"x:辉鯛c 瑐劺f摌u/諦p =Nn惁 |灸tl&鹸V旵釯3/晌gq嶊毮`L黮觶r藐3t7u +蠒曮⑽娮▅-陭俭銃櫡Ql[盏骮*,交aT=>А瘟誥琚w+C&漓輖 :0圑,阤@w+搵舳貆絛飹藝N寏页簸N8Q;缐10氦洇'+8Pdbp?炤rpbeD醆r(*,;0;維8;奄沿^e3鯫r鼘}k6?c咿拖叵审3崫m6Gc?嫌y4钝9 郪┳[6誫H"U*tRj蕹@媒觓\槇Y齱ó讶Z'8*&L,=糊H2 H財荩`謪.恉壺 哋0辪Gj啘[讚mz咳\AZa"泂cN $衣j_f穄嚹箏争锆成傹<櫜锵&湺M>煞\1節.o蠈 韻]榭q虍F尔+mby龄鱑邚k0wjS!S跽^觩2蠤儨]y$H榒呮狄钍:鳃 +俌輿+克煌梬H<澆S潁u6_i,蟇邝g鲿禡迃ロ癨_ic譝bNC╞=3.$鍎讱軱| 蟈,[焳划%檻瓦捻鞧睋xg篠m瘫轿蝏缦8u蹪濄蟍驾氻*蘷o梵*號"G鯬炂1,'f)0> 蕗["8击(醹hwЙ甿jP頓s乔y諞;Esc蕋O悩#儭\+hS6H廹旰撝4嵳-抽k嗻P┩@嶎佀墑欼p(悹O魎$鵷9(s#釔U獅7睑z'q<鉂鼠痈F舓晜8趺笂涠 10-<6瓉∫槼賰_4nV熬觧刁約聆坫勫$.3鯎T躃_9u醝lo涭#锹韝R鲚6lp仂nBK,<檛剙3豂<鲑╘凄C掖狒u>I[;T.T鐑6J1Y9n龎H7 +'04!q?騸#3宯g4wuUdL薨1檟夵^/@{7鏍n!K6c7i+5搈Z?縓 靦轜燓x$袕A绶馌?RH?鼑狲觃c7仔鐛頴囤鑉鞺舳肢P鑿呸拧讽線D镆9艇麠B7誢咷蟡W閸頴橍:Tz[.=tW愰]'|:tz嵊踆疉7苵F%齜Gk筚P琯]y '抗哫ot琯弊≈忿{ r颽賸须Y雞囤{搹0靅篻蝣U8龆厮愳mK_唀o 娃叜趠%⒔ 寳a谯j/B礸嶷踛/C斗誢僲oG2t{[韊銡A0箃 x鱂"膡謟纨壁kP飉_唟蟡愶2!遻t^专莥z/吕7vx +经2|V{-",|燮棥巅j7"经v啶wQ耥yp馦W]@?鑎倣ok +X5敦k恥r+″踛朔+膢[阤橓莏/A头礮啗o*鋦[霦伫瑄=哞^啛蟡疌術禇a枸b/C逊誢啠oI遆鋏X谒恤/h+bu~胾鴂啱o2靍鳃囤税鮩‰或傧ha弋盟0鰪誢儾o嫿g齕麌醧醑狀菟p鱕韚塞囤嫲鱩瓧★汮}}谒鴐禇a 卂玗箩7簵!褊j/免g●跼/勉?V{"凯L~[閑茖/缅郡%z>_佇o"骍b/A榉=|N+潁z匵讷喧m狨踆/B炜rg諚瘥』傕镆构+(>橶乎J$[韊Xv瓦ン驪龒頴橚囤薖齓鞺羹吨藧龔辙碰鱪蘒:?O俔B<燁_ +磉V{蘅2V{?lt踹"湲 {t隹O/咡o 叨鬳l0~ +C訾V胍$?(.0矖M罢^5臹4罇z賚[砺t垌 \:弋}釋[鞺SX焓伽V{莠c祑@we^K鲃璣73谰5Sl 罢^69鄪zyO=]" 篕s\:讌2K'骙鱡譓 0S昆髆逰s岊e_6[繴{裻摢//`玗0郵槴t\G壹椢块瘺9`嫿l陘⒐荷瑅e鰛K鏹+岇El 暗逕Bp殒絯u/L$癈0摾E螘W揞嚡6澙y360±]*?W芧橶 + <2v]榋鄵鵵齯 l禇. 0嚼ン嬉 垡WM1`1哎^6衫V0死.W辋共逡d璁6痖4哙饮鼿\歳=魴ぜ2槔]*?鞔=0篧M>`弊>罢^45帴^1羦餰3l禇MA罢^5伵甃B顄l礧MC衎/泧`k絣"偔霾囤k"糺.-霾椩鉤{eB倯絟F 睏MI罢^6'瘤馿\ 3{沾[雃幷^21林z吞+扶Z欹 +衇槨匐(豭瘹@b/洡`嫿l柭壁挥l/蘏p辄愗雈*豣/櫔噢)7p +对薴+豭+@we緜K鲃漗6c{贁[韊s_6i釐婜唙椷|鞼燑卓强龥装叆縧粝_榭*剾~埝箅釵據韵庙君G庚鱿鯒窥?34椩f5(*硧8A莆訷鍰s妧硲15t潷1鏔e萲}娕W $U趮(h o郼e狭兢殐 +oYV衪傩 +aq-d-幵'桄仧怱-浐~焪 Pl珇R⿴S寬iZ忍Eぢ*: T/嶒隉Q$窉 +蕐g獵搗`*挻鰾哙<遉s&江囚>颧,E佔樬頱叞?搜驘蜚櫾i砐.濎8I筿烰譍挿巄E澆踏%I9.立捜咬R>g箧 *'R-(臐謾@e_等S租@列^$N#{燃籢1惧`>俕$:繻鮖H1崲. =E<毉]嫕滞6妿蹴遛Α5獥w[ +YR:ǒf賩抧俰%_y檜" +蔂!)毑>|闌蓞&k>鱄m赬'X5厇 谺挥冹f>焗Q諊R-kx U汈蠄(h{墄3 &·濋S樠M紤{荁螬(様讠x郮P軕饼尊じ*4醯拻榌U'uI +~細殄4h锓懣B{"諾,鮤閺 絙1劃旑qf瞣&<I痲]襶彥-<X鬭f^濵@\G柺>:NN癆V#%6]稈{d昐BF痱}鋾u#/牗`e锼腛m3,`(9覨w舒撃3纝&2$鐮琀l7齞 轛A跲C笠緃/b+撊攬K[K?雷*+萅儺龥鮃*}/btH娧棑魶s憼I粋俬粴W?=?犚p濊.1&?腛刜WO !.萜B锩睊禠R<盧?^<-]hzcq3=馑篐磞律g7k帑劷 +a5p 媁犚硅"似+鉵RP眆Z&"ぃ睿9Fㄔ礣嘨rぴ憦イ鴴仗GJ鳘di亞621r禢:J跗鎺 E&(窝麇"晎4e=枹kJ蠙Dq帥T!fm;洴aJ鹆^%檪]炦婲L慔>"M%2 嬹+1+矯Hs"H:):. bl摦鳖桵bH翺W溈a剨x┻o .4X 扵TR& +"撻%a廚霥 杍 齙]夾蝞垂2(川 继*=萜&壟 瑿y.崌#-庩(d;? 0O:Q"Ae搚鉖0.%"4泶>5_-|顯煗 -澅R酩鉳鋭V虇壞嘉OKI:H斥尧廍臽>个u(磑LV閙┗ +jQ挻(1NZc赯鵱@趬.牂彽忍JrW鈩鬆睺柎禤\獩5貃?H#c#梤P衵"^鏡/ +1 W歓瘍-罉I-猼g軛捪臺扠4餪$懳%1Z肴?丈懷!64驢趒敞來梚荖j,zw众9>9譋亴揋.]'鹟.Gq拵珦/柺犺偀b0(昂庋#籇 + =騤蔍谯r蠐'J h厵挳oDu3曯~b鋯腃锆礘綻*W6!屗W;9埨廥/uE╤!;侢#)]t韰,FM忥J代蒒 cGTq 麆锗H/-鬳覛gs卅5就艆8&憰 \\坙鰄项鍾`Pm紤nz>.*叱摏p%暒@ u&=!0$蛩潸鐹Gz杼驉PO橷玮袸0{斃>1l魣e*pd癑珴u:悽傮"I[捀誑M41i#1*!i峏k61躄k捅ɡe蠩蘑&}發!|扙b瞨Y$槢鬵鬶哒iwヮE}饳-嬪#鴙葃ɡ8鮤駯翇ic"T佨 <v潝^f劼<职Y 澇p3Ld衋!玭爗狹 -v +擡6 謋_u犈妠梇靨棟/SC#歛-E雫a譁4朷 <+轇we 侦+.9y罪銟贐!£/俪妲"囗k瑽飆苽仲+т((CY讋H$ 桫`j.3 巢+(镹#↑/W-D凳评@朏;碻2lst"{Tv/&鼺fJ倅D裭狹梣V{.~a熴60$oC脇=$G亅85{P= )5B,$u輦蠚朐c犓寜攆@l覚楤浠猅ipz语ZD稭 + E-緕妒卐J`_U3!轸K:伐昨R`胻暚娐',C珞C-銌&瑗 + \ 榐K赮嫰dkZ偩Y7崯罁馳仓汹纁枅0俧懊2dJ躨(敠e(o腻1)ㄏDh⒐O坲3媜 @倵儈 肍ㄍn袸3=寠澛J$ pXF掝4捥Z嵐G拴2彏AG℉H繸拎mt/"仩绚镚8 T袜uT涹A'<蟖鬍c秏迪払[7<6=so p蚝譏湪P竳択昴>\婖}癏L倞逴Q,?蒹蒂驚?驽![劽誔ee郗偻讽mk縧{NE{7摇 !a ,tL2 YQ3#財坵N&翂i欮柡(F鞞1-F穃#1夃稻}>(HTP%E霸O瀔虅Z{!欑爍dk A 佶颲 僓,幇8佻g殺汋詺;C$ 1+荶嶒笫*(%梀椲X/h饒bQ忏 5<寊恉L錖酋洧鄮5.*FsLN礄& S䦛96$T劈,`è$)爯7帶$`3VV0MlD|9巨4bDj绍冣1*3摫䲡豄,槜SmV%浱W 宖V嗼*F|抓婙<:P燕}躘mCa|i_袶I惱溹##3譺尉B$&挨禈瑶坆璋仧堳a馪坍2!w臘& + 脊T闸2起"硸凍[栉 9@A▍':<笫20缒V穉y%eK58>'衣罸猕酐岅+那薗泄冫2L&V:樹m}槛e"禰'S3菩k[夞C鑌 +3攍,h=鎲+¦驁簜H鶨(J 矌vH=*L(4S垶傆懗判1韤4 黒谒(:V寙'"汪Ik[%乼-ン3琔郃Z鴭¤`;癡.d棙A稓互皦(ZcF缠筶罠蚏,*Ja }羯!钡"Y懅沾9 +栄8N立8zi蘨P匁齫悁猇;杢婪瀙fN囁螾4x5倳賏D23T7b塂鹋蘀6奈b Lc#Zb2あ揢隝畲#L4U"O 璚冐質 6oD鉑< +S#暆〔倈思3e湆 <稄r烿Fr炈渷a叅莸!.3pEぱ$枆Lg(暻.f哸熢BDzKF希デ 葱郙H(} p!D魶ctHl-赆"2G6B,琩碍鳷よK?拡,1H算骻勄.5bl.a.穖m1/宧瞲怟躅e> 薺髐裾 鑝鐋霍榋(侼俀+fAd唈是汭閻筲5V dD +圼[&仭.[<";攆%mVg恁橜H脅+ (kg你D?Jy,讀/Ip{ZG嗥鈋F騮G%0閝査~ n縂bk1;唳S?╝,7lQ陔up;皒┤剟喑經3MB媊<貞d p柀v兤O7[x1全騵矷W曅8偖e僕9埬',VX; Δt跆u_菾!XT#<鑕羗 X美UL*p2砥JZH=X酫猭-砯锢胵M啀Et钥3.禌LJ邦赈H"坭I#M楂⒅ p魊ㄐ绅4 +翬踷e矂a衃CぼFv+j!臽l)!1Y柭YA/ 粬灂#4輝醢籼67Xu1萦Bg whi滿盰槊vY?\寡>f倓郫謓?}3荁?M=嬌詌9巏l +V_嗭G>|?靪!xk5榿:硘珽(0~鎧6(Pmj伭 0,w9簔%L{!貃!j鼅龌别嘇= &R摌怷d秏'8彰澅GfW榯懝M饽覀娻締H嵥欅"潿>1と 滀褨鞶P"槥闸咸`妍6j/痛C玕&f>苫俦鮙襩抲撞~铵/$!/f3/呦璣J裗H鮚H_<繜戮繕Q繍?璕郕闪麉 颲@豘2'稛昪yL_挰獲 UヾI2 宴iC耤w(V鴦%&t72諊銋號崝褛幠)9B忛?i示撺J`&贳w#[G扟樵莄笍凁F>"嬼症9C#戇1肚*劚)c3*碇YGWz軹pS靴謺 壆2aEp桅WQ珪(欩尞嫤 腳fF$A竕焻d-1;.J8 D.嬋&$!面惂4*1|鵐厯唵X .匒y聿枓匔綏4哅'癋绣膴!w4忻c- +簰:罅磴e搁vS/狚m+罦W.F^荱)mL>X鐾F3 廋奻恺"鶣鯬祧杫;鞍玬ab⑼莝鳳(久"識濣涼WzqS.嫤,`迼n躒蛫≡鷆rP攭d eDfIGrf趌7c%ir鞧r.%琒茡跾,C溔Nv)氟K鼪懽&#噓Zd簩剸瑐P蜭'俐lx鶹_抵儎□|賋f~U臂曠慸dfs.鍯芘鴬Ψ黇v'碎鹗ぴG抲M?! bE未怃増 e茲rgSV99獔蒣)Qz萜枢攖 2:;}搷'誆t玊+\騘瓧*;╧瓖渒筡這擆@垔味*u纫锎纺 ̄cR+玬靤&姷3/VSb1(,芹p琣膟攎2彥0>盭,b廆穅/G絉謟6鯮懎綯騹怀庨鵘盻"殍A榖鼛r旣黙f舤沩o#+Kj脬泾竟滧\万:榱鐻昹鴗R劰麵|隷→鉏妍 .'岿/葵/奎/魁娉稔轹 ~鲇蕡q_輻唿铞覱>鐭_}g彭?@7憇垠?eべ-攄 d4奦¬ 騦洍槇P乗#敀I訦镅媓執H刎爴䦟垖r缼桉屫8#j 琁髕斄鉅嚩<(稏-砠k噗%乐1 L匝謌T峺豑崆iㄛ跢|复]G≦秡i鋾鮴b3褜鬓绍Y!絵=_萧_N傈x敌)蚵P"<>(4態E憴,A牷G[eH(Q e齗"鶴N/嗡隔?_a鱛_bD霿晉樺軵h+﹠L剻:K觠誛FE>'陁C奉憤湿>+屻煈 +屨'壷]"GòU噝|F凳値趫鹆:U]緔锾﨔tj1x镢O$燐yⅩ狮"F==!u強- 簱=樣}i囦砬zF糌钳|8飢>主硅?~諸4洇巯跖g_輣椏均軼_焴7_|鳙蟸繄囮化?鸍*鎜均蝮oC痈魁傀舆脒筱w巅瘇稔霪君7空_箭齶麔?箦鱛~稣螓蟸g遼G.枎籏3^讠鬐霷#_坝6.[羅}盍瞨}i捥永鲜揰鵒_|縶p. D楱{#△禧绝纣/钧躐K斖-$逫bv黂xB鮇a+笈_輌l幌峻嚽~均U[艋槌o~啐椣緙鳇&獚 -軜凇{4%册斪捼\嵓"$F吀喺mT_唴茑罝枤=*懁{嶐岜毺$宺z琞 ++缘钛1巖蕨D6潇6g擶'踠2ン綝鈫官L蠹9~&菽3)xZ6F嬴牛藏c30P綏vH迆鹺D廬:熎蹜鞠A*uj@3袭疦-&栩g㏒愷濲暝>悎隹uZ瑗铱]Sd邎.I漐M1┱I匋暝疷剪鎋~  2E"餘 d _讷卅您p鮉 摒q憗址簴pr熺2 +!R襭我 +璑沒6[热"睡摑鴄QI浌窪F!bK咰l恡丸! 5怰獍n篾*PX'0 PKY BT搻萗 ^&閍77TBk;/6齒+S(赩庬g鄈瘛i.b濩e爵逛j鷕墅=z仱癗)#蜤bu+昄駼鉋U辤鐡xD昇C`瓲息&怞怩 "咥 HHFX懲宗H諾&頿祌淉A峐戞萯pM4.㎞ダ=涅嚏$菷btx鹀T!p焎-jb |C2(榞3仪H跳M纲0KKY婉:匒視Z燩幍郹v櫈誨..儢鉢鰾' ';gat堇槚t逪霵蟃} 匛}>曵屖跢R繕P Z檮P"@o,媯19<喢铚 +*/R綥JvH1檌+=7滛蟨1蠳L3怷佰s&Yk調;磹垃䞍諝`{蹇 i 孛e郷Y垒鞫$jf儊59=轍N圂楸*鳛v%v兾 鎩户4+iq藇详]/S\>炣Sl糉髀堏Xf咖zMR蓳.I擞瑚詔. $fk浇лF加H;轂e湧翡殮鸘M6襚d影21鐬n6媨O叻>8M/XQw&Ff玂褲BU褿持e3%烈9/酉%崼孔O(毳^&.t!q癸潄SVaeX'赨恕韥Z颼咔1薬男欸塑\ 挪L篱u,m1)潕qX屒[t夗5在蔣.)j:樅=T痍}a"TVm檉59"u^ O(掖m$咏`愑 +涘域駭D翣〓,X";@燭5= 0R鏄H葕疫阆儎 昂1]钐&澮2r#Yk5>^ *懓貵>;彜P滺K艢忐d璻7鬖贙灲4lV@锍?6H6oшH'稨I6郡$j奵;諾坪 WF8鏓U#e2扏Kf-烸跲kzIVc贡啽賶垱dH貂佧4@痂\q寊媥F弓MD覒A逢.Gm褅-駲D守满戛&贗磂k岭9+媮j 暲碩鑹+ɡ屯椮T%蠵ˋ蹂~V輄x鼬绦肜|櫉吘颞LvP')Wyh"N +@D(h肂q蟕}帟^讈.晱R +趣 )*6撋 捝1[锘M壂V姲"#垹蘦挼i$C乔耳鹺躹*笑i頷3讪0?飓瑓ez&l8閺L,)XS09刂啶4島+暬蠕感厵zPxm檮跧 0&咜l閇鄠屠杺遒箽e饑u蛧/m |%j緑* ?傛栔檆賁>昄籒脒期@斥a墉sX'邢P瑎悂-恰'祤B{圳D﹖沏褹嶐惫QLg)m惱搙d脿<^>摳篿ruSめп玓{鼳u謫>昑>F蹻) @P i1KX苈&伮6 S,0si.棤[R魆QF隞*Q?Y]痼讹50囔2V[ 卧~樎褑3;0;H.鶜Va +,;纕6/%E琻咛汱Y<刀e,.耗F瞡朏G%Vz7瓘K.sw +(D≡翩棒犠烧0<娪 释鹛及.曠潹驮%劚*5侦O芧(隫崆曦鞡徥X嚡佽8У縩T挬綻}6BI/fm廨b:狮挥ID椀{3& +Y%抨/4Z鲪乍2 +琫玏.;C=6".糓mV)B膓牷 仹A薒6噭v昻礹Y1p  瑹F毼塃'hiez圚:EFRc@D$饊2`2m5樤<症X閈锎!P dF2[烪:m巋%欞髉蝥钢[6慳(B;株 KAZ态)荶2降D:寗l漶綹6 耤1hK岛檋諞秶pB# 犫陝.暐_H`蒵tY +╉歌 +茇gM+祕琢wc'U洟@t -O瘚~sq0萡MtS豍碐v顇r萼mmx*氐$摍巍 P鵪 +祤9B5?}餞纲舒 戶+灃崛儮u篬}眓y湜狈&cgp嗎韀叹H鈎措;_吥)T荀弴%>~婎%mm([〨寖侸i箹4T臌i莙薨l褃W!$鏕$-湲B晩稌豎YqdNJ\懷`杷z胐_ )Lg8璶8R嵶=T#F_羂f檂l2*茤扜r9傒$噥ゲ魄&繱詉.86q0袄PrW2雍g.q悸.%@榓葱隶哠X齈C{>牓鞨%ha#癗瑱俒駏^,搅T.%2]斊偞>5l0捙偱岾uy k'釜y梽f尲躾:泚鶊慞636硬)#犹襑法-燷閈亮I垿&濱!H.eN 愇嘾p觟,婀牘i (L貋弹,0Z‥P悍Ι羆D憶柺雗iD瓋犮N|jl`[M肑KKWS黬%徣岲d扇羪渏硳臹i鹬8哉縝L&8Z蟖缑1碆焭6悕范s[$9紷锇o$餷e9慝蚜`h氨 譂hF眈Dk$7w|+出炜2jv_XB尋V鬫U檻憅\K"3 o’bv苐TZ厖瘳蒻:}i濈:(赜Yuy蠽壭{;歉Q0v毮泯 愆5牜Hd雯xz擛 9超妬;Bt頒7=瓏`嘪媝;肔"詥0悦誫W%衕.珨\7s!,m6噁 A8VS^HL1叝笓歁`枘澶鷉绿钓gD閞!軦B项1飋;婴cH-S俁{琟df鑠ぽG'!\+鱦鐡y:鼿P[譼 笓H2$)."叁怸3膎&忋礊粲vP$煝4绛娭 挍溧~W=塅具2灗Y∕蕁)( +辙迼瘳51];嬟韱E:墭g槪簝騮e +矂C#*C婎a橸g4腰L嶆 +襘誏4p楑`&戂/炆P%附mO揜 晏柯\殕z*了逵;c c*!x^m鶷Υ> N +檢訁+ +&旑3 1慘莥 賜咹K[檨 +<菔憤IUf 奂+@h糖鄣<({Y4A馓芹輒!q;A$Lm摌壈{z鹒x狢+魶; G)铒怟卋 礊:o-丷?敞E孉晰樭檃彔禊塡wKN.墰))ベと%r离Ck鈢 +则5隮╗CZdFW_蠠C:蚅-缱ga_ +Ziおu瞭@膈琾膸d{潤9%i1鱌tyr蟆澠饺痝3+m~e婆収fL鉔G* 绠榅幩嗦R;i移3LH+- #〒魀縣愘*F,'Q宺韏 酯鱱帠O麖vj,軙u撔2餀﹚whL诔獁y _禘閥F7_%驢蒥jb8阿窰"C2*w驾*E8\搊畚|8V肗鋎斳暓郷搳 +Y搕jF[鞷宏|1t螜仂邋lS岅kO蘠`mM+籉鼒o=)% =0僅$XP澒p\罰溻EDX]4杙_3碁~蒘(O"M =;癕 颈y;X妦曯F+K#Y?#2璗兇I頭~擭宋Jr猛躟飇R 勆`啲铫W瘖k7溝阚v坑甙 yL%A?杆孥ぃ:"U仁湩垚'T樔酋睏,oR跶| 4w歹醋滰Uh愹`仅O'-印d钕簡$K缘e 管泳{B~垡MdE7篽磃fs┫EU臠﹏驼甮]t澪攓F望:P0钑5跲狚呆1?黥蛃^*W<倚u芄Y浽6aF墵鏕▕F苔[? "`/菇5籫C髉邝5崻<鴿Uh\IB蛃侨<惘唹寰N齛禽wU! +挎;Z暟1Z蓟虥堧h鞷灒u時.Q差s哐$`侸敾W#饽耑鵺%(哴詐#(z籷:E矜肿篔9綱9@Z)氹ku悗%術C彪ku鮏騡*~w&e!LW荂B!kevRx甐B炁葨s/?訦碛u瑏w渍j餭+ 歄緎礰s钹梗ň朇‰'R況}堧k鞡灟礗砭瞩g膪窬硊]E琴侯呫#]7誻懂卺9局UU}_氇蠡宗O犵k統N飣瑼 r坆6文9蒵謮丆緭rY斁'蘤谈w當譑g-d娲Φ煇俲Q激.摰7=44侶丟;Νo栠涛.Q]lf懝埀JxB!R劵~ <掖:兜 T殑)B說&鲧}丯b"枻傭i]卲j檌焆,f娛覯 :酀★t& Xp21M@羲Xu秜 衆)syw8y衆]华iV鲳X /_鮬薶C靳狱52卩DBiB%,>栄92櫻品軘裭冕x|NNmhB #破紛斮:U籾`螉訴L銆鷗-^馲"鯼湏歇[h 2y铲,鬄穰"n]螪傕+qY詛,喠-=i>軚鯝sn學孶x:pUc}du@6ゅm`e朳82*0@靤nV`;姝亍虸魭 `%莍煹RqZ褵淵&Uセ籾ㄣ4j1劧Oa攰"V漖<) M9S臄) 趇曡爳枚穾#f蝿$燲尸儑J6齀"#5j翡鮑1籩a歘m$糈潇UV~碁%9z曘M貲O傷摍镮8⑧]oN&iW9H鼡i"d趺$H;$E鋂僸輷 Oh傱7譧姒&JQ*w%珃M/傺_瀠!&櫫頹)餌L趖`涳灂鬫㈥uㄆt]nLYr簳i 9nM墶阚哩FZm_Zd6 x1岟v斠iaAv=A%贘:S\Q瑀. 铕,ばW)牿L:1М阢誯1咢7)}Z筵lPe&F"@烺8u鵓M璍q鬌_w府"向 $ )H<Д羖/Q]郱绌b淗z5軍&青蝂 8IQB嬰9欐 昐Q鶯7< +佱虯f +衃)霘灪姕f*ㄛp氻P\2-砸峥Z簻=,ホ耙,B;w丩絾 墝,煕GD!,鈅VKJs渡垠]詔Tb嬑朴 t灎47~懚V 醟酊鄝"%zu3:ak^a埅膢也%w7y@~NH _壧梿I摶!T/(G骧!8LqV盫ZK3V?貣餋む冓帀蚏韱䥺u9`p蹇L湇&3蔜蟁烰ce炑朷鳼$1)屡}8#偬2z醯蜫鬴厌鈑K埢 嫘;!"坈蚎歃兗!񾋾烘P!A.鑪g:3培賱紱怷1珋+钌)j;剆事=b&吢钻泿F$FS$)汊瀤X6y"骙 @裱q稙_(珣篣啤|1!#軞Ds凿9r潢/PU顣軺n4豠 E郱7跡fi'舷红{葪騸牕=@08!2=巿4*妍d嵓枯)E蕲赥靘疼щr箾!炨黠x栗iOFq潊霒:G4S5w%6e屆jxv~H 蜆g飡I爍媢+蘤pY%秿xR瞔M]pQ_劙=1^辳饇/棟嘾搧爌90x兓虝a6+o旷*#$J罹肦 :h蘴掸觳"=顋񺺁/ +磠撧_f擬韚9:x0炘F" 鯭UX戵艱葉窵"!8麰 睙v<丗劗4媩\R迷s寡>鋡!炚Usr[峓瘉JL卢_`)I5v煙霝DMyr贿M*(Y|瓮脶蟉Or(F祯v戫騷0vWOe怪.M +郉+︻镓賜*BN龌 f s" 殆韧狛翤$L菺q智D*[!B憩檱+}(铱s2繟1劧蠆{o譓篩娴7414W嵫)3Q錉霖B +W诽⒘ Ra(G +g曼 q衊6)e侽僟禦Jv羆XE"h雅p毑佈骤H蘯g徶玚淄鏻0*潴m'朡py颋煡d$e楻y廖x=C .MT鱲爵$洞!酛攴箮tK +f婡2藋 7盁(K9脊m匘r赛2盞y`0炘―"晜=<4漹(Jz颳I1>8H1鍏泸柯q}Q@椞"炞壬櫹"韣蠥m厢pK淾圹XL)k矟5狚Q =5丩j,k乢肞SO礞Y `甜寈殧tK v/l 1&<8}鐕趍敖mA|廁W饻8瀱:碃潒 望;蹽8_L鲞] 汪.f輯n- 纇*`"鰀~3躙 Jば薃M軨 +譞硿捺錬狓h芍*窕嬃摕詌哱 複q庇芲fqT谻歝奨@:t竇2項觊*u馾f怲.e0涩铤檭 3]^潒喊鑶J圱p:/v澯]f咪,(鵛悎ps禹锑橚殳M@ⅱ2v!捀1ezy褽ǎq輮敳^Yd矓顷4葘"佯鑜俴FID羕凨婚}廿|3J'i勈橚[3$鍹惫f攱灦#fM~HR蘹⑨﹝&!┺ 忙O系HU諠(犅zk @嬂瘷駉緄獷 +s|粄V鐻д┸4?|v塕mzi哈 nv r<簺@33冤肶╃%硾勋旓U慚 聼A鰇彀鵅敚b铵]絏朖 +鍹B╰gT螧甌搆隸?媃5臼徃せ楗dF_b礼N鰻<,:當/輿o痝祠紗e’6贫b^D&郉曎宎>仦 国汁q憝N H`∶2k=:聯Xzi<鎗xR豀 槽 迡Z]懯g戁d9=獴贂簙芌$=M蓉性(囉咞 +已阉耍亨rG澝d>橠OO髧L7牄疓^>C|墲>忰莳`~Qk闦渿┯,)i窢釦,-湪u!@J垉L没蜨u$鬥氭@礬b 3 {噲陖d!h x牛0%!つR蘂Q $C始E統.'墭+璺=郔燴2魷卐膾8ES郮 [彶筒沾c厛,1N p:x蹰檐%#2頵yR梋G +&hF叛騷/S鵑 "肂G9QzE2慛桽赵S嶥@MD`紻殱}Fk螕绽)%脛蓅+.If讬敎HL銀Hb录 &%g廛䎬絨腢3C檔s撼 矁E1K儧蜍]o腷A`>9海6 +hhK鲾旽$镚}Pfj侾Xx?\峵?P瓃'*r馇挈絮;"{?阩w鲞佻梀钼4$ ^.瓂読)=珙鶌邽抃 +GB8拞匫)p鎏孍]霧V`Z鸎魵腮Br*7 g鱹螚04彯魸FL+亭晿瓒Mg詞瑁/n︰鈳-< +V:卬漅`8仸%,埦X -6芅 Q鸑=)澇M鳤詾4n牜犸1wP蔝亅S37UL唆@糊L>檊dㄦgx醿 卆*6f潱O往!稗3塄8廉7筜-5>X51bi虼E%陑蓈rLG#M/cm换 N暵s釖*启冖嫵倥q邚粺x()珼 蒛蕙娡eA蚲m獂楎倽Z:8?!%d岾騌艌愢垣棠5U靾8゜W1U,{肴▋*7A臅汿堡2Px璬?U|"n猉" +R+6W瑫6=X光}3禱#$9鼋鲯洈涗8@蘤跆?W襇噊.釚D秨R客#听鬝 鴔洌ZBJn- 钂籠1Rf篗邫oss&4 +释斦鴂8鲔\2"-W窡+>`u5X鱯艣qp飺7M坥x繷,:缳o鉋桄/爭Bc'犝c剮堓瑅歨掘鬗聅=∏饇椄F缁渰B彵$3T?銴8:8咦艐$n+p按 p{瓧0m(/;D玁媁`淠 蜯鳛顰:np~0徰 货Y欈Q2F `K9k蕱pj秥z凉]6V秜0汭多VK畴 雾傽櫖'^pn踕GHгCp@觢( ⊙諂肗`桔,O瓴雸罇I[熸v萆脑 ├濐\r0﨔s渵 %騺9d』凉D6/ 蠎"绹闔^x. 化睏4茈疖夙&祬缜Dd蔺占饇/<喵} 蟱碣麦] 金|S鏺x-暂蠔3飃赠‰IwD.哉蜢砍侬-<笃Z9{淹滟妫艣瘘(x9鷏*u7:G膙裒樕懗/!:玎`c7磴.: d爇p氒铚,鹗罉漮л嵨叨 緭 >乢3i栳\9R讁,硔炊1'襢﹝僸b(鞕髛= +廚Sn#畮`)Q鱗摲篽G+蓪@枮硼dR檘9訢墽u6扥v_璍1qt胼wUz53#潁*螗蘕q_鍹牧跪湯]j凈慔⒕ @鮿UI勸T敚緸:/7窧I3窪V+鄳V:0韏懩偯軕撪`鳞珴63o羋"'鎐[&嘌葔﹞1r秺靾P&誂宏jsˉL廹淀:禴?T碲!]橳疭&啐!L^傁,~殳訅 m€鸶.;咑:爡禮彷葞辰)}嚽耛f羴渡癩曰 0 +剚秓鼆瀮 嬗茫晥槾:)歷="瑃鷍鞙c盵殛l++5鷓丒蚃]9HW辉唗E9$.垘4佺.HW饱6ax澷+視魨NqsV<W+倆缹4 柡:u垲* k>+腋擨'n D啒g恡{凇甃/nu%) 堈MW+] M +戩w鬋ǐ]膩候剉+G +u悼uu弹u碉艈P祇u祂圇C郯畍e醢畍b]9鞀u鍧腙N-9nV犼?岸}笽l凩_娃欳釒N殘z!;Q" 刑w7萯Q煨炟){Q"撴>芰[ 膛\;y.B轃.讎D蘟琍緖(純0^耋鷇"a8瀫_CH D.鷱踓A獋)垱~䎱 - 7? ,S6P託驳 籑  灂漒z-雳毇]ō廈f8D鏣 G覤謩耡I<n朻董d_j{+飦鯽sb毐|鮳r搮H麓<4倩f髼2潄&e + +旿G螗剦Q欘&z2鲏_F艪鲦綔O蹷既`Z丈Px寿0长) 釅.$:)YC亩权殴恚利糯ぽ痛E釻h焌黺aU1q擧,F:磤魐反形霻D^&5诔y:"贙L犯R龌v瓳Y⑶裟>睈 塀EZ懿洈9裣"u啋.p 灳哉4骾R;(怲抇寰齍蔨聀s:慔錷!NJr9冱C#滁∵鼥潊g撒遃餘蔩7N鵞7摵{▍讵@S阩&孱鱇p‥u[裷X黲胪驱綅X蚏2W +Y巴t~隞uP评11[+/`Ix袻儑g}&13*J*鞷濽軣鑉X缃芊縹5從瓦G("H駆.錧5煱鯯L扑mc匃籔60鐅‰堡r^匽 >=}銅祯肪9KX耽p哆⑽ 盟P*頫&熡i5蠈芒l损,4濽0牬j粿洲A䦷饑Fb幋鼓髆h魸pZ-軋b "餘霊6UI銬3? b苽灐椖)N\洉#u偢/e稅k~v3h{鋣郮喈&;hy歾犠﹌ -W=<蟠痕幷> 癠彟榼峐4浽Z趑W]!佭1E辫<(0i8趞赱Gdタ浚?弤"摉骮9婰肇>)屌\V砣94薺╦_庽U*06i9騪团話( >CoO>Q勌颪t/錿#R撽闗R+轄"%4蛕>$mH饲処罢瀯5μ涊xi鹂"4+(mV捇P颣咟{=}Q挽T]帞 $t?鉅穆t! Af蕳儘墨鋜^筥d縀鰄鴔H浿4b鉌跻]J餫煋谅礱t意譁专&u旺T焌N %誹#棓嚅>澥3橾.烠G恏簓l渮JlcIeR蒇牳峋6艭%evoaLl瑘' : 2R*厲8北2 [: 黋f讍倣E饷鰆ㄙ])W駷 b靶煝堅帧$Hmi= + +阬襙辔盁麸⿱澶_g82TH%iB泽`S忣艮闰8膲m&儈xZPMう!鸝$Z#)檑N汑! ^斩V劀僻佴% I瞖>50Jd >C;阼"蘫眮 熊璄bb寶澟*ご,{V甠橶+(n*请%L跉:[箙EEe+Q枴筸([\罣弚枋;]鋍缹 z畀`=:磂氰剩=詁 +_食墏 )2;芯]搩宎>9鉝#|枀盔摦* ;rQ葷4坣雛G恮#-罪X2Ο4X%癬;砞x鬂 骀N觉砾~燒醀_|穇走齄氵烚?鐎W檦嘷>?~鮳_=卓/蝽脅堽8裨﹋[暖歖g`D.囄鼴畴+廨'均臒﨑`閱琌鼶/埙:杧鱧擕鈅~鬏呓蹏彑n鹳拷昝~|7>g_齙?<;烉酧=}躐脽銍?削藷饤^g燒頮??{驅 +endstream endobj 32 0 obj <> endobj 46 0 obj [/View/Design] endobj 47 0 obj <>>> endobj 38 0 obj <> endobj 37 0 obj [/ICCBased 48 0 R] endobj 48 0 obj <>stream +H墱杫TSwo蔀悤懊c [5laQIBHADED劒2謒tFOE.甤謢暌0觇8讕8G漀gτ秣9鱳镲葸谨濗'オ嫡0 嵵犗J屌b  + 2y.-;!鄴芀癦 鼖瀆恑"L世0-组 @8(數r;q7鐻測&哘腭q4眏灲鐋9谀 +峍伋)g滲0駃淲8#8w诈曱8_刨ナ≦泓玅蔶@&籄)/琴g>'K傮萾;\ 鹰$蘸F絑Un儡(4T%)氆0C&瘮槫Zi樋鬁8bx憙E×罛;咜瘺縋斡撎篂A om?鏦= +x兑-尟莉鎇浰0窬绝蝳y)7ta揪貂>jボ荰7鸁緻锛锨t軟騚q2櫛蕗欔&6瓯Z滾?鈅yxg)藬z徣莽L璘犴*uSkSe豋4?赘竎.蚍 逡R 邅摁-晵25哚撄芟 S>樱V瓪嫇d錪r>n~萧Y&+`渷;翧4 鋩華9=-tl胉;涣~p寖徚 餑p| 畞[`L儑`< "A YA+鵆b(妵R,*乀2B- +陣啞衝梓蠶t}MA狅牀0觓l涣景巵Sx 瑐k&^粒>0|>_'釃,翯!"F$H:R垟!z镕慟d?r 9媆A&慓 攬rQ ⑨h殝恃鞥囇]鑑4z滲g凶翓郋#H *B=0H豂鴪p唒0MxJ$鵇1剺D, V泬侥你腒幕腨塪E"E愐I2拋訣贐贕鷮t4MzN叁r!YK 掲?%_&#竣(當0J:EAiQ(()訑WT6U@崰鍼+!陗阭嶆D 以村!陲h熡/']B/殡覐涌?a0n宧F!美X秦8砒汃軐k鎐&5S樀檷6籰鰳Ia2c楰橫藺!鍱#呭茠癲琕(k柾e嬝閘 粭絿}巬烠飧q9 +N')蝅.聈鍶竢 + w欸 xR^瘒鱗o茰ch瀏轥>b䦃$峄癀*~ :滶寘襜嵟~嬎,m,-晼輺,痀敬卢猸*6X峓荼F=3Y煴~d贸 窇踭垂i 踷趂6踾`{羦治.袾g放顢#{緘磢咠j囅䦅檆1X6劃苀m崕;'_9 渞:8輖:嫕藴淥:细8袱勾胳u归Jq粬籲v=膪蘉鄸锒蕀茼纠R 4 +n3埽躪蹽莜z=[=爵=<=GTB(/賁騼,]6*-晼網:#椚7*e框^YDY賫U刯jAyT鵣#礑="゜{懦属+:!kJ4Gmヶt祡uC%潡甂7YV畅fF煝遈 .=b噌?S岊茣譬喝簯虹鮵鯂 趩 崬峩5%4m7焞qlio橺砽G+訸趜餐弓砿zy怛]碓鍪?u鴘魒|"疟N晃鍧wW&踖芝锖*|睁砧j蹶5k冬y莪棹⑶痝扮嘵ykEk囍甽軩_p叨跄踮踝7Dm卣项o昕1m汜l爗帑M艣 n週輑<9旡O[䴓笝$檺欬歨氄汢洴湁滣漝澮濦灝煁燏爄犡《&fで8ォо≧7┅獜玼琝璂-瘚皍瓣盽敝睰猜8钞%礈祳秠娥穐粪竃秆笿孤;旱.户!紱綇 +緞縵旷纏漓羐零耞论肵迷腝奈臟湃艶泼茿强=燃:晒8史6硕5痰5偷6味7细9泻<丫?伊覦悠訧运誑昭諹重譢奏豥罔賚亳趘邴踿軍輺蔻)忒6嘟酓崽釹廑鉩汶鋝潼鍎 鏂绌2杓镕樾闧赍雙臌靻頊(畲顯锾餢疱駌驅螫4袈鮌蹀鰉鳆鲓8鶺鹷鼧)﨣m 鲃篼 +endstream endobj 45 0 obj [/ICCBased 48 0 R] endobj 41 0 obj <>stream +H夓WI%I芸S~Vxx孾 +Bj窈ウ/af憴E瓛~=弻罣s/鵽|譼廮徸/痶6#件~鮫轼鼅こt眠祯H邱燓凮苗8\S栿聩計燌#煭慛沁r幤遱隈盐V笋0鼆<蜶8狲o3筛篂柟`玺㎏xメT熂6?挺钇胹hブ礷蓾瑸)礙鎵~桍0/&<炄~z,潡姽漣锭 广刜6!KtV;>镶欈涘犜閬|v锓橉HY还噱添x氡Q2錜66(V舒Z|3V$.1 m/0壽釒诖 萦9魐∠ G_憜1 zKC%ptv"#koO|風6禣"埻 訃FX;+鮝H簿E頕,y膻嶽g踄=锒3雖8o虰 #)_酅p>;齃齰v=o香(~困#*羚TZ毾8渦躋@埶鑟 K笲 +/洞K楏拷D孄9篝肸=ko +嘊3飃 |b畿鯘竿混09|淵$誘蝝i顓鞯@ V鷌轃 ;靂蹨俬i='_*-瞼釗rL伾r2d2 ou^$(J?g "╢昩龆慘还;9,d佮p揰qQv+?]2ot鷏竧砀舍Q%M殫u!覻駙榍voW顣/ P晫2璽#芾0SrbA*祼k╜g,|謷%卧19蕏鋣碟}(am搅!'嗗2y蝃K龋瞻凒Tr矉'b搑苦3魀㎏湶#鳼b+p/罭撫6娫8O</(.餵 皡R恳{I獿睑猼(\7QM%^刘x呭9*h佉6u麰j瀳蘖,侶B<:塃威儰叚E杖dB%み^倮 !*咴8辩湀E,懻 積8澊 -@耡C<窧三|Aq$gMH强 (=''釧恑繻曕竻9Id J\.m猳劜dnD剳A,$D}6A06 厃7⒍嗼娍'\蘶議叀stFv倳L镹!?咗辀孪o/E鐀T#檑*\:8>D8 qlC:"-B 裀誅1j:B`恒R44)3暕4穻写$阗N檆吅命母򫧤霔甦4%!q椞F_w蕚咝塒9 +褜徖$]p婊M/mu鱓銅柤 + :$麂V 9}屴(裸 LBmd羋甹be萔%L-Wワk庰 盲 齅dM靆狨$擾T!04貑pE揆稹缠|1僅+睜b厲-K'躎堮蝷r;瀝rC'I5疀P佄廰间鋨CA皨Y慔"F[攑/4Yy味幤蟨挕:麩65"u䝼檶"*汆D +p団屼豊楬-赵>修" W櫺喇矙貽h灠;芰肩笿rN筼>憐4燚"偣夫p檙鋦*畚uQ欍zeW颮蜃ZQ亇瓷2f鑃7}j戦A焃P悑> 璱0礖tb閽>蓫 +溇恳+S']<繄c岶4骁-%懁)&"PU-b梼壑斦c ,H +酰G=豞 勖弘&g豔58y<kA 蜪鴸x婪譮鏨葩j樀9攆N 溠;炊LPo"_妞笍-E殭窵|βi諽&縃騯7痊}?V霋C頎@\H毱迼 L篆+B憤X=馫ヌ惐&浝\宮>硽湰 x &Z玿H:|巈7aB糺2醃7'-I塋位浃f鎕E獀%菦[!滩h逰Yb枚c,i;Z清-薃+韫{V瞅[u蹐聙脒膂筺眵糊丗-;紐,q0藸鲿TA C(咾顨-敞J喯[$敝羪vHb壧)io()怉奁0Z鉻o".谵J愐仐M濨 舅%nSkWRi翍萷=MnuFXb w@l楩晳1蹝硍DеK`7f灳ed丸捉镽缱1l橪竡婶[箖&栽戍慪廦3O刟`脴傑靷D繊V9蘌{睞豙~疔N?]uYC~骽'+Y3聸2}b啜ZH扳#黃*錂 | 葾A3唟8楕I㘚咕蕺溱~\亯鵡Q2擌0趬 X檛手]H挆у寺嗳\聊揗礈aX 0\濯r4p賥3垍箛pQ5:-軙贅澪d,)BK鱓Wf飺P缕鉤'祝铩婮G掯KS%z釀j>-#梐癦鯉)垰 +殭萝蹵T 琯hi=贳振`T横 尘& 笑査IPSf沠榊敪儁嗰铜臠揹,紋緾 6. 3v"国肗v8栺=炡${A 軐FQS轆@币w2箝<n7:q^缧抐y軍v]骢&/睲鸂f#*怗毸斀'cl;%迏 賠輊{颡s 鮑塓E斜歘e 豒銏鷚%脡"&W"6趕乵d\ 圈\砗-}肚$弆'K?檟a(O灣*狐Y頄r1W蓪&杣陗惟媲xY]2?衔h厃{桑碣%0W鸍>;P髊 﨨?堥~Xw"B<驙!焓)nW??r +[籖@胘yy棶)q1H乥蒜_VM>悈<鐣Cj刨&鼥(3m>蔨鎑:薗 *A=艆滭ɡ濒藂l}$貤m楮暛Z晤U氿 趒昴s譠a 嗞揓奾N)鎤m填欖議BD]ywnqRD褃秲9笶J篍駝v;,`^o攽[:鞖奉5&c檊隥t]皁@O猹Y=欰栭戔鞿x╇蠹_!Rt朦w裩粅吃4do慧G栐A痈S∣臹#H>W5镈P悎舟F (">#+Y戟灙忘e&籧憤9LV"潊=鞙云栈:b\耻鴞>堑yz鰏 LO烞@?o噿薡~p{S)諱頔e擕蔎囡NQ慃~.玬n棏螊踰16匪*玮v>幫>揣豆}y楒1闽紈 6%A鈩V躠N鱞z载 觪\鍴祈陙Z(~鮘楪;yt斜嘽J^F4刀\l0{H8*嘦`罋r璼┒-莡愗龜/ Y衡毥8]摟wZ肛1庪l~qc扯陛婻縷絃$磏韬b萻劋r.X4DX);氨 螹*" s篡垟勯処}銷鎈:諎嬩>v詸n皱锉-A棙翩聣h"斔2k( 藇)I{w$戌8醻旦逺鉝碫钶芜l棾}隹冼f晍硞Z咐E`}'F2這tB蓺V5&#玞8 溋餠1, 鴡姄pマ渂劗a " +h|餃vT暓卪)鴆頂-軉隻-悐_嬑鸳衠]赯G 訯i峔4陃左负.羗 +蘽fW]y忇蟙叉簸犮, 画攺L3輜D缻x埆4浛1(E,p帾0 癵钦E +鋈z謈9,襓锖e偦鹟踅飬鱗拒红p[ x熣稭g鳗'晈8C:とI繗苈$ +|袤de腸#lt敫垻@k\cW绁;* +p畕W.7s*.旘Q吮兇,Y猣罬謰吥鞅T%>妑e朇虨择rv獖=螐w暂W俎Vv孄g鯖廕 ]~酎鳘5WD47賂絎嵉7ISW3鏯,[%藽歀镢7m镱.濆餳kз]鍣TCU o"Y 巐)T旈 u荮嫯$-8\?z黅6 6p搽睛鋹朽R*6=k苎)2Cfic[d個碢晣 +H秾X[4hT紪1?Z鞊qe +撾臐甚;,eR瞃5#Q澪G&.龊2I硖繝畍^墱y\杜靕[旺A[瘖插澧疛嘶絫d嫸+B憺 潲A?:\M'夹hH菤m罿(纆pVf燋Bz靱哭Of9)+誤~踘鼽Q,Dqb.Ns+三?0畐葢$邨K<=歈伄 +%O9?y=~ 嬼3p|*鱩O剟榚脩(躷~ +$8篑i);.焴_[瘽讁譐棯Hd9{o->聑箻铒6wR舫B?jU厯'>礻+ 堢|类述4a汏S畡_K坠 +0p寸/魙 c'4血妾䜣 蔽=奵I=RB4a膈8 +e凇 +顋喁皎姍帙顚壪&!y赴5f <苈/Y"oPr%K曥餸訑}帖Z╬O;}\偭o[ 蠹lB&E渀&?<狳1岙恬9$隣硱"5 墆3缦r;D饨 .覗q<'篩鷐k!縪|_G3)掟晌灊涷a犫:虬琁/VJb)$B =韇n抌鐝氄韂-鉇?(;=郪h,- +弈ΙFF妝4X1咺bU绉F1雯加瘢v? 窈猜稰D c鰪卝w脞i寎7@X胃56 X差<<5Q椸Ct槚)4皹鋻 贻\)*榣#U_搳L+(b佻qs帍绌榪胇b8b燶1%棒亖黩仅鮱uu麷r@]殌烺(`嫺ф顎Z};!zS誒艔皺j-樈2JBS-41垮盯礃s{4VyyR5韁倥案惪;荘磉濗狑oO?`)愩 +endstream endobj 42 0 obj <> endobj 49 0 obj [/ICCBased 48 0 R] endobj 35 0 obj <>stream +H夓W藥$槛Wt-3z鑔䜣乨fH#"申砂o>蘟g;I檶寣L~足薩喀/?|=n枯已<蘂:铧觖O哭緗鼼:^鳺巘達0#觚鲔aJ鴽[?{汏p焔蜍彈o7N駉=駔户硯zlt酚鵯M苩|z捂撬眍gs儔鱸尜;[哘N#M京茂Z苢og耚:蚡3 瑖5'W幱#7 嫌К+氰腷+gM1呦+彵kb蚤k +_X\O鐏铉椠g項a~鯶6r踴o6\ヤ'(鼇暺avv.掌';鏅\5鉹穴ヘ6萭遱p6蹒瘢鐄Vろ 倆y崗荐v孪_n?唼払,;蛞?蹦ap剼紊韪rAP樣闬杝纐^p. 雊Nt)咓囱I氒 mX.]#>煱#蹃u%壽c}弾_{罉 讞寳褙p錿 :箯韻3Y} +{嘧馥麏 ,珡脬#術A玒蕤-+璾麺鰞矾f驯H)賣s(羲B,Y*熉燯騖俾霊w屋泐燿J~A赤L.銱贇忹(Su【 ,帎霫k亅Q耷禣翈'桬濍Fb6)oy@6+QB囅金,!遪䴔|.p窛=C + +*慐垽鄃$ 覇8 陂姩軡鹑芛5>& 0嘖<嵥斣発x># Sa洯2y閈歕惟e叺t_煲報 菜↑蔫NL锈纂搹E埄-赅&檜勏:綣7墛N紃姻m鎹炔膶45 -汋1艅/w^n@冥 ,M>纴R3u悮鵵CX w?"鄨wF競 歞鍎|6|Z"wMV读t]?痩輛f4bps纗CI+H喕=U}~R6榒躔'舉n!铲 +鈏t85 m` gCDp铫\分柫p IE丿棈H 祧<-?傩9吠dq摂И湷D!店*E後d2u砆(縄嘨q'>幠Gd-勇G苈莬病鈋H5聲U鲹1P'劍僼Bau +AA] BX%-$:,45ㄍN榕 l[=N玧P~&釾,蛘亭褣>,殽<.@W闛!]P术潱>;3撜!!)禤欝)┃肴) \ +孞3戟螩墦栽闄噃諼慚鵋哾気倁P,PA┦R=3俹|鹜椮56Dm薄"nQ솯Z: +赦?繷貂蕸+赻W豒Qn6_/{睈匡-w媀獵T6|WaN)<(婭欼G萒.&a钼@IBQ@ j鄁l貭遬蚈z洷 f菇&AKMv烵厃!蜫獈Oaw燸k猐F棼钪E(﹊C/P0]7)oQ 龌卢泇u,-:憡, 葒x慣L$:氐璣-QX$?獔-'貴昡`zT軠誚碼D}*$hz00C37;}坷洠E獸 痄鑚肆铉┬;0 鹷栖!n紹鋦裠5DU@戟ALj俒昝泥敃x荈p琟,糥Z骜*TJ\rs厐穕|黅5K膧qSU暱侤]e^A`i鞆 鋛迭S?迭Sg-怯婸 4胸K拴7IZ瀲6廓1s练%倏fR讞z#坤乖偍EM|鈷|6yQ诒瀴.e捼<欺q蘹z喟隝'掁妳%䥇脭%a醖煻d u鑅贀埒8慁x圤> h檒烇锿k9|G齳g>帇诊m惊鷛,+ 嗾 +/$- 21C鹇+11 ;筕y怱平C_TF茰Z茞恬3}妱+>萷螼萘湌, [z惓絼g]I^? X$=bY竺炬q抿蜫me䦶睛#d鏁#9&X7觪蛃禤)U_菺S禋D砮5*圦敠謅逥l+婮S>"Qm靣F筪逸V懵驧5揇]3ξ和鄗顈jh1%偔S1f颔嫬磄/肵 COW汹泼阅椒!u╀'(┴sC鶩脴p氮h }〢竕$f:癦mCe 版郘吳帯5qVろR後5缶堡g`1/焸)*圤|i 嘨焟3_鞋#v:D?QP爖╈3)AEYD?- 駔asd悋W%+冞弍岚稦臬牌'浌!i犟坔h2苨.梧S攕MBDT楍H%<鑰C?坚BS龐]慎鸒裔娄汇3>t>諓櫨 +]2䴔牊 ' :2  醊pq狏E羴p3]Gb/蛟I壗僯*襓l泽諟偾G#[纛瞾認?(汴+蕼粭I&氨*#屿+@姀隮FH葰囿掖 送1硤祉rK镗I羆髀ヱ膉z駌a醒盇q骙鈞8魯╇e8秛-谄飡@薦!乷Ξ譕 +棇鶨尦黽曙2甒0パ9 E蛧&惛_P痶/癌嚠鶋PrX苊5夌&籓:乾筥圕唲П螩GIg9;6饼䜣(j?%5m,"諍癤垉v㏄讴椩v +鏮no瀲恇=JIXI媗5臮撋鮀ⅱ l魭"稖鶼n(W嫱#z/筮寳箳7D婛%g Y24D焼h恟zt7謵31@(詰6栵f鹝趿a褸峛暫 +灃7笜0縇G>3}憚T獭姚埐D旦6_4Qf 9浮秢xe饸pがT:泌uM鴂勐 +@VGc詘刏讲K+乓_qs蔯y憶wpr祈w葎;蹯徴錿惯镜駪"淜蜳霔匣{愬餒祤犎马j"(2 )4j輧磴= IB仠 Zz鼟鄌遨虉滣[卢6鼌蝃4g}W=@xz! 蕤v'海癋殃嶜kP苻)D_飪誖諂輾萱l凍0L嵳}縵圭况qi3.'H!寶1RA搫荺ogDKD穎 塕NM緓| +=砋',sg齪JYzR;碬蓘韷_屦*a昘\鑬0看麴w哺1cXN胠RAch厪牵5氆:0紻u5B鯒l?=3鎤&Poe{ 4姭4t P*痑娹6 鍚Sm9y|(爌忟勄6U冭9銂飊敂溤梫Wy%蠜nj緣Zq;6cQ榛T輊 }襅悀 =F`&Dшore1u 呭7Jc@葈鶛"n聗賯鉇滪澇;<煦ir}骤㈤!醱ǹdb+骬.垺.駂刅|}73]瞗躛⿳}O%肮8zH勊;攺EY8莩fk苷LW 鸽実*蕁裨剮6NG讬?F埥'+a欁DZ yb"疌;?禃)疭揾9)1'浡誰J煈!Y嗷篇頵|3唢Xe秏檑欞宀'D> endobj 40 0 obj <> endobj 51 0 obj <> endobj 52 0 obj <> endobj 53 0 obj <> endobj 54 0 obj <> endobj 39 0 obj <> endobj 55 0 obj <> endobj 56 0 obj <>/Shading<>>>/Subtype/Form>>stream +q +0 g +/GS0 gs +0 58.713501 58.713501 -0 608.1935425 413.8282471 cm +BX /Sh0 sh EX Q + +endstream endobj 57 0 obj <> endobj 58 0 obj <> endobj 59 0 obj <> endobj 60 0 obj <> endobj 61 0 obj <> endobj 62 0 obj <> endobj 50 0 obj [/ICCBased 48 0 R] endobj 33 0 obj [32 0 R] endobj 63 0 obj <> endobj xref +0 64 +0000000004 65535 f +0000000016 00000 n +0000000147 00000 n +0000042749 00000 n +0000000000 00000 f +0000042814 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000049809 00000 n +0000000000 00000 f +0000049882 00000 n +0000050257 00000 n +0000051464 00000 n +0000054940 00000 n +0000120529 00000 n +0000186118 00000 n +0000251707 00000 n +0000317296 00000 n +0000382885 00000 n +0000448474 00000 n +0000514063 00000 n +0000579652 00000 n +0000645241 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000043243 00000 n +0000676202 00000 n +0000690708 00000 n +0000043639 00000 n +0000684450 00000 n +0000689004 00000 n +0000676502 00000 n +0000676389 00000 n +0000689623 00000 n +0000689066 00000 n +0000679221 00000 n +0000684353 00000 n +0000044035 00000 n +0000049747 00000 n +0000679186 00000 n +0000676273 00000 n +0000676304 00000 n +0000676537 00000 n +0000684415 00000 n +0000690673 00000 n +0000689209 00000 n +0000689353 00000 n +0000689443 00000 n +0000689533 00000 n +0000689738 00000 n +0000689791 00000 n +0000690083 00000 n +0000690160 00000 n +0000690307 00000 n +0000690451 00000 n +0000690525 00000 n +0000690599 00000 n +0000690733 00000 n +trailer +<<7CE45763567ED445B960396E31023145>]>> +startxref +690927 +%%EOF diff --git a/packages/website/frontend/static/nutridex/nutridex.png b/packages/website/frontend/static/nutridex/nutridex.png new file mode 100755 index 0000000..d44a66d Binary files /dev/null and b/packages/website/frontend/static/nutridex/nutridex.png differ diff --git a/packages/website/frontend/static/platforms/discord.png b/packages/website/frontend/static/platforms/discord.png new file mode 100755 index 0000000..2019fb5 Binary files /dev/null and b/packages/website/frontend/static/platforms/discord.png differ diff --git a/packages/website/frontend/static/platforms/mastodon.png b/packages/website/frontend/static/platforms/mastodon.png new file mode 100755 index 0000000..9b78af5 Binary files /dev/null and b/packages/website/frontend/static/platforms/mastodon.png differ diff --git a/packages/website/frontend/static/platforms/peertube.png b/packages/website/frontend/static/platforms/peertube.png new file mode 100755 index 0000000..6778d24 Binary files /dev/null and b/packages/website/frontend/static/platforms/peertube.png differ diff --git a/packages/website/frontend/static/services/customelmsites.png b/packages/website/frontend/static/services/customelmsites.png new file mode 100755 index 0000000..192ee82 Binary files /dev/null and b/packages/website/frontend/static/services/customelmsites.png differ diff --git a/packages/website/frontend/static/services/customnixconfigs.png b/packages/website/frontend/static/services/customnixconfigs.png new file mode 100755 index 0000000..bebdd6f Binary files /dev/null and b/packages/website/frontend/static/services/customnixconfigs.png differ diff --git a/packages/website/frontend/static/services/debateanalysis.png b/packages/website/frontend/static/services/debateanalysis.png new file mode 100755 index 0000000..7cef2d6 Binary files /dev/null and b/packages/website/frontend/static/services/debateanalysis.png differ diff --git a/packages/website/frontend/static/services/debatecoaching.png b/packages/website/frontend/static/services/debatecoaching.png new file mode 100755 index 0000000..13300ba Binary files /dev/null and b/packages/website/frontend/static/services/debatecoaching.png differ diff --git a/packages/website/frontend/static/services/nutritionscience.png b/packages/website/frontend/static/services/nutritionscience.png new file mode 100755 index 0000000..5f774d9 Binary files /dev/null and b/packages/website/frontend/static/services/nutritionscience.png differ diff --git a/packages/website/frontend/static/styles.css b/packages/website/frontend/static/styles.css new file mode 100755 index 0000000..974d4a1 --- /dev/null +++ b/packages/website/frontend/static/styles.css @@ -0,0 +1,32 @@ +* { + scrollbar-width: thin; + scrollbar-color: rgb(120, 60, 0) rgb(20, 20, 20); +} + +*::-webkit-scrollbar { + width: 10px; + height: 10px; + display: block; +} + +*::-webkit-scrollbar-track { + background: rgb(30, 30, 30); + border-radius: 4px; +} + +*::-webkit-scrollbar-thumb { + background: rgb(120, 60, 0); + border-radius: 4px; +} + +*::-webkit-scrollbar-thumb:hover { + background: rgb(120, 60, 0); +} + +*::-webkit-scrollbar-corner { + background: rgb(30, 30, 30); +} + +*::-webkit-scrollbar { + display: none; +} \ No newline at end of file diff --git a/packages/zookeeper/.envrc b/packages/zookeeper/.envrc new file mode 100755 index 0000000..8392d15 --- /dev/null +++ b/packages/zookeeper/.envrc @@ -0,0 +1 @@ +use flake \ No newline at end of file diff --git a/packages/zookeeper/assets/avatar.png b/packages/zookeeper/assets/avatar.png new file mode 100755 index 0000000..ae6c075 Binary files /dev/null and b/packages/zookeeper/assets/avatar.png differ diff --git a/packages/zookeeper/default.nix b/packages/zookeeper/default.nix new file mode 100755 index 0000000..15ade2a --- /dev/null +++ b/packages/zookeeper/default.nix @@ -0,0 +1,25 @@ +{ + perSystem = + { pkgs, ... }: + let + hp = pkgs.haskellPackages; + zookeeper = hp.callCabal2nix "zookeeper" ./. { }; + in + { + devShells.zookeeper = hp.shellFor { + nativeBuildInputs = builtins.attrValues { + inherit (pkgs) + nil + stylish-haskell + ; + inherit (hp) + cabal-install + cabal-gild + haskell-language-server + ; + }; + packages = _: [ zookeeper ]; + }; + packages = { inherit zookeeper; }; + }; +} diff --git a/packages/zookeeper/fourmolu.yaml b/packages/zookeeper/fourmolu.yaml new file mode 100755 index 0000000..9c0e890 --- /dev/null +++ b/packages/zookeeper/fourmolu.yaml @@ -0,0 +1,12 @@ +indentation: 2 +comma-style: trailing +import-export-style: diff-friendly +respectful: false +column-limit: 80 +function-arrows: trailing +haddock-style: single-line +let-style: inline +in-style: right-align +unicode: never +pragma-style: leading +newlines-between-decls: 1 diff --git a/packages/zookeeper/src/Main.hs b/packages/zookeeper/src/Main.hs new file mode 100755 index 0000000..607b6d2 --- /dev/null +++ b/packages/zookeeper/src/Main.hs @@ -0,0 +1,326 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Main where + +import Control.Monad (void, when) +import Data.Text (Text, isPrefixOf, pack, strip, toLower, unpack) +import Data.Text.IO as TIO +import Data.Word +import Discord +import Discord.Internal.Types.ApplicationCommands +import Discord.Internal.Types.Interactions +import Discord.Requests as R +import Discord.Types +import UnliftIO.Concurrent + +main :: IO () +main = do + tokenRaw <- TIO.readFile "/run/secrets/env" + let token = strip tokenRaw + userFacingError <- + runDiscord $ + def + { discordToken = token, + discordOnStart = do + let appId = botId + let guildId = serverId + void $ restCall (CreateGuildApplicationCommand appId guildId baboonCommand) + void $ restCall (CreateGuildApplicationCommand appId guildId unbaboonCommand), + discordOnEvent = eventHandler, + discordOnLog = \s -> TIO.putStrLn s >> TIO.putStrLn "" + } + TIO.putStrLn userFacingError + +baboonCommand :: CreateApplicationCommand +baboonCommand = + CreateApplicationCommandChatInput + { createName = "baboon", + createLocalizedName = Nothing, + createDescription = "Make someone a baboon", + createLocalizedDescription = Nothing, + createOptions = + Just $ + OptionsValues + [ OptionValueUser + "target" + Nothing + "Send a baboon to the safari" + Nothing + True + ], + createDefaultMemberPermissions = Nothing, + createDMPermission = Nothing + } + +unbaboonCommand :: CreateApplicationCommand +unbaboonCommand = + CreateApplicationCommandChatInput + { createName = "unbaboon", + createLocalizedName = Nothing, + createDescription = "Return a baboon to the wild", + createLocalizedDescription = Nothing, + createOptions = + Just $ + OptionsValues + [ OptionValueUser + "target" + Nothing + "The baboon to rewild" + Nothing + True + ], + createDefaultMemberPermissions = Nothing, + createDMPermission = Nothing + } + +eventHandler :: Event -> DiscordHandler () +eventHandler event = case event of + InteractionCreate interaction -> do + case interaction of + InteractionApplicationCommand + { interactionId = iId, + interactionApplicationId = _appId, + applicationCommandData = cmd, + interactionGuildId = guildId, + interactionChannelId = _chanId, + interactionUser = user, + interactionToken = iToken + } -> do + let invokerUid = case user of + MemberOrUser (Left guildMember) -> + maybe (error "No user") userId (memberUser guildMember) + MemberOrUser (Right plainUser) -> userId plainUser + + let invokerRoles = case user of + MemberOrUser (Left guildMember) -> memberRoles guildMember + MemberOrUser (Right _) -> [] + + let hasPermission = any (\r -> unSnowflake (unId r) == ownerRoleId || unSnowflake (unId r) == moderatorRoleId) invokerRoles + + when (applicationCommandDataName cmd == "baboon") $ do + if not hasPermission + then do + let response = + InteractionResponseChannelMessage $ + InteractionResponseMessage + { interactionResponseMessageTTS = Nothing, + interactionResponseMessageContent = Just "You don't have permission to baboonify!", + interactionResponseMessageEmbeds = Nothing, + interactionResponseMessageAllowedMentions = Nothing, + interactionResponseMessageFlags = Just $ InteractionResponseMessageFlags [InteractionResponseMessageFlagEphermeral], + interactionResponseMessageComponents = Nothing, + interactionResponseMessageAttachments = Nothing + } + void $ restCall (CreateInteractionResponse iId iToken response) + else do + let options = optionsData cmd + let targetUid = case options of + Just (OptionsDataValues opts) -> extractUserOption opts "target" + _ -> error "No target specified" + + if invokerUid == targetUid + then do + let response = + InteractionResponseChannelMessage $ + InteractionResponseMessage + { interactionResponseMessageTTS = Nothing, + interactionResponseMessageContent = Just "You can't baboonify yourself!", + interactionResponseMessageEmbeds = Nothing, + interactionResponseMessageAllowedMentions = Nothing, + interactionResponseMessageFlags = Just $ InteractionResponseMessageFlags [InteractionResponseMessageFlagEphermeral], + interactionResponseMessageComponents = Nothing, + interactionResponseMessageAttachments = Nothing + } + void $ restCall (CreateInteractionResponse iId iToken response) + else do + case guildId of + Just gid -> do + targetMemberRes <- restCall (GetGuildMember gid targetUid) + case targetMemberRes of + Right targetMember -> do + let targetRoles = memberRoles targetMember + let isImmune = any (\r -> unSnowflake (unId r) `elem` immuneRoles) targetRoles + + if isImmune + then do + let response = + InteractionResponseChannelMessage $ + InteractionResponseMessage + { interactionResponseMessageTTS = Nothing, + interactionResponseMessageContent = Just "That user is immune to baboonification!", + interactionResponseMessageEmbeds = Nothing, + interactionResponseMessageAllowedMentions = Nothing, + interactionResponseMessageFlags = Just $ InteractionResponseMessageFlags [InteractionResponseMessageFlagEphermeral], + interactionResponseMessageComponents = Nothing, + interactionResponseMessageAttachments = Nothing + } + void $ restCall (CreateInteractionResponse iId iToken response) + else do + let targetRoles = memberRoles targetMember + mapM_ (\roleId -> restCall (RemoveGuildMemberRole gid targetUid roleId)) targetRoles + void $ restCall (AddGuildMemberRole gid targetUid (DiscordId (Snowflake baboonRoleId))) + let response = + InteractionResponseChannelMessage $ + InteractionResponseMessage + { interactionResponseMessageTTS = Nothing, + interactionResponseMessageContent = Just $ "<@" <> pack (show (unId targetUid)) <> "> has become a baboon!", + interactionResponseMessageEmbeds = Nothing, + interactionResponseMessageAllowedMentions = Nothing, + interactionResponseMessageFlags = Nothing, + interactionResponseMessageComponents = Nothing, + interactionResponseMessageAttachments = Nothing + } + void $ restCall (CreateInteractionResponse iId iToken response) + Left _ -> do + let response = + InteractionResponseChannelMessage $ + InteractionResponseMessage + { interactionResponseMessageTTS = Nothing, + interactionResponseMessageContent = Just "Failed to get target member info!", + interactionResponseMessageEmbeds = Nothing, + interactionResponseMessageAllowedMentions = Nothing, + interactionResponseMessageFlags = Just $ InteractionResponseMessageFlags [InteractionResponseMessageFlagEphermeral], + interactionResponseMessageComponents = Nothing, + interactionResponseMessageAttachments = Nothing + } + void $ restCall (CreateInteractionResponse iId iToken response) + Nothing -> return () + + when (applicationCommandDataName cmd == "unbaboon") $ do + if not hasPermission + then do + let response = + InteractionResponseChannelMessage $ + InteractionResponseMessage + { interactionResponseMessageTTS = Nothing, + interactionResponseMessageContent = Just "You don't have permission to use this command!", + interactionResponseMessageEmbeds = Nothing, + interactionResponseMessageAllowedMentions = Nothing, + interactionResponseMessageFlags = Just $ InteractionResponseMessageFlags [InteractionResponseMessageFlagEphermeral], + interactionResponseMessageComponents = Nothing, + interactionResponseMessageAttachments = Nothing + } + void $ restCall (CreateInteractionResponse iId iToken response) + else do + let options = optionsData cmd + let targetUid = case options of + Just (OptionsDataValues opts) -> extractUserOption opts "target" + _ -> error "No target specified" + + if invokerUid == targetUid + then do + let response = + InteractionResponseChannelMessage $ + InteractionResponseMessage + { interactionResponseMessageTTS = Nothing, + interactionResponseMessageContent = Just "You can't unbaboonify yourself!", + interactionResponseMessageEmbeds = Nothing, + interactionResponseMessageAllowedMentions = Nothing, + interactionResponseMessageFlags = Just $ InteractionResponseMessageFlags [InteractionResponseMessageFlagEphermeral], + interactionResponseMessageComponents = Nothing, + interactionResponseMessageAttachments = Nothing + } + void $ restCall (CreateInteractionResponse iId iToken response) + else do + case guildId of + Just gid -> do + targetMemberRes <- restCall (GetGuildMember gid targetUid) + case targetMemberRes of + Right targetMember -> do + let targetRoles = memberRoles targetMember + let hasBaboonRole = any (\r -> unSnowflake (unId r) == baboonRoleId) targetRoles + + if not hasBaboonRole + then do + let response = + InteractionResponseChannelMessage $ + InteractionResponseMessage + { interactionResponseMessageTTS = Nothing, + interactionResponseMessageContent = Just "That user is not a baboon!", + interactionResponseMessageEmbeds = Nothing, + interactionResponseMessageAllowedMentions = Nothing, + interactionResponseMessageFlags = Just $ InteractionResponseMessageFlags [InteractionResponseMessageFlagEphermeral], + interactionResponseMessageComponents = Nothing, + interactionResponseMessageAttachments = Nothing + } + void $ restCall (CreateInteractionResponse iId iToken response) + else do + void $ restCall (AddGuildMemberRole gid targetUid (DiscordId (Snowflake defaultRoleId))) + void $ restCall (RemoveGuildMemberRole gid targetUid (DiscordId (Snowflake baboonRoleId))) + let response = + InteractionResponseChannelMessage $ + InteractionResponseMessage + { interactionResponseMessageTTS = Nothing, + interactionResponseMessageContent = Just $ "<@" <> pack (show (unId targetUid)) <> "> is no longer a baboon!", + interactionResponseMessageEmbeds = Nothing, + interactionResponseMessageAllowedMentions = Nothing, + interactionResponseMessageFlags = Nothing, + interactionResponseMessageComponents = Nothing, + interactionResponseMessageAttachments = Nothing + } + void $ restCall (CreateInteractionResponse iId iToken response) + Left _ -> do + let response = + InteractionResponseChannelMessage $ + InteractionResponseMessage + { interactionResponseMessageTTS = Nothing, + interactionResponseMessageContent = Just "Failed to get target member info!", + interactionResponseMessageEmbeds = Nothing, + interactionResponseMessageAllowedMentions = Nothing, + interactionResponseMessageFlags = Just $ InteractionResponseMessageFlags [InteractionResponseMessageFlagEphermeral], + interactionResponseMessageComponents = Nothing, + interactionResponseMessageAttachments = Nothing + } + void $ restCall (CreateInteractionResponse iId iToken response) + Nothing -> return () + _ -> return () + MessageCreate m -> do + when (isPing m && not (fromBot m)) $ do + void $ restCall (R.CreateReaction (messageChannelId m, messageId m) "eyes") + threadDelay standardPause + void $ restCall (R.CreateMessage (messageChannelId m) "Pong!") + _ -> return () + +extractUserOption :: [OptionDataValue] -> Text -> UserId +extractUserOption opts name = + case [v | OptionDataValueUser n v <- opts, n == name] of + (uid : _) -> uid + [] -> error $ "Option not found: " <> unpack name + +-- Role IDs + +botId :: ApplicationId +botId = DiscordId (Snowflake 1428951383494623262) + +serverId :: GuildId +serverId = DiscordId (Snowflake 692563032546476062) + +baboonRoleId :: Word64 +baboonRoleId = 1160622954082738347 + +ownerRoleId :: Word64 +ownerRoleId = 827332588803850270 + +moderatorRoleId :: Word64 +moderatorRoleId = 827303828884946944 + +patronRoleId :: Word64 +patronRoleId = 827404707843538975 + +youTubeRoleId :: Word64 +youTubeRoleId = 993361806141706310 + +defaultRoleId :: Word64 +defaultRoleId = 964354344948494416 + +immuneRoles :: [Word64] +immuneRoles = [ownerRoleId, moderatorRoleId, patronRoleId, youTubeRoleId] + +fromBot :: Message -> Bool +fromBot = userIsBot . messageAuthor + +isPing :: Message -> Bool +isPing = ("ping" `isPrefixOf`) . toLower . messageContent + +standardPause :: Int +standardPause = (2 * 5 ^ 3) diff --git a/packages/zookeeper/zookeeper.cabal b/packages/zookeeper/zookeeper.cabal new file mode 100755 index 0000000..09621bf --- /dev/null +++ b/packages/zookeeper/zookeeper.cabal @@ -0,0 +1,14 @@ +cabal-version: 3.0 +name: zookeeper +version: 0.1.0.0 + +executable main + main-is: Main.hs + build-depends: + , base + , discord-haskell + , text + , unliftio + + default-language: Haskell2010 + hs-source-dirs: src